Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:call_center [2015/04/14 15:25]
kodr [Call Center]
abills:docs:call_center [2015/12/05 17:50] (текущий)
Строка 4: Строка 4:
  
 Модуль Call_center осуществляет настройку Asterisk непосредственно через веб интерфейс. Модуль Call_center осуществляет настройку Asterisk непосредственно через веб интерфейс.
-==== Настройка ​ASTERISK ​====+====Возможности==== 
 +  * SIP, GSM 
 +  * Добавление Транков (SIP, GSM). 
 +  * Указание количества линий на транк. 
 +  * Настройка ​исходящей маршрутизации. 
 +  * Выбор и приоритезация транков при исходящем звонке.* ​  
 +  * Настройка входящей маршрутизации. 
 +  * Создание интерактивного меню состоящего из следующих:​  
 +    *Получение сведений о балансе и кредите. 
 +    *Активеция кредита. 
 +    *Пополнение с карточки оплат (если есть модуль cards) 
 +    *Авторизация по любому параметру аккаунта абонента (PHONE,​CONTRACT_ID,​UID,​BILL_ID). 
 +    *Прием голосовых сообщений. 
 +    *Молучение информации о предоставляемых акциях и услугах. 
 +    *Мультиязычный интерфейс. 
 +    *Приветствия. 
 +    *Правила по времени. 
 +    *Дополнительное интерактивное меню можно навешать на любой из пкнктов основного меню либо функции. 
 +    *Запись звонков. 
 +    *Создание собственных сообщений либо из текста либо из файла.  
 +    *Отправка звонка на: 
 +      *Внутренний номер. 
 +      *Внешний номер. 
 +      *Группу номеров. 
 +      *Очередь звонков. ​  
 +  * Карточная платформа 
 +  * Тарификация по времени и по направлениям. 
 +  * Возможность разрешать или запрещать входящие,​ исходящие звонки. 
 +  * Абон. плата. 
 +  * Управление шлюзами. 
 +  * Выбор оптимального шлюза для звонка. 
 +  * Консоль для управления GNU Gatekeeper. 
 +  * Бесплатные секунды в звонке 
 +  * Предоплаченное время направлений 
 +==== Добавление Транка ​====
  
-**/​etc/​asterisk/​sip.conf** 
-  ​ 
-<​code>​ 
-[general] 
-Language=ru 
-transport=udp 
-qualify=yes 
-nat=yes 
-;#######################​ 
-;​Подключаем конфиги 
-;#######################​ 
-;​Конфиг для строк регистраций SIP транков 
-#include sip_register.conf 
-;​Конфиг для создания и настройки SIP транков 
-#include sip_trunk.conf 
-;​Конфиг для создания и настройки SIP клиентов 
-#include sip_users.conf 
  
-</​code>​ +==== Создание приветствий ====
-После изменения нужно ​выполнить  +
-<​code>​ +
-asterisk -rx "​config reload /​etc/​asterisk/​sip.conf"​ +
-</​code>​+
  
-**/​etc/​asterisk/​sip_register.conf** +==== Создание сообщений ====
-<​code>​ +
-;#######################​ +
-;Прописываем строки регистраций для транков +
-;#######################​ +
-;register = trunk_num:​pass_for_trunk_num@ip_voip_provider/​trunk_num +
-</​code>​ +
-После изменения нужно выполнить  +
-<​code>​ +
-asterisk -rx "​config reload /​etc/​asterisk/​sip.conf"​ +
-</​code>​+
  
-**/​etc/​asterisk/​sip_trunk.conf** +  ​[[abills:​docs:​manual:​admin:​callcenter:​callcenter_messages|Сообщения]
-<​code>​ +====IVR (голосовое меню)==== 
-;#######################​ +  * [[abills:​docs:​manual:​admin:​callcenter:​callcenter_ivr|IVR (голосовое меню) ​ заведение]]
-;Глобальные настройки +
-;#######################​ +
-[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>​+===Сведения о балансе===
  
-После изменения нужно выполнить  +===Прием голосовых сообщений===
-<​code>​ +
-asterisk -rx "​config reload /​etc/​asterisk/​sip.conf"​ +
-</​code>​+
  
-** Установка модуля канала chan_dongle** ​+===Отображение информации ​об услугах===
  
-1. Скачиваем модуль канала chan_dongle-1.1.r14.tgz+===Активация кредита===
  
-2. Распаковываем, собираем и ставим, копируем ​конфигурационный файл в директорию asterisk:+===Новости и акции===
  
-<​code>​ +=====AbillS=====
-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>​+
  
-**Настройка конфига модуля канала chan_dongle** +''​mysql --default-character-set=utf8 -D abills < call_center.sql -p''​
-**/​etc/​asterisk/​dongle.conf** +
-<​code>​ +
-[general] +
-interval=15              ; Частота проверки подключеных устройств+
  
-[defaults] 
-usecallingpres=yes ​      ; Определять номер звонящего 
-callwaiting=no ​          ; Принимать второй звонок при активном разговоре 
-autodeletesms=yes ​       ; Удаление смс с симкарты при перезапуске 
-rxgain=5 ​                ; Изменение громкости динамика 
-txgain=0 ​                ; Изменение громкости микрофона 
-disablesms=no ​           ; Отключить приём SMS. 
- 
-;Номер карточки 
-[XXXXXXXXXX] 
-;В навании контекста from-gsm-trunk-num последний параметр ​ 
-;num должен выдыватся автоматически это порядковый номер транка в системе  ​ 
-context=from-gsm-trunk-num ​ 
-;imei GSM модема 
-imei=XXXXXXXXXXXXXXX 
- 
-</​code>​ 
-После изменения нужно выполнить ​ 
-<​code>​ 
-asterisk -rx "​config reload /​etc/​asterisk/​dongle.conf"​ 
-</​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 на телефоне. Это если повтор понадобится. 
- 
-==== Скрипт обзвона==== 
- 
- 
-**out-calls.pl** 
- 
-  #​!/​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 |