Wit.ai - 什么时候触发动作?
Wit.ai - When are the actions triggered?
我无法理解 Node.js SDK 何时触发操作。
起初,我认为只有当我们使用故事网页明确调用它时才会触发一个动作。
我才发现不是这样的
例如,当用户的上下文未被正确清除时,某些操作可能是 运行 而不是另一个(或者有时两个操作可能是 运行 用于一条消息)。即使某些动作不是当前故事的一部分。
在 Node.js SDK 中触发操作的具体条件是什么?
机器人将尝试所有故事,直到找到一个匹配的故事,如果没有,它会回复它找到的最后一个故事。
所以我做了一个我称之为 no_match
的故事,它要求对我的客户采取行动。
您还必须确保 Understanding 选项卡中的 Search Strategy 和 Values 设置正确。
这是我为 FB 机器人设置的内容,因此您需要更改 recipientId 机制以满足您的需要。
// 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);
});
}
}
我无法理解 Node.js SDK 何时触发操作。 起初,我认为只有当我们使用故事网页明确调用它时才会触发一个动作。
我才发现不是这样的
例如,当用户的上下文未被正确清除时,某些操作可能是 运行 而不是另一个(或者有时两个操作可能是 运行 用于一条消息)。即使某些动作不是当前故事的一部分。
在 Node.js SDK 中触发操作的具体条件是什么?
机器人将尝试所有故事,直到找到一个匹配的故事,如果没有,它会回复它找到的最后一个故事。
所以我做了一个我称之为 no_match
的故事,它要求对我的客户采取行动。
这是我为 FB 机器人设置的内容,因此您需要更改 recipientId 机制以满足您的需要。
// 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);
});
}
}