ในไดเร็คตอรี่ /opt/astbill/etc/asterisk มีตัวอย่างไฟล์คอนฟิกของ Asterisk แต่ไม่ต้องก๊อบมาใส่ไว้ใน /etc/asterisk นะครับ เพราะใช้จริงๆแค่ไม่กี่ไฟล์เท่านั้น ซึ่งเราก็แก้ไขที่ไฟล์นั้นในไดเร็คตอรี่ /etc/asterisk ตรงๆได้เลย
ถ้าในเครื่องมีโปรแกรมอื่นที่ใช้ Asterisk Realtime อยู่แล้ว ก็ต้องเลือกเอาครับว่าจะใช้โปรแกรมไหน AstBill หรือว่าโปรแกรมเดิม ถ้าต้องใช้ทั้ง 2 โปรแกรมบนเครื่องเดียวกันด้วย ก็ต้องลง Asterisk 2 ครั้งครับ ให้ใช้คนละไดเร็คตอรี่ไปเลย ซึ่งก็ยุ่งยากนิดหน่อยครับ แต่ก็สามารถทำได้
1. ไฟล์ extconfig.conf
คอนฟิกไฟล์นี้สำหรับทำ Asterisk Realtime ซึ่ง Asterisk จะมาดูข้อมูลเกี่ยวกับ SIP, IAX, Voicemail ที่ดาต้าเบส
[settings]
iaxusers => mysql,astbill,asv_iax
iaxpeers => mysql,astbill,asv_iax
sipusers => mysql,astbill,asv_sip
sippeers => mysql,astbill,asv_sip
voicemail => mysql,astbill,asv_voicemail
2. ไฟล์ res_mysql.conf
ใส่ Database, Username, Password ที่จะคอนเน็คเข้าไปเพื่อดึงข้อมูล Asterisk Realtime
[general]
dbhost = localhost
dbname = astbill
dbuser = astbilluser
dbpass = astbill419
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock
3. ไฟล์ manager.conf
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
[astbillman]
secret = ab87AstBtii3
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
4. ไฟล์ modules.conf
ไม่ให้ Asterisk โหลดโมดูลที่ไม่ได้ใช้งาน ช่วยประหยัดหน่วยความจำได้
noload => res_config_odbc.so
preload => res_config_mysql.so
noload => res_odbc.so
noload => cdr_addon_mysql.so
noload => app_addon_sql_mysql.so
noload => cdr_custom.so
noload => cdr_manager.so
noload => cdr_odbc.so
noload => cdr_pgsql.so
noload => cdr_sqlite.so
noload => app_festival.so
noload => app_url.so
noload => app_image.so
noload => app_disa.so
noload => app_qcall.so
noload => app_adsiprog.so
noload => codec_g726.so
noload => format_vox.so
noload => format_h263.so
noload => format_jpeg.so
5. ไฟล์ extensions.conf
สำหรับไฟล์ extensions.conf นี้นะครับ AstBill ไม่ได้ใช้งานแบบ Asterisk Real Time เราต้องมาแก้ไขที่ไฟล์โดยตรง
[general]
#include extensions_astbill.conf
6. ไฟล์ extensions_astbill.conf
ก๊อบข้อมูลต่อไปนี้ ผมก๊อบมาจากต้นฉบับ บาง Dialplan ในไฟล์นี้คงไม่ได้ใช้งาน ผมแนะนำว่าให้เลือกเอาเฉพาะที่คิดว่าจะใช้งานครับ เช่นโทรออกไปภายนอก โทรไปเบอร์ต่างประเทศ รับ Traffic Termination เป็นต้น
สร้าง Dialplan ก่อนแล้วค่อยไปคอนฟิกลูกเล่นในเว็บแอดมิน
[astbill-default]
exten => #,1,Hangup
; A timeout and "invalid extension rule"
exten => t,1,Goto(i,1)
exten => i,1,Playback(invalid)
exten => i,2,Hangup
exten => h,1,DeadAGI(agistardead.agi)
exten => h,2,Hangup
exten => 198,1,Ringing
exten => 198,2,Wait(2)
exten => 198,3,VoicemailMain
exten => 199,1,Ringing
exten => 199,2,Wait(2)
exten => 199,3,AGI(agistarvoicemail.agi)
exten => 199,4,VoicemailMain(s${VOICEMAIL})
exten => 500,1,Ringing
exten => 500,2,Wait(2)
exten => 500,3,DateTime
exten => 500,4,Hangup
exten => 501,1,Ringing
exten => 501,2,Wait(2)
exten => 501,3,Playback(tt-monkeysintro)
exten => 501,4,Playback(tt-somethingwrong)
exten => 501,5,Playback(tt-monkeys)
exten => 501,6,Playback(privacy-thankyou)
exten => 501,7,Hangup
exten => 502,1,Ringing
exten => 502,2,Wait(2)
exten => 502,3,Playback(demo-echotest)
exten => 502,4,Echo
exten => 502,5,Playback(demo-echodone)
exten => 502,6,Hangup
exten => 505,1,WaitMusicOnHold(30)
exten => 505,2,Congestion
exten => 503,1,Ringing
exten => 503,2,Wait(2)
exten => 503,3,Playback(believe-its-free)
exten => 503,4,Hangup
exten => 112,1,Ringing
exten => 112,2,Wait(1)
exten => 112,3,Playback(no-112-2)
exten => 112,4,Hangup
exten => 911,1,Ringing
exten => 911,2,Wait(1)
exten => 911,3,Playback(no-911-2)
exten => 911,4,Hangup
exten => 999,1,Ringing
exten => 999,2,Wait(1)
exten => 999,3,Playback(no-112-2)
exten => 999,4,Hangup
include => astbill-custom
include => local-sip
include => astartelecom-iax
include => parkedcalls
[astartelecom-iax]
; exten => _XXXXXX.,1,AGI(agiastar.agi,00${EXTEN}|${CALLERIDNUM})
; The parameter ${CALLERIDNUM} is used when using ANI/CLI for authentication
; It makes ${CALLERIDNUM} = accountcode. This is used in some Asterisk / SER implementations
exten => _XXXXXX.,1,AGI(agiastar.agi,${EXTEN})
exten => _XXXXXX.,2,GotoIf($["${BILLSTATUS}" = "NOCREDIT"]?20)
exten => _XXXXXX.,3,GotoIf($["${BILLSTATUS}" = "NOACCOUNT"]?20)
exten => _XXXXXX.,4,GotoIf($["${BILLSTATUS}" = "INVALID"]?30)
exten => _XXXXXX.,5,Set(CALLERID(all)=${ASTCALLERID})
exten => _XXXXXX.,6,Dial(${DIALSTRING})
exten => _XXXXXX.,20,Playback(beep)
exten => _XXXXXX.,21,Playback(not-enough-credit)
exten => _XXXXXX.,22,Hangup
exten => _XXXXXX.,30,Playback(beep)
exten => _XXXXXX.,31,Playback(that-is-not-rec-phn-num)
exten => _XXXXXX.,32,Hangup
[macro-stdexten]
; Standard extension macro:
; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well
exten => s,1,AGI(astlocal.agi,${ARG1})
exten => s,2,Dial(${DIALSTRING},20)
exten => s,3,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-NOANSWER,1,Voicemail(u${VOICEMAIL}) ; If unavailable, send to voicemail w/ unavail announce
exten => s-NOANSWER,2,Goto(astbill-default,s,1) ; If they press #, return to start
exten => s-BUSY,1,Voicemail(b${VOICEMAIL}) ; If busy, send to voicemail w/ busy announce
exten => s-BUSY,2,Goto(astbill-default,s,1) ; If they press #, return to start
exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer
exten => a,1,VoicemailMain(${VOICEMAIL}) ; If they press *, send the user into VoicemailMain
[local-sip]
exten => _7XXXX,1,Macro(stdexten,${EXTEN})
[incomming-numbers]
; A timeout and "invalid extension rule"
exten => t,1,Hangup
exten => h,1,Hangup
exten => 08701111111,1,Dial(SIP/70223&IAX2/70224&SIP/70228,20)
exten => 08701111111,2,Voicemail,u70223
exten => 08701111111,3,Congestion
exten => 08701111111,102,Voicemail,b70223
exten => 08701111111,103,Congestion
exten => 08701111112,1,Dial(SIP/70223&IAX2/70224&SIP/70228,20)
exten => 08701111112,2,Voicemail,u70223
exten => 08701111112,3,Congestion
exten => 08701111112,102,Voicemail,b70223
exten => 08701111112,103,Congestion
exten => 02071111111,1,Dial(SIP/70223&IAX2/70224&SIP/70228,20)
exten => 02071111111,2,Voicemail,u70223
exten => 02071111111,3,Congestion
exten => 02071111111,102,Voicemail,b70223
exten => 02071111111,103,Congestion
[astbill-incoming]
; Default Context for Provider Trunks and Incoming Numbers
[incomingsipgate]
exten => h,1,Hangup
exten => 1111111,1,Dial(SIP/70223&IAX2/70224&SIP/70228,20)
exten => 1111111,2,Voicemail,u70223
exten => 1111111,3,Congestion
exten => 1111111,102,Voicemail,b70223
exten => 1111111,103,Congestion
[ip24]
exten => h,1,Hangup
exten => 11111111,1,Dial(SIP/70223&IAX2/70224&SIP/70228)
exten => 11111111,2,Voicemail,u70223
exten => 11111111,3,Congestion
exten => 11111111,102,Voicemail,b70223
exten => 11111111,103,Congestion
exten => _0[0-9].,1,AGI(agiastar.agi,${EXTEN})
exten => _0[0-9].,2,GotoIf($["${BILLSTATUS}" = "NOCREDIT"]?20)
exten => _0[0-9].,3,GotoIf($["${BILLSTATUS}" = "INVALID"]?30)
exten => _0[0-9].,4,Dial(${DIALSTRING})
exten => _0[0-9].,20,Playback(beep)
exten => _0[0-9].,21,Playback(not-enough-credit)
exten => _0[0-9].,22,Hangup
exten => _0[0-9].,30,Playback(beep)
exten => _0[0-9].,31,Playback(that-is-not-rec-phn-num)
exten => _0[0-9].,32,Hangup
7. ไฟล์ sip.conf
ใช้ไฟล์เดิม คอนฟิกเดิม
8. ไฟล์ iax.conf
ใช้ไฟล์เดิม คอนฟิกเดิม
9. ไฟล์ h323.conf
ใช้ไฟล์เดิม คอนฟิกเดิม
10. รีสตาร์ท Asterisk
- โค้ด: เลือกทั้งหมด
service asterisk restart