> For the complete documentation index, see [llms.txt](https://docs.fstrk.io/knowledge_base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fstrk.io/knowledge_base/instructions/old/vizualnyi-konstruktor-chat-botov/konstruktor/rabota-s-procedurami/tegi-i-filtry-integracionnogo-sloya.md).

# Теги и фильтры интеграционного слоя

#### Теги команд

Для самых распространеннных внутренних команд существуют теги, которые упрощают написание кода. Например, для команды переключения на другой узел есть тег `{% switch %}`. Вы можете написать как `{% switch "Пройти регистрацию" %}`, так и **/switch/21282**, но гораздо проще запомнить название узла, чем идентификатор 21282.

#### ТОП-тегов интеграционного слоя

* `{% now %}` Отображает текущую дату и/или время
* `{% datetime_now %}` Вернёт текущее время и дату
* &#x20;`{% switch %}` Переход в узел&#x20;
* `{% set %}` Установить переменную в контексте узла&#x20;
* `{% replace %}` Заменить значение в строке. Пример - `{% replace "С новым 2021 годом" "2021" "2022" as text %}`&#x20;
* `{% createobj %}` Создать объект&#x20;
* `{% createstring %}` Создать строку&#x20;
* `{% calc_timedelta %}` Вычисляет дельту между двумя датами&#x20;
* `{% save_variable %}` Сохраниться переменную&#x20;
* `{% delete_variables %}` Удалить переменную&#x20;
* `{% send_text %}` Отправить текстовое сообщение&#x20;
* `{% save_phone_number %}` Сохранить телефон в профиль (основной)&#x20;
* `{% check_phone_number %}` Проверить существует ли телефон у других клиентов&#x20;
* `{% set_attribute %}` Сохранить атрибут чата&#x20;
* `{% clear_attribute %}` Отчистить атрибут чата&#x20;
* `{% set_tag %}` Добавить тег чата&#x20;
* `{% clear_tag %}` Удалить тег чата&#x20;
* `{% profile.set_attribute %}` Сохранить атрибут профиля&#x20;
* `{% profile.set_tag %}` Добавить тег профиля&#x20;
* `{% profile.clear_tag %}` Удалить тег профиля&#x20;
* `{% chat_center_enable %}` Открыть чат-сессию с оператором&#x20;
* `{% subscribe_to_funnel %}` Подписаться на воронку&#x20;
* `{% unsubscribe_from_funnel %}` Отписаться от воронки&#x20;
* `{% enter_input_form %}` Запустить анкету&#x20;
* `{% form_lead %}` Получить данные последнего лида формы для сайта&#x20;
* `{% form_data %}` Получить данные последнего лида формы для бота&#x20;
* `{% stop %}` Остановить выполнение процедур и отправку контента узла

#### ТОП-фильтров интеграционного слоя

* `{% date %}` Форматирует дату в соответствии с заданным форматом.
* `{% as_datetime %}` Вернуть объект в виде даты&#x20;
* `{% add_days %}` Добавить дни к объекту даты и времени&#x20;
* `{% subtract_days %}` Отнять дни от объекта даты и времени&#x20;
* `{% subtract %}` Вычитает одно число из другого&#x20;
* `{% keep_slash_n %}` Интерпретирует переносы строк (энтеры) в \n

#### Переменные, которые всегда есть в контексте

* `{{ platform }}` Платформа пользователя. Может быть равна `"telegram", "facebook", "viber"`
* `{{ messenger_first_name }}` и `{{ messenger_last_name }}` Имя и фамилия пользователя (как он сам себя назвал в мессенджере)
* `{{ request.type }}` Тип сообщения от пользователя. Может быть равен `"text", "picture", "video", "document", "location", "contact", "postback"`
* `{{ request.content }}` Содержимое сообщения от пользователя. Это текст, адрес отправленной картинки/документа, и так далее.
* `{{ request.latitude }}` и `{{ request.longitude }}` Широта и долгота (для типа `location`)

для того чтобы точки в координатах не были экранированы при запросе (к FlexCMS или к любому стороннему REST API), необходимо передавать их с фильтром `unlocalize`. Например - `{{request.longitude|unlocalize }}`

* `{{ request.is_telegram_user }}` Является ли телефон аккаунтом Telegram (для типа `contact`, платформы `telegram`):
* `{{ request.is_own_contact }}` Отправил ли пользователь свой личный контакт или чей-то еще из записной книжки  (для типа `contact`, платформы `telegram/viber`).
* `{{ request.viber_api_version }}` Версия API Viber: число 1, 2, 3, 4, 5 и тд (для платформы `viber`)
* `{{ chat_id }}` Внутренний ID чата с пользователем в конструкторе
* `{{ chat_uuid }}` Внутренний UUID чата с пользователем в конструкторе
* `{{ cookies }}` Хранинище BotCookies.
* `{{ chat_center.session.team }}` и `{{ chat_center.session.operator }}` и `{{chat_center.session.is_automatic }}` Информация про контекст чат-центра (находится ли пользователь в чат-центре? с кем из операторов он общается? и тд).
* `{{ operator.is_authorized }}` Авторизован ли оператор (только для операторского бота). Возвращает True или False. Можно использовать в условиях: `{% if operator_is.authorized %}`, `{% if not operator.is_authorized %}`
* `{{ operator.phone_number }}` Телефонный номер, который передал оператор (только для операторского бота).
* `{{ get_params }}` GET-параметры запроса. Подробнее о GET-параметрах можно прочитать [здесь](https://fasttrack-docs.atlassian.net/wiki/spaces/IG/pages/53117117).
* `{{ http_response }}` Результат HTTP-запроса, сделанного в узле. Эта переменная существует только в узле, сделавшем запрос, и нигде больше не сохраняется. Ее можно использовать, если нужно достать что-нибудь из ответа на HTTP-запрос, но при этом полностью этот ответ сохранять необязательно.  Если же вы настроите сохранение ответа в определенную переменную (например, `{{ my_result }}`), то результат HTTP-запроса будет одинаково доступен и в\*\*\*\*`{{ my_result }}`, и в `{{ http_response }}` . Но после выхода из узла переменная `{{ my_result }}` сохранится в пользовательских переменных, а `{{ http_response }}` - нет.
* `{{ http_response.http_status_code }}` Статус ответа  HTTP
* `{{ http_response.http_cookies }}` Куки в ответе HTTP
* `{{ facebook_deeplink }}` Ссылка на бота Facebook Messanger. Присутствует тогда, когда подключен Facebook Bot.
* `{{ viber_deeplink }}` Ссылка на бота Viber. Присутствует тогда, когда подключен Viber Bot.
* `{{ telegram_deeplink }}` Ссылка на бота Telegram. Присутствует тогда, когда подключен Telegram Bot.
* `{{ vkontakte_deeplink }}` Ссылка на бота Вконтакте. Присутствует тогда, когда подключен Вконтакте Бот.
* `{{ bot_uuid }}` UUID бота.
* `{{ bot_key }}` API-ключ к боту. Требуется внешним сервисам для интеграции с ботом.
* `{{ node_id }}` ID узла (если сообщение сгенерировано узлом, а не анкетой и пр.)
* `{{ node_name }}` Название узла (если сообщение сгенерировано узлом, а не анкетой и пр.)

#### Полный список кастомных тегов и фильтров для работы на платформе

Рекомендуется к изучению для более продуктивной работы.

Полный список кастомных тегов и фильтров для работы на платформе

#### Полный список тегов Django Template Language (DTL)

Рекомендуется к изучению для более продуктивной работы.

<https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#ref-templates-builtins-filters>
