Как идентифицировать клиента из чат-бота

Первая задача при создании чат-ботов — связать пользователя из бота с клиентом в Mindbox.
Это позволит использовать данные из административной панели для персонализированного общения с клиентом в боте, наполнять Mindbox данными из мессенджера, а также настраивать массовые и автоматические коммуникации.

Снимок экрана 2023-04-10 в 19.31.03.png

Принцип реализации.

В боте у клиента запрашивается контакт. Если в Mindbox находится клиент с данным контактом, в его карточку добавляется идентификатор пользователя из мессенджера, если клиент новый — создается новый профиль.
Дополнительно можно верифицировать пользователя с помощью SMS-кода.

Рассмотрим на примере телеграма со связкой по номеру телефона.

Настройки в Mindbox

Названия и системные имена можно задать отличные от приведенных ниже.

Для начальной интеграции Mindbox и Botmother (тип — «Другое»):

1. Создайте точку интеграции:

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

  • задайте название;
  • точка контакта формируется автоматически по названию интеграции;
  • включите подтверждение мобильного телефона.

2. Создайте дополнительное поле типа «Идентификатор» для хранения идентификатора в мессенджере:

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

Далее настройки непосредственно для добавления и проверки клиентов из бота:

3. Создайте операцию для добавления клиента:

image3.png

4. Создайте автоматическую SMS-рассылку для отправки кода подтверждения:

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

Параметр — ${Recipient.AuthentificationCode}

5. Создайте операцию для отправки кода подтверждения:

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

Настройки в Botmother и мессенджере

Для начала создайте бот в Botmother и телеграме и свяжите их по инструкции.
Вводная инструкция по работе с экранами и компонентами редактора ботов доступна по ссылке.

Стартовый экран — запрос номера и его передача в Mindbox

На стартовом экране (показывается при вводе /start):

1. Добавьте компонент «Кнопки с подсказками».

  1. Введите текст-обращение к пользователю.

  2. Нажмите «Добавить кнопку».

  3. Введите текст на кнопке.

  4. Тип кнопки — «Поделиться контактом».

    Снимок экрана 2023-04-11 в 20.27.27.png

2. Добавьте компонент «Ввод от пользователя».

  1. Задайте имя переменной, в которой будет храниться ответ пользователя, например usPhone

  2. Ожидаемый тип данных — Файл контакта.

  3. В настройках компонента можно указать текст, который будет выводится при невалидном ответе пользователя. Например, подсказать формат ввода номера.

    Снимок экрана 2023-04-11 в 20.30.15.png

3. Добавьте компонент «Запрос».
Для его заполнения нужно будет обратиться к спецификации ранее созданной в Mindbox операции добавления клиента:

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

  • Метод запроса — POST
  • URL запроса — скопируйте из спецификации, указав корректную точку интеграции и синхронный тип вызова.
  • Заголовки — скопируйте из спецификации JSON-формата. Секретный ключ точки интеграции можно взять с ее страницы.
  • «Использовать парсер» — JSON
  • Тело запроса — нужны только элементы для передачи идентификатора в телеграме и мобильного номера с параметрами Botmother в качестве их значений.

Подробнее по последнему пункту.

Шаблон тела запроса для передачи в Mindbox идентификатора и номера выглядит следующим образом:

{
  "customer": {
    "ids": {
      "telegramID": "<TelegramID>"
    },
    "mobilePhone": "<Мобильный телефон>"
  }
}

В значения полей нужно записать переменные Botmother:

  • идентификатор в мессенджере — {{this_user.platform_id}}
  • мобильный телефон — переменная, заданная на стартовом экране в кнопке с подсказками — {{usPhone}}

Код для компонента:

{
  "customer": {
    "ids": {
      "telegramID": "{{this_user.platform_id}}"
    },
    "mobilePhone": "{{usPhone}}"
  }
}

Таким образом платформа будет передавать в запросе в Mindbox данные, полученные по пользователю из телеграма.

Снимок экрана 2023-04-11 в 20.31.38.png

4. Добавьте компонент «Перемотка» для перехода на новый экран.

Создайте новый экран: нажмите «Добавить экран» в нижней части страницы, укажите его название и выберите его в «Перемотке» стартового экрана:

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

После отправки контакта создается клиент:

Снимок экрана 2023-04-11 в 19.40.28.png

Или дополняется, если ранее на проекте был клиента с данным номером:

Снимок экрана 2023-04-11 в 19.36.40.png

Второй экран — отправка кода авторизации

На новом экране:

1. Добавьте компонент «Запрос».
Для его заполнения нужно будет обратиться к спецификации ранее созданной в Mindbox операции отправки кода авторизации.

  • Метод запроса — POST
  • URL запроса — скопируйте из спецификации, указав корректную точку интеграции и синхронный тип вызова.
  • Заголовки — скопируйте из спецификации JSON-формата. Секретный ключ точки интеграции можно взять с ее страницы.
  • «Использовать парсер» — JSON
  • Тело запроса — в данном случае в запросе нужно передать только мобильный номер. Скопируйте тело из спецификации или из запроса выше, оставив в нем только узел для мобильного телефона:
{
    "customer": {
        "mobilePhone": "{{usPhone}}"
    }
}

Вызов операции запросит Mindbox сформировать код авторизации, отправить его пользователю и вернуть его в Botmother для дальнейшей проверки:

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

2. Добавьте компонент «Перемотка». Создайте новый экран и укажите его в «Перемотке» второго экрана:

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

Третий экран — ввод кода пользователем и его проверка

На новом экране:

1. Добавьте компонент "Сообщение".
Введите текст для запроса от пользователя полученного кода.

2. Добавьте компонент «Ввод от пользователя».

  • Задайте имя переменной, в которой будет храниться ответ пользователя, например code
  • Ожидаемый тип данных — Число.

3. Добавьте компонент «Разливка».

  • «Имя переменной, откуда развилка возьмет значение» — переменная из пункта выше, в которую записывается ответ пользователя.

  • Переход по умолчанию — если клиент введет неправильный код, возвращаем его обратно на текущий же экран.

  • Сообщение по умолчанию — сообщение клиенту о неправильном коде.

  • Добавьте Цель1 — то, что хотим получить.

    • Тип данных — число
    • Значение — правильный код. Он был получен на предыдущем экране из Mindbox и хранится в переменной {{last_request.authenticationCode}}
    • Переход — создайте экран для показа при правильном коде и укажите его здесь.

    Снимок экрана 2023-04-11 в 20.38.09.png

Четвертый экран — сообщение об успешной регистрации

На новом экране:

1. Добавьте компонент «Сообщение», чтобы сообщить клиенту об успешной регистрации.
2. Добавьте компонент «Перемотка», чтобы перевести пользователя, например, в Главное меню.

Снимок экрана 2023-04-11 в 20.41.53.png

В инструкции рассмотрен простой способ проверки контакта клиента на стороне бота. При использовании программы лояльности или в иных случаях может понадобиться настройка авторизации клиентов и подтверждения контакта на стороне Mindbox.

Авторизация по переходу из рассылки или с сайта

Альтернативные способы авторизации рассмотрены в механике.

Повторная регистрация

Пользователи могут использовать стартовую команду и после успешной авторизации.
Определите, какое поведение в таком случае нужно от бота: разрешать регистрацию с новым номером или вести на другой экран.

Рассмотрим пример настройки для повторной регистрации.

Принцип реализации.
При регистрации клиенту прописывается переменная-пометка. Далее при вводе стартовой команды проверяется значение этой переменной. При положительном значении, клиенту предлагается сбросить текущий номер и авторизоваться по другому контакту. В остальных случаях клиент совершает базовую регистрацию.

Дополните созданный бот:

1. На экране подтверждения контакта в компонент «Развилка» впишите переменную, например, verified, со значение true:

Снимок экрана 2023-04-11 в 18.46.24.png

2. На экране регистрации добавьте «Развилку», которая проверяет значение переменной verified и при значении true переводит на экран повторной регистрации:

Снимок экрана 2023-04-11 в 18.57.00.png

3. На новом экране уточните у клиента по намерению и при подтверждении переводите на новый экран:

Снимок экрана 2023-04-11 в 18.54.50.png

4. На новом экране добавьте компонент «Очистка переменных» со сбросом всех переменных и «Перемотку» на экран регистрации:

Снимок экрана 2023-04-11 в 19.00.11.png

Блокирование использования бота до регистрации

Если в чат-боте есть экраны, которые клиент не должен открыть до подтверждения контакта, например, пункты меню или рассылки, можно добавить в них проверку с той же переменной-пометкой:

Первым компонентом на экран добавьте «Развилку» и поставьте в ней проверку переменной-пометки. При нужном значении, клиент пойдет дальше по экрану, то есть увидит его, в остальных случаях — перейдет на экран регистрации:

Снимок экрана 2023-04-11 в 19.07.01.png

Нажмите «Сохранить» в нижней части страницы.

Бот готов.