如何使用python创建用于实现的函数?
building fulfillments的文档将Node.js与fulfillment hosting的Firebase Cloud Function一起使用。这里使用的是Actions SDK。
下面的示例代码简单地调用应用程序并模拟用户说的第一个语音。
'use strict';
const ActionsSdkApp = require('actions-on-google').ActionsSdkApp;
const functions = require('firebase-functions');
exports.analizeInput= (req, res) => {
const app = new ActionsSdkApp({request: req, response: res});
// Create functions to handle requests here
function handleMainIntent() {
let inputPrompt = app.buildInputPrompt(false, 'This is <app-name>');
app.ask(inputPrompt);
}
function handleTextIntent() {
app.tell("you said, " + app.getRawInput());
}
let actionMap = new Map();
actionMap.set(app.StandardIntents.MAIN, handleMainIntent);
actionMap.set(app.StandardIntents.TEXT, handleTextIntent);
app.handleRequest(actionMap);
} 代码在fullments端点中使用Node.js语言。也可以使用其他语言。但是,没有关于如何使用其他语言设置实现端点的可用资源。我想知道如何使用python创建一个像上面这样的简单代码。
from flask import Flask
from flask import jsonify
app = Flask(__name__)
@app.route('/')
def hello_world():
//I do not know where to use this JSON (this is the app.ask() in Node.js)
data = {
"conversationToken": "",
"expectUserResponse": true,
"expectedInputs": [{
"inputPrompt": {
"richInitialPrompt": {
"items": [{
"simpleResponse": {
"textToSpeech": "Howdy! I can tell you fun facts about almost any number, like 42. What do you have in mind?",
"displayText": "Howdy! I can tell you fun facts about almost any number. What do you have in mind?"
}
}],
"suggestions": []
}
},
"possibleIntents": [{
"intent": "actions.intent.TEXT"
}]
}]
}
return jsonify(data)
if __name__ == '__main__':
app.run()这是我使用Heroku设置和部署的简单REST端点。据我所知,如果所使用的语言不是“示例代码”部分here中所示的Node.js,则使用JSON。然而,我被困在处理请求、响应和设置与Google Assistant相关的意图之类的事情上。我也不知道将JSON建议放在文档中的什么位置。我甚至不知道如何开始。如果你能先行一步,我将不胜感激。
谢谢
发布于 2020-11-10 03:29:42
我刚刚找到了一个可行的解决方案:只需遵循以下文档:Conversational Actions - JSON webhook payload - Request and Response,这是JSON fulfillment。
示例:
{
"prompt": {
"firstSimple": {
"speech": "Hello, this works!",
"text": "Hello, this works!"
}
}
}我猜Actions SDK文档中的JSON是用来与SDK交互的?不管怎么说,这些都不起作用。
dialogflow fulfillment也不起作用。我以前用过dialogflow API。他们只是不同而已。
这个文档有点难找到,我花了3个小时才找到,但仍然比我自己复制SDK要好。
发布于 2018-02-21 02:42:50
转到console.actions.google.com创建一个项目。现在,选择SDK选项,而不是Dialog Flow或我忘记其名称的其他NLU。
假设您熟悉Node,可以转到此处
https://github.com/unclewill/parrot
拿到我的“鹦鹉”样本。这是一个微不足道的动作,只是简单地重复你所说的话。它唯一的优点是大约有50行代码。使用包管理器- npm安装它。
然后下载ngrok
这个工具将通过反向代理的方式创建一个从web到您的开发机器的“隧道”。下载后,在命令行中键入
ngrok http 8080
这实际上将使您的机器获得一个可公开寻址的安全地址(即https),Google平台上的操作最终将使用该地址与您的Python端点和我的parrot示例进行通信。
查看它分配给您的机器的地址,然后编辑操作包(文件action.json),以便将您在那里找到的https地址替换为ngrok的地址。
查看文件update.cmd和test.cmd。前者用于通知Google您的Action项目的新地址。后者将其置于测试模式。编辑两者中的项目名称,使其与您在操作控制台中获得的项目名称相匹配。
运行文件update.cmd。在Windows上,您可以只运行该文件。在'nix上,首先使用chmod +x将模式更改为可执行文件,或者您可以直接将文本复制并粘贴到命令行中。转到操作控制台并点击'Test‘按钮打开模拟器。返回到命令行并运行文件test.cmd。
使用以下命令在节点中运行示例
节点应用
如果一切顺利,您就有了一个在本地运行的Action和一个从web到它的隧道。在模拟器中键入一些文本。这个动作应该会“模仿”它返回给你。
现在看看shell/terminal/command窗口,您在其中运行了ngrok。它将在localhost上列出一个端点(或者可能是127.0.0.1,我忘了)。在浏览器中键入该地址,您将看到来自和指向Action的JSON有效负载。
您的任务是在Python中复制它。
(我不使用Python,但如果没有人移植客户端库,我会感到惊讶)
发布于 2018-02-21 03:31:02
基本上,您正在构建一个API,它接收JSON请求中的值。然后,您需要对其进行解析并返回JSON响应。正如William所说,在Node中创建一个版本会让你看到请求。您还可以使用Google控制台模拟器上的操作来查看请求。
查看the documentation of Actions SDK可以让您看到原始的请求和响应。据我所知,Python没有一个很好的示例,所以您可能想要构建一个已经存在于Node.JS的示例,然后将其移植。
https://stackoverflow.com/questions/48888661
复制相似问题