【发布时间】:2016-10-24 10:33:54
【问题描述】:
我很难理解 Node.js SDK 何时触发操作。 起初,我认为只有当我们使用故事网页明确调用它时才会触发一个动作。
我才意识到事实并非如此。
例如,当用户的上下文未正确清除时,可能会运行一些操作而不是另一个操作(或者有时可能会为一条消息运行两个操作)。即使某些行动不是当前故事的一部分。
在 Node.js SDK 中触发操作的具体条件是什么?
【问题讨论】:
标签: wit.ai
我很难理解 Node.js SDK 何时触发操作。 起初,我认为只有当我们使用故事网页明确调用它时才会触发一个动作。
我才意识到事实并非如此。
例如,当用户的上下文未正确清除时,可能会运行一些操作而不是另一个操作(或者有时可能会为一条消息运行两个操作)。即使某些行动不是当前故事的一部分。
在 Node.js SDK 中触发操作的具体条件是什么?
【问题讨论】:
标签: wit.ai
这是我为 FB Bot 设置的内容,因此您需要更改收件人 ID 机制以满足您的需求。
// CALL THIS TO SEND MESSAGES TO WIT
function sendToWit(sessionId, messageText) {
// This will run all actions until nothing left to do
wit.runActions(sessionId, // Current session
messageText, sessions[sessionId].context // Current session state
).then(function (context) {
// Waiting for further messages to proceed.
if (context['done']) {
delete sessions[sessionId];
}
// Updating current session state
sessions[sessionId].context = context;
}).catch(function (err) {
console.error('WIT ERROR MSG: ', err.stack || err);
});
}
//Wit Actions
var actions = {
// Basic text message response
send: function send(request, response) {
var sessionId = request.sessionId,
context = request.context,
entities = request.entities,
recipientId = sessions[sessionId].fbid,
text = response.text;
return new Promise(function (resolve, reject) {
callMySendAPI(recipientId, text);
return resolve();
});
}
, // All of your custom actions will go here ie;
myCustomAction: function (request) {
console.log('myCustomAction Called');
var sessionId = request.sessionId;
var recipientId = sessions[sessionId].fbid;
return new Promise(function (resolve, reject) {
//Call some API and do lookup by recipientId, you could lookup by anything ie; context.city for weather lookup etc..
callSomeAPI(recipientId).then(function (result) {
context.something = result.something; //Parsed JSON
return Promise.resolve(context);
}).catch(error => {
// something went wrong
});
return resolve(context);
});
}
}
【讨论】:
【讨论】:
myAction并复制粘贴了这些动作github.com/wit-ai/node-wit#response,它将执行名为myAction的动作。执行动作总是机智的回复,如果它执行了意外的动作,那是因为它认为它是正确的。