Телеграм позволяет запросить у пользователя привязанный номер телефона. Это гарантирует, что номер настоящий и принадлежит текущему пользователю. В ответ будет получено событие с контактом (визитной карточкой) пользователя.
Для получения контакта таким образом понадобятся 2 блока:
Чтобы запросить контакт, добавьте текст к сообщению, нажмите на кнопку настройки и выберите пункт "Запросить контакт"
Обратите внимание! Эта функция поддерживается только в Telegram и только для кнопок отправленных клавиатурой (т.е. если выбрать опцию "отправить кнопки с текстом сообщения", запрос контакта не сработает).
Сохраните изменения.
Теперь, когда пользователь нажмет на кнопку, у него появится окно с подтверждением.
Добавьте в воронку блок "Событие чата телеграм".
И выберите из выпадающего списка пункт "Получен контакт".
Обратите внимание! Телеграм отправляет событие с контактом не только в этом случае. Если отправить боту любой контакт как вложение, телеграм также пришлет событие с данными контакта. Поэтому, если вам важно получить контакт именно текущего пользователя, установите чек-бокс "Не принимать контакты других пользователей".
Сохраните настройки. Теперь, когда Ваш бот получит карточку контакта, в воронке активируется событие.
Теперь, когда в воронку уже приходит событие, его данные можно обработать стандартными средствами воронки (сохранить в переменную, проверять в условиях, отправить в тексте сообщения и т.д).
Если вы еще не знакомы с переменными, изучите эту статью.
Зайдите в настройки реактивности и установите чек-бокс "установить переменные".
В этом событии доступны следующие свойства:
event.contact.phone_number
event.contact.first_name
event.contact.last_name
event.contact.user_id
event.contact.vcard
Если хотите узнать полную структуру события, можете залогировать данные.
Сохраните нужные свойства в переменные. Например так:
user.phone = event.contact.phone_number
user.telegramId = event.contact.user_id
Или можете сохранить весь объект целиком:
user.tgContact = event.contact
В этом случае, когда будете обращаться к переменной, путь будет состоять из двух .
, т.е. user.tgContact.phone_number
Сохраните изменения.
Далее вы можете проверять значения этих переменных на стрелках, использовать в тексте и в других авто-действиях.
P.s. Если вы хотите самостоятельно проверить соответствует ли идентификатор отправленного контакта с идентификатором текущего пользователя и построить в зависимости от этого разные реакции, в этом вам помогут условия на стрелках.
Идентификатор текущего пользователя находится в переменной события event.chat.originId
Т.е. чтобы проверить, что пользователь отправил именно свой контакт, выражение может выглядеть так: