|
|
OSSLab::開放軟體實驗室(Open Source Software Lab) > 實驗專案 > VoIP > IP PBX > 軟體式 IP PBX > Asterisk > Tips > 忙線回撥-Busy CallBack
忙線回撥-Busy CallBack從 $1什麼是忙線回撥? 其實這樣的應用也不算新玩意,在一般辦公室的傳統交換機就已經有此功能,只是 Asterisk 內建竟沒有這個我覺得還蠻實用的 feature,既然將電話IP化了,使用上怎能比傳統的還遜,所以寫了這篇教學,讓玩家也可以更愉快的使用Asterisk。 內容異動
功能操作流程當 A 撥電話給 B 時 當 B 講完電話時 使用的限制
檔案說明
/etc/asterisk/extensions.conf ; Extensions with no Voicemail box reporting BUSY come here
/etc/asterisk/extensions_custom.conf
[custom-auto-redial]
exten => _rdXXXXXX,1,NoOp(Redialed Call)
exten => _rdXXXXXX,2,Set(FROM=${EXTEN:2:3})
exten => _rdXXXXXX,3,Set(TO=${EXTEN:5:3})
exten => _rdXXXXXX,4,ChanIsAvail(SIP/${TO}|s)
exten => _rdXXXXXX,5,GotoIf($["${AVAILSTATUS}" <= "1"]?6:end)
exten => _rdXXXXXX,6,Set(CALLERID(all)="ReDial ${TO} <${TO}>")
exten => _rdXXXXXX,7,Dial(SIP/${FROM}|10)
exten => h,n(end),Hanghup
* 此範例僅適用以3位數字編碼的分機;如果是4位數的分機,部份內容修改如下: /var/lib/asterisk/agi-bin/busy_callback.sh #!/bin/bash
# Usage: busy_callback.sh <call from> <call to>
# example: ./busy_callback.sh 202 201
#
if [ $# -ne 2 ]; then
exit;
fi
extFROM="$1"
extTO="$2"
custEXT="custom-auto-redial"
MR=18 #Max Retries
RT=10 #Retry per 10 seconds
#
echo Channel: Local/rd$extFROM$extTO@$custEXT > /tmp/$extFROM.redial
echo MaxRetries: $MR >> /tmp/$extFROM.redial
echo RetryTime: $RT >> /tmp/$extFROM.redial
echo WaitTime: 15 >> /tmp/$extFROM.redial
echo Context: from-internal >> /tmp/$extFROM.redial
echo Extension: $extTO >> /tmp/$extFROM.redial
#echo Priority: 1 >> /tmp/$extFROM.redial
echo CallerId: ReDial\<$extFROM\> >> /tmp/$extFROM.redial
chown asterisk:asterisk /tmp/$extFROM.redial
sleep 3
mv /tmp/$extFROM.redial /var/spool/asterisk/outgoing
別忘了要加上可執行的權限 ;MR=18,RT=10 每10秒檢查一次,最多檢查18次
標籤:
|
||||||||||||||||||