我正在尝试在 wit.ai 中编写一个示例应用程序。我使用https://wit.ai/docs/quickstart中显示的 node.js 客户端跟踪了快速入门应用程序。此处显示的示例只有一个自定义操作。但是当我尝试添加一个新故事和一个新动作时,我看到故事之间正在共享上下文。这会导致错误的行为(正在执行来自另一个故事的自定义操作)。
我找不到任何具有多个自定义操作和故事的示例。除了来自 wit.ai 网站的示例之外,还有其他 node.js 或 python 示例吗?
我正在尝试在 wit.ai 中编写一个示例应用程序。我使用https://wit.ai/docs/quickstart中显示的 node.js 客户端跟踪了快速入门应用程序。此处显示的示例只有一个自定义操作。但是当我尝试添加一个新故事和一个新动作时,我看到故事之间正在共享上下文。这会导致错误的行为(正在执行来自另一个故事的自定义操作)。
我找不到任何具有多个自定义操作和故事的示例。除了来自 wit.ai 网站的示例之外,还有其他 node.js 或 python 示例吗?
我想机智引擎不会在他们身边存储上下文。您的“合并”功能必须以不同的方式合并实体,具体取决于您的应用逻辑。
但是如果你的故事已经完成,你需要为下一个故事明确上下文。我添加了一个内置函数clear-context
,并从机智中调用此函数作为操作。
看看我的例子。它不是官方的 api,但您可以了解 wit http api 的工作原理。
您需要为每个会话创建一个上下文,这是一个简单的示例(来自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;
};