VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Изменение CID при входящем звонке

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

Заработало в таком виде:

exten => _.,1,Set(GROUP()=OUT_2)
exten => _.,n,ExecIf($[LEN(${CALLERID(num)})=10]?Set(CALEERID(all)=8${CALLERID(num):-10:10}))
exten => _.,n,ExecIf($[LEN(${CALLERID(num)})=11]?Set(CALEERID(all)=8${CALLERID(num):-10:10}))
exten => _.,n,ExecIf($[LEN(${CALLERID(num)})=12]?Set(CALEERID(all)=810${CALLERID(num)}))
exten => _.,n,Set(CALLERID(ANI-all)=${CALLERID(num)})
exten => _.,n,Goto(from-trunk,${EXTEN},1)

Огромное спасибо за подсказки!
DED, спасибо что не отказал!!! Если честно, ждал твоих издевок и шуточек!!! :lol: Но они в тему и заставляют мозги шевелиться!!! Всех благ :D
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Изменение CID при входящем звонке

Сообщение ded »

Для точности:

Код: Выделить всё

exten => _.,1,Set(GROUP()=OUT_2)
exten => _.,n,ExecIf($[(${CALLERID(num):0:1})=+]?Set(CALEERID(all)=${CALLERID(num):1}))  ; отрезаем плюс если CID прибежал в формате е164 с плюсом, типа +79012345678
exten => _.,n,ExecIf($[LEN(${CALLERID(num)})=10]?Set(CALEERID(all)=8${CALLERID(num):-10:10}))
exten => _.,n,ExecIf($[LEN(${CALLERID(num)})=11]?Set(CALEERID(all)=8${CALLERID(num):-10:10}))
exten => _.,n,ExecIf($[LEN(${CALLERID(num)})=12]?Set(CALEERID(all)=810${CALLERID(num)}))
exten => _.,n,Set(CALLERID(ANI-all)=${CALLERID(num)})
exten => _.,n,Goto(from-trunk,${EXTEN},1)
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

Блин, даже не задумался над плюсиком то...
Огромное спасибо!!!

P.S. а разве плюсик не будет отрезаться в случаях с 10 и 11тизначными номерами?
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Изменение CID при входящем звонке

Сообщение ded »

А проверьте?
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

у меня не замечены случаи входящих CID с плюсиком =)
Попробую что-нибудь придумать!

Огромное спасибо!
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Изменение CID при входящем звонке

Сообщение ded »

Придумать легко.
указать какому-то софтфону параметр
callerid=+123456789
и этот контекст в качестве родного, сделать звонок, насобачить по дороге
NoOp(CID is ${CALLERID(all)})

Это может появится у вас, если подключать некоторые GSM шлюзы и/или USB-модемы в качестве GSM шлюзов.
Гарантирую.
Если нет и не предполагается - можно забыть.
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

Все возможно в этом мире!!! :D И для этого как раз отлично подойдет модуль Set CID.
Огромное спасибо за помощь и консультации!
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

Коллеги, подскажите пожалуйста в чем косяк?
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[2018-02-14 11:03:49] VERBOSE[11570][C-0000045b] pbx.c: Executing [74955555555@from-trunk-sip-WestCall:1] Set("SIP/WestCall-00000160", "GROUP()=OUT_1") in new stack
[2018-02-14 11:03:49] WARNING[11570][C-0000045b] ast_expr2.fl: ast_yyerror(): syntax error: syntax error, unexpected '+', expecting '-' or '!' or '(' or '<token>'; Input:
(+)=+
^
[2018-02-14 11:03:49] WARNING[11570][C-0000045b] ast_expr2.fl: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/ ... +Variables
[2018-02-14 11:03:49] VERBOSE[11570][C-0000045b] pbx.c: Executing [74955555555@from-trunk-sip-WestCall:2] ExecIf("SIP/WestCall-00000160", "0?Set(CALLERID(all)=77777777777)") in new stack
[2018-02-14 11:03:49] WARNING[11570][C-0000045b] ast_expr2.fl: ast_yyerror(): syntax error: syntax error, unexpected '+', expecting '-' or '!' or '(' or '<token>'; Input:
LEN(+77777777777)=10
^
[2018-02-14 11:03:49] WARNING[11570][C-0000045b] ast_expr2.fl: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/ ... +Variables
[2018-02-14 11:03:49] VERBOSE[11570][C-0000045b] pbx.c: Executing [74955555555@from-trunk-sip-WestCall:3] ExecIf("SIP/WestCall-00000160", "0?Set(CALLERID(all)=8+77777777777)") in new stack
[2018-02-14 11:03:49] WARNING[11570][C-0000045b] ast_expr2.fl: ast_yyerror(): syntax error: syntax error, unexpected '+', expecting '-' or '!' or '(' or '<token>'; Input:
LEN(+77777777777)=11
^
[2018-02-14 11:03:49] WARNING[11570][C-0000045b] ast_expr2.fl: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/ ... +Variables
[2018-02-14 11:03:49] VERBOSE[11570][C-0000045b] pbx.c: Executing [74955555555@from-trunk-sip-WestCall:4] ExecIf("SIP/WestCall-00000160", "0?Set(CALLERID(all)=87777777777)") in new stack
[2018-02-14 11:03:49] WARNING[11570][C-0000045b] ast_expr2.fl: ast_yyerror(): syntax error: syntax error, unexpected '+', expecting '-' or '!' or '(' or '<token>'; Input:
LEN(+77777777777)=12
^
[2018-02-14 11:03:49] WARNING[11570][C-0000045b] ast_expr2.fl: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/ ... +Variables
[2018-02-14 11:03:49] VERBOSE[11570][C-0000045b] pbx.c: Executing [74955555555@from-trunk-sip-WestCall:5] ExecIf("SIP/WestCall-00000160", "0?Set(CALLERID(all)=810+77777777777)") in new stack
[2018-02-14 11:03:49] VERBOSE[11570][C-0000045b] pbx.c: Executing [74955555555@from-trunk-sip-WestCall:6] Set("SIP/WestCall-00000160", "CALLERID(ANI-all)=+77777777777") in new stack
[2018-02-14 11:03:49] VERBOSE[11570][C-0000045b] pbx.c: Executing [74955555555@from-trunk-sip-WestCall:7] Goto("SIP/WestCall-00000160", "from-trunk,74955555555,1") in new stack
Такой же контекст на другом * (сборки одинаковые) отрабатывает нормально.
Натолкните пожалуйста на мысль, где я нагрешил... Понимаю, что проблема в синтаксисе, но даже в родном контексте написано так же только без ExecIf (без трансформации).
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Изменение CID при входящем звонке

Сообщение zzuz »

Проблема к диалпланом. В вышеприведенном примера небольшая ошибка. LEN это функция и вызывать её надо ${LEN(sting)} , то есть

Код: Выделить всё

exten => _.,1,Set(GROUP()=OUT_2)
exten => _.,n,ExecIf($["${CALLERID(num):0:1}"="+"]?Set(CALEERID(all)=${CALLERID(num):1}))  ; отрезаем плюс если CID прибежал в формате е164 с плюсом, типа +79012345678
exten => _.,n,ExecIf($[${LEN(${CALLERID(num)})}=10]?Set(CALEERID(all)=8${CALLERID(num):-10:10}))
exten => _.,n,ExecIf($[${LEN(${CALLERID(num)})}=11]?Set(CALEERID(all)=8${CALLERID(num):-10:10}))
exten => _.,n,ExecIf($[${LEN(${CALLERID(num)})}=12]?Set(CALEERID(all)=810${CALLERID(num)}))
exten => _.,n,Set(CALLERID(ANI-all)=${CALLERID(num)})
exten => _.,n,Goto(from-trunk,${EXTEN},1)
Линия24 - Системы Массового Телефонного Обслуживания
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

Большое спасибо за разъяснение!!! Все заработало!!!
Остался единственный вопрос, ну это к себе: почему на двух одинаковых сборках работает по разному?

P.S. Копипаста действительно не работает... Спасибо за урок!!! ;)
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH