【问题标题】:Action on Google working, but with a Dialogflow agent broken对 Google 的操作有效,但 Dialogflow 代理已损坏
【发布时间】:2018-06-12 22:09:19
【问题描述】:

我有一个带有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": "{}"
      }
    }
  ]
}

这对我来说似乎很奇怪,因为 Google 上的 Actions 只是调用了 dialogflow 并返回了良好的响应。而单独测试对话流是行不通的。

有什么想法吗?

【问题讨论】:

  • 对我来说也是这样,我的 webhook 结果都没有显示在 dialogflow 控制台中,但是我放了它,因为我不使用它

标签: actions-on-google dialogflow-es


【解决方案1】:

这是意料之中的。 actions-on-google 库的输出已针对 Google Assistant 集成进行了调整。它不会尝试包含通用 Dialogflow 代理将使用的输出,这是 Dialogflow 测试字段使用的。

如果它在 Assistant Simulator 中工作 - 你应该很好。

更新

具体来说,actions-on-google 库在 JSON 响应中设置 payload.google.richResponse 中的值,这些值设置了 Google 助理显示的消息。顾名思义,这是 Google 特定的输出,因此 Dialogflow 测试侧边栏(以及使用 Dialogflow 的其他代理)忽略此部分。

Dialogflow 具有发回消息的通用方法,包括 JSON 响应中的 fulfillmentTextfulfillmentMessages 字段。 Dialogflow 测试侧边栏使用这些字段来显示结果。 actions-on-google 库不设置或使用这些字段,因此结果不可用。

【讨论】:

  • 这有什么意义?到处工作不是更合乎逻辑吗?
  • 我不能说它有多合乎逻辑 - 但我已经更新了我的答案,希望能澄清它是怎么回事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
相关资源
最近更新 更多