【发布时间】:2019-06-17 13:21:30
【问题描述】:
我正在尝试通过 DialogFlow 在 Google 代理上构建一个 Actions,但在尝试向用户询问问题时不断收到错误,同时包含 ssml。
我已经在 DialogFlow 上构建了代理,使用实现 webhook 实现了逻辑(通过节点模块 dialogflow-fulfillment 实现),并且能够使用 DialogFlow 右侧的测试控制台成功地在 DialogFlow 上进行测试。
因此,我将 DialogFlow 集成连接到 Google 助理。
我第一次尝试没有成功:
const client = new WebhookClient({ req, res });
let qToSnd = 'Hi <break time=\"500ms\"/> Can I help you?';
let conv = client.conv();
conv.ask(qToSnd);
client.add(conv);
上述方法可行(不会给出错误),但会导致在说出<break> 标签时提出问题。
我也试过了:
conv.ask(
new Text({
text: _stripTags(qToSnd),
ssml: qToSnd
}));
但是,当我使用 Google 模拟器上的 Actions 进行测试时,我收到了错误消息:
[代理] 现在没有响应。请稍后再试。
深入日志查看器会显示以下错误消息:
MalformedResponse: ErrorId: ... Failed to parse Dialogflow response into AppResponse because of invalid platform response. : Could not find a RichResponse or SystemIntent in the platform response for agentId: ... and intentId: ...
我的履行 API 正在返回:
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"text": "Hi - Can I help you?",
"ssml": "Hi <break time=\"500ms\"/> Can I help you?"
}
]
}
}
}
}
我将不胜感激任何正确方向的指示。
【问题讨论】:
-
发布您用于生成响应的实际代码可能会有所帮助
-
@NickFelker - 发布实际代码有点困难。我将尝试制作一个简单的应用程序来做到这一点。你是说代理的输出没有给出任何关于要研究什么的明显想法?
-
我不是 JSON 输出方面的专家,但我基于类似问题的怀疑是您正在尝试同时使用 dialogflow-fulfillment 和 actions-on-google 库并发送简单的响应.这两个库不应该混合在一起。简单响应对象在 JSON 中的表示方式可能存在问题,与 actions.google.com 文档不匹配。
-
@NickFelker - 我正在使用
dialogflow-fulfillment库 - 这取决于actions-on-google。此外,simpleResponse 对象不是 dialogflow-fulfillment 库的一部分,因此我无法使用它。