Хочу с помощью этого параметра ловить того кто снял трубку.
И дальше столкнулся со следующим:
Сначала я попытался ловить нужное мне прям в макросе (чтобы не переписывать много, все равно в DIAL уже есть макрос) и это не работает:
Код: Выделить всё
[some-context]
exten => t,1,NoOp
exten => t,n,Dial(SIP/1111&SIP/2222&SIP/3333,90,tTgmM(myscript1))
[macro-myscript1]
exten => s,1,NoOp
same => n,Set(in-number=${CALLERID(all)})
same => n,Set(op-number=${DIALEDPEERNUMBER})
same => n,Set(rtn=${CURL(http://test.local/test.php,post-data)})
same => n,Answer()
Код: Выделить всё
-- Executing [s@macro-mysrcipt1:3] Set("SIP/2222-00008d05", "in-number="XXX" <2222>") in new stack
-- Executing [s@macro-myscript1:4] Set("SIP/2222-00008d05", "op-number=2222") in new stack
ОК! Ладно подумал я. Видимо в макросе ловить параметры не хорошо. ОК, буду передавать макросу прямо в DIAL. Читаю про DIAL() и вижу:
M(x): Заставляет выполнить macro (x) в момент ответа на вызов.
Отлично же! то что надо. Буду передавать макросу параметры прямо из DIAL и ловить их там в ARG1 и ARG2
Делаю так:
НЕ работает!
Код: Выделить всё
[some-context]
exten => t,1,NoOp
exten => t,n,Set(WHOCALL=${CALLERID(all)})
exten => t,n,Dial(SIP/1111&SIP/2222&SIP/3333,90,tTgmM(myscript1,${WHOCALL},${DIALEDPEERNUMBER}))
[macro-myscript1]
exten => s,1,NoOp
same => n,Set(in-number=${ARG1})
same => n,Set(op-number=${ARG2})
same => n,Set(rtn=${CURL(http://test.local/test.php,post-data)})
same => n,Answer()
Код: Выделить всё
-- Executing [s@macro-mysrcipt1:3] Set("SIP/3333-00008d41", "in-number=8121234567") in new stack
-- Executing [s@macro-mysrcipt1:4] Set("SIP/3333-00008d41", "op-number=") in new stack
ОК Значит возьмем лучшее из двух вариантов!
Хотя я вот совсем не понял почему так, где читать !?
Но сделаю: CALLERID буду передавать через скрипт, а DIALEDPEERNUMBER буду ловить внутри макроса, это странно но вдруг!?
Работает?!?!
Код: Выделить всё
[some-context]
exten => t,1,NoOp
exten => t,n,Set(WHOCALL=${CALLERID(all)})
exten => t,n,Dial(SIP/1111&SIP/2222&SIP/3333,90,tTgmM(myscript1,${WHOCALL}))
[macro-myscript1]
exten => s,1,NoOp
same => n,Set(in-number=${ARG1})
same => n,Set(op-number=${DIALEDPEERNUMBER})
same => n,Set(rtn=${CURL(http://test.local/test.php,post-data)})
same => n,Answer()
Код: Выделить всё
-- Executing [s@macro-mysrcipt1:3] Set("SIP/2222-00008d67", "in-number=8121234567") in new stack
-- Executing [s@macro-mysrcipt1:4] Set("SIP/2222-00008d67", "op-number=2222") in new stack
Вот такая штука. Теперь я вовне астера могу онлайн смотреть кто звонит,кто взял трубку и выдавать этому человеку на рабочий стол информацию о клиенте в момент взятия трубки прямо в CRM, задача вроде бы решена.
Но остался осадок и ощущение что как-то это неэлегантно.
Подскажите почему один и тот же процесс передачи значений ведет себя по-разному.