Építek egy bot Gupshup a Api.ai integráció. Van egy ügynök Api.ai több cél és mindegyikük keresztül kapcsolódó összefüggések (bemeneti és kimeneti kontextusban). Amikor használja a következő kódot hívják Api.ai, az első szándék hívják, és kapok választ. Azonban amikor a második üzenetet kap, akkor a bot veszi, mint egy teljesen új üzenet azonosítása nélkül annak kapcsán először. Hogyan oldjam meg a problémát? szívesen segít
function MessageHandler(context, event) {
// var nlpToken = xxxxxxxxxxxxxxxxxxxxxxx;//Your API.ai token
// context.sendResponse(JSON.stringify(event));
sendMessageToApiAi({
message : event.message,
sessionId : new Date().getTime() +'api',
nlpToken : 3626fe2d46b64cf8a9c0d3bee99a9sb3,
callback : function(res){
//Sample response from apiai here.
context.sendResponse(JSON.parse(res).result.fulfillment.speech);
}
},context)
}
function sendMessageToApiAi(options,botcontext) {
var message = options.message; // Mandatory
var sessionId = options.sessionId || ; // optinal
var callback = options.callback;
if (!(callback && typeof callback == 'function')) {
return botcontext.sendResponse(ERROR : type of options.callback should be function and its Mandatory);
}
var nlpToken = options.nlpToken;
if (!nlpToken) {
if (!botcontext.simpledb.botleveldata.config || !botcontext.simpledb.botleveldata.config.nlpToken) {
return botcontext.sendResponse(ERROR : token not set. Please set Api.ai Token to options.nlpToken or context.simpledb.botleveldata.config.nlpToken);
} else {
nlpToken = botcontext.simpledb.botleveldata.config.nlpToken;
}
}
var query = '?v=20150910&query='+ encodeURIComponent(message) +'&sessionId='+sessionId+'&timezone=Asia/Calcutta&lang=en '
var apiurl = https://api.api.ai/api/query+query;
var headers = { Authorization: Bearer + nlpToken};
botcontext.simplehttp.makeGet(apiurl, headers, function(context, event) {
if (event.getresp) {
callback(event.getresp);
} else {
callback({})
}
});
}
/** Functions declared below are required **/
function EventHandler(context, event) {
if (!context.simpledb.botleveldata.numinstance)
context.simpledb.botleveldata.numinstance = 0;
numinstances = parseInt(context.simpledb.botleveldata.numinstance) + 1;
context.simpledb.botleveldata.numinstance = numinstances;
context.sendResponse(Thanks for adding me. You are: + numinstances);
}
function HttpResponseHandler(context, event) {
// if(event.geturl === http://ip-api.com/json)
context.sendResponse(event.getresp);
}
function DbGetHandler(context, event) {
context.sendResponse(testdbput keyword was last get by: + event.dbval);
}
function DbPutHandler(context, event) {
context.sendResponse(testdbput keyword was last put by: + event.dbval);
}













