B2B-маркетплейс «на_полке»: как отправлять клиентам персонализированные сообщения через Telegram

B2B-маркетплейс «на_полке» продает продукты питания, бытовую химию и другие товары оптом от проверенных поставщиков и дистрибьюторов.

Задача: подключить Telegram как канал коммуникации

«На_полке» решили протестировать Telegram в качестве канала коммуникации с клиентами. Чтобы сегментировать клиентов по городам, отправлять им триггерные сообщения и управлять коммуникациями омниканально, Telegram нужно было интегрировать с Mindbox. Для интеграции использовали сервис Botmother со встроенной функцией отправки вебхуков.

Как сделать авторизацию клиента в Telegram

Этап 1: подготовка

Перед началом интеграции Telegram с Mindbox необходимо:
  1. Создать Telegram-бота через сервис @BotFather.
  2. Завести учетную запись в сервисе https://botmother.com/.
  3. Подключить в Mindbox модуль «Рассылки и боты» и написать об этом вашему менеджеру.
  4. Создать в Mindbox дополнительное поле для сущности «клиент» с системным именемplatformID.
дополнительное поле

Этап 2: настройка авторизации клиентов бота через Mindbox

Чтобы отправлять персонализированные сообщения через Telegram, необходимо авторизировать клиентов в Mindbox так же, как это происходит на сайте или в мобильном приложении.
Авторизация для новых клиентов настраивается так:
  1. Отправить клиенту ссылку на вашего бота.
  2. Запросить номер телефона для авторизации после того, как клиент подпишется на бота.
  3. Передать этот номер в Mindbox вместе с platform ID — уникальным идентификатором клиента в Telegram. По номеру телефона Mindbox найдет пользователя в базе и присвоит ему переданный platform ID.
Чтобы упростить авторизацию для клиентов, которые уже есть в базе, можно использовать два способа автоматической авторизации в Telegram:
  • для тех, кто подписался на бота из рассылки,
  • для тех, кто подписался на бота с сайта.
Если использовать эти способы, авторизация происходит незаметно, потому что мы не просим клиентов указывать номер телефона при подписке на бота.
Для своих задач можно использовать один из трех вариантов, описанных ниже, или все сразу, чтобы увеличить конверсию в подписчика. Рассмотрим, как их правильно настроить.

Вариант 1: авторизация при переходе из рассылки

Этот вариант подходит в таких случаях:
  • Вы только что запустили бота и хотите привлечь в него ваших подписчиков из email-канала.
  • Вы отправляете welcome-письмо со ссылкой на бота всем новым клиентам.
Как настроить авторизацию при переходе из рассылки:
  1. Добавить в email-рассылку ссылку на бота с параметром ?start=${Recipient.Id}, который подставит в него Mindbox ID клиента перед отправкой. Ссылка на бота должна иметь вид: https://t.me/TEST_bot?start=${Recipient.Id}
ссылка внутри рассылки
Так выглядит ссылка внутри email-рассылки
  1. Добавить в Botmother внешнее событие с типом «Deeplink» и переменную с именемmindboxid. В переменнуюmindboxidзапишутся значения, которые будут указаны в ссылке на бота в параметре? start=${Recipient.Id}
переменная mindboxId
  1. Чтобы принять запрос с авторизацией клиента из Botmother, надо настроить в Mindbox операцию с такими настройками:
настройка операции
  1. Настроить передачу параметров Mindbox ID, который мы подставляли в ссылку на бота, и platform ID — уникального идентификатора клиента на платформе Telegram. C помощью platform ID мы можем взаимодействовать с конкретным клиентом в мессенджере напрямую из Mindbox. Для этого надо добавить блок «Запрос» на стартовом экране конструктора Botmother и указать в нем данные для передачи в Mindbox.
настройка операции
Пример запроса:
пример запроса
Когда запрос придет в Mindbox, в карточке клиента появятся действие «Подписался на Telegram» и заполненный внешний идентификатор platform ID.
подписка на телеграм
После того как platform ID получен, через Telegram можно отправлять триггерные сообщения клиенту, например о брошенной корзине или персональной скидке.

Вариант 2: авторизация при переходе с сайта

Этот способ подходит для авторизации как существующих, так и новых клиентов. На сайте можно показывать клиенту попап или встроенный блок с предложением подписаться на Telegram-бота.
В этом случае для авторизации клиента используется другой уникальный идентификатор, который формирует JS SDK для всех посетителей сайта — deviceUUID (уникальный идентификатор устройства).
Как настроить авторизацию:

1.   К концу ссылки на вашего бота добавить параметр                                                                     ? start=customs.mindboxDeviceUUID%>

Должно получиться:                                                                                                                  https://t.me/test_bot?start=customs.mindboxDeviceUUID%>Параметр

2.   Добавить сформированную ссылку на кнопку перехода в Telegram в настройках верстки попапа.
добавить ссылку на кнопку
попап
Так выглядит попап для клиента
параметр в адресной строке
При переходе в бота в адресной строке видно, что подставился параметр
После перехода по такой ссылке deviceUUID запишется в переменную mindboxid в Botmother.
  1. Создать в Mindbox операцию для получения deviceUUID и platform ID с такими настройками:
настройка операции
  1. Настроить передачу deviceUUID и platform ID из Botmother в Mindbox. Для этого на стартовом экране Botmother добавить блок «Запрос» со следующими настройками:
настройка операции
пример запроса
После передачи запроса в действиях клиента увидим действие «Подписался на Telegram» и заполненный внешний идентификатор platform_id.

Вариант 3: авторизация с помощью номера телефона

Этот метод универсальный, поэтому он подходит, когда клиент получил ссылку на бота через QR-код, медийную рекламу или обычной ссылкой без параметров UUID или Mindbox ID.
Как настроить
  1. Создать в Mindbox операцию таким образом:
создание операции
  1. Создать в Botmother цепочку действий, в которых запросить у клиента номер телефона. Пример цепочки в Botmother:
цепочка действий
После получения номера телефона через блок «Ввод от пользователя» записать номер в переменную contact.
  1. Подставить переменную «contact» и platform_id в запрос для передачи в Mindbox через операцию, созданную на первом этапе:
Пример запроса:
пример запроса
Что видит пользователь при авторизации этим способом:
что видит пользователь
что видит пользователь
При нажатии на кнопку «Ввести номер» всплывает окно с разрешением на отправку номера телефона в качестве ответа. При нажатии «Ок» номер автоматически отправляется в Mindbox.
В базе Mindbox происходит поиск клиента по номеру, если его не удалось найти, то создается новый.

Этап 3: настройка отправки сообщений в мессенджер

Вот как настроить отправку триггерного сообщения в Telegram на примере механики «брошенная корзина».
  1. Создать в конструкторе бота экран и шаблон сообщения, которое должно отправляться при брошенной корзине. Для этого сообщения понадобятся название и ссылка на товар, так как они будут передаваться из Mindbox.
Для этого используются два параметра:
— название товара — product_name
— ссылка на товар — product_url
Названия параметров могут быть любыми, их не нужно создавать в конструкторе чат-ботов дополнительно. Они будут созданы в Botmother автоматически при передаче из Mindbox.
Чтобы они отображались в сообщении, нужно использовать сущность last_request. По сути, это блок данных, который хранит в себе последние переданные в него параметры. Финальный вид параметров будет выглядеть так:
— название товара — {{last_request.product_name}}
— ссылка на товар — {{last_request.product_url}}
пример механики «брошенная корзина»
  1. Добавить в конструктор чат-ботов внешнее событие, при вызове которого из Mindbox будет отправляться сообщение из настроенного выше экрана.
конструктор чат-ботов
  1. Скопировать сформированную ссылку на внешнее событие и перейти в Mindbox. Для отправки триггерного сообщения в Telegram через Botmother используются функции вебхуков.
веб-хуки
  1. Заполнить поля вебхука:
  • В ссылке запроса указать ссылку, которую получили при создании внешнего события в Botmother
  • В заголовке — Content-Type: application/json
  • В теле запроса:
пример запроса
Разберем состав тела запроса:
${Recipient.
AdditionalData.
— здесь выводится ID клиента в Telegram, который получили на этапе авторизации.
В тело запроса добавляется строка:
@{for item in Recipient.GetProductList («Korzina1»).
(«TovaryDlyaPisemIReko»).
Она необходима для того, чтобы получить один товар из списка продуктов «Корзина» и проверить, что он есть в заранее созданном сегменте товаров со ссылками и названиями (на разных проектах списки продуктов и сегменты называются по-разному).
  1. Когда вебхук готов, добавить его отправку в сценарий брошенной корзины. Перед отправкой проверить в условиях, что у клиента есть заполненный platform ID, который передали в Mindbox при авторизации клиента в Telegram.
веб-хук
Важно: отправка сообщения в Telegram должна быть последним этапом в любом каскаде, так как мы не получаем статус доставки, открытия или клика по этому сообщению из Telegram.