首页 文章

对Google工作的行动,但Dialogflow代理已损坏

提问于
浏览
1

我有一个项目 Actions on GoogleDialogflowAWS Lambda 来管理履行 . 在后端(NodeJs)我使用 actions-on-google (v2)

const {dialogflow} = require('actions-on-google');
const app = dialogflow({debug: true});

app.intent('StartIntent', (conv) => {
  console.log('Hello AWS');
  conv.ask('Hello AWS');
});
exports.handler = app

Dialogflow配置了一个Intent StartIntent &与webhook履行 .

当我使用Google模拟器上的Actions进行测试时,一切似乎都能正常工作 . 我得到了预期的答案'Hello AWS' .

但是,它不适用于对话流模拟器 . 没有答案,虽然我可以在诊断信息中阅读“Webhook执行成功”,并获得正确的履行回复:

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Hello AWS"
            }
          }
        ]
      },
      "userStorage": "{\"data\":{}}"
    }
  },
  "outputContexts": [
    {
      "name": "projects..../_actions_on_google",
      "lifespanCount": 99,
      "parameters": {
        "data": "{}"
      }
    }
  ]
}

这对我来说真的很奇怪,因为谷歌上的动作只是调用对话流并且返回了一个很好的响应 . 而单独测试对话流不起作用 .

任何的想法 ?

1 回答

  • 0

    这是预料之中的 . 谷歌动作库的输出已针对Google智能助理集成进行了调整 . 它不会尝试包含通用Dialogflow代理使用的输出,这是Dialogflow测试字段使用的输出 .

    如果它在助理模拟器中工作 - 你应该很好 .

    Update

    具体而言,google库上的操作设置在JSON响应中的 payload.google.richResponse 中设置值,该响应设置Google智能助理显示的消息 . 顾名思义,这是特定于Google的输出,因此Dialogflow测试侧栏(以及与Dialogflow一起使用的其他代理)会忽略此部分 .

    Dialogflow具有发送消息的通用方法,包括JSON响应中的 fulfillmentTextfulfillmentMessages 字段 . Dialogflow测试侧栏使用这些字段显示结果 . Google上的操作不会设置或使用这些字段,因此结果不可用 .

相关问题