如何使用python创建履行功能?
building fulfillments的文档使用带有Firebase云功能的Node.js fulfillment hosting。这里使用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端点。据我所知,如果使用的语言不是Node.js,则使用JSON,如“示例代码”部分here中所示。但是,我仍然坚持要做的事情,例如处理请求,提供回复以及设置与Google智能助理相关的意图。我也没有任何想法将文档中建议的JSON放在哪里。我甚至不知道如何从头开始。如果你能先行一步,我会非常感激。
谢谢
答案 0 :(得分:0)
转到console.actions.google.com创建项目。现在选择SDK选项而不是Dialog Flow或我忘记名字的其他NLU。
假设您熟悉Node,可以到这里
https://github.com/unclewill/parrot
得到我的&#34;鹦鹉&#34;样品。这是一个微不足道的行动,简单地重复 - 或鹦鹉 - 你说的话。它唯一的优点是大约50行。使用包管理器安装它 - npm。
然后下载ngrok
这个工具将创建一个&#34;隧道&#34;通过从Web到开发机器的反向代理。下载后,在命令行输入
ngrok http 8080
这实际上可以使您的计算机成为可公开寻址且安全的(即https)地址,Google平台上的操作最终将用于与您的Python端点进行通信以及我的鹦鹉样本。
查看分配给您计算机的地址,然后编辑操作包(文件action.json),以便您在那里找到的https地址替换为ngrok&#39。
查看文件update.cmd和test.cmd。前者用于通知Google您的Action项目的新地址。后者将其置于测试模式。在两者中编辑项目名称以匹配您在Actions控制台上获得的项目名称。
运行update.cmd文件。在Windows上,您只需运行该文件即可。 On&#39; nix首先使用chmod + x将模式更改为可执行文件,或者只需复制文本并粘贴到命令行即可。转到“操作”控制台,然后点按“测试”按钮。按钮打开模拟器。返回命令行并运行test.cmd文件。
使用
在Node中运行示例节点应用
如果一切顺利,您将在本地运行一个Action,并从Web上运行一个隧道。在模拟器中键入一些文本。这个动作应该是&#34; parrot&#34;它回到你身边。
现在看一下运行ngrok的shell / terminal / command窗口。它将在localhost上列出一个端点(或者我忘记了127.0.0.1)。在浏览器中键入该地址,您将看到来自Action的JSON有效负载。
你的任务是用Python复制它。
(我不做Python,但如果没有人移植客户端库我感到很惊讶)
答案 1 :(得分:0)
基本上,您正在构建一个在JSON请求中接收值的API。然后,您需要解析它并返回JSON响应。正如William所说,在Node中创建一个版本可以让你看到请求。您还可以使用Google控制台模拟器上的操作来查看请求。
签出the documentation of Actions SDK可以让您看到原始请求和响应。我所知道的Python不是一个很好的样本,所以你可能想要为Node.JS构建一个已经存在的样本然后移植它。
答案 2 :(得分:0)
我刚刚找到了一个可行的解决方案:只需遵循以下文档:Conversational Actions - JSON webhook payload - Request and Response,这是JSON实现API。
示例:
{
"prompt": {
"firstSimple": {
"speech": "Hello, this works!",
"text": "Hello, this works!"
}
}
}
我猜想Actions SDK文档中的JSON是否用于与SDK交互?
无论如何,这些都不起作用。
dialogflow履行API也不起作用。我以前使用过dialogflow API。它们只是不同。
很难找到这份文档,我花了3个小时才找到,但比自己复制SDK还要好。