Skip to main content

Контракт для разработчика

Раздел для того, кто поднимает HTTP-обработчик на стороне клиента.

Запрос от платформы

Адрес, заголовки, параметры и тело собираются из полей формы с подстановкой {{переменная}}. Доступны переменные звонка (from_number, to_number, direction и всё, что настроено в агенте и кампании), результаты уже выполненных функций и — только в блоке после звонка — call и analysis. Секреты в поля не вписываются: только ссылкой {{env.ИМЯ_ПЕРЕМЕННОЙ}}, значение подставляется платформой при выполнении. В истории звонка запрос сохраняется маскированным. Таймаут запроса — поле функции, по умолчанию 10 с, потолок 30 с. Эффективный таймаут ещё урезается остатком бюджета блока: остаток берётся один раз на строку и становится потолком для каждой её функции.

Ответ и маппинг

Из ответа платформа пишет в переменные сценария служебный набор (<имя>_status, _success, _error, _result, плюс глобальные http_*) и то, что перечислено в маппинге. Маппинг — это словарь «имя переменной → JSONPath в ответе»; имя переменной здесь ключ, а не значение. В форме он и выглядит так: слева имя, справа путь (balance ← $.data.balance). Имена задаёт настройщик агента в кабинете, вы их не выбираете — договоритесь заранее, какие поля отдаёте.

Решение о звонке

Чтобы остановить набор из кампании, верните поля, которые в маппинге положены в call_decision, call_decision_reason и call_retry_after (значения и последствия — в разделе Решение о звонке в кампании). Минимальный обработчик, отменяющий звонок:
В маппинге ответа функции: call_decision ← $.decision, call_decision_reason ← $.reason. Дальше — кампания с одним контактом: телефон не зазвонит, контакт закроется, в разбивке исходов появится «Отменены функцией».

Пробный вызов

Кнопки «Проверить» и «Проверить блок» бьют в эндпоинт кабинета POST /api/flows/{name}/call-functions/run. Тело: {function, phase: "pre"|"post", variables?, mock?, budget?} либо {functions: [...]} для прогона всего блока. Для phase="pre" поле budget выбирает бюджет: inbound (10 с, по умолчанию) или outbound (60 с). Для phase="post" тело принимает analysis — заглушку результата аналитики. В ответе: status, elapsed_ms, имена записанных переменных, маскированный запрос, status_code, номер строки и зависимости, дифф переменных, а также when: {expression, result} — как отработало условие. Для phase="pre" добавляется decision — как прочиталось ваше решение: {action, reason, retry_after, retry_at, warning, declared}.

Ключи конфигурации платформы