AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

callback

Asterisk IP PBX 1 сообщений -
#1

Поднял коллбак.

Коллбак делаеться через .call файлы или через голосовую почту, я делал первым путем. Как это работает - я набираю номер, астериск его сбрасывает и мне приходит звонок, после чего набираю номер/экстеншн и в конце #. через agi скрипт можно делать веб, вап, эмайл и прочие варианты инициации (msn,icq,jabber). как раз над ними работаю.

замеченный баг. если h323 гейт находиться далеко (по пингу), глючит набор дтмф-а. т.е. если я набрал 12345678, астериск может принять 112233455567788. при тестировании с гейтом quintum и пинге 700мс с кодеком 729, наоборот, номер приходил сильно обрезанным, т.е. 12345678 -> 1358. возможно надо настраивать эхо - хотя в голосе эха не было. так и не понял, почему на h323 дублируються дтмф'ы. моя конфигурация проста - астериск и в локальной сетке циска 5350, трафик гоняю по g711, без компрессии. из за внутрифирменной бюрократии не могу на циске сип прописать, приходиться h323 использовать. но проблем нет никаких Smile

Итак, файл /root/callfile:
Код:

Channel: OH323/номер-телефо на@h323-шлюз:1720
Callerid: 100 Context: callback-menu-custom
Extension: 100
MaxRetries: 4 Retrytime: 10
WaitTime: 60 Priority: 1


extensions_custom.conf (asterisk@home) или externsions.conf:
Код:

[callback-menu-custom]
exten => 100,1,Answer
exten => 100,2,Wait(1)
exten => 100,3,SetVar(TIMEOUT(digit)=7)
exten => 100,4,SetVar(TIMEOUT(response)=90)
exten => 100,5,Read(DST,telephone-number,0)
exten => 100,6,Playback(pls-wait-connect-call)
exten => 100,7,Ringing
exten => 100,8,Dial(OH323/${DST}@h323-шлюз:1720,60)
exten => 100,9,Playback(number-not-answering)
exten => 100,10,Playback(please-hang-up-and-try-again)
exten => 100,11,Wait(1) exten => 100,12,Hangup
exten => 100,108,Playback(the-number-u-dialed)
exten => 100,109,Playback(is-curntly-busy)
exten => 100,110,Playback(please-hang-up-and-try-again)
exten => 100,111,Wait(1)
exten => 100,112,Hangup


вариант2:
Код:

[callback-menu2-custom]
exten => _X.,1,Answer
exten => _X.,2,Wait(1)
exten => _X.,3,SetVar(TIMEOUT(digit)=7)
exten => _X.,4,SetVar(TIMEOUT(response)=90)
exten => _X.,5,DISA,no-password|callback-dialout-custom
exten => _X.,6,Hangup
exten => _X.,104,Busy
exten => h,1,Hangup

[callback-dialout-custom]
exten => _X.,1,SetVar(TIMEOUT(digit)=7)
exten => _X.,2,SetVar(TIMEOUT(response)=90)
exten => _X.,3,SetCallerID(12345)
exten => _X.,4,Dial(OH323/${EXTEN}@h323-шлюз:1720,60)
exten => _X.,5,Wait(5)
exten => _X.,6,Congestion


теперь самое главное. инит-номер на коллбак. номер я брал на www.stanaphone.com. B asterisk@home надо зароутить DID на custom_application:
Код:

[callback-init-custom]
exten => s,1,Wait(1)
;exten => s,2,AGI(callback.agi)
exten => s,2,System(cp /root/callfile /var/spool/asterisk/outgoing/)
exten => s,3,Wait(2)
exten => s,4,SetVar(PRI_CAUSE=21) ; 21 = Call rejected
exten => s,5,Hangup


а в простом варианте в [default] прописать:
Код:

exten => STANAPHONEDID,1,Wait(1)
;exten => STANAPHONEDID,2,AGI(callback.agi)
exten => STANAPHONEDID,2,System(cp /root/callfile /var/spool/asterisk/outgoing/)
exten => STANAPHONEDID,3,Wait(2)
exten => STANAPHONEDID,4,SetVar(PRI_CAUSE=21) ; 21 = Call rejected
exten => STANAPHONEDID,5,Hangup


Дополнение от 24-о мая 2005. Изменил callfile.
Код:

Channel: Local/00мой-мобильник@from-internal
Callerid: 100
Context: callback-menu-custom
Extension: 100
MaxRetries: 4
Retrytime: 10
WaitTime: 60
Priority: 1


Это было для астериск@хоум. на нормальном будет:
Код:

Channel: Local/00мой-мобильник@контекст-на-выход


Дело в том, что просто звонок через колл файл - не попадает в биллинг. В измененной схеме все в порядке. Кроме этого, можвно контекстом писать разговоры, да и вообще делать, что хочешь Smile