8 (800) 302-62-68
+7 (499) 348-29-58
sale@rbs-crm.ru

Документация пользователя

РосБизнесСофт > База знаний > Документация пользователя > Настройка интеграции с универсальной АТС


Настройка интеграции с универсальной АТС

Описание

Плагин обеспечивает интеграцию системы с любой АТС через пользовательскую прослойку (middleware). Он принимает HTTP‑запросы от middleware, обрабатывает события звонков (входящие, исходящие, смены состояний) и выполняет соответствующие действия в системе: создание/обновление записей о звонках, добавление задач, сделок, отправка всплывающих уведомлений сотрудникам.

Плагин поддерживает

  • Инициацию исходящего звонка из системы
  • Приём входящих событий от middleware
  • Отправку результатов обработки на callback‑URL

Установка и настройка

В системе установите плагин и укажите необходимые настройки:

Настройка Тип Обязательное Описание
Ссылка для отправки результатов обработки событий string Да Ссылка на пользовательскую прослойку (URL middleware), на который отправляются команда инициализации исходящего звонка из системы и callback‑уведомления
Уведомлять только ответственного за контрагента bool Нет
  • Уведомление о звонке отображается только ответственному за контрагента
  • Если контрагент не найден по номеру, то уведомление отображается сотруднику определив по внутреннему номеру на который поступил звонок
  • Если звонок поступил без указания внутреннего номера, то уведомление отобразится всем сотрудникам указанным в настройках плагина
Создавать контакт при звонке bool Нет Настройка отвечает за создание Документа Контакты по звонкам
Добавлять звонок в последнюю активную сделку контрагента bool Нет Настройка отвечает за добавление записи разговора в последнюю сделку в блок история
Создавать задачу о пропущенном звонке для ответственного bool Нет
  • Создается задача «Пропущенный звонок» для ответственного за контрагента
  • Если контрагент не найден по номеру, то задача создастся первому сотруднику указанному в настройках плагина
Международный формат номеров (E.164) bool Нет
  • Настройка отвечает за формирование телефонного номера.
  • Если настройка включена, то номера обрабатываются в соответствии с международной рекомендацией формирования телефонных номеров (E.164)
  • Если настройка отключена, то номера воспринимаются системой в соответствии с форматом Российских телефонных номеров
Созданным контактам по неизвестным номерам присваивать одного контрагента bool Нет
  • Для корректной работы данной настройки необходимо внести идентификатор контрагента в поле «ID Контрагента» и включить настройку «Создавать контакт при звонке».
  • Если звонок поступил с неизвестного номера, то для созданного документа «Контакт» будет присваиваться фиксированный контрагент вместо создания нового.
ID Контрагента int Нет Уникальный идентификатор Контрагента (Id)

API endpoints

actionCall – инициация исходящего звонка

Метод: POST

Параметры (form-data):

  • to – номер телефона получателя (обязательный)

Что делает:

  • Получает внутренний номер текущего сотрудника через getShortNumberByUserId().
  • Формирует телефонный номер.
  • Отправляет на callbackUrl JSON‑команду:
    {
        "action":           "make_call",
        "to":               "+71234567890",
        "from_extension":   "101",
        "crm_user_id":      123
    }
  • Ожидает от middleware ответ c полем call_id.
  • Если включена настройка createRelationship, создаёт Контакт по звонку в системе.
  • Отображает уведомление в системе.

Пример успешного ответа:

    {
        "unique_id":  "call_12345",
        "name":       "Название компании",
        "to":         "+71234567890",
        "from":       "101",
        "status":     "Connected",
        "toRelease":  "+71234567890",
        "pluginName": "universal_plugin_telephony"
    }

Ошибки: выбрасывается исключение (обрабатывается в системе), при этом на callbackUrl отправляется callback с ошибкой (см. раздел «Callback уведомления»).

actionInbound – приём событий от middleware

Метод: POST
Content-Type: application/json
Тело запроса: JSON‑объект с данными о событии.

Плагин читает php://input, декодирует JSON и обрабатывает событие в зависимости от состояния звонка.

Формат входящего JSON

ПолеТипОбязательноеОписание
call_idstringдаУникальный идентификатор звонка, присвоенный АТС
from_numberstringдаНомер абонента (от кого звонок)
directionstringдаНаправление: «in» (входящий) или «out» (исходящий)
call_statestringдаСостояние звонка: RINGING, ANSWERED, HANGUP, MISSED
user_extensionstringнетВнутренний номер сотрудника (для входящих)
diversionstringнетНомер на который поступил звонок
call_record_urlstringнетСсылка на запись разговора (приходит при HANGUP)

Пример запроса:

    {
        "call_id":        "20250303_123456",
        "from_number":    "+74951234567",
        "direction":      "in",
        "call_state":     "ANSWERED",
        "user_extension": "101",
        "diversion":      "84951234567"
    }

Возвращаемый JSON при успехе:

    {
        "status": "ok",
        "call_id": "call_12345",
        "message": "Event processed"
    }

Возвращаемый JSON при ошибке:

    {
        "status": "error",
        "message": "Описание ошибки"
    }

После обработки (вне зависимости от результата) на «Ссылку для отправки результатов обработки событий» отправляется callback‑уведомление (см. раздел «Обработка событий»).

Обработка событий

RINGING (входящий звонок)

  • Если определён сотрудник (через «Внутренний номер сотрудник»а или при включённом «Уведомлять только ответственного за контрагента»), этому сотруднику отправляется всплывающее уведомление о входящем звонке.
  • Если сотрудник не определён, всплывающее уведомление о входящем звонке отправляется всем сотрудникам, указанным в настройках плагина.

ANSWERED (звонок принят)

  • Если включена опция «Создавать контакт при звонке»:
    • Номер формируется в соответствии с правилами описанными в настройке «Международный формат номеров (E.164)»
    • Создаётся документ контакт.

HANGUP (звонок завершён)

  • Формируется массив полей для обновления записи звонка:
    • ссылка на запись (call_record_url);
    • направление;
    • номера;
    • идентификаторы сотрудников.
  • Если включена опция «Добавлять звонок в последнюю активную сделку контрагента» и найден контрагент, запись звонка добавляется в его последнюю активную сделку.

MISSED (пропущенный звонок)

  • Если включена опция «Создавать задачу о пропущенном звонке для ответственного» и найден контрагент:
    • Создаётся задача «Пропущенный звонок».
    • Ответственным за задачу становится ответственный за контрагента (если есть) или сотрудник, на чей добавочный номер поступил звонок.

Callback уведомления

После обработки любого события (включая ошибки) плагин отправляет асинхронный POST‑запрос на «Ссылку для отправки результатов обработки событий» с телом:

    {
        "type":       "callback" | "error_callback",
        "response":   {
            "status":   "ok" | "error",
            "call_id":  "...",
            "message":  "..."
        },
        "timestamp":  1678901234
    }
  • type: "callback" при успешной обработке, "error_callback" при ошибке.
  • response: копия ответа, который был возвращён в синхронном ответе на событие.
  • timestamp: время отправки (Unix timestamp).

Примеры интеграции

Middleware: отправка события о новом звонке

    curl -X POST https://crm.example.com/plugin/{{plugin_id}}/actionInbound \
        -H "Content-Type: application/json" \
        -d '{
            "call_id":          "ext_101_20250303_1234",
            "from_number":      "84951234567",
            "direction":        "in",
            "call_state":       "RINGING",
            "user_extension":   "101"
        }'

Middleware: ответ на команду make_call (ожидается плагином)

    {
        "call_id": "unique_call_id_from_ats"
    }

Примечание: Все настройки и параметры должны соответствовать конфигурации вашей системы и middleware. При возникновении вопросов обратитесь к документации разработчика.