Настройка DISA (карточная платформа)

И так задача стоит в следующем , есть сервер Asterisk необходимо внешним пользователям дозваниваться до сервера Asterisk вводить код доступа и далее совершать звонки за счет сервера Asterisk (ну или как то это дело тарифицировать)

И так у вас есть транк с вашим SIP провайдером , этот транк к примеру находится в контексте incoming (

context=incoming ) , в extconfig.conf в начало контекста incoming добавляем след. строки :

exten => 4957777777,1,Authenticate(55555) ; 55555 это пароль доступа , 4957777777 - это номер при дозвоне на который будет отрабатывать DISA.
exten => 4957777777,n,DISA(no-password,disa) ; disa это контекст по которому пойдем марштуризация 
exten => 4957777777,n,Hangup
[disa]
exten => _X.,1,Macro(authtrunkdial|SIP/Mediant/${EXTEN})

Если же вы хотите что б ваш PBX заговорил по русскому , вот небольшой набор русских автоинформаторов :

downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-wav-current.tar.gz

А можно и усложнить все (но получится более красивей и более юзабильней) :


[macro-mysipdisa]
; тестовая диса
exten => s,1,Noop()
exten => s,n,Set(PIN_TRIES=0)
exten => s,n,Set(MAX_PIN_TRIES=3)
exten => s,n,Set(CDR(remote_signal_ip)=${SIPCHANINFO(recvip)})
exten => s,n,Set(RESULT_AON=${ODBC_CHECK_DISA_AON(${CALLERID(num)})})
exten => s,n,GoToIf($[${RESULT_AON} = TRUE]?accept_to_dial:get_pin)
exten => s,n(get_pin),Read(DISA_PASSWD|agent-pass)
exten => s,n,Set(PIN_TRIES=$[${PIN_TRIES} + 1])
exten => s,n,Set(CDR(accountcode)=${DISA_PASSWD})
exten => s,n,Set(RESULT_PASSWD=${ODBC_CHECK_DISA_PASSWD(${DISA_PASSWD})})
exten => s,n,GoToIf($[${RESULT_PASSWD} = TRUE]?accept_to_dial:invalid_pin)
exten => s,n(invalid_pin),Playback(conf-invalidpin)
exten => s,n,Wait(1)
exten => s,n,GoToIf($[${PIN_TRIES} <${MAX_PIN_TRIES}]?get_pin:login_fail)
exten => s,n(login_fail),Hangup()
exten => s,n(accept_to_dial),Read(DST_NUMBER|vm-enter-num-to-call)
exten => s,n,ResetCDR()
exten => s,n,Set(CALLERID(num)=7${CALLERID(num)})
exten => s,n,Set(CDR(userfield)=${DST_NUMBER})
exten => s,n,Set(CDR(remote_signal_ip)=217.28.210.22)
exten => s,n,GoToIf($[${LEN(${DST_NUMBER})} > 11]?international:national)
exten => s,n(international),Dial(SIP/NAUKA_SVYAZ/899${DST_NUMBER:3})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s,n(national),GoToIf($[${LEN(${DST_NUMBER})} = 7]?moscow:russia)
exten => s,n(moscow),Dial(SIP/NAUKA_SVYAZ/8997495${DST_NUMBER})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s,n(russia),Dial(SIP/NAUKA_SVYAZ/8997${DST_NUMBER:1})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Hangup
exten => s-CHANUNAVAIL,1,Hangup
exten => _s-.,1,NoOp