Как запустить серверный код в воронке

Написано 5 месяцев назад
Просмотрен 74 раза
0

В сервисе воронок есть возможность выполнить серверный код на любом этапе воронки, используя данные события и объектов воронок.

Для этого используется блок "Пользовательский код"

Добавьте этот блок, затем нажмите "создать файл" и укажите путь для нового файла. *Для этого действия необходимо право пользователя "имеет доступ в IDE". Его может выдать только владелец аккаунта. В аккаунте будет создан файл с таким содержимым:

Вы можете перейти к нему, нажав кнопку "Перейти к коду" в настройках блока.

P.s. Не обязательно всегда создавать файл через настройки блока. Вы можете написать аналогичный код в любом файле аккаунта, указав идентификатор действия в пути:


В этом блоке вы можете писать любой javascript/typescript код для обработки события. Код выполняется на технологиях платформы Chatium. Она имеет тесную интеграцию с GetCourse, выполняется в контексте текущего аккаунта. Предоставляет множество возможностей для простой и быстрой разработки. Документация к платформе находится здесь.

Входящий объект params имеет такой тип:

interface HookParams<Config = any> {
  agentsByType: Record<AgentType, AgentInfo> // все агенты определенные в событии
  eventData?: GenericEventData // данные события, разные в зависимости от исходного события
  transition: {
    id: string
    title: string
    from: string
    to: string
    scene: string
    options: Record<string, any>
    isRed?: boolean
  } // информация о переходе (стрелке)
  primaryAgent?: AgentInfo // агент, являющийся "главным" в текущем контексте. Может быть определен в настройках перехода
  templateData: Config // данные шаблона, если есть
}

type AgentType = 'user' | 'deal' | 'chat' | 'session'

interface AgentInfo {
  id: string // внутренний идентификатор агента. Не путать с идентификатором объекта, на который ссылается агент
  type: string
  externalId: string // внешний идентификатор объекта, на который ссылается агент. Например deal_id
  isTerminated: boolean
  props: Record<string, any>
  mainAgentId: string
  parentAgentIds: string[]
  displayName: string
}

На выходе нужно вернуть объект следующего типа:

type Result = {
  success: boolean
  stopActionsChain?: boolean // позволяет остановить выполнение дальнейших действий
  data?: Record<string, any> // данные, которые будут записаны в свойства агента, если в блоке стоит такая настройка
  nextEventRegistered?: boolean // Продвинутая настройка. Если true, следующее событие не будет зафиксировано автоматически. Его нужно записать самостоятельно.
}

Значение data, будет записано в переменную, указанную в настройках блока

Обратите внимание на тип объекта, которому присваиваете переменную. Если этого типа объекта не будет в предыдущем событии, присвоение не сработает.


Если в процессе выполнения произойдет ошибка, вы увидите её в отладке. Текущее действие не выполнится, но воронка продолжит дальнейшее выполнение.

refunnels
воронка
кастомизация
код
процессы