Запустить таймер звонка со стороны приложения CallCardStartTimer

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

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

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

Кто может выполнять команду: любой пользователь

Команда CallCardStartTimer показывает таймер в карточке звонка и запускает отсчет времени разговора.

Команда работает в контексте приложения, открытого в точке встраивания PAGE_BACKGROUND_WORKER. Это команда js-интерфейса, а не метод REST: вызвать ее запросом к /rest/ нельзя.

Команда нужна, когда приложение ведет отсчет разговора само. При переходе карточки в состояние connected таймер запускается автоматически — отключить автозапуск можно параметром disableAutoStartTimer команды CallCardSetUiState.

Отсчет ведется от момента первого запуска, а не от вызова команды. Если таймер уже идет, команда ничего не меняет; после CallCardStopTimer она продолжит отсчет с прежней точки, а не с нуля. Обнулить его можно только переводом карточки в connected с disableAutoStartTimer.

Как вызвать команду

Команду вызывают из виджета методом BX24.placement.call. Третий аргумент — функция обратного вызова, в нее приходит результат команды.

BX24.placement.call('CallCardStartTimer', {}, function (result) {
            // в браузере при успехе функция обратного вызова не срабатывает
            console.log(result);
        });
        

Параметры команды

Команда не принимает параметров. Вторым аргументом передайте пустой объект {}.

Примеры кода

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

Рекомендуется вызывать команду после события BackgroundCallCard::initialized

BX24.ready(function () {
            BX24.init(function () {
                BX24.placement.call('CallCardStartTimer', {}, function (result) {
                    console.log(result);
                });
            });
        });
        
// $b24 — инициализированный экземпляр SDK, см. руководство по началу работы
        import type { B24Frame } from '@bitrix24/b24jssdk'
        
        declare const $b24: B24Frame
        
        // в браузере промис не резолвится при успехе — не ожидайте результат
        $b24.placement.call('CallCardStartTimer')
        
<!-- Загрузка SDK в UMD-сборке, глобальный объект B24Js -->
        <script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
        <script>
          document.addEventListener('DOMContentLoaded', async () => {
            const $b24 = await B24Js.initializeB24Frame()
        
            // в браузере промис не резолвится при успехе — не ожидайте результат
            $b24.placement.call('CallCardStartTimer')
          })
        </script>
        

Результат команды

В браузере успешный вызов ничего не возвращает: функция обратного вызова не срабатывает, таймер появляется в карточке.

В десктоп-приложении Битрикс24 после успешного вызова приходит пустой массив.

[]
        

Ошибки

Ошибка команды приходит в ту же функцию обратного вызова: вместо обычного результата в нее передается массив с объектом, у которого result равен error.

[
            {
                "result": "error",
                "errorCode": "Call card is undefined"
            }
        ]
        

Значения errorCode

Код

Описание

Значение

Call card is undefined

Карточка звонка недоступна

Нет активной карточки звонка, которой можно управлять. Тот же код приходит, когда карточка есть, но звонок не внешний: интерфейс работает только с карточкой, поднятой методом telephony.externalCall.register

Если команда вызвана в другой точке встраивания, функция обратного вызова не будет вызвана вовсе: неизвестную команду интерфейс точки встраивания игнорирует. Проверить, что команда CallCardStartTimer доступна, можно методом BX24.placement.getInterface.

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