Карточка звонка

Выберите инструмент для разработки с AI-агентом:

  • используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
  • используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации

Scope: placement — регистрация точки встраивания, telephony — регистрация звонка, поднимающего карточку

Кто может выполнять команды: сотрудник, которому Битрикс24 показал карточку, если у него есть доступ к приложению

Карточка звонка — окно, в котором оператор видит звонок и управляет им: отвечает, завершает разговор, ставит на удержание или переводит коллеге. Приложение телефонии со своим WebRTC-клиентом меняет заголовок, текст статуса и набор кнопок карточки. О нажатиях кнопок приложение узнает из событий и само выполняет действие со звонком, например завершает его в своем клиенте. Кнопку «Закрыть» Битрикс24 обрабатывает и сам: она отправляет событие и закрывает карточку.

Управлять можно только карточкой внешнего звонка. Приложение регистрирует звонок методом telephony.externalCall.register, и Битрикс24 показывает карточку оператору — сотруднику из параметра USER_ID или USER_PHONE_INNER этого метода. Показ зависит от параметра SHOW: по умолчанию он равен 1, а при 0 карточка появится только после вызова метода telephony.externalCall.show. Команды и события идут через фоновый обработчик в точке встраивания PAGE_BACKGROUND_WORKER.

Команды управления карточкой начинают работать после события BackgroundCallCard::initialized: оно приходит, когда карточка создана. До этого события, после закрытия карточки и при обычном звонке Битрикс24 они вернут ошибку Call card is undefined. Команда CallCardGetListUiStates работает и без карточки.

Порядок регистрации обработчика описан на странице Сценарий встраивания WebRTC, все команды и события — в обзоре раздела Управление карточкой звонка WebRTC-клиента: обзор команд и событий.

Из чего состоит карточка

Так выглядит карточка входящего звонка:

sip_app1

Чтобы изменить заголовок в верхней части карточки, вызовите команду CallCardSetCardTitle и передайте объект со свойством title.

BX24.placement.call('CallCardSetCardTitle', { title: 'Card Title' }, (result) => {
    console.log(result); // [] — заголовок изменен
});

Чтобы изменить текст статуса под именем собеседника, вызовите команду CallCardSetStatusText и передайте объект со свойством statusText.

BX24.placement.call('CallCardSetStatusText', { statusText: 'Status Text' }, (result) => {
    console.log(result); // [] — текст изменен
});

Кнопки внизу карточки зависят от состояния интерфейса. Команда CallCardGetListUiStates возвращает 12 состояний, в которые приложение может перевести карточку: в функцию обратного вызова придет массив их кодов.

BX24.placement.call('CallCardGetListUiStates', {}, (data) => {
    console.log(data);
});

Переход на другое состояние карточки выполняет команда CallCardSetUiState: передайте ей объект со свойством uiState.

BX24.placement.call('CallCardSetUiState', { uiState: 'connected' }, (result) => {
    console.log(result); // [] — состояние изменено
});

Чтобы узнавать, какие кнопки нажимает оператор, подпишитесь на события методом BX24.placement.bindEvent. Какое событие отправляет каждая кнопка, показано в таблице ниже, описание событий — в разделе Обзор событий при работе с карточкой звонка WebRTC-клиента.

Состояния карточки

Сразу после появления карточка находится в служебном состоянии: внизу у нее только кнопка «Закрыть». Этого состояния нет ни в таблице ниже, ни в ответе команды CallCardGetListUiStates. Чтобы показать оператору нужные кнопки, переведите карточку в одно из состояний командой CallCardSetUiState.

Состояние

Когда используется

Кнопки и события

incoming

Для принятия входящих звонков

transferIncoming

Для принятия перенаправленного входящего звонка

outgoing

Для показа карточки исходящего звонка

connectingIncoming

Для показа карточки в момент подключения к входящему звонку

connectingOutgoing

Для показа карточки в момент подключения к исходящему звонку

connected

Для показа после подключения к звонку

transferring

Для подтверждения перенаправления звонка на другого оператора

transferFailed

Если перенаправить звонок не получилось

transferConnected

Если перенаправление завершилось успешно и нужно выйти из карточки звонка

error

Если произошла ошибка звонка

moneyError

Если на счету закончились деньги и нужно сообщить об этом администратору Битрикс24

redial

Если абонент занят и оператору нужно позвонить на этот номер еще раз, не закрывая карточку звонка

Индикатор качества связи в состоянии connected нажатий не принимает и события не отправляет.

Таймер разговора

При переходе в состояние connected таймер разговора запускается сам. Чтобы он не запускался, передайте вместе с uiState: 'connected' свойство disableAutoStartTimer: true.

В состояниях перевода звонка — transferring, transferFailed и transferConnected — отсчет продолжается. Остальные состояния, кроме connected, таймер останавливают. Остановить или снова запустить таймер можно командами CallCardStopTimer и CallCardStartTimer.

Продолжите изучение

incoming

transferIncoming

outgoing

connectingIncoming

connectingOutgoing

connected

transferring

transferFailed

transferConnected

error

moneyError

redial