Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
abills:docs:call_center [2015/04/14 15:48] kodr [Настройка ASTERISK] |
abills:docs:call_center [2015/12/05 17:50] (текущий) |
||
---|---|---|---|
Строка 38: | Строка 38: | ||
* Бесплатные секунды в звонке | * Бесплатные секунды в звонке | ||
* Предоплаченное время направлений | * Предоплаченное время направлений | ||
- | ==== extensions ==== | + | ==== Добавление Транка ==== |
- | В extensions.conf добавить | ||
- | **/etc/asterisk/extensions.conf** | + | ==== Создание приветствий ==== |
- | [out-calls] | + | ==== Создание сообщений ==== |
- | exten => s,1,Answer | + | |
- | exten => s,2,Playback(${RECORD}) | + | |
- | ;exten => s,n,Set(CHOICE="") | + | |
- | ;exten => s,n,Read(CHOICE,,1,,1,10) | + | |
- | ;exten => s,n,GotoIf($["${CHOICE}" = "0"]?s,2) | + | |
- | exten => s,n,Hangup | + | |
- | Три закомментированные строки добавляют повтор сообщения для клиента | + | * [[abills:docs:manual:admin:callcenter:callcenter_messages|Сообщения]] |
- | после нажатия им кнопки 0 на телефоне. Это если повтор понадобится. | + | ====IVR (голосовое меню)==== |
+ | * [[abills:docs:manual:admin:callcenter:callcenter_ivr|IVR (голосовое меню) заведение]] | ||
- | ==== Скрипт обзвона==== | + | ====Встроенные функции==== |
+ | |||
+ | ===Аутентификация абонента=== | ||
+ | ===Сведения о балансе=== | ||
- | **out-calls.pl** | + | ===Прием голосовых сообщений=== |
+ | |||
+ | ===Отображение информации об услугах=== | ||
+ | |||
+ | ===Активация кредита=== | ||
+ | |||
+ | ===Новости и акции=== | ||
+ | |||
+ | =====AbillS===== | ||
+ | |||
+ | ''mysql --default-character-set=utf8 -D abills < call_center.sql -p'' | ||
- | #!/usr/bin/perl -w | ||
- | | ||
- | use strict; | ||
- | use DBI; | ||
- | | ||
- | my $dbname='abills'; # Настройки подключения к базе | ||
- | my $login='root'; | ||
- | my $passwd='pass'; | ||
- | | ||
- | my $voice_file='ru/demo-instruct'; # файл для проигрывания в директории /var/lib/asterisk/sounds | ||
- | my $caller='111'; # Номер звонящего | ||
- | my $max_retries=4; # Количество попыток дозвона, если звонок не был принят | ||
- | my $retry_pause=36; # Интервал между попытками в секундах | ||
- | my $debug=1; # режим отладочных сообщений | ||
- | | ||
- | my $filedir='/var/spool/asterisk/outgoing'; | ||
- | my $tmpdir='/tmp'; | ||
- | my $internal_pause=10; | ||
- | | ||
- | my %MOBILE_PREFS=( # для префиксов мобильщиков автоматически в начале добавляется 0 если его нет | ||
- | '50' => 1, | ||
- | '63' => 1, | ||
- | '67' => 1, | ||
- | '93' => 1, | ||
- | '96' => 1, | ||
- | '97' => 1, | ||
- | '98' => 1, | ||
- | ); | ||
- | | ||
- | my $default_trunk='SIP/111'; # Исходящий транк asterisk по умолчанию | ||
- | | ||
- | my %TRUNKS=( # транки для для отдельных направлений | ||
- | '067' => 'DAHDI/g0', | ||
- | '097' => 'DAHDI/g0', | ||
- | '096' => 'Dongle/i:359124037702136', | ||
- | ); | ||
- | | ||
- | out_call('0964742263'); # убрать после тестов | ||
- | exit 0; # убрать после тестов | ||
- | | ||
- | my $dbh = DBI->connect("DBI:mysql:$dbname", $login, $passwd) || die "Could not connect to database: $DBI::errstr"; | ||
- | | ||
- | my $sql="SELECT phone FROM users_pi as a join bills as b on (a.uid=b.uid) WHERE deposit<0"; | ||
- | my $sth = $dbh->prepare($sql); | ||
- | $sth->execute(); | ||
- | while (my $result = $sth->fetchrow_hashref()) | ||
- | { | ||
- | my $phone=$result->{phone}; | ||
- | $phone=~s/\+/00/g; | ||
- | $phone=~s/\D//g; | ||
- | $phone=~s/^00380/0/g; | ||
- | if ((length($phone)==9) and (substr($phone,0,1) ne '0') and ($MOBILE_PREFS{substr($phone,0,2)} ne '')) | ||
- | { | ||
- | $phone='0'.$phone; | ||
- | } | ||
- | if ((length($phone)>5) and (length($phone)<11) and (substr($phone,0,2) ne '00')) { | ||
- | print "Calling $phone\n" if $debug; | ||
- | out_call($phone); | ||
- | print "Sleeping $internal_pause s\n" if $debug; | ||
- | sleep $internal_pause; | ||
- | } | ||
- | else { | ||
- | print STDERR "Invalid number: '$result->{phone}'\n" if $debug; | ||
- | } | ||
- | } | ||
- | | ||
- | $dbh->disconnect(); | ||
- | |||
- | exit 0; | ||
- | | ||
- | sub out_call | ||
- | { | ||
- | my $phone=$_[0]; | ||
- | my $trunk=$default_trunk; | ||
- | foreach my $i (keys %TRUNKS) { | ||
- | if ($phone=~/^$i/) { | ||
- | $trunk=$TRUNKS{$i}; | ||
- | } | ||
- | } | ||
- | open F,">$tmpdir/call-$phone"; | ||
- | print F <<EOT; | ||
- | Channel: $trunk/$phone | ||
- | Callerid: $caller | ||
- | MaxRetries: $max_retries | ||
- | RetryTime: $retry_pause | ||
- | WaitTime: 25 | ||
- | Context: out-calls | ||
- | Extension: s | ||
- | Priority: 1 | ||
- | Setvar: RECORD=$voice_file | ||
- | EOT | ||
- | close F; | ||
- | rename "$tmpdir/call-$phone","$filedir/call-$phone"; | ||
- | } | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | =====ABillsS===== | ||
|$conf{CALLCENTER_MENU}=1; | Включить меню для Call Center | | |$conf{CALLCENTER_MENU}=1; | Включить меню для Call Center | |