Страница 1 из 1

Не работает переадресация при звонке из города

Добавлено: 17 окт 2025, 09:56
vkarpov
Добрый день!
Столкнулись с проблемой - Follow ME на сотовый работает только если звонки совершаются с внутренних на внутренние номера , если звонок идет из города - переадрес не работает, звонит внутренний и все, пробовал принудительно переключать на телефоне, тоже результат 0, прописано все как положено через 7903ХХХХХХХ#
Произошло после перехода с callbox на freepbx, хотя маршруты все сохранены
Дамп в вложении
Буду признателен за помощь

Re: Не работает переадресация при звонке из города

Добавлено: 17 окт 2025, 10:07
ded
Открываем консоль

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

 asterisk -vvvvvr
и смотрим - что происходит при переходе на сотовый в Folow me

Re: Не работает переадресация при звонке из города

Добавлено: 17 окт 2025, 10:42
Glukinho
Думаю, что провайдеру не нравится callerid, который получается при срабатыванит follow me.

Re: Не работает переадресация при звонке из города

Добавлено: 21 окт 2025, 16:55
Zavr2008
Outbound Caller ID Number задать принудительно у экстена.

Re: Не работает переадресация при звонке из города

Добавлено: 16 дек 2025, 11:37
shader
Добрый день!
попробую тут спрошу.
Ситуация: раньше работал с chan_sip (asterisk 13). При входящем вызове на АТС и/, если его нужно переадресовать, я использовал функцию
SET(CALLERID(rdnis)=<номер который перадресовал>
И все было хорошо. Перешёл на pjsip - работать перстало. Ну как, код отрабатывает без ошибок, но вот в INVITE исходящих я не вижу ни в каком виде номера, который переадресовал ну и далее, скорее всего по антифроду вызов дропается.
Вопрос: как в современном asterisk (22) правильно задавать номер, который переадресовал вызов?

Re: Не работает переадресация при звонке из города

Добавлено: 16 дек 2025, 12:29
ded
Повставяйте проверочные
NoOp(RDNIS is ${CALLERID(all)})
NoOp(RDNIS is ${CALLERID(rdnis)})
NoOp(RDNIS is ${CALLERID(ani)})
везде, где проходит вызов. Может прояснится картина?

Re: Не работает переадресация при звонке из города

Добавлено: 16 дек 2025, 12:41
shader
CALLER(RNDIS) - есть. Там задан номер того, кто осуществил переадресацию (кому изначально звонили, на моей АТС). 10 знаков.
CALLERID(ALL) - есть. 10 значный номер без callername (10 знаков - по договоренности с апстримом). Номер того, кто фактически звонит.
CALLERID(ANI) - есть. 11 значный номер. Номер того, кто фактически звонит.
Это всё непосредственно перед командой DIAL вышестоящему провайдеру.

Re: Не работает переадресация при звонке из города

Добавлено: 16 дек 2025, 12:50
shader
Переключил вызов на старый asterisk (там полностью аналогичный dialplan и функцинал ARI).
Сделал на нем вызов (с переадресацией). Глянул SNGREP - в INVITE есть поле DIVERSION
В новом asterisk - его нет. Это и есть главная проблема. Но тут уже я не понимаю, почему asterisk не формирует это поле.
PS. Пробовал задавать REDIRECTING(from-num,i)
Проверял - на pjsip пире - включен параметр send_diversion=true

Пока не знаю где еще поискать.

Re: Не работает переадресация при звонке из города

Добавлено: 16 дек 2025, 13:28
ded

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

[my-diversion-context]
exten => s,1,Noop(Setting Diversion Header)
; Set the original caller number (Originating Party)
same => n,Set(REDIRECTING(orig-num)=1112223333)
; Set the number the call is being forwarded from (From Party)
same => n,Set(REDIRECTING(from-num)=4445556666)
; Set the destination number (To Party)
same => n,Set(REDIRECTING(to-num)=7778889999)
; Set the redirecting reason (e.g., "unconditional", "no-answer", "busy")
same => n,Set(REDIRECTING(reason)=unconditional)
; Increment the redirection counter
same => n,Set(REDIRECTING(count)=$[${REDIRECTING(count)} + 1])
; Set presentation information
same => n,Set(REDIRECTING(from-num-pres)=allowed)
same => n,Set(REDIRECTING(to-num-pres)=allowed)

; Dial the PJSIP endpoint/trunk. Asterisk will automatically generate the Diversion header
same => n,Dial(PJSIP/7778889999@my-pjsip-trunk)
same => n,Hangup()
Key Functions Explained:
REDIRECTING(orig-num): The initial calling number.
REDIRECTING(from-num): The number from which the call is being forwarded (the number on your system that received the call initially).
REDIRECTING(to-num): The final destination number the call is being diverted to.
REDIRECTING(reason): Specifies why the call is being diverted (e.g., cfu for call forward unconditional, no-answer).
REDIRECTING(count): Tracks the number of redirections to prevent infinite loops.

Но провайдер не должен выпустиь чужой callerid, который получается при срабатыванит follow me.

Re: Не работает переадресация при звонке из города

Добавлено: 16 дек 2025, 13:54
shader
ded, спасибо большое!
Поле diversion - появилось!
Добавил в код (typescript, ari)

await this.channel.setChannelVar({
variable: 'REDIRECTING(reason)',
value: 'unconditional'
});
await this.channel.setChannelVar({
variable: 'REDIRECTING(count)',
value: '1'
});
await this.channel.setChannelVar({
variable: 'REDIRECTING(from-num-pres)',
value: 'allowed'
});
await this.channel.setChannelVar({
variable: 'REDIRECTING(to-num-pres)',
value: 'allowed'
});

Видимо, с asterisk 13 по asterisk 22 изменились некоторые умолчания. Там, где раньше не надо было задавать эти параметры. Теперь - надо.