Передача запроса с аргументами из Asterisk

Для удобства работы колл-центра потребовалось при поднятии трубки оператором передавать из Asterisk во внешнюю CRM HTTP-запрос, содержащий три номера — внутренний номер оператора (CCC), номер звонящего (AAA) и номер, на который позвонили (BBB). CRM принимает запросы в таком виде:

http://10.20.30.40/cgi-bin/phoneID/CCC/AAA/BBB

Сначала в диалплане присвоим значения переменным ARG1 и ARG2 — передадим им значения номера звонящего и номера, на который позвонили, соответственно. Для передачи данных в контекст, который осуществит http-запрос, будем использовать опцию U команды Dial() (опция U передает указанные аргументы в контекст httpreq именно при поднятии трубки одним из операторов).  Внутренний номер оператора не нужно передавать в виде отдельного аргумента, т.к. он подтянется автоматически из предустановленной переменной DIALEDPEERNUMBER.

[incoming]
exten => 4951000000,1,Set(ARG1=${CALLERID(num):-10})
exten => 4951000000,n,Set(ARG2=4951000000)
exten => 4951000000,n,Dial(SIP/201&SIP/202,10,U(httpreq,${ARG1},${ARG2}))
 
[httpreq]
exten => s,1,System(wget http://10.20.30.40/cgi-bin/phoneID/${DIALEDPEERNUMBER}/${ARG1}/${ARG2})

Сохраняем, перезапускаем диалплан и проверяем:

SIP/201-000662f1 answered SIP/4951000000-000662ee
 -- SIP/201-000662f1 Internal Gosub(httpreq,s,1(9991234567,4951000000)) start
 -- Executing [s@httpreq:1] System("SIP/201-000662f1", "wget http://10.20.30.40/cgi-bin/phoneID/201/9991234567/4951000000") in new stack

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *