8

我有以下问题。我在对话中有几个要点必须捕获“免费”文本。例如:你对 xyz 有什么看法?为什么要 xyz ?...它们是开放式问题,用户可以回答任何他们想要的问题。

如何启用此功能?因为我尝试了不同的组合,机器人要么重复一些问题,要么跳过一些?

谢谢

4

2 回答 2

3

如果您使用的是converseapi,您可以尝试在将响应发送回 wit.ai 之前设置相应的上下文属性,然后在您的故事中使用更新的上下文。

例如,我为你创建了一个测试故事(应用程序是空的 - 只是从头开始创建整个东西): 故事截图

结果,我能够在谈话中进入这一点: 对话

所以你需要做的是像captureUserInput我的例子一样定义一个动作,并指示你的机器人在你的上下文中等待某个键。在我的示例中,它由user_input键表示。

在您的客户端应用程序中,您需要对相应的操作(captureUserInput在我的示例中)做出适当的反应。将 POST 发送到 wit.ai converse API 时,设置相应的密钥。例如:

$ curl -XPOST 'https://api.wit.ai/converse?v=20160526&session_id=some_session_id' \
  -d '{"user_input":"put what the user responded here"}' \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H 'Authorization: Bearer $TOKEN'

wit.ai 引擎应该捕获您的上下文并在回复您时将其考虑在内(就像This is what you said: {user_input}在我的示例中一样)

我希望这对你有用。我的发现基于以下内容: https ://wit.ai/docs/quickstart - 请参阅converse apistep 4 和 wit.ai参考

于 2016-10-05T22:24:58.117 回答
2

我遇到了同样的问题,最终通过设置特定的上下文在客户端解决了它。我有一个没有“故事”界面的旧机器人,所以这个解决方案可能不适用于您的情况,但也许它会有所帮助。

  1. 当机器人发送一个未解决的问题时,它还应该设置一个特殊的上下文,即 open_question_xyz 或类似的东西,并将其发送回客户端应用程序。
  2. 当客户端应用程序接收到上下文时,将其保存到某个 var。
  3. 在处理下一个用户输入之前,您的应用程序首先检查是否设置了 open_context_xyz 变量,如果设置了,它不会直接将查询发送到 wit.ai,而是捕获原始文本,并设置一个类似 resolve_open_question_xyz 的上下文,以便机器人知道在哪里接听谈话。
于 2016-10-04T14:32:09.913 回答