使用Microsoft Bot Framework在Api.ai维护会话

时间:2017-06-30 18:10:13

标签: node.js bots botframework luis dialogflow

我使用Microsoft Bot Framework构建了一个能够与api.ai交谈的机器人。现在,对于给定的用户输入,收到回复。但是,api.ai具有维护会话很重要的上下文概念。如何从Microsoft Bot Framework实现会话?

我的机器人代码(我更改了我的APP 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?");
});`

1 个答案:

答案 0 :(得分:0)

据我了解,您使用Microsoft Framework作为api.ai的webhook,而api.ai通过集成或其他方式接收其messenges。

您无需处理此问题,因为api.ai会向您的webhook发送POST请求,您会在该webhook上发回回复。由于这是一个https-tcp连接,因此无需在webhook中处理会话ID。这就是api.ai及其集成的处理方式。这一切都是为了上下文。

如果您想通过不同的会话识别特定用户,您必须考虑自己的事情。

使用API​​时没有集成

您必须跟踪会话ID。 必须在每个查询中提供此ID。

来自查询的回复也将包含此ID。

在文档中搜索sessionIdhttps://api.ai/docs/reference/agent/query#query_parameters_and_json_fields