Как вывести данные из Mindbox в чат-боте

Связка между Mindbox и чат-ботом позволяет настроить персонализированное общение с пользователями в мессенджере, используя данные из профиля клиента на платформе.

2023-04-11-140529.gif

Настроить передачу и вывод данных

Принцип следующий:

1. Создайте операцию, которая будет запрашивать нужные данные, например:

Снимок экрана 2023-03-30 в 17.51.07.png

Можно создать операцию, которая будет возращаться сразу несколько полей, и использовать ее на нескольких экранах.

2. Добавьте вызов этой операции на экран Botmother с помощью компонента «Запрос».
Для его заполнения можно сверяться с ранее созданной операцией:

Снимок экрана 2023-03-15 в 05.45.01.png

  • Метод запроса — 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}}"
    }
  }
}

Снимок экрана 2023-03-30 в 18.40.37.png

3. Настройте вывод полученных данных с помощью параметров.

Спецификацию и пример ответа можно посмотреть в описании операции:

Снимок экрана 2023-03-30 в 17.53.23.png

В Botmother он записывается в параметр last_request

Можно посмотреть по клиенту на вкладке «Пользователи» после вызова:

Снимок экрана 2023-03-30 в 18.06.24.png

Далее вывод зависит от вложенности нужных данных в объекте last_request
Формат записи параметра в Botmother — {{параметр}}

Разберем на примере ответа из скриншота выше.

Вывести переменную

Выведем имя ("firstName").

"firstName" — это элемент объекта «customer», который является частью объекта last_request
В таком случае переменная для имени записывается как {{last_request.customer.firstName}}

Снимок экрана 2023-03-30 в 18.28.54.png

Имя пользователя можно вывести и не обращаясь к Mindbox: Botmother может использовать имя из мессенджера.
Разница в том, что в телеграме указывается юзернейм, который может часто отличается от реального имени.

Вывести переменную из массива

Выведем доступный баланс ("available").

Баланс — это массив данных (обратите на квадратные скобки []). Поэтому нужно следовать правилам вывода данных из массива, даже если запрашивается баланс только одного счета.

Параметр для вывода баланса: {{last_request.balances.[0].available}}

Снимок экрана 2023-03-30 в 18.35.30.png

Возможности проверки и форматирования данных

Форматирование даты

Даты из 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}}

Снимок экрана 2023-03-30 в 19.01.26.png