Это будет небольшая статья, если вы уже знаете, как установить и подключить Dialogflow с Messenger.
Psst: полный код в конце этой статьи.
Проблема
Я изо всех сил пытался понять, как обрабатывать стикеры и изображения Messenger по отдельности.
Единственное упоминание об этом было ответом на Stackoverflow, и в моем случае этого было недостаточно.
Событие «FACEBOOK_MEDIA» также принимает все виды медиафайлов, изображений и стикеров. Мне пришлось их разделить.
Решение
Решение очень простое, но я потратил много времени, чтобы понять это.
# 1 Dialogflow
В намерении Dialogflow добавьте «FACEBOOK_MEDIA» как событие. Например, я назвал намерение «изображениями».
В качестве ответа вы можете указать что-нибудь как резервное. Мы отправим ответы с node.js
И, наконец, включите «Выполнение› Включить вызов веб-перехватчика… »
№2 Node.js
С другой стороны, нам понадобится всего пара строк кода. Итак, сначала нам понадобится функция для обработки намерений «изображений», например:
function imagesFunc (agent) {/ * здесь код… * /}
После этого добавьте новую intentMap для этой функции. Вот так:
intentMap.set («изображения», imagesFunc)
Теперь давайте добавим код внутрь функции imagesFunc.
Прежде всего, нам нужно захватить ввод пользователя после срабатывания события «FACEBOOK_MEDIA». После этого мы просто извлечем стикер_id из ответа.
const sticker_id = agent.request_.body.originalDetectIntentRequest.payload.data.message.sticker_id;
Возможны два результата: не определено и фактический идентификатор стикера. Как вы полагаете, теперь мы можем создать IF ELSE следующим образом:
if (sticker_id! = undefined) {// это наклейка
agent.add («Хорошая наклейка!»);
} else {// это не наклейка
agent.add («Спасибо за изображение!»);
}
Вот и все! Все просто, правда? :)
Полный код:
Https://gist.github.com/stefanmm/4e78abd119f04105864c6bfafe73b0f8