wit.ai的Node.js客户端调用多个自定义操作

时间:2016-04-26 12:41:05

标签: wit.ai

我正在尝试用wit.ai编写一个示例应用程序。我使用https://wit.ai/docs/quickstart处显示的node.js客户端跟随快速启动应用程序。 这里显示的示例只有一个自定义操作。但是当我尝试添加新故事和新动作时,我发现故事之间正在共享上下文。这导致了错误的行为(正在执行另一个故事的自定义操作)。

我找不到任何包含多个自定义操作和故事的示例。有什么node.js或python示例除了来自wit.ai网站的那些?

2 个答案:

答案 0 :(得分:3)

您需要为每个会话创建一个上下文,这是一个快速示例(来自https://github.com/wit-ai/node-wit/blob/master/examples/messenger.js):

const findOrCreateSession = (fbid) => {
  let sessionId;
  // Let's see if we already have a session for the user fbid
  Object.keys(sessions).forEach(k => {
    if (sessions[k].fbid === fbid) {
      // Yep, got it!
      sessionId = k;
    }
  });
  if (!sessionId) {
    // No session found for user fbid, let's create a new one
    sessionId = new Date().toISOString();
    sessions[sessionId] = {
      fbid: fbid,
      context: {         // New context per session id.
        _fbid_: fbid
      }
    }; // set context, _fid_
  }
  return sessionId;
};

您可以在https://github.com/hunkim/Wit-Facebook找到一个有效的例子。

答案 1 :(得分:3)

我认为机智引擎并不存储他们的背景。 你'合并'函数必须以不同的方式合并实体,具体取决于您的应用程序逻辑。

但如果你的故事已经完成,你需要清除下一个故事的背景。 我添加了一个内置函数clear-context,并将此函数作为动作调用。

查看我的example。 它不是官方的api,但你可以理解http api的工作方式。