wit.ai runActions 如何处理后续消息中的上下文
wit.ai runActions how to handle context in follow-up message
我正在使用 node-wit 开发聊天机器人应用程序。
这大部分工作正常,但我 运行 遇到了使用上下文的问题。
我正在使用 运行Actions api :
this.witClient.runActions(customer._key, messageText, witContext).then((newContext => {}
)).catch(reject);
我定义了一些设置上下文的动作。
这工作正常,只要上下文发生在一条消息上。
例如,如果我要调用一个名为 addProduct 的操作:
addProduct({sessionId, context, text, entities}) {
return new Promise((resolve, reject) => {
context.product = `myNewProduct';
resolve(context);
});
},
然后它将使用 'product' 上下文键显示一条消息。
但是,当我尝试在 2 条消息上使用它时,它似乎已经失去了上下文(例如,当提出多项选择题,然后处理该响应时)。
如果我理解它是如何正确工作的,那么 node-wit 不会保留消息之外的上下文(我一开始就这么认为是因为我正在传递会话密钥)。
我看到的一个解决方案是以 session/user 特定方式存储生成的上下文(在本例中为 newContext),然后在用户发送新消息时恢复并再次传递它。
意思是这样的:
witContext = getContextFromSession();
this.witClient.runActions(customer._key, messageText, witContext).then((newContext => { setContextInSession(newContext) }
)).赶上(拒绝);
这是正确的处理方式吗?
当然你必须存储你的上下文状态,你决定如何存储它。但是,如果您要拥有大量用户并且您的资源可用,请考虑最有效的方法。
正如您在 nodeJs 的官方示例中看到的那样,在 https://github.com/wit-ai/node-wit/blob/master/examples/messenger.js 上有一个名为 findOrCreateSession 的方法,它们在调用机智操作之前获得会话。
在我的特定情况下,我将它存储在数据库中,所以我在调用操作之前获取会话,因此我可以发送上下文,然后在操作中我再次查询会话以修改生成的上下文并再次存储,尝试满足您需求的最佳实施方式。
我正在使用 node-wit 开发聊天机器人应用程序。 这大部分工作正常,但我 运行 遇到了使用上下文的问题。
我正在使用 运行Actions api :
this.witClient.runActions(customer._key, messageText, witContext).then((newContext => {}
)).catch(reject);
我定义了一些设置上下文的动作。
这工作正常,只要上下文发生在一条消息上。 例如,如果我要调用一个名为 addProduct 的操作:
addProduct({sessionId, context, text, entities}) {
return new Promise((resolve, reject) => {
context.product = `myNewProduct';
resolve(context);
});
},
然后它将使用 'product' 上下文键显示一条消息。
但是,当我尝试在 2 条消息上使用它时,它似乎已经失去了上下文(例如,当提出多项选择题,然后处理该响应时)。
如果我理解它是如何正确工作的,那么 node-wit 不会保留消息之外的上下文(我一开始就这么认为是因为我正在传递会话密钥)。
我看到的一个解决方案是以 session/user 特定方式存储生成的上下文(在本例中为 newContext),然后在用户发送新消息时恢复并再次传递它。
意思是这样的:
witContext = getContextFromSession();
this.witClient.runActions(customer._key, messageText, witContext).then((newContext => { setContextInSession(newContext) }
)).赶上(拒绝);
这是正确的处理方式吗?
当然你必须存储你的上下文状态,你决定如何存储它。但是,如果您要拥有大量用户并且您的资源可用,请考虑最有效的方法。
正如您在 nodeJs 的官方示例中看到的那样,在 https://github.com/wit-ai/node-wit/blob/master/examples/messenger.js 上有一个名为 findOrCreateSession 的方法,它们在调用机智操作之前获得会话。
在我的特定情况下,我将它存储在数据库中,所以我在调用操作之前获取会话,因此我可以发送上下文,然后在操作中我再次查询会话以修改生成的上下文并再次存储,尝试满足您需求的最佳实施方式。