【发布时间】:2017-02-05 22:12:53
【问题描述】:
我从 wit.ai 收到一个带有一些快速回复元素的 json 对象,如下所示:
"msg": "So glad to have you back. What do you want me to do?
"action_id": "6fd7f2bd-db67-46d2-8742-ec160d9261c1",
"confidence": 0.08098269709064443,
"quickreplies": [
"News?",
"Subscribe?",
"Contribute?",
"Organize?"
],
"type": "msg"
然后我需要将它们转换为稍微不同的格式,因为它们被传递到 FaceBook Messenger,如下面的代码中所述。 Wit 只公开“msg”和“quickreplies”。你能提出一个好的方法来做到这一点吗?据我了解,它在“console.log(element)”之后。
if (quickreplies){
// got simple array of quickreplies
// need to format quickreplies for FB:
// "quick_replies":[
// {
// "content_type":"text",
// "title":"Red",
// "payload":"DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_RED"
// },
// {
// "content_type":"text",
// "title":"Green",
// "payload":"DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_GREEN"
// }
console.log('we got quickreplies, here they are:');
var quick_replies = []; // ??
quickreplies.forEach(function(element) {
console.log(element)
});
}
else (console.log('no quickreplies'));
在上面的例子中,最终结果应该是这样的:
"recipient":{
"id":"USER_ID"
},
"message":{
"text":"Pick a color:",
"quick_replies":[
{
"content_type":"text",
"title":"Red",
"payload":"DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_RED"
},
{
"content_type":"text",
"title":"Green",
"payload":"DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_GREEN"
}
]
}
【问题讨论】:
-
wit.ai?的快速回复是什么格式你有没有试过把一个转成FB格式?var quick_replies=quickreplies.map( conversionFunction)可能比.forEach更好 -
如果我没看错的话,这个转换是准备一个消息对象的一部分,它的文本属性是“welcom back ....”并且包含一个
quick_replies数组。每个quick_reply对象都将有一个标题,例如“订阅”和一个有效负载将在收到对话回复时作为元数据返回。下一步是根据您将如何告诉机器人响应是什么来决定每个操作需要的元数据。 -
是的。但在这个阶段,我很高兴看到快速回复显示为 FB 机器人上的按钮。为此,我只需要正确格式化并将其发送到 FB。
标签: javascript node.js facebook nlp wit.ai