api.cti Интеграция с IP-телефонией

Общие методы для интеграции с IP-телефонией

Методы api.cti работают при подключенном модуле CTI.

  • api.cti.isListenMessages(login)

    Проверяет, что сотрудник находится в командах, ответственных за телефонию, авторизован в системе и находится в интерфейсе оператора.

    Параметр метода:

    • login — логин оператора телефонии (сотрудника).
  • api.cti.open(login, url, mode)

    Открытие URL в браузере оператора телефонии.

    Параметры метода:

    • login — логин оператора телефонии (сотрудника), в браузере которого будет открыта ссылка;
    • url — URL карточки контрагента, формируется через api.web

      def url = api.web.getBaseUrl() + "#search:101";

    • mode — режим открытия карточки контрагента: в текущем окне (вкладке) — "current", в новом — "new". Место, где открывается карточка: вкладка или окно, зависит от настройки браузера

    Пример 1. Открытие карточки контрагента в новом окне (вкладке):

    api.cti.open('user101', api.web.open('ou$1601'), 'new')

    Пример 2. Открытие карточки контрагента на текущей вкладке (окне):

    api.cti.open('user205', api.web.open('ou$401'), 'current')

Методы для интеграции с Asterisk

Методы api.cti работают при подключенном модуле CTI.

  • api.cti.makeCall(src, dst)

    api.cti.makeCall(src, dst, 'context':'ext-group')

    Обращается к серверу IP-телефонии и организует звонок от src к dst на сервере телефонии, добавляя звонок в очередь вызовов.

    Параметры метода:

    • src — номер звонящего абонента;
    • dst — номер телефона, на который совершается вызов;
    • 'context':'ext-group' — групповой номер телефона в контексте ext-group, на который совершается вызов.

    Результат выполнения:

    • Если звонок добавлен в очередь вызовов успешно, то метод ничего не возвращает и инициирует вызов. На сервер IP-телефонии передается номер телефона, в котором удалены все пробелы, дефисы и/или тире, открывающие и закрывающие скобки, все знаки + (кроме первого в номере). На сервере IP-телефонии инициируется звонок.
    • Если сработал таймаут обращения к серверу или сервер ответил ошибкой IOException, IllegalArgumentException или IllegalStateException, то метод возвращает эту ошибку.
    • Если сервер ответит какой-то другой ошибкой (например, если нет очереди, либо номер не числится в качестве абонента), то метод ничего не возвращает.
  • api.cti.reconnect()

    Переподключение к серверу телефонии, например, для перезагрузки интеграции.

  • api.cdr.search(filter)

    Получение информации о звонке с сервера IP-телефонии. Запись разговора хранится на сервере. Сервер телефонии предоставляет возможность получить доступ к файлу по ссылке.

    Метод возвращает с сервера IP-телефонии информацию о звонках, которые удовлетворяют заданным критериям.

    Для каждого звонка возвращается следующая информация — идентификатор звонка, время начала разговора (время поднятие трубки), продолжительность разговора в секундах, номер абонента, с которым звонящий вел разговор, номер телефона, на который звонящий совершал вызов, номер звонящего абонента и ссылка на запись разговора.

    Параметры метода:

    • filter — ассоциативный список критериев для поиска звонков.

      Доступные ключи:

      • id — идентификатор звонка на сервере телефонии;
      • src — номер звонящего абонента;
      • dst — номер телефона, на который звонящий совершал вызов;
      • connected — номер абонента, с которым звонящий вел разговор;
      • dateFrom — дата совершения звонка "C";
      • dateTo — дата совершения звонка "По"

      Форматы дат: yyyy.MM.dd HH:mm:ss, yyyy.MM.dd HH:mm, yyyy.MM.dd.

    Пример.

    api.cdr.search([dateFrom": "2014.01.29 06:00:00", "dateTo": "2014.01.30 06:00:00"])