Згідно політики месенджерів, боти не можуть відправляти повідомлення першими. Для того, щоб користувач міг отримувати нотифікації із боту, він повинен якось повзаємодіяти з ботом, та відправити йому будь-яке початкове повідомлення.
Найпростіший спосіб так зробити, це на стороні сайту/застосунку потрібно створити кнопку "хочу отримувати повідомлення в месенджер" (або "слідкувати за статусом замовлення в месенджері", "вибрати канал підтримку" тощо), яку людина буде натискати і ініціювати контакт з ботом.
В цій кнопці стартовий параметр може містити customer_id клієнта у вашій CRM/ERP і назад бот буде повертати chat_id та вибраний клієнтом канал комунікації для того, щоб ви й надалі могли відправляти йому нотифікації. Бот за цим сценарієм не робить нічого крім того, що говорить "Чудово, тепер я буду повідомляти вам всі новини за вашим замовленням, якщо потрібна допомога - натисніть “з’єднати з оператором”
В месенджерах існують механізми, які дозволяють передавати в бот вхідні параметри. Ці механізми називаються deeplink і являють собою спосіб зашити параметр в посилання, яке відкриє бот.
Viber https://developers.viber.com/docs/tools/deep-links/
Приклад viber://pa?chatURI=<URI>&context=<UserID>&text=<Start!>
Параметр text
не обов’язковий, якщо його передати, він буде підставлений в строку вводу користувача в такому вигляді:
Якщо його не передавати, перехід за посиланням все одно буде вважатися початком бесіди та достатній для підписки на нотифікації
Telegram https://core.telegram.org/bots#deep-linking
Приклад: [<https://telegram.me/><Имя_бота>?start=<UserID>](<https://telegram.me/><Имя_бота>?start=<UserID>)
Для підписки на нотифікації перейти за посилання недостатньо, потрібно натиснути кнопку Почати
Facebook https://developers.facebook.com/docs/messenger-platform/discovery/m-me-links/
Приклад: http://m.me/<PAGE_NAME>?ref=<UserID>
До стартового параметру можна передавати id клієнта, замовлення тощо. Загалом що завгодно, що дозволить вам потім співставити дані з вашого сайту/застосунку з парою chat_id + канал з боту.
Таким чином вам потрібно сформувати посилання на свої боти з зазначенням вхідного параметру та просити користувача натиснути на посилання і почати спілкування з ботом.
Якщо вам не потрібно використовувати в боті id користувача в зовнішній системі (наприклад ідентифікувати), ви можете не передавати ніяких параметрів, а просто відправляти користувача в бот робити перші кроки та зберігати chat_id + канал в CRM/застосунку.
<aside>
⚠️ При використанні deeplink'а Facebook, Viber передаеться команда start
. Враховуйте це якщо ви використовуєте розгалуження сценарію з допомогою action'а get_command
</aside>
Якщо ви бажаєте використовувати в сценарії стартовий параметр, використовуйте дію get_command
Він обробляє команду виду /commandname
або передану через deeplink, якщо переданий параметр, встановлює константу {{messenger_input_param}}
Вже після першого повідомлення від користувача, наприклад натискання кнопки "Почати" в Telegram, бот повинен повернути назад в в застосунок (сайт, CRM, тощо) пару параметрів, а саме
chat_id
- унікальний в межах месенджеру id чата. Зазвичай це букво-символьна строка.channel
- назва каналу (telegram, viber, facebook и так далее)