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

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


Обзвонщик состоит из 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. Не допускается использование сетей электросвязи для распространения рекламы с применением средств выбора и (или) набора абонентского номера без участия человека (автоматического дозванивания, автоматической рассылки).
Share post

Similar posts

Comments 15

    0
    С контекстами все понятно, а вот со скриптом нет. Не могли бы вы описать каким образом мы указываем астериске начать обзвон?
      +2
      Добавил!
        0
        Благодарю. Ссылка оказалась полезной. Именно об этом я и спрашивал в комментарии выше.
      0
      announcement это муз файл для проигрывания? Стоило бы это тое упомянуть для полноты картины)
        0
        Ну не обязательно музыкальный, скорее голосовое сообщение типа «вы уволены» ;)
          0
          Согласен. Но не подготовленный читатель, так и не поймет какой использовать файл для проигрывания.
          Я использую такой контекст:

          [outgoing_makbel]
          exten => s,1,Answer
          exten => s,n,Wait(1)
          exten => s,n,Background(/var/lib/asterisk/sounds/custom/mann)
          exten => s,n,hangup
          


          Написал небольшой web интерфейс для всего этого дела. Кому интересно: www.dropbox.com/s/4ovy3b4hxg7hfj6/makbel.7z
            0
            Ну статья всё таки для чуточку подготовленного читателя, нет смысла освещать здесь работу команды Background
              0
              Команду background расписывать смысла нету, а вот контекст prozvon-dialer вполне можно было бы прокомментировать.
                0
                Разумное пожелание. Я немного упростил и прокомментировал.
                  0
                  Спасибо, это и так было более-менее понятно, не считая того, что игрой с CDR я ни когда не занимался. Из того, что Вы сократили: были непонятные строки с переменной uniqueid: Уникальный Идентификатор Канала (32 символа).
                    0
                    Это задавалось имя файла для аудиозаписи, но я подумал что пусть лучше каждый сам решает писать ему звонок автонабора или нет, особенно учитывая малую практическую пользу от этого.
                      0
                      Там помимо строки MIXMONITOR была ещё одна, я о ней.
                        0
                        Да, она заранее считывала uniqueid чтоб потом mixmonitor-у его отдать. В общем то бесполезная строчка.
                          0
                          Ок, спасибо за комментарии, просто я админю Asterisk постольку-поскольку, т.к. компания маленькая и конфиги примитивные, чисто что бы звонить/гол. почта/запись разговоров. Так что не особо глубоко знаю IP телефонию в принципе, и * в частности.
          +1
          «Здравствуйте, Вам позвонили из компании „Позвоню Вам“, наш звонок очень важен для Вас, оставайтесь на линии и прослушайте следующую информацию: Если Вы хотите нажать 1, нажмите один, если хотите нажать вдвоём, нажмите вдвоём».

        Only users with full accounts can post comments. Log in, please.