在将Wit.ai集成到网站时,是否有办法执行数据库查询,因为用户问题的答案需要从数据库中获取,而这些内容无法训练给聊天机器人。
回答:
正如你在教程中看到的,你可以在wit.ai中定义动作,这些动作可以涉及发送给用户的变量作为响应。因此,你应该在你定义的动作中对数据库进行查询,如果你还没有定义这些动作,那么就去定义吧,因为这是你可以实现逻辑的地方。另外,请注意,你可能需要处理对数据库的非同步请求,那么你应该实现一个阻塞机制,以便在每次查询完成后立即返回上下文。
我知道你想用Python进行实现,但我已经有了一个Node.js的实现,所以这里是我的示例代码。
getFullName({sessionId, context, entities}) { let session; let fbid = sessionId.split("-")[0]; return fbTypingOn(fbid) .then(() => { return model.getSesion(fbid); }) .then(sesion => { session = sesion; return callFbUserAPI(session); }) .then(first_name => { session.context.fullNameGreeting = utilsBot.buildGreeting(session); return model.setSesion(session); }) .then( sesion => { return session.context; }) .catch( error => { console.log("Error in getFullName " + error); session.context.fullNameGreeting = "Hola"; return context; }); }
请确保阅读官方页面上的所有文档,因为如果缺少某些内容,那么你就应该自己去实现。另外,我想已经有一个Python 2的实现了。