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

Обработка номера телефона

Процедура для узла, в котором необходимо обработать пользовательский ввод и проверить номер телефона на валидность. После копирования добавьте названия узлов для следующего шага в сценарии и для повторного ввода номера телефона.

{# проверяем на валидность отправленный номер телефона #}
{% normalize_phone request.content is_forced=True as phone_number %}
{# Отправленный номер телефона валидный #}
{% if phone_number %}
    {# сохраняем в профиль клиента отправленный номер телефона #}
    {% set_attribute "profile_phone_number" phone_number %}
    {# переадресуем пользователя в следующий сценарий #}
    {% switch "название_сценария" %}
{% else %}
    {# отправлен был невалидный номер телефона, переадресуем пользователя в сценарий где повторно просим его отправить номер #}
    {% switch "название_сценария" %}
{% endif %}

Обработка номера телефона с проверкой на то, что был отправлен контакт из Telegram

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

{# проверяем на валидность отправленный номер телефона #}
{% if request.type == "contact" and request.is_own_contact %}
    {# сохраняем в профиль клиента отправленный номер телефона #}
    {% set_attribute "profile_phone_number" request.content %}
    {% switch "название_сценария" %}
{% else %}
    {# отправлен не контакт пользователя, переадресуем пользователя в сценарий где повторно просим его отправить номер #}
    {% switch "название_сценария" %}
{% endif %}

Сохранение имени, email в профиль клиента

  • Для сохранения имени в процедуре узла сохранения напишите:

{% set_attribute "profile_full_name" request.content %}
  • Для сохранения email в процедуре узла сохранения напишите:

{% set_attribute "profile_email" request.content %}

Регулярные выражения

  • Проверка на email:

^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$
  • Проверка на отправку даты ф формате день.месяц.год:

(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)\d\d

Проверка подписки на Telegram-канал

Для проверки подписки на Telegram-канал добавьте чат-бот в качестве администратора в Telegram-канал.

В узле проверки подписки укажите данный API-запрос

{
    "method": "POST", 
    "url":"https://api.telegram.org/bot{{токен_чат_бота}}/getChatMember?chat_id={{id_telegram_канала}}&user_id={{messenger_id}}"
}

Вместо {{токен_чат_бота}} напишите токен чат-бота, который добавлен администратором в канал Вместо {{id_telegram_канала}} напишите id нужного канала, узнать id можно через специальные чат-боты.

В процедуре узла пропишите следующий код:

{# проверяем ответ от Telegram для данного пользователя #}
{% if http_response.result.status == "member" or http_response.result.status == "administrator" or http_response.result.status == "creator" %}
    {# пользователь подписан на канал #}
    {% switch "название дальнейшего узла" %}
{% else %}
    {# пользователь не подписан на канал #}
    {% switch "название узла когда пользователь не подписан на канал" %}
{% endif %}

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

Last updated