1 | изначальная версия редактировать | |
Есть задача по интеграции CRM и Asteriska. Для реализации этого был выбран путь GET-POST запросов. Логика следующая: 1.Пришел звонок 2.Запрос на сервере с номером звонящего 3.Определение новый или существующий клиент 4.Отправка звонка в соответствующий правилу подпункт.
Вот код Extension_Custom [20003-incoming]
exten => s,1,Set(CALLERID(name)=${CURL(http://trulala/call?tel={CALLERID(num)})}) exten => s,2,Set(managernumber=${CUT(CALLERID(name),>,3)}) exten => s,3,Set(managernumber=${CUT(managernumber,\",6)}) exten => s,4,Set(managerID=${CUT(CALLERID(name),>,3)}) exten => s,5,Set(managerID=${CUT(managerID,\",4)}) exten => s,6,Set(__Clientnum=${CALLERID(num)}) exten => s,7,Set(CALLERID(name)=${CUT(CALLERID(name),>,3)}) exten => s,8,Set(CALLERID(name)=${CUT(CALLERID(name),\",2)})
exten => s,n,ExecIf($[ "${managernumber}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,Dial(Local/${managernumber},,[20003-incoming]
exten => s,1,Set(CALLERID(name)=${CURL(http://trulala/call?tel={CALLERID(num)})}) exten => s,2,Set(managernumber=${CUT(CALLERID(name),>,3)}) exten => s,3,Set(managernumber=${CUT(managernumber,\",6)}) exten => s,4,Set(managerID=${CUT(CALLERID(name),>,3)}) exten => s,5,Set(managerID=${CUT(managerID,\",4)}) exten => s,6,Set(__Clientnum=${CALLERID(num)}) exten => s,7,Set(CALLERID(name)=${CUT(CALLERID(name),>,3)}) exten => s,8,Set(CALLERID(name)=${CUT(CALLERID(name),\",2)})
exten => s,n,ExecIf($[ "${managernumber}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,Dial(Local/${managernumber},,mM(manager-answered,))
exten => s,n,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Gosub(manager-busy,s,1) exten => s-BUSY,1,Gosub(manager-busy,s,1) exten => s-UNKNOWN,1,Gosub(manager-busy,s,1) exten => s-CONGESTION,1,Gosub(manager-busy,s,1) exten => s-CHANUNAVAIL,1,Gosub(manager-busy,s,1) exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})}) exten => h,2,Wait(5) exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
exten => s,n,Hangup()
[new-client] exten => s,1,Dial(local/603@from-internal,,) exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})}) exten => h,2,Wait(5) exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
[manager-busy] exten => s,1,Dial(local/603@from-internal,,) exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})}) exten => h,2,Wait(5) exten => h,3,NoOp(CURL-RESPONSE: ${rtn}))
2 | No.2 Revision редактировать |
Есть задача по интеграции CRM и Asteriska. Для реализации этого был выбран путь GET-POST запросов. Логика следующая: 1.Пришел звонок 2.Запрос на сервере с номером звонящего 3.Определение новый или существующий клиент 4.Отправка звонка в соответствующий правилу подпункт.
Вот код Extension_Custom
[20003-incoming] exten => s,1,Set(CALLERID(name)=${CURL(http://trulala/call?tel={CALLERID(num)})})
exten => s,2,Set(managernumber=${CUT(CALLERID(name),>,3)})
exten => s,3,Set(managernumber=${CUT(managernumber,\",6)})
exten => s,4,Set(managerID=${CUT(CALLERID(name),>,3)})
exten => s,5,Set(managerID=${CUT(managerID,\",4)})
exten => s,6,Set(__Clientnum=${CALLERID(num)})
exten => s,7,Set(CALLERID(name)=${CUT(CALLERID(name),>,3)})
exten => s,8,Set(CALLERID(name)=${CUT(CALLERID(name),\",2)})
exten => s,n,ExecIf($[ "${managernumber}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,Dial(Local/${managernumber},,[20003-incoming]
exten => s,1,Set(CALLERID(name)=${CURL(http://trulala/call?tel={CALLERID(num)})})
exten => s,2,Set(managernumber=${CUT(CALLERID(name),>,3)})
exten => s,3,Set(managernumber=${CUT(managernumber,\",6)})
exten => s,4,Set(managerID=${CUT(CALLERID(name),>,3)})
exten => s,5,Set(managerID=${CUT(managerID,\",4)})
exten => s,6,Set(__Clientnum=${CALLERID(num)})
exten => s,7,Set(CALLERID(name)=${CUT(CALLERID(name),>,3)})
exten => s,8,Set(CALLERID(name)=${CUT(CALLERID(name),\",2)})
exten => s,n,ExecIf($[ "${managernumber}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,Dial(Local/${managernumber},,mM(manager-answered,))
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Gosub(manager-busy,s,1)
exten => s-BUSY,1,Gosub(manager-busy,s,1)
exten => s-UNKNOWN,1,Gosub(manager-busy,s,1)
exten => s-CONGESTION,1,Gosub(manager-busy,s,1)
exten => s-CHANUNAVAIL,1,Gosub(manager-busy,s,1)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
exten => s,n,Hangup()
[new-client]
exten => s,1,Dial(local/603@from-internal,,)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
[manager-busy]
exten => s,1,Dial(local/603@from-internal,,)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn}))${rtn}))
3 | No.3 Revision редактировать |
Есть задача по интеграции CRM и Asteriska. Для реализации этого был выбран путь GET-POST запросов. Логика следующая: 1.Пришел звонок 2.Запрос на сервере с номером звонящего 3.Определение новый или существующий клиент 4.Отправка звонка в соответствующий правилу подпункт.
Вот код Extension_Custom
[20003-incoming] exten => s,1,Set(CALLERID(name)=${CURL(http://trulala/call?tel={CALLERID(num)})})
exten => s,2,Set(managernumber=${CUT(CALLERID(name),>,3)})
exten => s,3,Set(managernumber=${CUT(managernumber,\",6)})
exten => s,4,Set(managerID=${CUT(CALLERID(name),>,3)})
exten => s,5,Set(managerID=${CUT(managerID,\",4)})
exten => s,6,Set(__Clientnum=${CALLERID(num)})
exten => s,7,Set(CALLERID(name)=${CUT(CALLERID(name),>,3)})
exten => s,8,Set(CALLERID(name)=${CUT(CALLERID(name),\",2)})
exten => s,n,ExecIf($[ "${managernumber}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,Dial(Local/${managernumber},,[20003-incoming]
exten => s,1,Set(CALLERID(name)=${CURL(http://trulala/call?tel={CALLERID(num)})})
exten => s,2,Set(managernumber=${CUT(CALLERID(name),>,3)})
exten => s,3,Set(managernumber=${CUT(managernumber,\",6)})
exten => s,4,Set(managerID=${CUT(CALLERID(name),>,3)})
exten => s,5,Set(managerID=${CUT(managerID,\",4)})
exten => s,6,Set(__Clientnum=${CALLERID(num)})
exten => s,7,Set(CALLERID(name)=${CUT(CALLERID(name),>,3)})
exten => s,8,Set(CALLERID(name)=${CUT(CALLERID(name),\",2)})
exten => s,n,ExecIf($[ "${managernumber}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,Dial(Local/${managernumber},,mM(manager-answered,))
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Gosub(manager-busy,s,1)
exten => s-BUSY,1,Gosub(manager-busy,s,1)
exten => s-UNKNOWN,1,Gosub(manager-busy,s,1)
exten => s-CONGESTION,1,Gosub(manager-busy,s,1)
exten => s-CHANUNAVAIL,1,Gosub(manager-busy,s,1)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
exten => s,n,Hangup()
[new-client]
exten => s,1,Dial(local/603@from-internal,,)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
[manager-busy]
exten => s,1,Dial(local/603@from-internal,,)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn}))
Код работает. Стала проблема в том что POST запросом нужно передать информацию о завершенном звонке. Длительность, кто поднял трубку, стсатус звонка и тд и тп... У меня не получается получить информацию о том кто поднял трубку... Я ее получаю и пишет мне что трубку взял "s" или группа 603. В CDR информация аналогична. Голова уже квадратная. Не знаю куда копать.
4 | No.4 Revision редактировать |
Есть задача по интеграции CRM и Asteriska. Для реализации этого был выбран путь GET-POST запросов. Логика следующая: 1.Пришел звонок 2.Запрос на сервере с номером звонящего 3.Определение новый или существующий клиент 4.Отправка звонка в соответствующий правилу подпункт.
Вот код Extension_Custom
[20003-incoming] exten => s,1,Set(CALLERID(name)=${CURL(http://trulala/call?tel={CALLERID(num)})})
exten => s,2,Set(managernumber=${CUT(CALLERID(name),>,3)})
exten => s,3,Set(managernumber=${CUT(managernumber,\",6)})
exten => s,4,Set(managerID=${CUT(CALLERID(name),>,3)})
exten => s,5,Set(managerID=${CUT(managerID,\",4)})
exten => s,6,Set(__Clientnum=${CALLERID(num)})
exten => s,7,Set(CALLERID(name)=${CUT(CALLERID(name),>,3)})
exten => s,8,Set(CALLERID(name)=${CUT(CALLERID(name),\",2)})
exten => s,n,ExecIf($[ "${managernumber}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,Dial(Local/${managernumber},,[20003-incoming]
exten => s,1,Set(CALLERID(name)=${CURL(http://trulala/call?tel={CALLERID(num)})})
exten => s,2,Set(managernumber=${CUT(CALLERID(name),>,3)})
exten => s,3,Set(managernumber=${CUT(managernumber,\",6)})
exten => s,4,Set(managerID=${CUT(CALLERID(name),>,3)})
exten => s,5,Set(managerID=${CUT(managerID,\",4)})
exten => s,6,Set(__Clientnum=${CALLERID(num)})
exten => s,7,Set(CALLERID(name)=${CUT(CALLERID(name),>,3)})
exten => s,8,Set(CALLERID(name)=${CUT(CALLERID(name),\",2)})
exten => s,n,ExecIf($[ "${managernumber}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,Dial(Local/${managernumber},,mM(manager-answered,))
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Gosub(manager-busy,s,1)
exten => s-BUSY,1,Gosub(manager-busy,s,1)
exten => s-UNKNOWN,1,Gosub(manager-busy,s,1)
exten => s-CONGESTION,1,Gosub(manager-busy,s,1)
exten => s-CHANUNAVAIL,1,Gosub(manager-busy,s,1)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
exten => s,n,Hangup()
[new-client]
exten => s,1,Dial(local/603@from-internal,,)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
[manager-busy]
exten => s,1,Dial(local/603@from-internal,,)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn}))
Код работает. Стала проблема в том что POST запросом нужно передать информацию о завершенном звонке. Длительность, кто поднял трубку, стсатус звонка и тд и тп... У меня не получается получить информацию о том кто поднял трубку... Я ее получаю и пишет мне что трубку взял "s" или группа 603. В CDR информация аналогична. Голова уже квадратная. Не знаю куда копать.
5 | No.5 Revision редактировать |
Есть задача по интеграции CRM и Asteriska. Для реализации этого был выбран путь GET-POST запросов. Логика следующая: 1.Пришел звонок 2.Запрос на сервере с номером звонящего 3.Определение новый или существующий клиент 4.Отправка звонка в соответствующий правилу подпункт.
Вот код Extension_Custom
[20003-incoming] exten => s,1,Set(CALLERID(name)=${CURL(http://trulala/call?tel={CALLERID(num)})})
exten => s,2,Set(managernumber=${CUT(CALLERID(name),>,3)})
exten => s,3,Set(managernumber=${CUT(managernumber,\",6)})
exten => s,4,Set(managerID=${CUT(CALLERID(name),>,3)})
exten => s,5,Set(managerID=${CUT(managerID,\",4)})
exten => s,6,Set(__Clientnum=${CALLERID(num)})
exten => s,7,Set(CALLERID(name)=${CUT(CALLERID(name),>,3)})
exten => s,8,Set(CALLERID(name)=${CUT(CALLERID(name),\",2)})
exten => s,n,ExecIf($[ "${managernumber}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "null" ] ?Gosub(new-client,s,1))
exten => s,n,Dial(Local/${managernumber},,mM(manager-answered,))
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Gosub(manager-busy,s,1)
exten => s-BUSY,1,Gosub(manager-busy,s,1)
exten => s-UNKNOWN,1,Gosub(manager-busy,s,1)
exten => s-CONGESTION,1,Gosub(manager-busy,s,1)
exten => s-CHANUNAVAIL,1,Gosub(manager-busy,s,1)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
exten => s,n,Hangup()
[new-client]
exten => s,1,Dial(local/603@from-internal,,)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
[manager-busy]
exten => s,1,Dial(local/603@from-internal,,)
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} exten1=${CDR(dstchannel)} exten=${CDR(dst)} & cidnum=${CALLERID(num)}&AllCallTime=${CDR(duration)}&CallTime=${CDR(billsec)})})
exten => h,2,Wait(5)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn}))
Код работает. Стала проблема в том что POST запросом нужно передать информацию о завершенном звонке. Длительность, кто поднял трубку, стсатус звонка и тд и тп... У меня не получается получить информацию о том кто поднял трубку... Я ее получаю и пишет мне что трубку взял "s" или группа 603. В CDR информация аналогична. Голова уже квадратная. Не знаю куда копать.
Смог победить немного другим способом, а именно:
[new-call]
exten => s,1,Set(DIALGROUP(test,add)=Local/203)
exten => s,n,Set(DIALGROUP(test,add)=Local/200)
exten => s,n,Set(DIALGROUP(test,add)=Local/201)
exten => s,n,Dial(${DIALGROUP(test)})
exten => h,1,Set(rtn=${CURL(http://trulala/ecall,Status=${CDR(disposition)} AnswerPeer=${DIALEDPEERNUMBER} CallerNum=${CALLERID(num)} CallTime=${CDR(duration)} TellTime=${CDR(billsec)})})
exten => h,2,Wait(1)
exten => h,3,NoOp(CURL-RESPONSE: ${rtn})
Сначала я добавил номера в группу, а потом позвонил на группу.
С Макросом вопрос и не смотрел, а вот по поводу ${DIALEDPEERNUMBER} я получал всю туже группу 603. Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.