我的Chabot由Dialog Flow(API.AI)提供支持,需要用户发送图像。
我知道当用户点击messenger中的“启动”按钮时(与机器人开始对话),会触发带有WELCOME / FACEBOOK_WELCOME事件的Dialog Flow(API.AI)中的意图。
当用户发送简单文本消息时,Dialog Flow(API.AI)中的意图将以用户说出的文本被触发。
我怀疑Dialog Flow(API.AI)中是否有任何意图在用户将图像作为附件发送到机器人时触发,或者是否有任何方法可以实现这种功能。
请帮我解决这个问题
提前致谢
答案 0 :(得分:3)
在DialogFlow(API.AI)中的任何意图的事件部分中使用 FACEBOOK_MEDIA 。现在,每当用户将图像上传到机器人时,其事件部分中包含 FACEBOOK_MEDIA 的意图将被触发,您将获得包含图像 URL 的有效负载WebHook 。
答案 1 :(得分:3)
以下是我在facebook messenger上传图片作为附件时的回复。我使用了dialogflow.com并使用AWS Lambda函数,API网关和AWS CloudWatch Logs在nodejs中集成了我的webhook处理程序。您还可以提供webhook请求和打印日志。编写console.log()确实有助于将从facbook messenger发送的对象打印到我们的webhook。
exports.handler = (event, context, callback) => {
console.log(event);
console.log(event.originalRequest.data.message.attachments[0].payload.url);
};
您将在cloudwatch日志中打印事件对象网址: 在事件对象中,网址为:https://scontent-ort2-2.xx.fbcdn.net/v/t34.18173-12/30776728_1969968496378460_1504397895_n.png?_nc_cat=0&_nc_ad=z-m&_nc_cid=0&oh=4aad83994a5501d1c50f7e2e6c7d50ea&oe=5ADBEF72
{
"originalRequest": {
"source": "facebook",
"data": {
"sender": {
"id": "2037600292946778"
},
"recipient": {
"id": "592499574453638"
},
"message": {
"attachments": [
{
"payload": {
"url": "https://scontent-ort2-2.xx.fbcdn.net/v/t34.18173-12/30776728_1969968496378460_1504397895_n.png?_nc_cat=0&_nc_ad=z-m&_nc_cid=0&oh=4aad83994a5501d1c50f7e2e6c7d50ea&oe=5ADBEF72"
},
"type": "image"
}
],
"mid": "mid.$cAAJAFU4_rqppFAhJFli4sL-nvI2y",
"seq": 274
},
"timestamp": 1524222785882
}
},
"id": "323b2069-1fb3-4643-9cab-a36562286069",
"timestamp": "2018-04-20T11:13:06.117Z",
"lang": "en",
"result": {
"source": "agent",
"resolvedQuery": "FACEBOOK_MEDIA",
"speech": "",
"action": "",
"actionIncomplete": false,
"parameters": {},
"contexts": [
{
"name": "facebook_media",
"parameters": {},
"lifespan": 0
},
{
"name": "generic",
"parameters": {
"facebook_sender_id": "2037600292946778"
},
"lifespan": 4
}
],
"metadata": {
"intentId": "52d18e01-1ff2-4e35-af42-bc2de65fa38b",
"webhookUsed": "true",
"webhookForSlotFillingUsed": "false",
"intentName": "attachment intent"
},
"fulfillment": {
"speech": "Received an image",
"messages": [
{
"type": 0,
"speech": "Received an image"
}
]
},
"score": 1
},
"status": {
"code": 200,
"errorType": "success",
"webhookTimedOut": false
},
"sessionId": "d815740b-4f6d-432b-991d-c1125ceb2665"
}
答案 2 :(得分:0)
在DialogFlow中使用WebhookClient时,您可以获得如下图像网址:
const agent = new WebhookClient({ request, response });
const imageUrl = agent.request_.body.originalDetectIntentRequest.payload.data.message.attachments[0].payload.url;
答案 3 :(得分:0)
我的解决方案:
exports.imageFb = function imageFb (request, response){
console.log(request.body.originalDetectIntentRequest.payload.data.message.attachments[0].payload.url);
}