我使用Dialogflow构建了一个机器人并将其连接到本地webhook(现在通过ngrok访问它)。我能够收到Dialogflow的回复,但我无法重播。我按照这里显示的JSON结构 - Test response from webhook。但我在Dialogflow中收到以下错误。
Webhook调用失败。错误:无法解析webhook JSON响应: 找不到字段:消息中的消息 google.cloud.dialogflow.v2.Intent.Message。
以下是我发送给Dialogflow的回复 -
{
"messages":[
{
"speech":"Text response",
"type":0
}
]
}
请告诉我应该发送给Dialogflow的答复的确切格式。
答案 0 :(得分:3)
从v1到v2,响应对象几乎完全改变。对于简单的文本,您可以使用like
{
"fulfillmentText": "Text response",
"fulfillmentMessages": [
{
"text": {
"text": ["Text response"]
}
}
],
"source": "<Text response>"
}
答案 1 :(得分:3)
我遇到了同样的问题,在dialogflow上使用以下json解决了这个问题:
我制作了一个简单的节点程序,该程序接受后响应并返回Dialogflow接受的json格式。您可以按照自己喜欢的任何方式发送请求。查看“投放状态”标签:
答案 2 :(得分:0)
单靠消息是不够的。有关预期参数的完整列表和JSON格式,请参阅Dialogflow V2 webhook履行文档。
您确定使用的是DialogFlow API的V2吗?
答案 3 :(得分:0)
字段messages
was renamed/refactored to fulfillmentMessages
-“找不到”表示它不是定义中的属性。
这是v2接受的一些可比较的结果:
{
"fulfillmentText": "response text",
"fulfillmentMessages": [{"simpleResponses": {"simpleResponses": [ {
"textToSpeech": "response text",
"displayText": "response text"
}]}}]
}
答案 4 :(得分:0)
使用 Webhook Playground 为 Dialogflow API 或已弃用但仍然有效的 Actions SDK 获取适当的响应。 Google Actions Builder/SDK 框架还有更新且不同的 API,如下所示:
DiaglowFlow JSON 响应:
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Webhook worked.",
"displayText": "Webhook worked."
}
}
]
}
}
}
}
操作 SDK 响应:
{
"expectUserResponse": true,
"expectedInputs": [
{
"inputPrompt": {
"richInitialPrompt": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Webhook worked.",
"displayText": "Webhook worked."
}
}
]
}
},
"possibleIntents": [
{
"intent": "actions.intent.TEXT"
}
]
}
]
}
动作生成器/SDK。请注意,需要返回会话 ID。
{
"session": {
"id": "example_session_id",
"params": {}
},
"prompt": {
"override": false,
"firstSimple": {
"speech": "Hello World.",
"text": ""
}
},
"scene": {
"name": "SceneName",
"slots": {},
"next": {
"name": "actions.scene.END_CONVERSATION"
}
}
}