Google 助理在 Dialogflow 中重复上一条消息时遇到问题
Having trouble with Google Assistant repeating previous message in Dialogflow
我正在开发一个非常简单的 Dialogflow,其中包含大约 15-20 个意图。除了一个之外,所有这些意图都使用文本响应。唯一不使用文本响应的意图称为 'repeat'。意图(重复)应该能够重复Google助手之前说过的任何内容。
我尝试使用 Multivocal 进行设置,但没有成功。当我在测试模拟器中键入命令时,我会得到初始响应,但是当我跟进 'repeat' 时,会返回 'Not available' 的默认响应。当我查看诊断信息时,webhook 超时。我的感觉是我配置错了,因为我已经阅读了这些答案但无法解决我的问题:
- How to repeat last response of bot in dialogflow
我在 Dialogflow 中使用内联编辑器,我的 index.js 看起来像:
const Multivocal = require('multivocal');
const conf = {
Local: {
en: {
Response: {
"Action.multivocal.repeat": "Let me try again",
}
}
}
};
new Multivocal.Config.Simple( conf );
exports.webhook = Multivocal.processFirebaseWebhook;
exports.dialogflowFirebaseFulfillment = Multivocal.processFirebaseWebhook;
我的package.json包括多声部依赖:
"multivocal": "^0.15.0"
根据上述 SO 问题,我的理解是这些配置值就足够了,我不需要做任何编码,但我显然搞砸了一些东西(很多东西?)。当用户说 'repeat' 或类似内容时,如何让 Google 助手中的先前响应重复?多声部似乎是一个简单的解决方案,如果我能那样做的话。
其他日志:
履行请求(删除项目 ID 信息):
{
"responseId": "--",
"queryResult": {
"queryText": "repeat",
"action": "multivocal.repeat",
"parameters": {},
"allRequiredParamsPresent": true,
"fulfillmentMessages": [
{
"text": {
"text": [
""
]
}
}
],
"outputContexts": [
{
"name": "project info",
"parameters": {
"no-input": 0,
"no-match": 0
}
}
],
"intent": {
"name": "project info",
"displayName": "repeat"
},
"intentDetectionConfidence": 1,
"languageCode": "en"
},
"originalDetectIntentRequest": {
"payload": {}
},
"session": "project info"
}
原始 API 响应(已删除项目和响应 ID)
{
"responseId": "",
"queryResult": {
"queryText": "repeat",
"action": "multivocal.repeat",
"parameters": {},
"allRequiredParamsPresent": true,
"fulfillmentMessages": [
{
"text": {
"text": [
""
]
}
}
],
"intent": {
"name": "projects info",
"displayName": "repeat"
},
"intentDetectionConfidence": 1,
"diagnosticInfo": {
"webhook_latency_ms": 4992
},
"languageCode": "en"
},
"webhookStatus": {
"code": 4,
"message": "Webhook call failed. Error: DEADLINE_EXCEEDED."
}
}
我根据建议添加的简单意图,即要重复处理意图,它必须使用实现而不是 Dialogflow 中的基于文本响应
这是我的 index.js 文件,使用内联编辑器建议在配置中添加文本响应:
const conf = {
Local: {
en: {
Response: {
"Intent.help": [
"I'm sorry, I'm not able to help you.",
"You, John, Paul, George, and Ringo ey?"
],
"Action.multivocal.repeat": "Let me try again"
}
}
}
};
我 index.js 末尾的这一行对我来说很奇怪,但可能无关:
exports.webhook = Multivocal.processFirebaseWebhook;
exports.dialogflowFirebaseFulfillment = Multivocal.processFirebaseWebhook;
听起来您正在触发回退 Intent。您还需要在 Dialogflow 中定义一个 Intent,该 Intent 的 Action 设置为“multivocal.repeat”。这可能看起来像这样:
在 npm 包的 dialogflow 目录中(或在 github 上),您会找到一个 zip 文件,其中包含这个和其他几个可以与 mulivocal 一起使用的“标准”Intent。
此外,您想要重复的所有其他 Intent 必须 使用 fulfillment 来发送响应(图书馆不知道可能会发送什么,除非它可以发送本身)。执行此操作的最简单方法是在每个上启用 fulfillment,并将文本响应从其 Dialogflow 屏幕移动到条目下的配置中,例如“Intent.name”(将“name”替换为 Intent 的名称)或"Action.name" 如果您为它们设置了一个动作名称。
因此您的配置可能类似于
const conf = {
Local: {
en: {
Response: {
"Intent.welcome": [
"Hello there!",
"Welcome to my Action!"
],
"Action.multivocal.repeat": [
"Let me try again"
]
}
}
}
};
我正在开发一个非常简单的 Dialogflow,其中包含大约 15-20 个意图。除了一个之外,所有这些意图都使用文本响应。唯一不使用文本响应的意图称为 'repeat'。意图(重复)应该能够重复Google助手之前说过的任何内容。
我尝试使用 Multivocal 进行设置,但没有成功。当我在测试模拟器中键入命令时,我会得到初始响应,但是当我跟进 'repeat' 时,会返回 'Not available' 的默认响应。当我查看诊断信息时,webhook 超时。我的感觉是我配置错了,因为我已经阅读了这些答案但无法解决我的问题:
- How to repeat last response of bot in dialogflow
我在 Dialogflow 中使用内联编辑器,我的 index.js 看起来像:
const Multivocal = require('multivocal');
const conf = {
Local: {
en: {
Response: {
"Action.multivocal.repeat": "Let me try again",
}
}
}
};
new Multivocal.Config.Simple( conf );
exports.webhook = Multivocal.processFirebaseWebhook;
exports.dialogflowFirebaseFulfillment = Multivocal.processFirebaseWebhook;
我的package.json包括多声部依赖:
"multivocal": "^0.15.0"
根据上述 SO 问题,我的理解是这些配置值就足够了,我不需要做任何编码,但我显然搞砸了一些东西(很多东西?)。当用户说 'repeat' 或类似内容时,如何让 Google 助手中的先前响应重复?多声部似乎是一个简单的解决方案,如果我能那样做的话。
其他日志:
履行请求(删除项目 ID 信息):
{
"responseId": "--",
"queryResult": {
"queryText": "repeat",
"action": "multivocal.repeat",
"parameters": {},
"allRequiredParamsPresent": true,
"fulfillmentMessages": [
{
"text": {
"text": [
""
]
}
}
],
"outputContexts": [
{
"name": "project info",
"parameters": {
"no-input": 0,
"no-match": 0
}
}
],
"intent": {
"name": "project info",
"displayName": "repeat"
},
"intentDetectionConfidence": 1,
"languageCode": "en"
},
"originalDetectIntentRequest": {
"payload": {}
},
"session": "project info"
}
原始 API 响应(已删除项目和响应 ID)
{
"responseId": "",
"queryResult": {
"queryText": "repeat",
"action": "multivocal.repeat",
"parameters": {},
"allRequiredParamsPresent": true,
"fulfillmentMessages": [
{
"text": {
"text": [
""
]
}
}
],
"intent": {
"name": "projects info",
"displayName": "repeat"
},
"intentDetectionConfidence": 1,
"diagnosticInfo": {
"webhook_latency_ms": 4992
},
"languageCode": "en"
},
"webhookStatus": {
"code": 4,
"message": "Webhook call failed. Error: DEADLINE_EXCEEDED."
}
}
我根据建议添加的简单意图,即要重复处理意图,它必须使用实现而不是 Dialogflow 中的基于文本响应
这是我的 index.js 文件,使用内联编辑器建议在配置中添加文本响应:
const conf = {
Local: {
en: {
Response: {
"Intent.help": [
"I'm sorry, I'm not able to help you.",
"You, John, Paul, George, and Ringo ey?"
],
"Action.multivocal.repeat": "Let me try again"
}
}
}
};
我 index.js 末尾的这一行对我来说很奇怪,但可能无关:
exports.webhook = Multivocal.processFirebaseWebhook;
exports.dialogflowFirebaseFulfillment = Multivocal.processFirebaseWebhook;
听起来您正在触发回退 Intent。您还需要在 Dialogflow 中定义一个 Intent,该 Intent 的 Action 设置为“multivocal.repeat”。这可能看起来像这样:
在 npm 包的 dialogflow 目录中(或在 github 上),您会找到一个 zip 文件,其中包含这个和其他几个可以与 mulivocal 一起使用的“标准”Intent。
此外,您想要重复的所有其他 Intent 必须 使用 fulfillment 来发送响应(图书馆不知道可能会发送什么,除非它可以发送本身)。执行此操作的最简单方法是在每个上启用 fulfillment,并将文本响应从其 Dialogflow 屏幕移动到条目下的配置中,例如“Intent.name”(将“name”替换为 Intent 的名称)或"Action.name" 如果您为它们设置了一个动作名称。
因此您的配置可能类似于
const conf = {
Local: {
en: {
Response: {
"Intent.welcome": [
"Hello there!",
"Welcome to my Action!"
],
"Action.multivocal.repeat": [
"Let me try again"
]
}
}
}
};