Я создал бота Api.Ai и интегрировал его со Slack и Facebook Messenger. Когда я пишу ему, он отвечает ответами, настроенными в Api.Ai как для Slack, так и для Facebook Messenger, но в части выполнения, когда Api.Ai обращается к моему сервису, он отлично работает в Slack, но я получаю нет ответа от Facebook Messenger.
Формат сообщения, которое я возвращаю со своей службы:
{
"contextOut": [
{
"lifespan": 2,
"name": "weather",
"parameters": {
"city": "Rome"
}
}
],
"data": {
"facebook": {
"message": {
"text": "Great success!"
},
"recipient": {
"id": "1454102654663349"
}
},
"slack": {
"attachments": [
{
"color": "#00A399",
"title": "Hello world!",
"title_link": "https://www.mywebsite.se"
}
],
"text": "Horray! Great success! :)"
}
},
"displayText": "Whatever!!",
"followupEvent": {
"followupEvent": {
"data": {
"parameter": "<parameter_value>"
},
"name": "<event_name>"
}
},
"source": "mywebsite.se",
"speech": "Whatever!?"
}
Идентификатор получателя Facebook берется из запроса, отправленного в мою службу.
request.result.contexts[0].parameters.Facebook_sender_id
Я проверил свой веб-перехватчик на вкладке настроек продукта в приложении Facebook.
Я подписал свое приложение на страницу, используя свой токен доступа к странице.
Я проверил следующие события в веб-перехватчиках: messages, messaging_postbacks
Я вошел в систему как администратор приложения, когда пробую использовать бота в Facebook.
У меня нет идей, должно быть что-то я пропустил?
РЕДАКТИРОВАТЬ: Я установил функцию Azure в качестве своего веб-перехватчика для целей тестирования.
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
var request = await req.Content.ReadAsAsync<ApiAiMessage>();
log.Info($"Incoming: {JsonConvert.SerializeObject(request)}");
var slack_message = new {
text = $"Horray! Great success! :)",
attachments = new[] {
new {
title = "Hello world!",
title_link = "https://www.mywebsite.se",
color = "#00A399"
}
}
};
var facebook_message = new {
recipient = new {
id = $"{request.result.contexts[0].parameters.Facebook_sender_id}"
},
message = new {
text = "Great success!"
}
};
var response = new
{
data = new
{
facebook = facebook_message,
slack = slack_message
},
speech = "Whatever!?",
displayText = "Whatever!!",
contextOut = new[] {
new {
name = "weather",
lifespan = 2,
parameters = new {
city = "Rome"
}
}
},
source = "mywebsite.se",
followupEvent = new {
followupEvent = new {
name = "<event_name>",
data = new {
parameter = "<parameter_value>"
}
}
}
};
log.Info($"Outgoing: {JsonConvert.SerializeObject(response)}");
return req.CreateResponse(HttpStatusCode.OK, response, new MediaTypeHeaderValue("application/json"));
}