Обратите внимание: если клиент, которому вы отправляете ответ (например, Facebook Messenger), не поддерживает специальные форматы, такие как полужирный, это бесполезное упражнение.
Тем не менее, есть много более богатых типов ответов, которые вы можете отправлять, чем просто текст, и если вы хотите делать это программно, а не создавать расширенные ответы в API.ai, я бы предложил внедрить ваше собственное серверное решение между клиентом и API.ai вместо того, чтобы иметь его в конце процесса.
Другими словами: Клиентский интерфейс ‹-> Пользовательское решение ‹-> API.ai, а не Клиент ‹-> API.ai ‹-> Пользовательское выполнение.
Это дает вам больше возможностей настройки и выполнения, в том числе создание полностью настраиваемой логики ответов / подсказок, даже не затрагивая конечную точку API.ai, или дальнейшее редактирование возвратов API после их обработки, например, добавление результата запроса к базе данных в текст API. аи исполнение.
Предполагая, что у вас есть такая настройка, в node.js решение для отправки более сложных полезных нагрузок, чем текст, в Facebook Messenger будет выглядеть так:
//Send gif or image reply
function sendGifMessage(recipientId) {
var messageData = {
recipient: {
id: recipientId
},
message: {
attachment: {
type: "image",
payload: {
url: config.SERVER_URL + "FILE LOCATION"
}
}
}
};
callSendAPI(messageData);
}
// Send custom payload buttons
function sendButtonMessage(recipientId, text, buttons) {
var messageData = {
recipient: {
id: recipientId
},
message: {
attachment: {
type: "template",
payload: {
template_type: "button",
text: text,
buttons: buttons
}
}
}
};
callSendAPI(messageData);
}
// Send quickReply buttons
function sendQuickReply(recipientId, text, replies, metadata) {
var messageData = {
recipient: {
id: recipientId
},
message: {
text: text,
metadata: isDefined(metadata)?metadata:'',
quick_replies: replies
}
};
callSendAPI(messageData);
}
function callSendAPI(messageData) {
request({
uri: 'https://graph.facebook.com/v2.6/me/messages',
qs: {
access_token: config.FB_PAGE_TOKEN
},
method: 'POST',
json: messageData
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
var recipientId = body.recipient_id;
var messageId = body.message_id;
if (messageId) {
console.log("Successfully sent message with id %s to recipient %s",
messageId, recipientId);
} else {
console.log("Successfully called Send API for recipient %s",
recipientId);
}
} else {
console.error("Failed calling Send API", response.statusCode, response.statusMessage, body.error);
}
});
}
надеюсь, это поможет
person
Matt R O'Connor
schedule
24.04.2017