Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:call_center [2013/06/11 16:52]
kodr [Настройка ASTERISK]
abills:docs:call_center [2015/12/05 17:50] (текущий)
Строка 1: Строка 1:
-=====Call Center=====+=====Call_center=====
  
-==== Настройка ASTERISK ====+Модуль Call_center предназначен для организации полноценного колл-центра по протоколу SIP. 
  
-**/​etc/​asterisk/​sip.conf** +Модуль Call_center осуществляет настройку Asterisk непосредственно через веб интерфейс
-   +====Возможности==== 
-<​code>​ +  * SIP, GSM 
-[general] +  * Добавление Транков (SIP, GSM). 
-Language=ru +  * Указание количества линий на транк. 
-transport=udp +  * Настройка исходящей маршрутизации. 
-qualify=yes +  * Выбор и приоритезация транков при исходящем звонке.*  ​ 
-nat=yes +  * Настройка входящей маршрутизации. 
-;#######################​ +  * Создание интерактивного меню состоящего из следующих:  
-одключаем ​конфиги +    *Получение ​сведений о балансе и кредите. 
-;#######################​ +    *Активеция кредита. 
-онфиг для строк регистраций SIP транков +    *Пополнение с карточки оплат (если есть модуль cards) 
-#include sip_register.conf +    *Авторизация по любому параметру аккаунта абонента (PHONE,​CONTRACT_ID,​UID,​BILL_ID). 
-онфиг для создания и настройки ​SIP транков +    ​*Прием голосовых сообщений
-#include sip_trunk.conf +    *Молучение информации о предоставляемых акциях и услугах. 
-;Конфиг для создания и настройки SIP клиентов +    *Мультиязычный интерфейс. 
-#include sip_users.conf+    *Приветствия
 +    *Правила по времени. 
 +    *Дополнительное интерактивное меню можно навешать на любой из пкнктов основного меню либо функции. 
 +    *Запись звонков. 
 +    *Создание собственных сообщений либо из текста либо из файла.  
 +    *Отправка звонка на: 
 +      *Внутренний номер. 
 +      *Внешний номер. 
 +      *Группу номеров. 
 +      ​*Очередь звонков  
 +  ​* ​Карточная платформа 
 +  * Тарификация по времени и по направлениям. 
 +  * Возможность разрешать ​или запрещать входящие, исходящие звонки. 
 +  * Абон. плата. 
 +  * Управление шлюзами. 
 +  * Выбор оптимального шлюза для звонка. 
 +  * Консоль для управления GNU Gatekeeper. 
 +  * Бесплатные секунды в звонке 
 +  * Предоплаченное ​время направлений 
 +==== Добавление Транка ====
  
-</​code>​ 
  
-**/​etc/​asterisk/​sip_register.conf** +==== Создание приветствий ====
-<​code>​ +
-;#######################​ +
-;Прописываем строки регистраций для транков +
-;#######################​ +
-;register = trunk_num:​pass_for_trunk_num@ip_voip_provider/​trunk_num +
-</​code>​ +
-**/​etc/​asterisk/​sip_trunk.conf** +
-<​code>​ +
-;#######################​ +
-;​Глобальные настройки +
-;#######################​ +
-[trunk](!) +
- type = friend +
- ​canreinvite=no +
- ​qualify=yes +
- ​disallow=all +
- allow=ulaw +
- allow=alaw+
  
-;#######################​ +==== Создание сообщений ​====
-;​Настройки транков +
-;#######################​ +
-[trunk_num](trunk) +
-username=trunk_num +
-secret=pass_for_trunk_num +
-nat=yes +
-insecure=invite +
-host=ip_voip_provider +
-fromuser=trunk_num +
-fromdomain=ip_voip_provider +
-dtmfmode=info +
-context=from-office+
  
-</​code>​+  * [[abills:​docs:​manual:​admin:​callcenter:​callcenter_messages|Сообщения]] 
 +====IVR (голосовое меню)==== 
 +  * [[abills:​docs:​manual:​admin:​callcenter:​callcenter_ivr|IVR (голосовое меню) ​ заведение]]
  
-** Установка модуля канала chan_dongle**  +====Встроенные функции====
- +
-1. Скачиваем модуль канала chan_dongle-1.1.r14.tgz +
-2. Распаковываем, собираем и ставим,​ копируем конфигурационный файл в директорию asterisk: +
-<​code>​ +
-cd /tmp +
-wget asterisk-chan-dongle.googlecode.com/​files/​chan_dongle-1.1.r14.tgz +
-tar zxvf chan_dongle-1.1.r14.tgz +
-cd chan_dongle-1.1.r14 +
-./​configure +
-make install +
-</​code>​+
    
 +===Аутентификация абонента===
  
-==== 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+
  
-Три закомментированные ​строки добавляют повтор сообщения для клиента +===Новости и акции===
-после нажатия им кнопки 0 на телефоне. Это если повтор понадобится.+
  
-==== Скрипт обзвона====+=====AbillS=====
  
 +''​mysql --default-character-set=utf8 -D abills < call_center.sql -p''​
  
-**out-calls.pl** 
  
-  #​!/​usr/​bin/​perl -w +|$conf{CALLCENTER_MENU}=1| Включить меню для ​Call Center ​|
-   +
-  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";​ +
-  } +
-  ​+