Работа с процедурами (с примерами использования)

Старт новой сессии в чат-центре

Работа с чат-центром

chat_center_enable

Функция, которая стартует новую сессию с выбранным оператором (или командой операторов) в чат-центре.

Пример использования:

{# Старт новой сессии в чат-центре #}
{% chat_center_enable %}

При этом, откроется сессия с командой «Нераспределенные», которая есть в любой учетной записи на платформе по умолчанию.

Чтобы открыть сессию с указанной командой:

{# Старт новой сессии в чат-центре с командой "Поддержка" #}
{% chat_center_enable team="Поддержка" %}

Чтобы открыть сессию с конкретным оператором:

{# Старт новой сессии в чат-центре с конкретным оператором #}
{% chat_center_enable operator="[email protected]" %}

Обратите внимание: если оператора с указанным Email не окажется, то сессия будет открыта с командой по умолчанию.

Чтобы добавить контекст для оператора при открытии новой сессии:

{# Формирование объекта с контекстом сессии #}
{% createobj chat_context %}
    {
        "Вопрос": "Привет! Как дела?"
    }
{% endcreateobj %}

{# Старт новой сессии в чат-центре с заголовком и контекстом #}
{% chat_center_enable title="Сообщение от нового пользователя" variables=chat_context %}

Чтобы переназначить сессию на другого оператора:

{# Переназначение сессии на другого оператора #}
{% chat_center_enable operator="[email protected]" reassign_if_exists=True %}

Или другую команду операторов:

{# Переназначение сессии на другую команду операторов #}
{% chat_center_enable team="Отдел продаж" reassign_if_exists=True %}

Проверить существование номера телефона в профиле клиентаРабота с профилем клиента

check_phone_number

Функция для проверки, существует ли указанный номер телефона у какого либо другого профиля клиента.

Пример использования:

{# Проверить существование номера телефона в профиле клиента #}
{% check_phone_number "+79001234567" as is_phone_exist %}

{# Если телефон был найден (существует в профиле клиента), то выполняем действие #}
{% if is_phone_exist %}
    {# Сохранить номер телефона в профиль клиента #}
    {% save_phone_number "+79001234567" %}
{% endif %}

Обратите внимание: номер телефона проходит дополнительную валидацию перед сохранением. Заведомо неверный формат номера телефона может вызвать ошибку.

Удалить значение у атрибута профиля клиента или чатаРабота с профилем клиента

clear_attribute

Функция, которая удаляет значение атрибута из профиля клиента или чата.

Пример использования:

{# Удалить значение у атрибута профиля клиента или чата #}
{% clear_attribute "profile_city" %}

Удалить тег из профиля клиентаРабота с профилем клиента

clear_tag

Функция, которая удаляет тег из профиля клиента.

Пример использования:

{# Удалить тег из профиля клиента #}
{% clear_tag "profile_auth" %}

Создать объектРабота с контекстом сценария

createobj

Функция для программного создания JSON-объекта в контексте сценария (узла) чат-бота.

Пример использования:

{# Создать объект my_obj #}
{% createobj "my_obj" %}
    {
        "country": "Россия",
        "city": "Москва"
    }
{% endcreateobj %}

Теперь в контексте текущего сценария (узла) будет доступна временная переменная my_obj с указанным JSON-объектом.

Обратите внимание: в названии переменной допускается только латиница и знак нижнего подчеркивания (_).

Не забудьте сохранить полученную временную переменную в пользовательский контекст (функция save_variable).

Создать строку (с форматированием)Работа с контекстом сценария

createstring

Функция для программного создания строки с текстом в контексте сценария (узла) чат-бота. Поддерживается форматирование, а все переносы строк и отступы будут интерпретироваться, как \n, при отображении пользователю.

Пример использования:

{# Создать строку с текстом my_string #}
{% createstring "my_string" %}
Привет, {{ attributes.profile_full_name }}!

Как ваши дела?
{% endcreatestring %}

Теперь в контексте текущего сценария (узла) будет доступна временная переменная my_string с указанным текстом.

Обратите внимание: в названии переменной допускается только латиница и знак нижнего подчеркивания (_).

Не забудьте сохранить полученную временную переменную в пользовательский контекст (функция save_variable).

Удалить переменные из пользовательского контекстаРабота с контекстом сценария

delete_variables

Функция для программного удаления значения из контекста пользователя на платформе.

Пример использования:

{# Удалить переменные из пользовательского контекста #}
{% delete_variables "my_var_1" "my_var_2" "my_var_3" %}

Теперь в контексте пользователя больше нет переменных my_var_1, my_var_2 и my_var_3.

Обратите внимание: вы можете удалять любое кол-во переменных из контекста пользователя за один раз.

Запустить нативную анкетуРабота с нативными анкетами

enter_input_form

Функция, которая запускает первый вопрос нативной анкеты.

Пример использования:

{# Запустить нативную анкету с названием "Моя анкета" #}
{% enter_input_form "Моя анкета" %}

Чтобы предварительно заполнить некоторые (или все) вопросы нативной анкеты:

{# Запустить нативную анкету с названием "Моя анкета" и ответами на 2 вопроса #}
{% enter_input_form "Моя анкета" question_123="Виктор" question_456="Дизайнер" %}

Обратите внимание: если ответ на первый вопрос был программно получен (при вызове нативной анкеты), то чат-бот пришлёт следующий неотвеченный вопрос пользователю.

Чтобы перезапустить нативную анкету:

{# Перезапустить нативную анкету с названием "Моя анкета" #}
{% enter_input_form "Моя анкета" restart=True %}

Сохранить переносы строк при отображении текста подписчикуРабота с текстом (фильтр)

value|keep_slash_n

Фильтр для функции, который интерпретирует переносы строк (Enter) в \n, сохраняя оригинальный формат контента.

Пример использования:

{# Отображение текста из переменной my_var с переносами строк #}
{{ my_var|keep_slash_n }}

Получить текущую дату и/или времяРабота с датой и временем

now

Функция для программного получения текущего timestamp (даты и времени) сервера платформы в UNIX-формате (по МСК).

Пример использования:

{# Получить timestamp текущей даты и времени #}
{% now as current_datetime %}

Обратите внимание: функция now существует только в контексте сценария (узла), где была вызвана. Для того, чтобы её использовать в процедуре, необходимо сохранить её в контекст пользователя (функция save_variable) после получения.

Заменить значение в строкеРабота с контекстом сценария

replace

Функция для программной замены необходимого значения в указанной строке внутри сценария (узла) чат-бота.

Пример использования:

{# Заменить значение в строке #}
{% replace "С новым 2021 годом!" "2021" "2022" as my_var %}

Теперь в контексте текущего сценария (узла) будет доступна временная переменная my_var с измененным значением.

Обратите внимание: в названии переменной допускается только латиница и знак нижнего подчеркивания (_).

Не забудьте сохранить полученную временную переменную в пользовательский контекст (функция save_variable).

Найти ID контактов в S2 по номеру телефонаРабота с CRM-системой S2

s2crm_contact

Функция для поиска ID контакта в подключенном CRM S2 по номеру телефона.

Пример использования:

{# Найти ID контакта в S2 по номеру телефона #}
{% s2crm_contact number="79001234567" need_save=True as contact_id %}

Если в S2 существует контакт с указанным номером телефона, то в контексте текущего сценария (узла) будет доступен ID контакта во временной переменной contact_id.

Обратите внимание: в названии переменной допускается только латиница и знак нижнего подчеркивания (_).

Не забудьте сохранить полученную временную переменную в пользовательский контекст (функция save_variable).

Инициации сделки в CRM S2 по номеру телефонаРабота с CRM-системой S2

s2crm_lead_create

Функция для инициации сделки в CRM S2. Если контакта с указанным номером телефона нет, то он будет создан автоматически.

Пример использования:

{# Инициации сделки "Моя сделка" в CRM S2 по номеру телефона #}
{% s2crm_lead_create name="Моя сделка" number="79001234567" %}

Для указания маршрутизации новой сделки в автоворонку:

{# Инициации сделки "Моя сделка" в CRM S2 по номеру телефона #}
{% s2crm_lead_create name="Моя сделка" number="79001234567" stage="123" %}

В атрибуте stage необходимо указать ID автоворонки, которую вы создали в CRM S2.

Проверить наличие сделок в S2 по номеру телефонаРабота с CRM-системой S2

s2crm_lead_exists

Функция для проверки наличия сделок контакта по номеру телефона в подключенной к платформе CRM S2.

Пример использования:

{# Проверить наличие сделок в S2 по номеру телефона #}
{% s2crm_lead_exists number="79001234567" as is_lead_exists %}

Если в S2 существует контакт с указанным номером телефона и у него есть хотя бы одна сделка, то в контексте сценария (узла) во временной переменной is_lead_exists будет значение True. Если нет сделок, то False.

Обратите внимание: вы можете использовать полученную временную переменную сразу же, не сохраняя её в контекст пользователя. Это бывает удобно для построения условий, с помощью конструкции {% if ... %}.

Чтобы исключить ID статусов сделки, которые вам (по каким-то причинам) на данный момент не нужны для проверки:

{# Проверить наличие сделок в S2 по номеру телефона, исключив из нее некоторые ID статусов #}
{% s2crm_lead_exists number="79001234567" exclude="123,456" as is_lead_exists %}

Сохранить номер телефона в профиль клиентаРабота с профилем клиента

save_phone_number

Функция для сохранения номера телефона в профиль клиента.

Пример использования:

{# Сохранить номер телефона в профиль клиента #}
{% save_phone_number "+79001234567" %}

Обратите внимание: номер телефона проходит дополнительную валидацию перед сохранением. Заведомо неверный формат номера телефона может вызвать ошибку.

Сохранить переменную в пользовательский контекстРабота с контекстом сценария

save_variable

Функция для программного сохранения значения в контекст пользователя на платформе.

Пример использования:

{# Сохранить значение в пользовательский контекст #}
{% save_variable "my_var" "Привет!" %}

Теперь в контексте пользователя (во всех сценариях чат-бота) будет доступна переменная my_var с указанным значением.

Обратите внимание: в названии переменной допускается только латиница и знак нижнего подчеркивания (_).

Значение можно сохранять не только из строки, но и из другой переменной, которая есть в контексте сценария (узла) или пользователя.

Отправить письмо на указанный EmailВзаимодействие с подписчиками

send_email

Функция для программной отправки письма на указанный Email.

Создайте в интеграционном слое DTL-функцию {% send_email %}, в которой передайте первым аргументом Email получателя, во втором тему письма, а в третьем – тело письма (строку текста).

Обратите внимание: вы можете подставлять Email из контекста пользователя и/или из профиля клиента.

Пример использования:

{# Создаём тело письма #}
{% createstring message %}
	Зима. Крестьянин, торжествуя,
	На дровнях обновляет путь.
{% endcreatestring %}

{# Отправляем письмо на указанный Email с темой "Письмо от Пушкина" #}
{% send_email "[email protected]" "Письмо от Пушкина" message %}

Обратите внимание: введенный вами текст будет отправлен с учётом переноса строк.

Отправить подписчику текст от чат-ботаВзаимодействие с подписчиками

send_text

Функция для программной отправки текста подписчику от чат-бота. Создайте в интеграционном слое DTL-функцию {% send_text %}, в которой передайте первым аргументом необходимую строку текста.

Пример использования:

{# Отправляем текст подписчику чат-бота #}
{% send_text "ВАШ ТЕКСТ ТУТ" %}

Обратите внимание: введенный вами текст будет отправлен «как есть», без учёта переноса строк.

Установить переменную в контексте сценарияРабота с контекстом сценария

set

Функция для программной установки контекста внутри сценария (узла) чат-бота.

Пример использования:

{# Установить переменную в контексте сценария #}
{% set my_var="Привет!" %}

Теперь в контексте текущего сценария (узла) будет доступна временная переменная my_var с указанным значением.

Обратите внимание: в названии переменной допускается только латиница и знак нижнего подчеркивания (_).

Удобно использовать функцию set для форматирования значения «на лету» с использованием фильтров для функций.

Например, вот так:

{# Установить переменную в контексте сценария со значением текущей даты #}
{% set today=now|as_datetime|date:"d.m.Y" %}

Теперь в переменной today будет содержаться строка со значением текущей даты в формате ДД.ММ.ГГГГ.

Добавить значение к атрибуту профиля клиента или чатаРабота с профилем клиента

set_attribute

Функция для программного добавления значения для атрибута чата или профиля клиента.

Пример использования:

{# Добавить значение к атрибуту профиля клиента или чата #}
{% set_attribute "profile_city" "Москва" %}

Обратите внимание: если атрибута с таким названием не будет на платформе, то будет ошибка валидации интеграционного слоя при сохранении.

Добавить тег к профилю клиентаРабота с профилем клиента

set_tag

Функция для программного добавления тега к профилю клиента.

Пример использования:

{# Добавить тег к профилю клиента #}
{% set_tag "profile_auth" %}

Обратите внимание: если тега с таким названием не будет на платформе, то будет ошибка валидации интеграционного слоя при сохранении.

Перемешать все элементы в спискеРабота с объектами (фильтр)

value|shuffle

Фильтр для функции, который перемешивает в случайном порядке все элементы в заданном списке.

Пример использования:

{# Перемешать все элементы в списке my_list #}
{{ my_list|shuffle }}

Если в списке my_list был такой порядок элементов ["a", "b", "c" ,"d"], то после применения данного фильтра для функции, он поменяет его в абсолютно случайном порядке. Например, вот так: ["c", "d", "a" ,"b"].

Разбить строку на список, используя разделительРабота с контекстом сценария (фильтр)

split

Фильтр для функции, с помощью которого можно разбить строку на список, используя разделитель.

Пример использования:

{# Разбить строку на список, используя разделитель #}
{{ my_var|split:"," }}

Если в my_var строка с текстом "John, Paul, George, Ringo", то, после применения этого фильтра, вы получите следующий список:

["John", "Paul", "George", "Ringo"]

Остановить дальнейшее выполнение сценарияРабота с контекстом сценария

stop

Функция, которая останавливает дальнейшие действия в сценарии (узле). Чаще всего используется в ситуации, когда нужно оставить выполнение какой-либо процедуры в интеграционном слое.

Пример использования:

{# Остановить дальнейшее выполнение сценария #}
{% stop %}

Обратите внимание: после остановки сценария пользователь может «зависнуть» в неопределенном состоянии. Чтобы так не происходило, следите за тем, что перед выполнением функции stop, – вы оставили какое-то пояснительное сообщение или действие для пользователя.

Подписка на автоворонкуРабота с автоворонками

subscribe_to_funnel

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

Пример использования:

{# Подписка на автоворонку "Вебинар" #}
{% subscribe_to_funnel "Вебинар" %}

Чтобы отправить пользователя, находящегося в указанной автоворонке, снова на её начало:

{# Повторная подписка на автоворонку "Вебинар" (сценарий пойдёт сначала) #}
{% subscribe_to_funnel "Вебинар" "start" %}

Перейти в указанный сценарий чат-ботаРабота со сценариями

now

Функция для программного переключения сценариев (узлов) чат-бота. При его использовании в процедуре, пользователь чат-бота будет немедленно переключен на указанный сценарий.

Обратите внимание: если узла с указанным названием не будет, то возникнет ошибка.

Пример использования:

{# Переход в сценарий "Главное меню" #}
{% switch "Главное меню" %}

Также, можно передавать GET-параметры, которые будут доступны в контексте узла, в который будет совершен переход.

Пример использования:

{# Переход в сценарий "Главное меню" с передачей GET-параметров #}
{% switch "Главное меню" %}?country=Россия&city=Москва

Отписаться от всех автоворонокРабота с автоворонками

unsubscribe_all_funnels

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

Пример использования:

{# Отписаться от всех автоворонк #}
{% unsubscribe_all_funnels %}

Отписаться от автоворонкиРабота с автоворонками

unsubscribe_from_funnel

Функция для немедленной программной отписки чата пользователя от указанной автоворонки.

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

Пример использования:

{# Отписаться от автоворонки "Вебинар" #}
{% unsubscribe_from_funnel "Вебинар" %}

Last updated