Автоматический обзвон абонентов, Asterisk автообзвон

Asterisk
Для этого нам понадобиться asterisk, ну и если ваш скрипт будет работать с базой тогда mysql

Конфигурация файлов asterisk


extensions.conf
Создадим контекст auto_dial, в котором опишем что и как мы проигрываем, и куда направляем исходящий вызов.

Код
[auto_dial]
exten => _X.,1,Dial(SIP/provider/${EXTEN:1})


Теперь проигрываем записанную запись
exten => s,1,Playback(Demo); - запись можно записать в формате mp3

Далее остается написать скрипт который будет создавать outgoing файлы.

Hам нужно будет помещать файлы в каталог /var/spool/asterisk/outgoing/, с таким содержанием
Channel: LOCAL/2222222@auto_dial - 2222222 -это телефон на который asterisk будет звонить и проигрывать demo.mp3.
CallerID: Ваш телефон - телефон который будет отображаться у него при определении
MaxRetries: 2
RetryTime: 10
WaitTime: 60
# MaxRetries: <number> количество попыток перезвонить
# RetryTime: <number> время между попытками перезвонить
# WaitTime: <number> сколько секунд ждать пока абонент ответит
Context: auto_dial
Extension: s
Priority: 2

Пример скрипта.
#!/usr/local/bin/perl
$file = "/var/spool/asterisk/outgoing/$ARGV[0]";
$phone = $ARGV[0];
open(FILE, "> $file");
print FILE "Channel: LOCAL/".$phone."\@auto_dial\n";
print FILE "CallerID: 5555555\n";
print FILE "MaxRetries: 2\n";
print FILE "RetryTime: 10\n";
print FILE "WaitTime: 60\n";
print FILE "Context: auto_dial\n";
print FILE "Extension: s\n";
print FILE "Priority: 2\n";
close(FILE);

Пример extensions.conf
[auto_dial]
exten => _X.,1,Dial(SIP/DenyaTelecom/${EXTEN:1})
exten => s,1,Playback(demo-congrats)

Это самый просто пример, который только показывает как это работает, вы вызываете этот скрипт вместе с телефоном на который нужно позвонить, пример:
./script.pl 8689390

То же самое на php, если нужно обзвонить пул номеров:
#!/usr/bin/php -q
<?php

$callto=111111; #первый номер списка
while ($callto<222222)
{
$callfile="/work/tmp/calls-".$callto.".call";
$cf =fopen($callfile,"w+"); 
fputs($cf,"Channel: SIP/".$callto."@trunkname\n");
fputs($cf,"Callerid: Your_callerid\n");
fputs($cf,"application: Playback\n");
fputs($cf,"Data:/work/zapisi\n");
fclose($cf);
copy($callfile,"/asteriskpath/var/spool/asterisk/outgoing/".$callto."call");
$callto=$callto+1;
if ($callto % 10 ==0) 
{
sleep(60); 
}
}
?>

sleep — для ограничие количества одновременных звонков

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.