为什么助手在有 conv.close 的情况下仍然显示 Malformed response?
Why is the assistant still show Malformed response despite having conv.close?
尽管使用了 conv.close 标签,错误 'Malformed_Response' 仍然显示。
这是代码:
app.intent('Selected subjects', (conv, {Subject}) => {
var subject = conv.arguments.get('OPTION') || Subject;
if (!conv.screen) {
conv.ask(subjectCard[subject].text);
} else {
conv.ask(new BasicCard(subjectCard[subject]));
}
conv.ask(' Do you want to hear about a new subject?');
conv.ask(new Suggestions('Yes', 'No'));
});
app.intent(['Selected subjects - yes'], (conv) => {
var subject = conv.arguments.get('OPTION') || Subject;
if (!conv.screen) {
conv.close(subjectCard[subject].text);
} else {
conv.close(`Maybe this would help`, new BasicCard(subjectCard[subject]));
}
});
附上firebase错误图片
提前致谢
这是请求:
{
"response": "Team Edzuki isn't responding right now. Try again soon.",
"expectUserResponse": false,
"conversationToken": "GidzaW11bG...",
"audioResponse": "//NExAASWK...",
"sharedDebugInfoList": [
{
"name": "ResponseValidation",
"debugInfo": "",
"subDebugEntryList": [
{
"name": "MalformedResponse",
"debugInfo": "'final_response' must be set.",
"subDebugEntryList": []
}
]
}
]
},
"visualResponse": {
"visualElementsList": [
{
"displayText": {
"content": "Team Edzuki isn't responding right now. Try again
soon."
}
}
],
"suggestionsList": [],
"agentLogoUrl": ""
},
"clientError": 0,
"is3pResponse": 1
}
这是在 Action-On-Google 网页中看到的调试标签的一部分,我上面提到的错误,以及 firebase 标签健康状况的图片,是重复的错误.没有显示其他错误。如果有人有不同的使用后续提示的方式,请告诉。
您发布的响应中的错误消息部分 "Webhook call failed. Error: 500 Internal Server Error" 表明您的代码存在导致代码崩溃的问题。
检查您的 Firebase 日志以了解错误的位置和内容。但一些可能性包括:
首先,在 "Selected subjects" 意图处理程序中,您同时调用了 conv.close()
和 conv.ask()
。鉴于您正试图结束对话,目前尚不清楚您这样做的原因。
日志中关于 "Subject is not defined" 的错误消息似乎是因为在您的第二个意图(崩溃时似乎被调用的那个)中,尽管您在函数中使用了 Subject
(当您可能将其分配给 subject
) 时,它不在可用参数列表中。 (您之前遇到 Subject
与 subject
的问题,但这不是同一个问题。)
为了更清楚,代码应该是这样的
app.intent('Selected subjects - yes', (conv, {Subject}) => {
var subject = conv.arguments.get('OPTION') || Subject;
if (!conv.screen) {
conv.close(subjectCard[subject].text);
} else {
conv.close(`Maybe this would help`, new BasicCard(subjectCard[subject]));
}
});
最后,尚不清楚 "a simple response is required" 的错误是在什么情况下产生的,但您似乎正在尝试发送没有任何简单文本的基本卡,或者可能是在您的 "Selected subjects" 意图处理程序中, 基本卡前期待文本。
答案非常简单:意图是建立的,因此每次您说出正确的词时,动作/意图就会起作用。因此,至少在这种情况下,最简单的方法是将选定的主题 - 是设置为文本响应,以使其按您希望的方式工作。
尽管使用了 conv.close 标签,错误 'Malformed_Response' 仍然显示。 这是代码:
app.intent('Selected subjects', (conv, {Subject}) => {
var subject = conv.arguments.get('OPTION') || Subject;
if (!conv.screen) {
conv.ask(subjectCard[subject].text);
} else {
conv.ask(new BasicCard(subjectCard[subject]));
}
conv.ask(' Do you want to hear about a new subject?');
conv.ask(new Suggestions('Yes', 'No'));
});
app.intent(['Selected subjects - yes'], (conv) => {
var subject = conv.arguments.get('OPTION') || Subject;
if (!conv.screen) {
conv.close(subjectCard[subject].text);
} else {
conv.close(`Maybe this would help`, new BasicCard(subjectCard[subject]));
}
});
附上firebase错误图片
提前致谢
这是请求:
{
"response": "Team Edzuki isn't responding right now. Try again soon.",
"expectUserResponse": false,
"conversationToken": "GidzaW11bG...",
"audioResponse": "//NExAASWK...",
"sharedDebugInfoList": [
{
"name": "ResponseValidation",
"debugInfo": "",
"subDebugEntryList": [
{
"name": "MalformedResponse",
"debugInfo": "'final_response' must be set.",
"subDebugEntryList": []
}
]
}
]
},
"visualResponse": {
"visualElementsList": [
{
"displayText": {
"content": "Team Edzuki isn't responding right now. Try again
soon."
}
}
],
"suggestionsList": [],
"agentLogoUrl": ""
},
"clientError": 0,
"is3pResponse": 1
}
这是在 Action-On-Google 网页中看到的调试标签的一部分,我上面提到的错误,以及 firebase 标签健康状况的图片,是重复的错误.没有显示其他错误。如果有人有不同的使用后续提示的方式,请告诉。
您发布的响应中的错误消息部分 "Webhook call failed. Error: 500 Internal Server Error" 表明您的代码存在导致代码崩溃的问题。
检查您的 Firebase 日志以了解错误的位置和内容。但一些可能性包括:
首先,在 "Selected subjects" 意图处理程序中,您同时调用了 conv.close()
和 conv.ask()
。鉴于您正试图结束对话,目前尚不清楚您这样做的原因。
日志中关于 "Subject is not defined" 的错误消息似乎是因为在您的第二个意图(崩溃时似乎被调用的那个)中,尽管您在函数中使用了 Subject
(当您可能将其分配给 subject
) 时,它不在可用参数列表中。 (您之前遇到 Subject
与 subject
的问题,但这不是同一个问题。)
为了更清楚,代码应该是这样的
app.intent('Selected subjects - yes', (conv, {Subject}) => {
var subject = conv.arguments.get('OPTION') || Subject;
if (!conv.screen) {
conv.close(subjectCard[subject].text);
} else {
conv.close(`Maybe this would help`, new BasicCard(subjectCard[subject]));
}
});
最后,尚不清楚 "a simple response is required" 的错误是在什么情况下产生的,但您似乎正在尝试发送没有任何简单文本的基本卡,或者可能是在您的 "Selected subjects" 意图处理程序中, 基本卡前期待文本。
答案非常简单:意图是建立的,因此每次您说出正确的词时,动作/意图就会起作用。因此,至少在这种情况下,最简单的方法是将选定的主题 - 是设置为文本响应,以使其按您希望的方式工作。