sip - callback
Думаю простенькая задачка... подскажите...
Откуда: Москва
Сообщений: 3421
|
Re: sip - callback
Mrakus: Подскажите, можно ли это настроить в asterisk?
См. google: Asterisk call out
Сгенерить из web формы файлик и скинуть куда надо - это первый класс вторая четверть :-)
|
Сообщений: 14
|
Re: sip - callback
cron333: Вы по ссылкам ходили ...?
Да ходил... нарыл вот этот пример callback
Но не совсем понятно. В примере, насколько я понял, разобран случай, как система перезванивает на указанный номер:
exten => 004144555666,4,system(echo 'Channel: SIP/${CALLERIDNUM}@provider' >> /var/spool/asterisk/skelett.tmp.call)
А где звонок на номер после "*"? Т.е. в примерез человек звонит на номер, ему система перезванивает, он вводит звезду и номер2... и где туда звонок и как соеденить номер1 и номер2?...
Подскажите плиз... может пример не полный.
|
Откуда: Уфа
Сообщений: 5856
|
Re: sip - callback
в приведенной вами ссылке вполне работоспособный пример. однако работает он только когда все вместе, отдельной функции callback нету.
это call файл, он формируется и затем копируется в специальный каталог астериска, где он его и подбирает. этим файлом инициируется соединение между двумя экстеншенами
/var/spool/asterisk/skelett.call
Context: callback-dialtone-auth ;контекст первого канала звонка
Extension: s ;первого канала звонка
SetVar: CALLERIDNUM=<your main number>
MaxRetries: 2
RetryTime: 1
in the incomming call context in extensions.conf
exten => 004144555666,1,NoOp(provider callback to ${calleridnum})
exten => 004144555666,2,Wait(1)
exten => 004144555666,3,system(cp /var/spool/asterisk/skelett.call /var/spool/asterisk/skelett.tmp.call)
;этой командой добавлятся второй канал звонка в call файл
exten => 004144555666,4,system(echo 'Channel: SIP/${CALLERIDNUM}@provider' >> /var/spool/asterisk/skelett.tmp.call)
exten => 004144555666,5,system(cp /var/spool/asterisk/skelett.tmp.call /var/spool/asterisk/outgoing)
exten => 004144555666,6,HangUp
;сюда попадают звонки после обработки call файла
somewhere in extensions.conf:
[callback-dialtone-auth]
exten => s,1,answer()
exten => s,2,background(welcome)
exten => s,3,authenticate(5678)
exten => s,4,DISA(no-password,home)
|
Откуда: Москва
Сообщений: 3421
|
Re: sip - callback
А я вот совсем примитивный callback сделал (но работает)
[callback]
exten => s,1,Verbose(Trying callback from ${CALLERID(num)})
exten => s,n,Verbose(${CALLERID(num):1})
exten => s,n,GotoIf($[ "${CALLERID(num)}" = "8962XXXXXXX" ]?callback)
exten => s,n,Return
exten => s,n(callback),System(asterisk -rx \'originate SIP/7${CALLERID(num):1}@sipnet extension menu@callback\')
exten => s,n,Hangup
; menu
exten => menu,1,Answer
exten => menu,n,Wait(1)
exten => menu,n(read-num),Read(number|number)
exten => menu,n,Dial(SIP/${number}@sipnet,60,gT)
exten => menu,n,Goto(read-num)
Надо в главное меню добавить Gosub(callback,s,1) и тогда определенные номера вместо меню будут попадать на callback с возможностью набора многих номеров без разъединения.
P.S. Только вот с dtmf у sipnet какие-то проблемы начались затяжные...
|
Сообщений: 1573
|
Re: sip - callback
Mrakus: cron333: Вы по ссылкам ходили ...?
Да ходил...
Вам нужно понять структуру call-файла. Сложного ничего нет. Здесь все подробно расписано и есть примеры.
Готовый call-файл нужно переместить(не скопировать) в каталог - /var/spool/asterisk/outgoing. И все, ваш вызов - состоиться.
Пример:
echo 'Channel: SIP/79057777777@sipnet
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: callback
Extension: 79055555555
Priority: 1' > /tmp/call-file
mv /tmp/call-file /var/spool/asterisk/outgoing
******************************
[callback]
exten => _X.,1,Dial(SIP/${EXTEN}@sipnet,60)
Здесь вначале будет вызван номер - 79057777777, а потом, после поднятия трубки, система будет дозваниваться до - 79055555555.
Будет произведено 2 попытки(MaxRetries) набора номера - 79057777777 и т.д.
Все ...
|
Сообщений: 14
|
Re: sip - callback
cron333:
Здесь вначале будет вызван номер - 79057777777, а потом, после поднятия трубки, система будет дозваниваться до - 79055555555.
Будет произведено 2 попытки(MaxRetries) набора номера - 79057777777 и т.д.
Все ...
Спасибо. Вроде настроил...
Но вот интересная ситуация. Заказываю вызов, как вы написали.
Мне система перезванивает, жду пока перезвонит второму абоненту.... тишина в трубке, время идет, так и не дожидаясь кладу трубку. Иду на сайт sip провайдера.... он помечает мои два звонка как разные соединения. Так же в логах и первый дозвонился и второй, но почему они не соединились? Канал слабоват или другая причина?
Вот лог:
-- Attempting call on SIP/7XXXXXXXXXX@sip.prov.net for 7YYYYYYYYYY@callback:1 (Retry 1)
-- Executing Dial("SIP/sip.prov.net-081ac6a8", "SIP/7YYYYYYYYYY@sip.prov.net|60") in new stack
-- Called 7YYYYYYYYYY@sip.prov.net
-- SIP/sip.prov.net-081c8cb0 is making progress passing it to SIP/sip.prov.net-081ac6a8
-- SIP/sip.prov.net-081c8cb0 answered SIP/sip.prov.net-081ac6a8
-- Attempting native bridge of SIP/sip.prov.net-081ac6a8 and SIP/sip.prov.net-081c8cb0
== Spawn extension (callback, 7YYYYYYYYYY, 1) exited non-zero on 'SIP/sip.prov.net-081ac6a8'
Oct 3 16:44:27 NOTICE[20936]: pbx_spool.c:279 attempt_thread: Call completed to SIP/7XXXXXXXXXX@sip.prov.net
|
Сообщений: 1573
|
Re: sip - callback
Да вспомнил, есть такое. Помогает это:
[callback]
exten => _X.,1,Playback(beep)
exten => _X.,n,Dial(SIP/${EXTEN}@sipnet,60)
|
Сообщений: 14
|
Re: sip - callback
cron333: Да вспомнил, есть такое. Помогает это:
[callback]
exten => _X.,1,Playback(beep)
exten => _X.,n,Dial(SIP/${EXTEN}@sipnet,60)
Помоему стало еще хуже... звонок рвется как звучит "бип" ;)
Oct 3 17:08:40 NOTICE[21773]: pbx_spool.c:279 attempt_thread: Call completed to SIP/7XXXXXXXXXX@sip.prov.net
-- Attempting call on SIP/7XXXXXXXXXX@sip.prov.net for 7YYYYYYYYYY@callback:1 (Retry 1)
-- Executing Playback("SIP/sip.prov.net-081a9ab0", "beep") in new stack
-- Playing 'beep' (language 'en')
== Auto fallthrough, channel 'SIP/sip.prov.net-081a9ab0' status is 'UNKNOWN'
Oct 3 17:09:21 NOTICE[21804]: pbx_spool.c:279 attempt_thread: Call completed to SIP/7XXXXXXXXXX@sip.prov.net
|
Сообщений: 1573
|
Re: sip - callback
Случаем, после вставки новой строки(Playback), во второй не забыли сменить 1 на - n (или 2). Наверняка так и есть.
Все должно работать ...
|
Сообщений: 14
|
Re: sip - callback
cron333: Случаем, после вставки новой строки(Playback), во второй не забыли сменить 1 на - n (или 2). Наверняка так и есть.
Все должно работать ...
Да точно.... чайник я... что сказать :)
Спасибо заработало!
Вот еще маленький вопросик.... реально в asterisk заменять внеший IP адрес? Я знаю есть настройка в sip.conf "externip" но имеет ли смысл ее использовать? Поскольку udp пакетах скорее всего все равно сохраняется внеший адрес сервера, с которого шлется пакет? А если sip-провайдер следит за внешними ip то все это бесполезно? ;)
|
|