Простейший способ обзвона списка номеров с помощью Asterisk

в 13:58, , рубрики: asterisk, ip-телефония, телефония, метки: ,

У моего заказчика не так давно возникла необходимость обзвонить всех своих сотрудников с проигрыванием небольшого голосового сообщения. Устанавливать сложные системы массового обзвона у меня не было никакого желания. В итоге я нашёл очень простой способ решить эту задачу.

Обзвонщик состоит из shell-скрипта:

#!/bin/sh
# Asterisk call from list script for FreePBX
# Based on example at http://asterisk-support.ru/forum/topics/267/

pause=40
spooldir=/astdb/spool # No trailing slash!
diallist=/etc/asterisk/scripts/dialer/diallist.txt

echo `date`": Dialing with $pause second pause"

while read number; do

echo "Channel: Local/8$number@prozvon-dialer
MaxRetries: 0
RetryTime: 5
WaitTime: 30
Context: prozvon-informer
Extension: 2222
Callerid: 2222
Account: autodialer
Priority: 1"  > $spooldir/tmp/$number

chmod 777 $spooldir/tmp/$number
chown asterisk:asterisk $spooldir/tmp/$number
mv $spooldir/tmp/$number $spooldir/outgoing

echo "$number"
sleep $pause

done < $diallist
echo "Done"
exit 0

и двух контекстов — набирателя:

[prozvon-dialer]
exten => _8XXXXXXXXXX,1,NoOp(Starting mass dialer exten)
exten => _8XXXXXXXXXX,n,Set(CALLFILENAME=${UNIQUEID})
exten => _8XXXXXXXXXX,n,MixMonitor(${MIXMON_DIR}${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})
exten => _8XXXXXXXXXX,n,Dial(SIP/GorodOut/${EXTEN},60)
exten => _8XXXXXXXXXX,n,Set(CDR(userfield)=${HASH(SIP_CAUSE,${CDR(dstchannel)})})
exten => _8XXXXXXXXXX,n,Hangup   ; кладем трубку

GorodOut — это учётная запись нашего SIP-провайдера.

и диктователя

[prozvon-informer]
exten => 2222,1,Answer
exten => 2222,n,NoOp(Informer started)
exten => 2222,n,Wait(3)
exten => 2222,n,Background(announcement)
exten => 2222,n,Hangup

диктователь после установки соединения ждёт 3 секунды и потом проговаривает announcement

Скрипт, будучи запущенным, подцепит указанный текстовый файл, в котором просто идут номера по списку, по одному номеру на линию.

А как мы узнаем результаты? Очень просто:

SELECT * FROM cdr WHERE accountcode = 'autodialer';

Также в случае, если дозвон не удался, в поле userfield в CDR будет более подробно указана причина этого.

Ну и напоследок:

Статья 18. Реклама, распространяемая по сетям электросвязи (в ред. Федерального закона от 27.10.2008 N 179-ФЗ)
2. Не допускается использование сетей электросвязи для распространения рекламы с применением средств выбора и (или) набора абонентского номера без участия человека (автоматического дозванивания, автоматической рассылки).

Автор: varnav

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js