11.2.1. Управление входящими вызовами
Для управления ходом обработки внешнего вызова можно воспользоваться модулем Setup → Inbound Call Control → Dynamic Inbound Routing. Этот модуль способен интегрироваться в цепочки входящей маршрутизации. В нем можно создать несколько объектов (аналогично, например, правилам по времени) и использовать их для маршрутизации. Помимо роутинга можно использовать этот модуль для передачи события во внешнюю систему. Основная задача модуля это создание запроса во внешнюю систему, получение переменных от нее и принятие решения на основе значения этих переменных о дальнейшей маршрутизации вызова. Для этого имеется несколько опций:
- HTTP Request URL: В этом поле указывается URL, который запрашивать у сервера в момент прохождения звонка через этот элемент. URL может быть такого вида:
http://SERVER_IP/connector.php?did=${EXTEN}&cid=${CALLERID(num)}&id=${UNIQUEID}В URL можно использовать стандартные переменные астериска из диалплана, в т.ч. и функции. Этот запрос должен вернуть одну строку, в котором через вертикальную черту может содержаться несколько переменных, которые нужно передать в диалплан:
VAR=one|CONT=from-internal|EXT=1002|QUEUEPRIO=100В ответе на запрос есть несколько обязательных переменных:
- VAR: содержит значение, по которому принимается решение о дальнейшей маршрутизации;
-
CONT: используется если значение переменной VAR совпало с выбором опции Direct Context Call. В этом случае переменная должна содержать контекст, в который направлять вызов;
- EXT: должна содержать номер, в которой пускать вызов если значение переменной VAR совпало с выбором опции Direct Context Call.
С помощью этих переменных имеется возможность осуществить маршрутизацию в любую точку диалплана системы из внешней программы. Программист должен знать какие контексты для чего служат. Например чтобы направить вызов через внешнюю линию на номер 89177515862 нужно определить переменную VAR и вспомогательные CONT и EXT, например:
VAR=one|CONT=outbound-routes|EXT=89177515862Для дальнейшего использования все переменные передаются как переменная канала дальше в систему.
При необходимости можно определить множество переменных, которые могут использоваться в дальнейшей обработке, например определить переменную QUEUEPRIO для звонящего и придать приоритет для постановки в очередь. Или применить в дальнейшей маршрутизации с помощью модуля Custom Destination. Например, при звонке внешнего абонента, делается запрос в систему на наличие у клиента активного заказа. Если есть — то система направляет звонок в голосовое меню с вопросом, направить ли вызов сразу на менеджера. Если да, то направляем вызов в Сustom destination, в котором определено направление, к примеру, from-internal,${DynRoute},1. В переменной DynRoute сервер CRM вернет номер менеджера, с которым соединить.
Для того, чтобы переменные наследовались для дочерних каналов, перед их названием нужно добавить два символа подчеркивания.
- Destination: приложение FreePBX, на которое направить вызов. Этот элемент управления похож на селектор направления обычных приложений FreePBX, однако вместо радиобокса имеются текстовые поля. В этих полях указывается значение первого параметра, при совпадении с которым направлять на выбранное приложение, т.е. логика работы похожа на оператор switch языка PHP. Например, имеется несколько приложений диалплана, возле первого (пусть это будут конференции) в текстовом поле будет указано conf100. Если на запрос от IP-ATC TBE внешний сервер поместит в переменной VAR значение conf100, то вызов уйдет в конференцию. Помимо всех приложений FreePBX имеется один параметр с текстовым полем, но с названием Direct context call. При совпадении переменной VAR со значением этого текстового поля система перенаправит вызов прямиком в нужный контекст.
- Failover Destination: обычный селектор выбора приложения, на которой направить вызов в случае если нет совпадения с каким-либо условием.
Comments
So empty here ... leave a comment!