Как вывести данные из Mindbox в чат-боте
Связка между Mindbox и чат-ботом позволяет настроить персонализированное общение с пользователями в мессенджере, используя данные из профиля клиента на платформе.
Настроить передачу и вывод данных
Принцип следующий:
1. Создайте операцию, которая будет запрашивать нужные данные, например:
Можно создать операцию, которая будет возращаться сразу несколько полей, и использовать ее на нескольких экранах.
2. Добавьте вызов этой операции на экран Botmother с помощью компонента «Запрос».
Для его заполнения можно сверяться с ранее созданной операцией:
- Метод запроса — POST
- URL запроса — скопируйте из спецификации, указав корректную точку интеграции и синхронный тип вызова.
- Заголовки — скопируйте из спецификации JSON-формата. Секретный ключ точки интеграции можно взять с ее страницы.
- «Использовать парсер» — JSON
- Тело запроса — скопируйте из спецификации JSON-формата и поставьте параметры Botmother в качестве их значений.
Подробнее по последнему пункту.
Шаблон тела запроса в Mindbox выглядит следующим образом:
{
"customer": {
"ids": {
"telegramID": "<TelegramID>"
}
}
}
"telegramID" — системное имя идентификатора в телеграм. Создается вручную как дополнительное поле типа идентификатор, поэтому может отличаться от проекта к проекту.
В значение идентификатора, вместо <TelegramID>
, нужно записать переменную Botmother — {{this_user.platform_id}}
Получается код для компонента:
{
"customer": {
"ids": {
"telegramID": "{{this_user.platform_id}}"
}
}
}
3. Настройте вывод полученных данных с помощью параметров.
Спецификацию и пример ответа можно посмотреть в описании операции:
В Botmother он записывается в параметр last_request
Можно посмотреть по клиенту на вкладке «Пользователи» после вызова:
Далее вывод зависит от вложенности нужных данных в объекте last_request
Формат записи параметра в Botmother — {{параметр}}
Разберем на примере ответа из скриншота выше.
Вывести переменную
Выведем имя ("firstName"
).
"firstName"
— это элемент объекта «customer», который является частью объекта last_request
В таком случае переменная для имени записывается как {{last_request.customer.firstName}}
Имя пользователя можно вывести и не обращаясь к Mindbox: Botmother может использовать имя из мессенджера.
Разница в том, что в телеграме указывается юзернейм, который может часто отличается от реального имени.
Вывести переменную из массива
Выведем доступный баланс ("available"
).
Баланс — это массив данных (обратите на квадратные скобки []
). Поэтому нужно следовать правилам вывода данных из массива, даже если запрашивается баланс только одного счета.
Параметр для вывода баланса: {{last_request.balances.[0].available}}
Возможности проверки и форматирования данных
Форматирование даты
Даты из Mindbox возвращаются в формате гггг-мм-дд
Их можно поправить перед выводом с помощью функции formatDate.
Например:
Дата рождения: {{formatDate last_request.customer.birthDate "DD.MM.YYYY" "ru"}}
Проверка наличия значения
Используйте хелпер #if.
Например, хотим выводить имя, только если оно было получено из Mindbox. Иначе выводить текст «не заполнено»:
Имя: {{#if last_request.customer.firstName}}{{last_request.customer.firstName}}{{else}}<i>не заполнено</i>{{/if}}
Сравнение значений
Используйте хелпер #eq.
Например, пол клиента из Mindbox возвращается в виде строки female
или male
.
Для вывода в чате такой фомрат не подойдет.
В таком случае можно сравнить полученные данные с возможными значениями и настроить вывод иного текста:
Пол: {{#eq last_request.customer.sex "female"}}женский{{/eq}}{{#eq last_request.customer.sex "male"}}мужской{{/eq}}