我已经建立了一个机器人使用微软机器人框架能够与api.ai对话。现在,对于给定的用户输入,会收到回复。然而,api.ai具有上下文的概念,对其而言,维护会话很重要。如何在Microsoft Bot Framework中实现会话?
我的机器人代码(我已经更改了我的应用程序ID和密码):
`var builder = require('botbuilder');
var restify = require('restify');
var apiairecognizer = require('api-ai-recognizer');
var request = require('request');
//=========================================================
// Bot Setup
//=========================================================
// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
console.log('%s listening to %s', server.name, server.url);
});
// Create chat bot
var connector = new builder.ChatConnector({
appId: '4c8f3u2b-c56n-4117-bc16-ec31eeb5d25c',
appPassword: '4CBNO8vBGtdcGh9PoiVYottY'
});
var connector = new builder.ConsoleConnector().listen();
var bot = new builder.UniversalBot(connector);
var recognizer = new apiairecognizer("84c78b2c15684c7380c6a74c8fbb343f");
var intents = new builder.IntentDialog({
recognizers: [recognizer]
});
bot.dialog('/',intents);
intents.matches('Flow_1',function(session, args){
var fulfillment = builder.EntityRecognizer.findEntity(args.entities, 'fulfillment');
if (fulfillment){
var speech = fulfillment.entity;
session.send(speech);
}else{
session.send('Sorry...not sure how to respond to that');
}
});
intents.onDefault(function(session){
session.send("Sorry...can you please rephrase?");
});`发布于 2017-07-01 21:40:51
据我所知,您使用Microsoft Framework作为api.ai的webhook,而api.ai则通过集成或其他方式接收消息。
您不必处理此问题,因为api.ai会向您的webhook发送一个POST请求,然后您将在该请求上发送一个响应。因为这是一个https-tcp连接,所以不需要在webhook中处理会话id。这就是api.ai及其集成所要处理的。这就是上下文的全部内容。
如果你想通过不同的会话识别一个特定的用户,你必须考虑一些自己的东西。
使用API时使用,不使用集成
您必须跟踪会话id。必须在每个查询中提供此id。
来自查询的响应也将包含此id。
在文档中搜索sessionId。https://api.ai/docs/reference/agent/query#query_parameters_and_json_fields
https://stackoverflow.com/questions/44852584
复制相似问题