我尝试实现的用例如下:
- 用户请求大声朗读网页的一部分,例如“阅读说明”、“阅读背景”、“播放笔记”等。(Watson STT)
- STT 请求传递到对话(通过应用服务器)并进行解释;响应指示部分类型(如果部分类型不正确,则暂时省略提示)
- 应用服务器通过播放请求部分的音频 (Watson TTS) 来响应用户
- 用户要求暂停、停止、继续或重播所选部分 (STT)
我在第 4 步遇到了问题。如果请求是暂停、停止或继续,那么这些可能可以由单独的 #intent 处理,并且应用程序服务器只需将命令传递给 <audio>
进行相应控制。但是,如果请求是重播,那么我需要知道最初请求的部分类型。我有一种感觉,应用程序服务器需要设置上下文才能完成这项工作,但我不清楚阅读文档如何做到这一点。非常感谢任何示例或文档。
最佳答案
每个 JSON 响应都是对话的路线图。因此,如果您从响应中获取相关的 System + Context 对象,您可以将其反馈回来以获取更早的响应。
这是解决这个问题的一种方法。
要捕获上下文变量中的意图/实体,您可以在输出节点中执行以下操作(高级)。
{
"output": {},
"context": {
"lastIntent": "<? intents[0].intent ?>",
"lastConfidence": "<? intents[0].confidence ?>",
"lastEntity": "<? entities[0].value ?>"
}
}
目前,只有将其保存为文本值时,它才有效。所以你不能执行以下操作:
"confidence": <? intents[0].confidence ?>,
在条件节点中,您可以执行以下操作:
intents[0].intent == context.lastIntent
关于ibm-watson - 沃森对话 : How to maintain position in dialog flow for additional user input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39676637/