ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

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

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

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

Сообщение chardisdze » 18 окт 2017, 15:11

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

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
chardisdze
 
Сообщений: 85
Зарегистрирован: 17 июн 2016, 17:18

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

Сообщение ded » 18 окт 2017, 15:42

Для точности:
Код: выделить все
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)
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение chardisdze » 18 окт 2017, 15:56

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

P.S. а разве плюсик не будет отрезаться в случаях с 10 и 11тизначными номерами?
chardisdze
 
Сообщений: 85
Зарегистрирован: 17 июн 2016, 17:18

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

Сообщение ded » 18 окт 2017, 16:30

А проверьте?
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение chardisdze » 18 окт 2017, 16:53

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

Огромное спасибо!
chardisdze
 
Сообщений: 85
Зарегистрирован: 17 июн 2016, 17:18

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

Сообщение ded » 18 окт 2017, 16:55

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

Это может появится у вас, если подключать некоторые GSM шлюзы и/или USB-модемы в качестве GSM шлюзов.
Гарантирую.
Если нет и не предполагается - можно забыть.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение chardisdze » 18 окт 2017, 17:17

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

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

Сообщение chardisdze » 14 фев 2018, 12:35

Коллеги, подскажите пожалуйста в чем косяк?
[Показать] Спойлер:
[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 (без трансформации).
chardisdze
 
Сообщений: 85
Зарегистрирован: 17 июн 2016, 17:18

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

Сообщение zzuz » 14 фев 2018, 23:04

Проблема к диалпланом. В вышеприведенном примера небольшая ошибка. 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 - Системы Массового Телефонного Обслуживания
Аватар пользователя
zzuz
 
Сообщений: 1658
Зарегистрирован: 21 сен 2010, 13:33

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

Сообщение chardisdze » 15 фев 2018, 09:44

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

P.S. Копипаста действительно не работает... Спасибо за урок!!! ;)
chardisdze
 
Сообщений: 85
Зарегистрирован: 17 июн 2016, 17:18

Пред.

Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 37

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH