Интеграция OTRS и Asterisk
Добавлено: 08 июн 2012, 15:45
Наконец, реализовали возможность совершать звонки из OTRS так же, как у нас это уже давно реализовано в Dokuwiki.
Работает это все следующим образом: при просмотре заявки агентом он может в один клик набрать мобильный, рабочий или домашний номер клиента. Звонок сначала приходит на внутренний номер агента, указанный в его профиле, а после того, как агент снимает трубку идет дозвон до клиента. Можно добавить компании клиента поле "Рабочий Телефон" и тогда для всех клиентов принадлежащих компании будет отображаться этот номер.
Чтобы указать внутренний номер агентам, можно использовать динамические поля агента (добавить поле extension). Изначально, мы использовали для этого поле "Комментарий".
Как добавлять поля клиентов написано тут: http://doc.otrs.org/3.0/ru/html/custome ... backend-db
Аналогично добавляются поля и для компаний.
"Звонилка" состоит из следующих частей:
1. JavaScript в шаблоне AgentTicketZoom.dtl
Javascript находит на странице телефон, разбирает поле с телефонами (по запятым) и каждый номер оборачивает в ссылку на вызов ajax-запроса "для позвонить". Если в номере содержится +, то всё, что после него, считается "добавочным" и ajax-агенту не передаётся. Чтобы поле отлавливалось скриптом, оно должно содержать $Text{"Phone"} (локализация слова "Phone"), например "Мобильный Телефон", "Рабочий Телефон" и т.д. Этого можно добиться, используя кастомную локализацию.
2. PHP-скрипт phony.php на сервере OTRS
AJAX-запрос вызывает скрипт phony.php, находящийся на сервере OTRS. Данный скрипт обязательно должен быть на том же домене, что и otrs. Он читает данные из файла сессии агента и передает их на сервер телефонии скрипту connect.php
3. PHP-скрипт connect.php на сервере asterisk
Скрипт connect.php, который находится на сервере asterisk "дает команду" совершить звонок. Он формирует так называемый call-файл и помещает его в специальный каталог asterisk-а, откуда тот его незамедлительно считывает и выполняет. Скрипт обязательно должен быть хорошо защищен от злоумышленников!
ToDo: надо бы добавить javascript также в шаблоны AgentTicketEmail и AgentTicketPhone
Работает это все следующим образом: при просмотре заявки агентом он может в один клик набрать мобильный, рабочий или домашний номер клиента. Звонок сначала приходит на внутренний номер агента, указанный в его профиле, а после того, как агент снимает трубку идет дозвон до клиента. Можно добавить компании клиента поле "Рабочий Телефон" и тогда для всех клиентов принадлежащих компании будет отображаться этот номер.
Чтобы указать внутренний номер агентам, можно использовать динамические поля агента (добавить поле extension). Изначально, мы использовали для этого поле "Комментарий".
Как добавлять поля клиентов написано тут: http://doc.otrs.org/3.0/ru/html/custome ... backend-db
Аналогично добавляются поля и для компаний.
"Звонилка" состоит из следующих частей:
1. JavaScript в шаблоне AgentTicketZoom.dtl
Javascript находит на странице телефон, разбирает поле с телефонами (по запятым) и каждый номер оборачивает в ссылку на вызов ajax-запроса "для позвонить". Если в номере содержится +, то всё, что после него, считается "добавочным" и ajax-агенту не передаётся. Чтобы поле отлавливалось скриптом, оно должно содержать $Text{"Phone"} (локализация слова "Phone"), например "Мобильный Телефон", "Рабочий Телефон" и т.д. Этого можно добиться, используя кастомную локализацию.
2. PHP-скрипт phony.php на сервере OTRS
AJAX-запрос вызывает скрипт phony.php, находящийся на сервере OTRS. Данный скрипт обязательно должен быть на том же домене, что и otrs. Он читает данные из файла сессии агента и передает их на сервер телефонии скрипту connect.php
3. PHP-скрипт connect.php на сервере asterisk
Скрипт connect.php, который находится на сервере asterisk "дает команду" совершить звонок. Он формирует так называемый call-файл и помещает его в специальный каталог asterisk-а, откуда тот его незамедлительно считывает и выполняет. Скрипт обязательно должен быть хорошо защищен от злоумышленников!
ToDo: надо бы добавить javascript также в шаблоны AgentTicketEmail и AgentTicketPhone