wit.ai从用户提供的任何内容中捕获自由文本

时间:2016-09-27 14:47:46

标签: wit.ai

我有以下问题。 我在谈话中有几点我需要捕捉"免费"文本。 例如:您对xyz的看法是什么?为什么你想要xyz?...它们是打开的问题,用户可以回答他们想要的任何内容。

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

谢谢

2 个答案:

答案 0 :(得分:3)

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

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

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

因此,您需要做的是在我的示例中定义类似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 - 请参阅step 4 和wit.ai reference为converse api。

答案 1 :(得分:2)

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

  1. 当机器人发送一个未解决的问题时,它还应该设置一个特殊的上下文,即open_question_xyz或类似的东西,并将其发送回客户端应用程序。
  2. 当客户端应用程序收到上下文时,将其保存到某些var。
  3. 在处理下一个用户输入之前,您的应用首先检查是否设置了open_context_xyz var,如果是,则不是直接将查询发送到wit.ai,而是捕获原始文本,还设置像resolved_open_question_xyz这样的上下文所以机器人知道在哪里接听对话。