Как стать автором
Обновить

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

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


Обзвонщик состоит из 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,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,Wait(3) ;Ждём 3 секунды
exten => 2222,n,Background(announcement) ;Проигрываем аудиофайл announcement
exten => 2222,n,Hangup ;Вешаем трубку


Скрипт, будучи запущенным, подцепит указанный текстовый файл, в котором просто идут номера по списку, по одному номеру на строку. На основании этих данных он создаст специальный call-файл и кладёт его в соответствующую директорию, откуда этот файл подхватывается asterisk-ом. Подробнее о call-файлах можно узнать здесь.

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

SELECT * FROM cdr WHERE accountcode = 'autodialer';


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

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

Статья 18. Реклама, распространяемая по сетям электросвязи (в ред. Федерального закона от 27.10.2008 N 179-ФЗ)
2. Не допускается использование сетей электросвязи для распространения рекламы с применением средств выбора и (или) набора абонентского номера без участия человека (автоматического дозванивания, автоматической рассылки).
Теги:
Хабы:
Всего голосов 18: ↑18 и ↓0+18
Комментарии15

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань