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

Передача внешнего CallerID из Opensips Астериксу

СообщениеДобавлено: 12 янв 2015, 18:56
shaverdoff
Добрый вечер коллеги!
Имеется схема
Opensips 1.6.2 no tls внутренний IP 192.168.5.16
Asterisk 11 cert9 внутренний IP 192.168.5.8

Opensips является регистратором и пресенс-агентом сипклиентов
Asterisk в свою очередь держит транки и диалплан

конфиг Opensips
Код: выделить все
if (is_method("INVITE")) {
setflag(1);
if (!uri=~"sip:\*\*") {
route(toasterisk);
} else {
strip(2);
}
}

route[toasterisk] {
xlog("forwarding to asterisk\n");
rewritehostport("192.168.5.8:5060");
if (!t_relay()) {
sl_reply_error();
}
exit;
}


диалплан астериска
Код: выделить все
[global]
MYMEGA1=SIP/7XXXXXXXXXX
MY=SIP/10000

[multifon-in]
exten => 7XXXXXXXXXX,1,NoOP(${CALLERID(NUM) - ${EXTEN}})                                                                                             
same => n,Set(__TRANSFER_CONTEXT=int)                                                                                                               
same => n,Dial(${MY},35,tTHhM(record^${CALLERID(NUM)}^${EXTEN}))                                                                                     
same => n,Macro(voicemail,${MYHOME}@jewy)                                                                                                           
same => n,HangUp()

[int]
exten => _1XXXX,n,Dial(SIP/**${EXTEN}@192.168.5.16)


Звонки между пирами opensips идут через астериск

На Asterisk настроен Мультифон транк, сделан проброс всех внешних звонков на мультифон.

Если звонить на мультифоновский транк то не пробрасывается внешний CallerID звонящего

в логах астера при звонке с внешнего номера вот что

-- Executing [79XXXXXXXXX@multifon-in:1] NoOp("SIP/multifon1-out-00000009", "791YYYYYYYY") in new stack
-- Executing [79XXXXXXXXX@multifon-in:2] Set("SIP/multifon1-out-00000009", "__TRANSFER_CONTEXT=int") in new stack
-- Executing [79XXXXXXXXX@multifon-in:3] Dial("SIP/multifon1-out-00000009", "SIP/10000,35,tTHhM(record^791YYYYYYYY^79XXXXXXXX)") in new stack ; Здесь все правильно отображается
== Using SIP VIDEO CoS mark 6
== Using SIP RTP CoS mark 5
-- Called SIP/10000
== Using SIP VIDEO CoS mark 6
== Using SIP RTP CoS mark 5
-- Executing [10000@phones:1] Dial("SIP/10000-0000000b", "SIP/**10000@192.168.5.16") in new stack ; а вот тут уже нет

и в итоге получается что я как будто получаю сам от себя звонок. Понимаю что чего то не хватает... какой то переменной или опции в опенсипсе или астериске чтобы правильно отдавался CallerID.

если пользовать Астериск без связки с опенсипом и все пиры сидели бы на астериске то подобные звонки правильно обрабатываются CallerID показывается... подскажите в чем я ошибаюсь??

UPD:

Вообще убрал из Opensips этот кусок
Код: выделить все
if (is_method("INVITE")) {
setflag(1);
if (!uri=~"sip:\*\*") {
route(toasterisk);
} else {
strip(2);
}
}


в диалплане Asterisk убрал все что выше. Внутренние звонки с пира на пир идут напрямую опенсип-опенсип.
но ситуация при Внешнем входящем звонке опять таже. нужный внешний CallerID не передается......

Re: Передача внешнего CallerID из Opensips Астериксу

СообщениеДобавлено: 12 янв 2015, 19:18
Samael28
-- Executing [79XXXXXXXXX@multifon-in:3] Dial("SIP/multifon1-out-00000009", "SIP/10000,35,tTHhM(record^791YYYYYYYY^79XXXXXXXX)") in new stack ;

same => n,Dial(${MY},35,tTHhM(record^${CALLERID(NUM)}^${EXTEN}))

MY=SIP/7XXXXXXXXXX

??????

Re: Передача внешнего CallerID из Opensips Астериксу

СообщениеДобавлено: 12 янв 2015, 19:22
shaverdoff
Переменная называется MYMEGA1=SIP/7XXXXXXXXXX, а MY=SIP/10000
Скрыл номер просто.... и руками писал переменную неуглядел название:))

подправил ,)

но ситуацию это не меняет.

Re: Передача внешнего CallerID из Opensips Астериксу

СообщениеДобавлено: 12 янв 2015, 19:29
awsswa
а конечно не силен в opensip
а что если из астера звонить через Dial(Local/

Re: Передача внешнего CallerID из Opensips Астериксу

СообщениеДобавлено: 12 янв 2015, 19:31
shaverdoff
эм.... это как? можно пример?

я убрал логику внутренних звонков пиров опенсипаса через астериск и в астериске и в опенсипсе.

смысла зацикливания особо не вижу...

Re: Передача внешнего CallerID из Opensips Астериксу

СообщениеДобавлено: 12 янв 2015, 20:13
shaverdoff
Вероятно решение - пиры оставить на астериске а опенсипс при запросе смотрел в базу и пропускал при регистрации пиров в астериск.

Re: Передача внешнего CallerID из Opensips Астериксу

СообщениеДобавлено: 12 янв 2015, 22:55
gosha
а где полные конфиги ? и что говорит сип дамп поповоду того на каком леге ломается CallerID ?

Re: Передача внешнего CallerID из Opensips Астериксу

СообщениеДобавлено: 12 янв 2015, 23:00
shaverdoff
Он не ломается.... пиры сидят на опенсипсе. звонок из вне идет на астериск на внешний пир-мультифон. в диалплане контекст мультифон-ин идет обработка на какой пир отправлять звонок если он пришел извне на определенный внешний номер. и вот тут - раз пир не астерискный -идет на опенсипс same => n,Dial(${MY},35,tTHhM(record^${CALLERID(NUM)}^${EXTEN}))
и в итоге Caller-id берется из переменной MY равна она SIP/10000

ну или я уже ничего не понимаю

UPD:!!!

Заработало!!! правильно номер теперь передается!!!! кому интересно могу выложить конфиги
В общем итоге пропарсил еще раз конфиг опенсипса, корректно его прочесал... что там не работало и ошибку в логах не казало! ну и получилось!
чудеса в решете ....