Как подставить и использовать данные в бота из уведомления клиенту
Юзер кейс
Одним из наших сервисов являются уведомления (сообщения), которые отправляются клиентам в разные мессенджеры (Viber, VK, WhatsApp и т.д.).
В таких сообщениях кроме уведомления можно использовать переход в бота: клиенту приходит уведомление, он нажимает на кнопку (вводит слово, переходит по ссылке в зависимости от мессенджера) и ему предоставляются все возможности ботов (согласование доставки, отслеживание, перенос записи на прием и т.д.).
В уведомлениях изначально есть параметры для подстановки в сообщение (номер заказа, телефон клиента, дата и время доставки, адрес доставки и т.п.).
В данном кейсе мы рассмотрим, как использовать в боте параметры, которые идут из уведомлений.
Решение
По умолчанию (у разных клиентов различается) Json уведомлений выглядит так:
Чтобы в боте использовать телефон, нужно его запомнить через условие @. Телефон нам может быть полезен в случае, если в боте используется запрос к АПИ клиента с помощью телефона. Чтобы лишний раз у клиента не спрашивать номер заказа, мы можем подставлять в запрос телефон из уведомления. Для этого нужно:
1. В начале ветки, на которую ссылается уведомление, добавить узел Запомнить данные
2. Выбрать предварительно созданную переменную для хранения телефон (у нас это будет Phone)
3. В ожидаемом типе данных указываем Значение
4. В значение, которое нужно сохранить, прописываем @{{content.metaData.authPhone}}.
Таким образом мы сохраняем номер телефона в переменную Phone, которая у нас в дальнейшем будет использоваться на разных этапах в боте.
Использование в чат-боте названия шаблона
В чат-боте кроме телефона может потребоваться также название шаблона, по которому было отправлено уведомление. Например, по названию шаблона можно менять меню для открытия вайбера и отображать те или иные кнопки в зависимости от шаблона.
Переменная, в которой мы отображаем название шаблона, в боте будет выглядеть так: @{{content.metaData.templateName}}. Эту переменную мы также можем сохранить в обычную переменную или сразу использовать напрямую через указанное значение. Если использовать напрямую в таком виде @{{content.metaData.templateName}}, тогда использование переменной возможно только в 1 узле, который следует сразу за точкой входа. Чтобы использовать на любом этапе бота, её нужно сохранить в динамическую переменную бота.
Использование в чат-боте других переменных уведомления
В чат-боте можно использовать любую из переменных, которую вы в уведомлениях передаете в массиве meta. В рассмотренном ранее примере у нас есть кроме телефона и названия шаблона еще две переменные: Name и Date. В боте они будут выглядеть так: @{{content.metaData.Name}}, @{{content.metaData.Date}}.
Если переменные нужно использовать только в 1 узле, который следует сразу за узлом входа, сохранять их в отдельные переменные не нужно. Но если потребуется использование на разных этапах бота - их необходимо сохранить в динамические переменные бота, как мы делали в случае с телефоном (сохраняли его в Phone).
Таким образом, мы видим, что общая часть у всех параметров будет content.metaData, а далее после точки наименование того параметра, которые необходимо использовать.