Asterisk и IP-телефония

Asterisk Trixbox автодозвон до абонента если он занят. - albertxyc

Материал перенесён из старой базы знаний ATC-IP и оформлен в едином стиле нового сайта.

albertxyc
Recent Entries
Friends
Archive
Profile
Add to friends
RSS
albertxyc
Asterisk Trixbox автодозвон до абонента если он занят.
albertxyc
August 2nd, 2013
Всем знакома ситуация: пытаешься дозвониться до сотрудника а у него все занято и занято... и сидеть набирать его снова и снова не хочется... Для этих целей напишем скрипт. Представим что наш номер 114, а номер нужного нам сотрудника 101.
Скрипт работает по следующему принципу:
с номера 114 набираем комбинацию 99101 слышим в ответ asterisk "Activated" кладем трубку и ждем.
В этот момент астериск пытается с интервалом в 10 секунд дозвониться до абонента 101 в течение 15 минут, все время можно настроить под свои нужды. Как только абонент 101 освободился тут же происходит набор двух абонентов 101 и 114.
По данной статье создаем новый custom extension
http://albertxyc.livejournal.com/10
517.html
[custom-autocall]
exten => _99X.,1,Answer()
exten => _99X.,n,
System
(/home/asterisk/autodial.sh ${CALLERID(num)} ${EXTEN:2})
exten => _99X.,n,Playback(activated)
exten => _99X.,n,Hangup()
Объяснение некоторых элементов
_99X.
- номер начинающийся с префикса 99 и имеющий любое количество цифр в номере
System
(/home/asterisk/autodial.sh ${CALLERID(num)} ${EXTEN:2})
- вызов скрипта с двумя параметрами
${CALLERID(num)}
- номер вызывающего
${EXTEN:2}
- набранный номер без первых двух цифр (без 99) то есть набрав номер 99101 в скрипт передается 101.
Ну и сам скрипт /home/asterisk/autodial.sh
#!/bin/sh
CALLERNUM=$1
DIALNUM=$2
FILENAME=$CALLERNUM.call
CALLERINFO=
"Call to $CALLERNUM <$CALLERNUM>"
echo
"Action: originate"
>> /home/asterisk/$FILENAME
echo
"Channel: SIP/$DIALNUM"
> /home/asterisk/$FILENAME
echo
"MaxRetries: 90"
>> /home/asterisk/$FILENAME
echo
"WaitTime: 8"
>> /home/asterisk/$FILENAME
echo
"RetryTime: 10"
>> /home/asterisk/$FILENAME
echo
"CallerID: $CALLERINFO"
>> /home/asterisk/$FILENAME
echo
"Extension: $CALLERNUM"
>> /home/asterisk/$FILENAME
echo
"Set: REALCALLERIDNUM=$DIALNUM"
>> /home/asterisk/$FILENAME
echo
"Async: yes"
>> /home/asterisk/$FILENAME
echo
"Priority: 1"
>> /home/asterisk/$FILENAME
chown asterisk:asterisk /home/asterisk/$FILENAME
mv /home/asterisk/$FILENAME /
var
/spool/asterisk/outgoing/
2 comments
Leave a comment
Спасибо.
Vitaly Miromanov
2013-11-26 02:08 pm (UTC)
Немного переделал под себя и сделал автодозвон на сотовые и городские телефоны:
#!/bin/sh
CALLERNUM=$1
DIALNUM=$2
FILENAME=$CALLERNUM.call
CALLERINFO="DO3BOH $CALLERNUM <$DIALNUM>";
echo "Action: originate" >> /etc/asterisk/scripts/$FILENAME
echo "Channel: Local/$DIALNUM@dozvon" > /etc/asterisk/scripts/$FILENAME
echo "MaxRetries: 30" >> /etc/asterisk/scripts/$FILENAME
echo "WaitTime: 20" >> /etc/asterisk/scripts/$FILENAME
echo "RetryTime: 10" >> /etc/asterisk/scripts/$FILENAME
echo "CallerID: $CALLERINFO" >> /etc/asterisk/scripts/$FILENAME
echo "Extension: $CALLERNUM" >> /etc/asterisk/scripts/$FILENAME
echo "Set: REALCALLERIDNUM=$DIALNUM" >> /etc/asterisk/scripts/$FILENAME
echo "Priority: 1" >> /etc/asterisk/scripts/$FILENAME
chown asterisk:asterisk /home/asterisk/$FILENAME
mv /etc/asterisk/scripts/$FILENAME /var/spool/asterisk/outgoing/
extenstions.conf
[autocall]
exten => _99X.,1,Answer()
exten => _99X.,n,Playback(activated)
exten => _99X.,n,System(/etc/asterisk/scripts/aut
odial ${CALLERID(num)} ${EXTEN:2})
exten => _99X.,n,Hangup()
[dozvon]
exten => _X.,1,Dial(SIP/${EXTEN}&SIP/sipnet/${EXTEN}&dahdi/g1/${EXTEN}&dahdi/g1/8${EXTEN:1})
Reply
) (
Thread
Re: Спасибо.
albertxyc
2013-11-27 08:15 am (UTC)
Рад что пригодилось)
Reply
) (
Parent
) (
Thread
2 comments
Позвонить +7 (343) 382-33-16