Asterisk Forum • Определить с какого номера был переадресация звонка
Страница 1 из 1

Определить с какого номера был переадресация звонка

Добавлено: 05 июн 2018, 12:39
sergvic
Добрый день.
У меня в extensions стоит проверка по callerid кому можно звонить в город на моб и межгород.
Но когда на телефоне ставится переадресация звонка то callerid прилетает того кто звонил на этот телефон н-р моб или городской номер.
В итоге я не могу проверить разрешения. Как мне получить данные с какого номера был перевод звонка

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

[2018-06-04 13:23:53] VERBOSE[13129] app_dial.c:     -- Now forwarding SIP/Q0004079-0001275c to 'Local/9910066666@new_bd_context' (thanks to SIP/4409-0001276a)
[2018-06-04 13:23:53] NOTICE[13129] app_dial.c: Not accepting call completion offers from call-forward recipient Local/9910066666@new_bd_context-0000287a;1
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:1] Set("Local/9910066666@new_bd_context-0000287a;2", "num=9533550044") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:2] GotoIf("Local/9910066666@new_bd_context-0000287a;2", "0?nofmc") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:3] NoOp("Local/9910066666@new_bd_context-0000287a;2", "***** check fmc  *********") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:4] Set("Local/9910066666@new_bd_context-0000287a;2", "fmc=0") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:5] GotoIf("Local/9910066666@new_bd_context-0000287a;2", "1?nofmc") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Goto (new_bd_context,9910066666,8)
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:8] NoOp("Local/9910066666@new_bd_context-0000287a;2", "***** 9533550044  *********") in new stack
[2018-06-04 13:23:53] WARNING[15367] chan_sip.c: This function can only be used on SIP channels.
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:9] Set("Local/9910066666@new_bd_context-0000287a;2", "contact=") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:10] NoOp("Local/9910066666@new_bd_context-0000287a;2", "***** contact   *********") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:11] NoOp("Local/9910066666@new_bd_context-0000287a;2", "***** channel Local/9910066666@new_bd_context-0000287a;2  *********") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:12] NoOp("Local/9910066666@new_bd_context-0000287a;2", "***** callerid 9533550044  *********") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:13] NoOp("Local/9910066666@new_bd_context-0000287a;2", "***** sipcallid   *********") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:14] NoOp("Local/9910066666@new_bd_context-0000287a;2", "***** sipuseragent   *********") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:15] Set("Local/9910066666@new_bd_context-0000287a;2", "allow=") in new stack
[2018-06-04 13:23:53] WARNING[15367] ast_expr2.fl: ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end; Input:
  = 1
  ^
[2018-06-04 13:23:53] WARNING[15367] ast_expr2.fl: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/AST/Channel+Variables
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:16] GotoIf("Local/9910066666@new_bd_context-0000287a;2", "?dial") in new stack
[2018-06-04 13:23:53] VERBOSE[15367] pbx.c:     -- Executing [9910066666@new_bd_context:17] Hangup("Local/9910066666@new_bd_context-0000287a;2", "") in new stack
В 15 строке ошибка из-за того что я лезу в базу и ищу местный номер телефона (callerid) а так как callerid у меня сотовый то в базе его нету.
Вот тут

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

Now forwarding SIP/Q0004079-0001275c to 'Local/9910066666@new_bd_context' (thanks to SIP/4409-0001276a)
видно что перевод был с 4409, но как мне получить этот номер ?

Re: Определить с какого номера был переадресация звонка

Добавлено: 06 июн 2018, 06:28
awsswa
еще одну проверку на номера на которые можно переводить (список сотовых)

Re: Определить с какого номера был переадресация звонка

Добавлено: 06 июн 2018, 06:45
xelas
Обычно, если на телефоне включена переадресация, то будет заполнено поле Diversion sip-заголовков. В нем должен быть оригинальный номер(номер, на котором включена переадресация).

Re: Определить с какого номера был переадресация звонка

Добавлено: 07 июн 2018, 05:08
virus_net
1. Такую переадресацию нужно запрещать как класс, т.к. ломают телефон, выставляют переаресацию в новую гвинею и вперед загонять вас в долги.
Переадресация должна выполняться средствами станции, а никак не телефона.
Сколько раз я сталкивался с подобными обращениями.. уже не счесть.

2. При создании пира (в sip.conf) есть возможность присвоить пиру переменную, которая будет всегда выставляться при вызовах с этого пира. Выставьте переменную и проверяйте ее значение.