2014-12-03 73 views
0

如何在CentOS 5中使用星号进行IVR系统集成?
我已经在CenOS 5中构建了一个使用星号和postgresql的IPPABX系统。代理可以在它们之间进行通信,并且可以进行出站呼叫。
在这种情况下,我如何将IVR集成到入站呼叫中?
我在互联网上搜索,但我没有得到具体的/正确的程序为我的问题。我已经知道我需要在星号的extension.conf和sip.conf中做些什么。
我知道这个过程很漫长,但我很沮丧,我无法使它工作。在CentOS 5中使用星号进行IVR集成

回答

0

这里是简单IVR例子

[mainmenu] 
    exten => s,1,Answer 
    exten => s,2,SetMusicOnHold(default) 
    exten => s,3,DigitTimeout,5 
    exten => s,4,ResponseTimeout,10 
    ;SAI menu - 1 for tech support, 2 for voicemail, 3 for echo test 
    exten => s,5,Background(sai-welcome) 
    exten => s,6,Background(sai-choose) 

    ; Tech Support 
    exten => 1,1,AGI(dima-test.agi) 
    exten => 1,2,SetGlobalVar(ACCOUNTCODE=${callerid}) 
    exten => 1,3,SetVar(testcallerid=${callerid}) 
    exten => 1,4,Background(sai-reptech-welcome) 
    exten => 1,5,Queue(rep-tech) 

    ; Leave Voicemail 
    exten => 2,1,VoicemailMain() 
    exten => 2,2,Hangup 

    ; Echo Test 
    exten => 3,1,Playback(demo-echotest) 
    exten => 3,2,Echo 
    exten => 3,3,Playback(demo-echodone) 
    exten => 3,4,Goto(mainmenu,s,6) 

    ; EAGI Test 
    exten => 4,1,Answer() 
    exten => 4,2,Wait(1) 
    exten => 4,3,AGI(sai-repid.agi) 
    exten => 4,4,Wait(1) 
    exten => 4,5,Hangup 

    ; Play Music-on-Hold 
    exten => 5,1,MusicOnHold(default) 
    exten => 5,2,Goto(mainmenu,s,6) 
    ; #=hangup 
    exten => #,1,Playback(sai-thanks) 
    exten => #,2,Hangup 

    exten => t,1,Goto(#,1)   ; If they take too long, give up 
    exten => i,1,Playback(invalid) ; "That's not valid, try again" 

对于分贝驱动IVR可以使用AGI接口(如实施例可以读取a2billing.org项目的代码)或星号REALTIME架构

http://www.voip-info.org/wiki/view/Asterisk+RealTime+Extensions

也可以是拨号方案和func_odbc的搭配,这样

 [db_menu] 
     exten => s,1,Answer 
     exten => s,2,SetMusicOnHold(default) 
     exten => s,3,DigitTimeout,5 
     exten => s,4,ResponseTimeout,10 
     ;SAI menu - 1 for tech support, 2 for voicemail, 3 for echo test 

     exten => s,n,Set(invalid_filename=silence/1) 
     exten => s,n,Set(filename=${ODBC_getfile(${menuid})}) 
     exten => s,n(loop),Background(${invalid_filename}&${filename}) 

     ; return no if no choice or goto line like new_context,ext,prio 
     exten => _X,1,Set(have_choice=${ODBC_getivr_choice(${menuid},${EXTEN})}) 
     exten => _X,2,GotoIF($[ "${have_choice}" == "no" ]?invalid,1) 
     exten => _X,n,Goto(${have_choice}); 

     exten => invalid,1,Set(invalid_filename=${ODBC_getfile_invalid(${menuid})}) 
     exten => invalid,n,Goto(s,loop) 
东西