Обработка звонков за период

Начиная с версии 3.13.0 (itgrix_bx) и 3.1.0 (itgrix_amo) у модуля используется SQLite база данных state.db для записи состояния обработки звонков, поэтому перед обработкой звонка нужно удалить сведения о нем из данной базы. Можно использовать команду:
delete from calls where linkedid='1740643771.7533';

Начиная с верии 3.13.14 удалить сведения о звонках для переобработки можно через интерфейс админки в меню Обработка звонков.

Если по какой-то причине база данных модуля state.db была повреждена, нужно очистить её запуском команды

/opt/itgrix_bx/itgrix_bx --clean --cleanlist s

В случае если была очищена БД Asterisk, в базе модуля нужно очистить last id (id с которого модуль будет читать события в базе телефонии) командой

/opt/itgrix_bx/itgrix_bx --clean --cleanlist i

Список всех команд можно посмотреть командой

/opt/itgrix_bx/itgrix_bx --help

Переобработка звонков может приводить к созданию нежелательных дубликатов: звонки, контакты, задачи и прочие объекты CRM могут быть созданы повторно.

Запрос API модуля Itgrix

Если по каким-то причинам модуль Itgrix был отключен, или если при первой установке есть желание обработать уже прошедшие звонки, то можно воспользоваться специальным запросом /pbx/read_call в API модуля Itgrix. С его помощью можно запустить обработку определённых звонков.

Запрос /pbx/read_call поддерживается начиная с версий Itgrix_bx 3.3.3 (Битрикс24) и Itgrix_amo 2.5.2 (amoCRM).

Например, можно сделать запрос с помощью curl (здесь <Asterisk IP> - это адрес сервера, на котором установлен модуль Itgrix, login:password - логин:пароль для админки модуля интеграции):

curl --digest -u login:password "<Asterisk IP>:8077/pbx/read_call?<параметры>"

У метода есть два варианта использования параметров:

  • указать один или несколько идентификаторов звонка id;
  • указать дату начала периода start_date и (опционально) дату окончания end_date
    (в этом случае модуль находит все записи CEL в указанных датах, берёт из них linkedid и обрабатывает звонки уже по ID).

Запрос/pbx/read_call с указанием периода поддерживается начиная с версий Itgrix_bx 3.4.0 (Битрикс24) и Itgrix_amo 2.6.0 (amoCRM).

В предыдущих версиях запрос поддерживает только параметр id. Для таких версий поддерживается специальный скрипт (см. раздел ниже).

Использование ID звонка

Если требуется обработать один звонок, то проще всего сделать GET-запрос с параметром id:

curl --digest -u login:password "<Asterisk IP>:8077/pbx/read_call?id=1234567890.1"

Если требуется обработать несколько звонков, то можно через POST-запрос передать JSON-объект с массивом id :

curl --digest -u login:password "<Asterisk IP>:8077/pbx/read_call" \
-H "Content-Type: application/json" \
-d '{"id":["1111111111.1", "2222222222.2"]}'

Использование границ периода

Границы периода определяются параметрами start_date и end_date . При этом параметр end_date опциональный, т.е. его можно не указывать, и в таком случае модуль обработает все звонки, начиная с start_date.

Параметры могут быть указаны в трёх видах:

  • Дата-время в формате ГГГГ-ММ-ДД чч:мм:сс.
    При отправке GET-запроса с таким параметром нужно заменить пробел на специальную последовательность %20, при отправке POST-запроса с параметрами в формате JSON это не требуется.
    Например, обработаем звонки за 25 мая 2021 с 10:30 до 22:00:

    curl --digest -u login:password "<Asterisk IP>:8077/pbx/read_call?\
    start_date=2021-05-25%2010:30:00&\
    end_date=2021-05-25%2022:00:00&clear_state"
  • Метка времени в формате UNIX-time (можно получить из ID звонка, - это число до точки; например, в звонке 1267568856.11 число 1267568856 является меткой времени).
    Например, обработаем звонки с 27 мая 2021 06:01:59 GMT, т.е. UNIX-time 1622138519:

    curl --digest -u login:password "<Asterisk IP>:8077/pbx/read_call?start_date=1622138519&clear_state"
  • Количество дней назад (отрицательное целое число).
    Например, обработать звонки за позавчера:

    curl --digest -u login:password "<Asterisk IP>:8077/pbx/read_call?start_date=-2&end_date=-1&clear_state"

    Пример обработки звонков за неделю:

    curl --digest -u login:password "<Asterisk IP>:8077/pbx/read_call?start_date=-7&clear_state"

    Также есть специальный вариант start_date=-0 - обработка звонков за сегодня (с полуночи по местному времени):

    curl --digest -u login:password "<Asterisk IP>:8077/pbx/read_call?start_date=-0&clear_state"

Сброс состояний выбранных шагов одного звонка для повторной обработки .

Если нужно повторно пройти отдельные стадии обработки одного звонка, можно воспользоваться запросом /crm/reset_state

call_id - указываем ID звонка

operations - указываем операции для сброса в формате "шаг" или "шаг.операция"

Список шагов/операций:

1_find_entity
2_create_entity
3_create_deal
4_show_call_card
5_hide_call_card
6_update_responsible
7_create_call
    attach record
    update activity
    update entity
8_close_tasks
9_create_task

Пример запроса, который сбросит шаги 7 (прикрепление записи) и 8 (закрытие задач)

curl "<Asterisk IP>:8077/crm/reset_state"\
-H "Content-Type: application/json" \
-d '{"call_id":"1234567.890","operations":["7_create_call.attach record","8_close_tasks"]}' \
--digest -u admin:123

На этой странице