我尝试实施的用例如下:
这是我遇到问题的第4步。如果请求是暂停,停止或继续,那么那些可能由单独的#intent处理,并且app服务器只是相应地将命令传递给<audio>
控件。但是,如果请求是重播,那么我需要知道最初请求的部分类型。我有一种感觉,应用服务器需要设置上下文才能使其工作,但我不清楚阅读文档如何做到这一点。任何示例或文档都非常赞赏。
答案 0 :(得分:1)
每个JSON响应都是对话的路线图。因此,如果您从响应中获取相关的System + Context对象,则可以将其反馈以获取早期响应。
这是接近它的一种方法。
要捕获上下文变量中的intent / entities,您可以在输出节点中执行以下操作(高级)。
{
"output": {},
"context": {
"lastIntent": "<? intents[0].intent ?>",
"lastConfidence": "<? intents[0].confidence ?>",
"lastEntity": "<? entities[0].value ?>"
}
}
目前只有将其保存为文本值才能生效。所以你不能做到以下几点:
"confidence": <? intents[0].confidence ?>,
在您的条件节点中,您可以执行以下操作:
intents[0].intent == context.lastIntent
答案 1 :(得分:1)
当我开始编写应用服务器代码时,我会尝试Simon的建议,但是现在我找到了一种使用API工具做我想做的事情的方法。这是相关对话流程的图像:
用户说&#34;阅读成分&#34;它会触发#play_element + @recipeElement条件。如果他们说&#34;暂停&#34; Watson知道它引用了@recipeElement条件。说&#34;继续&#34;或者&#34;重播&#34;还是指同一个元素。 &#34;停止&#34;然而结束循环。现在我只需要弄清楚如何处理暂停,继续或重播后他们说停止 - 目前它会回到#play_element条件,因为Anything Else条件似乎没有起作用。