Quantcast
Channel: IP АТС Asterisk
Viewing all 1052 articles
Browse latest View live

Avaya SIP Asterisk

$
0
0

Avaya SIP Asterisk

Avaya Communication Manager SIP Trunks + Asterisk без использования Avaya SIP Enablement Services

...



Avaya Communication Manager SIP Trunks + Asterisk
без использования Avaya SIP Enablement Services

В Avaya Communication Manager 4.0 введена поддержка TCP для SIP транков на C-LAN, в то время как ранее поддерживалось только TLS. Это усовершенствование позволяет прямое подключение SIP транков к SIP прокси других производителей, без необходимости использования Avaya SIP Enablement Services (SES)

Топология сети

     172.16.1.101            172.16.1.253
                  SIP Транк
   AVAYA   <===========> ASTERISK Диаплан
     2ХХX                         3ХХХ

Настройка Avaya S8500 (s8300/s8700) PBX:

  • Avaya Software Version and Hardware Configuration List
  • Проверка лицензий Avaya Communication Manager
  • IP Node Names
  • IP-Codec-Set, and IP-Network-Region.
  • IP interface for C-LAN and IP Media Processor cards.
  • Avaya Signaling Group for the SIP Trunk to Asterisk
  • Avaya trunk group for the SIP trunk to Asterisk.
  • IP Codec Sets и Network Regions
  • Uniform DialPlan и Route Patterns

Avaya S8500 Software Version and Hardware Configuration List

list configuration software-versions
list configuration software-versions                                          

                             SOFTWARE VERSIONS
	SOFTWARE VERSION
       Memory Resident: R015x.02.1.016.4	
         Disk Resident: R015x.02.1.016.4
	TRANSLATION DATE
       Memory Resident: 11:27 pm THU AUG 19. 2014	
         Disk Resident: 11:27 pm THU AUG 19. 2014
      Disk Second Copy: good

list configuration carrier la                                           Page 1

 Board                                             Assigned Ports
 Number    Board Type           Code    Vintage    u=unassigned t=tti p=psa
 
 01A00     POWER SUPPLY           655A
 01A00     IP SERVER INTFC     TN2312BP HW07 FW050 01 02 03 04 05 06 07 08
 01A02     CONTROL-LAN          TN799DP HW16 FW024 u  u  u  u  u  u  u  u
                                                   u  u  u  u  u  u  u  u
                                                   17
 01A03     IP MEDIA PROCESSOR  TN2302AP	HW20 FW121 01    03    05    07
 01A04     DIGITAL LINE        TN2224CP HW01 FW015 01 02 03 04 05 06 07 08
                                                   09 10 11 12 13 14 15 16
                                                   17 18 u  u  u  u  u  u
 01A05     ANALOG LINE         TN746B   000010     01  u  u  u  u  u  u  u

Проверка лицензий Avaya Communication Manager

display system-parameters customer-options                       Page 2 of 11 

                               OPTIONAL FEATURES 
IP PORT CAPACITIES                                                USED
                          Maximum Administered H.323 Trunks: 5000 151 
                Maximum Concurrently Registered IP Stations: 5000 13 
                  Maximum Administered Remote Office Trunks: 0    0 
     Maximum Concurrently Registered Remote Office Stations: 0    0 
                   Maximum Concurrently Registered IP eCons: 0    0 
       Max Concur Registered Unauthenticated H.323 Stations: 10   0 
                       Maximum Video Capable H.323 Stations: 0    0 
                        Maximum Video Capable IP Softphones: 0    0 
                            Maximum Administered SIP Trunks: 50   20

IP Node Names

change node-names                                                 Page 1 of 1 

                               NODE NAMES 
							   
							   
Type            Name             IP Address             
IP              clan             172.16.1.101                      
IP              asterisk         172.16.1.253                     
IP              FS-NVB           172.16.21.253                      
IP              FS-MSK           172.16.45.28                       
IP              CCM-LA           172.16.78.34                       
IP              CM-NL            172.16.57.253
IP              ACM-NY           172.16.24.253
IP              IPO-BJ           172.16.67.23                  

IP interface for C-LAN and IP Media Processor cards

add ip-interface 2a02                                             Page 1 of 1 

                              IP INTERFACES 
                 Type: C-LAN 
                 Slot: 02A02 
          Code/Suffix: TN799 D 
            Node Name: clan 
           IP Address: 172.16.1.101
          Subnet Mask: 255.255.255.0                                 Link: 
      Gateway Address: 172.16.1.1Enable Ethernet Port? y                             Allow H.323 Endpoints? y 
       Network Region: 1                              Allow H.248 Gateways? y 
                 VLAN: n                               Gatekeeper Priority: 5 
				 
 Target socket load and Warning level: 400 
       Receive Buffer TCP Window Size: 8320 
                            ETHERNET OPTIONS 
                Auto? y 
				

Avaya Signaling Group for the SIP Trunk to asterisk

add signaling-group 9                                              Page 1 of 1
                               SIGNALING GROUP
 Group Number: 9                    Group Type: sipTransport Method: tcp
  IMS Enabled? n							  
							  
							  
							  
							  
    Near-end Node Name: clan             Far-end Node Name: asterisk
  Near-end Listen Port: 5061           Far-end Listen Port: 5061
                                    Far-end Network Region: 1
        Far-end Domain: 172.16.1.253
                                          Bypass If IP Threshold Exceeded? n
 Incoming Dialog Loopbacks: Eliminate              RFC 3389 Comfort Noise? n
          DTMF over IP: rtp-payload        Direct IP-IP Audio Connections? y
Session Establishment Timer(min): 3                  IP Audio Hairpinning? Y
         Enable Layer 3 Test? no                 Direct IP-IP Early Media? no
H.323 Station Outgoing Direct Media? no        Alternate Route Timer(sec): 6

Avaya trunk group for the SIP trunk to Asterisk.

add trunk-group 9                                                Page 1 of 21 
                               TRUNK GROUP 
Group Number: 9                     Group Type: sip          CDR Reports: y 
Group Name: SIP Trunk to Asterisk           COR: 1       TN: 1        TAC: 815
   Direction: two-way         Outgoing Display? y 
 Dial Access? n                                          Night Service: 
Queue Length: 0 
Service Type: public-ntwrk                    Auth Code? n 
                                                       Signaling Group: 9
                                                     Number of Members: 2 
add trunk-group 9                                                Page 2 of 21 
     Group Type: sip 
TRUNK PARAMETERS

 Unicode Name? y 
                                       Redirect On OPTIM Failure: 5000 

 SCCAN? n                                     Digital Loss Group: 18 
                 Preferred Minimum Session Refresh Interval(sec): 600
				 
Disconnect Supervision - In? y Out? y				 
add    trunk-group 9                                              Page 3 of 21
TRUNK FEATURES
          ACA Assignment? n             Measured: none
                                                          Maintenance Tests? y

                      Numbering Format: unknown
					      UUi Treatment: service-provider
                                      Replace Restricted Numbers? n
                                     Replace Unavailable Numbers? n

add     trunk-group 9                                             Page 5 of 21
                                  TRUNK GROUP
                                        Administered Members (min/max): 1/2
GROUP MEMBER ASSIGNMENTS                   Total Administered Memebers: 2

      Port         NAMES
1:  T00080         Asterisk SIP
2:  T00081         Asterisk SIP
3:
4:
5:
6:
7:
  

IP Codec Sets и Network Regions

change ip-codec-set 1                                            1 Page 1 of 2
                                IP Codec Set
        Codec Set: 1
        Audio     Silence       Frames Packet
        Codec     Suppression   Per Pkt Size(ms)
     1: G.711A         n          2       20
     2: G.711MU        n          2       20
     3: G.729A         n          2       20
     4: G.729          n          2       20
     5:
     6:
     7:
	 
	     Media Encryption
     1: none
     2:
     3:	 

change ip-codec-set 1                                            1 Page 1 of 2
                                IP Codec Set
                            Allow Direct-IP Multimedia? y
	        Maximum Call Rate for Direct-IP Multimedia: 15360:Kbits
   Maximum Call Rate for Priority Direct-IP Multimedia: 15360:Kbits
                      Mode                 Redundancy
        FAX           t-38-standart         0
        Modem         off                   0
        TOD/TTY       US                    3
        Clear-channel n                     0
		
display ip-network-region 1                                     Page  1 of 19
                                IP NETWORK REGION
     Region: 1
   Location: 1    Authoritative Domain: 172.16.1.253
       Name: Asterisk
                                 Intra-region IP-IP Direct Audio: yes
   AUDIO PARAMETERS              Inter-region IP-IP Direct Audio: yes
      Codec Set: 1                           IP Audio Hairpinnig? y
   UDP Port Min: 2048
   UDP port Max: 65531                    RTCP Reporting Enabled? y
                                 RTCP MONITOR SERVER PARAMETERS
DIFFSERV/TOS PARAMETERS            Use Default Server Parameters? y
 Call Control PHB Value: 34
        Audio PHB Value: 46
        Video PHB Value: 26 
802.1P/Q PARAMETERS
 Call Control 802.1p Priority: 7
        Audio 802.1p Priority: 6       AUDIO RESOURCE RESERVATION PARAMETERS
H.323 IP ENDPOINTS                                        RVSP Enabled? n
  H.323 Link Bounce recovery? y
 Idle Traffic Interval (sec): 20
   Keep-Alive Interval (sec): 5
            Keep-Alive Count: 5
			
change ip-network-region 1                                       Page  3 of 19

                   Inter Network Region Connection Management 
 src dst codec direct  Total          Video                          Dyn 
 rgn rgn set   WAN  WAN-BW-limits  WAN-BW-limits Intervening-regions CAC IGAR 
 1   1   1 
 

Uniform DialPlan и Route Patterns

Route Patterns

change route-pattern 9                                            Page 1 of 3 

                     Pattern Number: 9 Pattern Name: to Asterisk
                                        SCCAN? n     Secure SIP? n 
      Grp FRL NPA Pfx Hop Toll No.    Inserted                     DCS/  IXC 
      No          Mrk Lmt List Del    Digits                       QSIG 
                               Dgts                                Intw 
   1: 9   0                                                         n    user 
   2:                                                               n    user 
   3:                                                               n    user 
   4:                                                               n    user 
   5:                                                               n    user 
   6:                                                               n    user 
    BCC VALUE TSC CA-TSC ITC BCIE Service/Feature PARM  No. Numbering  LAR 
   0 1 2 3 4 W    Request                              Dgts Format 
                                                   Subaddress 
 1: y y y y y n n       rest                                           none 
 

Public Unknown Numbering

change public-unknown-numbering 0                                  Page 1 of 2

                    NUMBERING - PUBLIC/UNKNOWN FORMAT 
                                Total                                  Total 
    Ext  Ext  Trk    CPN                  CPN Ext Ext  Trk    CPN       CPN 
    Len  Code Grp(s) Prefix               Len Len Code Grp(s) Prefix    Len 
     4   3    9                           4

Uniform Dial Plan and AAR Analysis

change uniform-dialplan 0                                         Page 1 of 2 

                        UNIFORM DIAL PLAN TABLE 
                                                   Percent Full: 0 
 Matching        Insert          Node  Matching         Insert          Node 
 Pattern Len Del Digits Net  Conv Num   Pattern  Len Del Digits Net Conv Num 
 3        4   0         aar   n                                      n 

change aar analysis 0                                              Page 1 of 2

                      AAR DIGIT ANALYSIS TABLE 
 Percent Full: 2 
     Dialed     Total      Route     Call    Node    ANI 
     String    Min Max    Pattern    Type    Num     Reqd 
     3          4   4      9         aar             n

Настройка оборудования


Приложения

$
0
0

Контакты

asterisk:cf:cli.conf

$
0
0

;
; Asterisk CLI configuration
;

[startup_commands]
;
; Any commands listed in this section will get automatically executed
; when Asterisk starts as a daemon or foreground process (-c).
;
;sip set debug on = yes
;core set verbose 3 = yes
;core set debug 1 = yes

Временный сброс пароля FreePBX

$
0
0

Временный сброс пароля FreePBX

Эта возможность работает, если опция Asterisk Advanced Settings - Enable Remote Unlocking (REMOTEUNLOCK) = true.
В версии FreePBX 2.11 - true по умолчанию.
Начиная с версии FreePBX 12 - по умолчанию - false

При помощи команды amportal a u xxxxxxxxxxxxxxxx-можно войти во FreePBX без ввода имени пользователя и пароля.
xxxxxxxxxxxxxxxx-требуется заменить на PHP ID сессии. Выполните следующие действия:

Откройте веб интерфейс FreePBX в вашем браузере - http://ip_address/adminи нажмите ctrl-A:

freepbx php session id

Слева вы увидите уникальный id php сессии. Скопируйте его и вставьте вместо xxxxxxxxxxxxxxxx-:

amportal a u cl1q3tp4tsaccit6pbl2vispp0

[root@localhost ~]# amportal a u cl1q3tp4tsaccit6pbl2vispp0

Please wait...

session unlocked!

После ввода этой команды, вы сможете зайти в веб интерфейс без ввода логина/пароля.

Разблокировка действует только для текущей php сессии и после обновления страницы, id сменится, и снова потребуется ввести пароль.

freepbx php session id

FreePBX

Соединение двух FreePBX

$
0
0

Соединение двух FreePBX

Существуют две точки входа в Диалплан FreePBX.
Это контексты [from-trunk] и [from-internal]. Когда вызов направляется в контекст [from-trunk], он обрабатывается как DIDи рассматривается как внешний вызов. Если же вызов направляется в контекст [from-internal] он рассматривается как внутренний вызов от SIP, IAXили DAHDIекстеншена Вашей АТС. Далее будет рассмотрен пример объединения двух FreePBX с созданием общего Диалплана, так, чтобы для конечного пользователя две машины работали как одна.

FreePBX «офис1» выходит через '9' на внешние линии и имеет внутреннюю нумерацию от 110 до 149.

FreePBX «офис2» выходит через '0' на внешние линии и имеет внутреннюю нумерацию в диапазоне от 200 до 249.

Первым делом создадим IAXтранк между двумя сторонами.

Для FreePBX «офис1»

Trunks

Trunk Name

office2
PEER Details
deny=all              запрещает использование всех аудио кодеков.
allow=g729&alaw       разрешает использование кодеков g729 и g711 alaw.
type=friend           может совершать и принимать звонки
host=IP'office2'      может совершать и принимать звонки с хоста 'office2'.
qualify=yes           регулярно поддерживать связь с удаленной машиной.
context=from-internal обрабатывать входящие звонки из 'office2'в контексте [from-internal]

Для FreePBX «офис2» создается такой же транк. Только изменяем host на IP'office1'. Trunk Name

 office1
PEER Details
deny=all
allow=g729&alaw
type=friend
host=IP 'office1'
qualify=yes
context=from-internal

Вот и все с транками. Теперь создадим исходящую маршрутизацию.

Для FreePBX «офис1»

Outbound Routes

Route Name

tooffice2
Dial Patterns
2[0-4]X
Trunk Sequence
IAX/office2

Для FreePBX «офис»

Route Name

tooffice1
Dial Patterns
1[1-4]X
Trunk Sequence
IAX/office1

FreePBX

Asterisk: cdr.conf

$
0
0

Asterisk: cdr.conf

cdr.conf - Общие (глобальные) настройки детализированного отчета о звонках и настройки cdr-csv и radius бэкендов.

Asterisk Call Detail Record engine configuration

CDRили Детализированный Отчет Вызовов - сервис обеспечивающий сохранение информации о совершенных вызовах. Информация может быть записана в базы данных, файлы и другие формы хранения данных. Используется для биллинга, предотвращения мошенничества Системы Оперативно Розыскных Мероприятий (СОРМ), оценки качества обслуживания и тд

 [general]

Использовать или нет сохранение CDR. Если установлено 'no', перекрывает любые параметры загрузки CDRмодулей. По умолчанию 'yes

 enable=yes

Указывает сохранять или нет информацию о неотвеченных вызовах. Если установлено 'yes', то информация о вызове будет сохранена, независимо от того ответила сторона B или нет. Если установлено 'no', то информация о вызове сохранена не будет. Это не касается вызовов через внешние исходящие линии (транки). Эти вызовы всегда будут сохраняться, независимо от статуса. Это нормальное поведение.

 unanswered = no

Сохранять или нет информацию о вызовах отвергнутых из-за перегрузки каналов (congestion). по умолчанию 'no'

 congestion = no

Обычно запись не сохраняется пока все расширения канала не будут выполнены. Включение данной опции позволит закрыть CDRдо выполнения расширения 'h', и момента когда положили трубку. Однако параметры CDR - 'end' и 'billsec' будут заданы на момент выполнения расширения 'h' (требует уточнения) По умолчанию 'no'.

 endbeforehexten=no

По умолчанию 'billsec' вычисляется, просто как разница 'end' минус 'answer' в секундах. Включение опции initiatedseconds=yes, укажет Asterisk использовать точные значения до микросекунд. В случае если часть в микросекундах 'end', больше чем часть в микросекундах 'answer', разница округлится до секунды в большую сторону и наоборот. По умолчанию «no».

 initiatedseconds=no

Групповой режим CDRсохраняет данные в буфер, чтобы потом залить в хранилище группой, что уменьшает нагрузку на сервер. Но может привести к потере данных при внезапной перезагрузке. По умолчанию «no».

 batch=no

Укажите максимальное кол-во значений в буфере, прежде чем данные будут залиты в хранилище. Работает если 'batch=yes'. По умолчанию 100.

 size=100

Укажите максимальную продолжительность времени, в миллисекундах, до освобождения буфера. Будет выполнено по истечению заданного времени, несмотря на значение 'size'. По умолчанию 300 (5 минут).

 time=300

Постить все в едином потоке планировщика Asterisk (scheduleronly=yes) или для каждой партии создавать новый поток (scheduleronly=no). Для небольших партий (до size=10) используйте только планировщик. Для больших новые потоки - scheduleronly=no. По умолчанию 'no'.

 scheduleronly=no

Блокировать выключение Asterisk до освобождения буфера. По умолчанию «yes».

  safeshutdown=yes

CDR "BACKEND"

Вы можете выбрать любой из нескольких бакендов для соранения данных. Возможно, также использовать все бакенды одновременно. В конфигурационных файлах, поставляемых с Asterisk, для примера, выбран только cdr-csv формат.

Бакенды:

Вспомогательные модули, кастомизация полей:

Для компиляции модулей, требуется чтобы их зависимости были установлены до выполнения команды configure. Воспользуйтесь командой make menuselectи в разделе «2. Call Detail Recording» убедитесь, что требуемые вам модули имеют свои зависимости и будут скомпилированы. В приведенном ниже примере видно, что для cdr_pgsql условия не выполнены, и модуль не может быть установлен.

        **************************************************
           Asterisk Module and Build Option Selection
        **************************************************

                      Press 'h' for help.
                        --- Core ---
                     [*] cdr_adaptive_odbc
                     [*] cdr_custom
                     [*] cdr_manager
                     [*] cdr_syslog
                       --- Extended ---
                     [*] cdr_csv
                     [*] cdr_odbc
                     XXX cdr_pgsql
                     XXX cdr_radius
                     [*] cdr_sqlite3_custom
                     XXX cdr_tds
                      --- Deprecated ---
                     XXX cdr_sqlite

To get CDRs to be logged to the plain-jane /var/log/asterisk/cdr-csv/Master.csv file, define the [csv] category in this file. No database necessary. The example config files are set up to provide this kind of output by default.

To get custom csv CDR records, make sure the cdr_custom.conf file is present, and contains the proper [mappings] section. The advantage to using this backend, is that you can define which fields to output, and in what order. By default, the example configs are set up to mimic the cdr-csv output. If you don't make any changes to the mappings, you are basically generating the same thing as cdr-csv, but expending more CPU cycles to do so!

To get manager events generated, make sure the cdr_manager.conf file exists, and the [general] section is defined, with the single variable 'enabled = yes'.

For odbc, make sure all the proper libs are installed, that «make menuselect» shows that the modules are available, and the cdr_odbc.conf file exists, and has a [global] section with the proper variables defined.

For pgsql, make sure all the proper libs are installed, that «make menuselect» shows that the modules are available, and the cdr_pgsql.conf file exists, and has a [global] section with the proper variables defined.

For logging to radius databases, make sure all the proper libs are installed, that «make menuselect» shows that the modules are available, and the [radius] category is defined in this file, and in that section, make sure the 'radiuscfg' variable is properly pointing to an existing radiusclient.conf file.

For logging to sqlite databases, make sure the 'cdr.db' file exists in the log directory, which is usually /var/log/asterisk. Of course, the proper libraries should be available during the 'configure' operation.

For tds logging, make sure the proper libraries are available during the 'configure' phase, and that cdr_tds.conf exists and is properly set up with a [global] category.

Also, remember, that if you wish to log CDR info to a database, you will have to define a specific table in that databse to make things work! See the doc directory for more details on how to create this table in each database.

[csv]
usegmtime=yes     log date/time in GMT.  Default is "no"
loguniqueid=yes   log uniqueid.  Default is "no"
loguserfield=yes  log user field.  Default is "no"
accountlogs=yes   create separate log file for each account code. Default is "yes"
newcdrcolumns=yes  Enable logging of post-1.8 CDR columns (peeraccount, linkedid, sequence).
                    Default is "no".

[radius]
usegmtime=yes     log date/time in GMT
loguniqueid=yes   log uniqueid
loguserfield=yes  log user field
 Set this to the location of the radiusclient-ng configuration file
 The default is /etc/radiusclient-ng/radiusclient.conf
radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf

Asterisk:cdr_custom.conf

$
0
0

Asterisk:cdr_custom.conf

cdr_custom.conf - тонкая настройка вывода полей CDRв csv файл. Обычно находится в директории /var/log/asterisk/cdr-custom/…)

;
; Mappings for custom config file
;
; To get your CSV output in a format tailored to your liking, uncomment the
; following lines and look for the output in the cdr-custom directory (usually
; in /var/log/asterisk).  Depending on which mapping you uncomment, you may see
; Master.csv, Simple.csv, or both.
;
;[mappings]
;Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duration)})},${CSV_QUOTE(${CDR(billsec)})},${CSV_QUOTE(${CDR(disposition)})},${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(accountcode)})},${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})},${CDR(sequence)}
;
; High Resolution Time for billsec and duration fields
;Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duration,f)})},${CSV_QUOTE(${CDR(billsec,f)})},${CSV_QUOTE(${CDR(disposition)})},${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(accountcode)})},${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})},${CDR(sequence)}
;Simple.csv => ${CSV_QUOTE(${EPOCH})},${CSV_QUOTE(${CDR(src)})},${CSV_QUOTE(${CDR(dst)})}

Файлы конфигурации Asterisk


Файлы конфигурации Asterisk

$
0
0

Файлы конфигурации Asterisk

Конфигурационные файлы Asterisk отвечают за настройку модулей, приложений, пиров, практически, всех аспектов работы программного комплекса IP АТС Asterisk.

  • Asterisk:acl.conf - Access Control List - Списки контроля доступа. Используется для создания списков ip адресов или подсетей, для разрешения или запрещения SIPрегистраций.
  • Asterisk: agents.conf - Конфигурация агентов очередей Asterisk.
  • alarmreceiver.conf - Настройка модуля взаимодействия с охранными системами по протоколу Ademco.
  • asterisk:alsa.conf - Модуль захвата аудио с внутренней звуковой карты.
  • Asterisk:amd.conf - Настройка приложения для распознавания автоотвечиков на линии.
  • Asterisk: app_mysql.conf - Дополнительный свойства соединения с mysql.
  • Asterisk:app_skel.conf - Вспомогательный модуль для отладки новых приложений Asterisk. Для разработчиков.
  • Asterisk: ari.conf - Интерфейс RESTful Asterisk.
  • asterisk.conf - Общие (глобальные) настройки Asterisk
  • Asterisk:calendar.conf - Взаимодействие с серверами календарей.
  • ccss.conf - Служба отложенного вызова.
  • Asterisk: cdr.conf - Детализированный отчет о звонках - CDR.
  • cdr_adaptive_odbc.conf - Позволяет изменять имена полей CDR, на нужные вам имена переменных.
  • Asterisk:cdr_custom.conf - Преобразование полей CDRв csv логе.
  • cdr_manager.conf - CDRна основе событий AMI.
  • Asterisk: cdr_mysql.conf - Параметры соединения с БД MySQL, для сохранения данных CDR.
  • cdr_odbc.conf - Параметры ODBC соединений, для сохранения данных CDR.
  • cdr_pgsql.conf - Параметры соединения с СУБД PostgreSQL, для сохранения данных CDR.
  • cdr_sqlite3_custom.conf - Настройка полей CDRв БД Sqlite3
  • cdr_syslog.conf - Модуль cdr_syslog сохраняет CDR, при помощи системного журнала (журналирование)
  • cdr_tds.conf - FreeTDS библиотека Linux, позволяющая соединяться с Sybase ASE и Microsoft SQL Server.
  • cel.conf - Channel Event Logging - Лог событий канала. В отличии от CDR, сохраняет все события имевшие место в канале.
  • cel_custom.conf - Сохранение данных Channel Event Logging в csv файл.
  • cel_odbc.conf - Сохранение данных Channel Event Logging через ODBC драйвер.
  • cel_pgsql.conf - Сохранение данных Channel Event Logging в СуБД PostgreSQL.
  • cel_sqlite3_custom.conf - Настройка полей CEL в БД Sqlite3
  • cel_tds.conf - Соединение с Microsoft SQL Server при помощи библиотеки FreeTDS.
  • chan_dahdi.conf - Настройки драйвера канала DAHDI
  • chan_mobile.conf - Настройки модуля связи bluetooth. Позволяет использовать мобильный телефон, как канал связи.
  • cli.conf - Настройки консоли Asterisk.
  • cli_aliases.conf - Псевдонимы команд консоли Asterisk.
  • cli_permissions.conf - Разрешение/Запрет выполнения команд консоли Asterisk, для пользователей Linux.
  • codecs.conf - Настройки кодеков.
  • Asterisk: confbridge.conf - Настройка модуля телеконференций в Asterisk.
  • console.conf - Используйте вход/выход звуковой карты, как устройство связи Asterisk.
  • dbsep.conf - Реализация realtime архитектуры при помощи cURL и CGI скрипта (dpseb.cgi - распространяется с исходными файлами Asterisk)
  • dnsmgr.conf - Настройки DNS-запросов.
  • dsp.conf - Настройки модуля DSP.
  • dundi.conf - Распределённое универсальное распознавание номеров
  • enum.conf -ENUMслужба сопоставления телефонных номеров адресам в интернете.
  • extconfig.conf - Настройки RealTime архитектуры и статической конфигурации в БД.
  • extensions.ael - План набора (dialplan) на Asterisk Extensions Language (AEL)
  • extensions.conf - Dialplan - План набора (dialplan) Asterisk - pbx_config
  • extensions.lua - План набора (dialplan) Asterisk на LUA.
  • extensions_minivm.conf - План набора для minivm.
  • Коды Asterisk - features.conf - Конфигурация пользовательских кодов Asterisk.
  • festival.conf - Синтез речи.
  • Asterisk: followme.conf - Настройки модуля Следуй за Мной.
  • func_odbc.conf - Функции ODBC.
  • h323.conf - Настройки одной из двух реализаций протокола h323 в Asterisk.
  • http.conf - Встроенный http сервер Asterisk.
  • Драйвер канала Asterisk IAX2 - Inter Asterisk Exchange - собственный VoIPпротокол в Asterisk.
  • indications.conf - Национализация тональных сигналов.
  • logger.conf - Настройка логов Asterisk.
  • manager.conf - Настройка интерфейса AMI (Asterisk Manager Interface)
  • meetme.conf - Устаревшая система телеконференций Asterisk.
  • minivm.conf - Упрощенная система голосовой почты, как дополнение app_voicemail.c
  • modules.conf - Параметры загрузки модулей Asterisk.
  • Asterisk: MOH - Настройка Музыки на Удержании (MOH)
  • ooh323.conf - Еще одна реализация протокола h323.
  • pjsip.conf - PJSIP драйвер Asterisk. Вторая и более полная реализация драйвера SIPв Asterisk.
  • Asterisk queuerules.conf - Правила динамического изменения пенальти пользователей очереди.
  • Настройка очередей (queues.conf) Asterisk - Настройка очередей входящих вызовов.
  • res_config_mysql.conf - Параметры соединения с БД MySQL.
  • res_config_sqlite.conf - Параметры соединения с БД Sqlite
  • res_config_sqlite3.conf - Параметры соединения с БД Sqlite3
  • res_corosync.conf - Общие (share) состояния устройств для кластера серверов Asterisk при помощи движка corosync.
  • res_curl.conf - Чтение/Запись данных Asterisk на удаленный http сервер через cURL (Realtime, Events, etc).
  • res_fax.conf - Прием и отправка виртуальных факсов Asterisk.
  • res_ldap.conf - Параметры соединения с LDAP.
  • res_odbc.conf - Параметры соединения ODBC.
  • res_parking.conf - Парковка вызовов.
  • res_pgsql.conf - Параметры соединения PostgreSQL.
  • Asterisk 12 res_pjsip_acl - Списки контроля доступа ACLдля PJSIP драйвера.
  • res_snmp.conf - Параметры соединения протокола сетевого управления SNMP.
  • rtp.conf - Глобальные настройки RTP - медиа портов и протокола.
  • sip.conf - Настройки sip драйвера chan_sip
  • sorcery.conf - Механизм кэширование Реалтайм конфигураций (на данный момент только PJSIP).
  • users.conf - Универсальные пользователи, вместо пиров в конфиге драйвера канала (например SIP). Устаревший принцип.

—————–

Asterisk app: While

$
0
0

Asterisk app: While

Команда плана набора Asterisk While - Повторять цикл (loop) пока условие верно.

Описание

Петля создается между приложениями While() и EndWhile() и выполняется, пока условие заданное в While(условие) верно. Условие вычисляется один раз за цикл, в самом начале.
примечания:

  • Цикл While/EndWhile может параллельно выполнять множество наборов за раз.
  • Если условие неверно, выполнение диалплана продолжается после EndWhile
  • Еще один модификатор цикла, приложение ContunueWhile
Синтаксис

While(expr)

Пример

exten => _4881,1,Answer
exten => _4881,n,Set(i=1)
exten => _4881,n,While($[${i} < 5])
exten => _4881,n,SayNumber(${i})
exten => _4881,n,Set(i=$[${i} + 1])
exten => _4881,n,EndWhile
вывод консоли

см. также

Команды диалплана Asterisk

Ограничение количества одновременных вызовов по ...

$
0
0

Ограничение количества одновременных вызовов по набранному номеру (call limit).

Контекст

  • Набирается номер 810ХХХХХХХ, в консоль выводится сообщение: набираем 810ХХХХХХХ
  • функция GROUP() назначает вызовы в группу long
  • В консоль выводится сообщение: кол-во одновременных вызовов - ${GROUP_COUNT(long)}, где ${GROUP_COUNT(long) = порядковый номер вызова.
  • Проверяется условие, если количество одновременных вызовов больше 1, вызов направляется в екстеншен overи разъединяется с выводом в консоль:

лимит превышен на - […] вызова.

  • Если вызов первый, номер набирается через SIPтранк provider.

exten => _810.,1,Verbose(*** набираем - ${EXTEN} ***)
   same => n,Set(GROUP()=long)
   same => n,Verbose(*** кол-во одновременных вызовов -  ${GROUP_COUNT(long)} ***)
   same => n,GotoIf($[${GROUP_COUNT(long)} > 1]?over)
   same => n,Dial(PJSIP/${EXTEN}@siptrunk,,)
   same => n(over),Verbose(*** лимит превышен на - ${MATH(${GROUP_COUNT(long)}-1)} вызова ***)
   same => n,Set(DIALSTATUS=CHANUNAVAIL)

Asterisk Dialplan advanced (Диалплан расширенный)

Zapateller()

$
0
0

Zapateller()

Назначение: Блокировка telemarketers с использованием SIT

Описание: Zapateller(options)

Генерирует специальный информационный тональный сигнал для блокировки, вызывающего Вас, telemarketers.

Опции должны быть разделены вертикальной чертой. Доступны следующие опции:

  • answer: параметр задает, что необходимо ответить на вызов перед генерации тонального сигнала
  • nocallerid: параметр задает, чтоб Zapateller проигрывал тональный сигнал, только если от звонящего не получена информация о callerid.

Опции должны быть разделены символом |

Код возврата: Возвращает 0 при нормальном завершении или -1 при разрыве связи.

Команда Asterisk: Zapateller

Команды диалплана Asterisk

Команда Asterisk: Zapateller

$
0
0

Команда Asterisk: Zapateller

Команда диалплана Asterisk - при получении входящего генерирует специальный тональный сигнал, который блокирует вызов системы обзвона абонентов (телемаркетинга). Возвращает переменную ${ZAPATELLERSTATUS} с одним из следующих значений:

  • NOTHING
  • ANSWERED
  • ZAPPED
синтаксис

Zapateller(options)

==аргументы

  • options - опции разделенные запятой.
    • answer: Ответить на вызов, перед генерацией тонального сигнала.
    • nocallerid - генерировать тон, только при отсутствии callerid.

[Synopsis]
Block telemarketers with SIT (Special information tones).
 
[Description]
Generates special information tone (SIT) to block telemarketers from calling you.
This application will set the following channel variable upon completion:
${ZAPATELLERSTATUS}: This will contain the last action accomplished by the
Zapateller application. Possible values include:
    NOTHING
    ANSWERED
    ZAPPED
 
[Syntax]
Zapateller(options) 
[Arguments]
options
    Comma delimited list of options.
    answer: Causes the line to be answered before playing the tone.
 
    nocallerid: Causes Zapateller to only play the tone if there is no
    callerid information available.
 
 
[See Also]
Not available

Команды диалплана Asterisk

Команда Asterisk: AddQueueMember

$
0
0

Команда Asterisk: AddQueueMember

Приложение диалплана Asterisk: Динамическое добавление интерфейса для обработки очереди вызовов.

Описание

AddQueueMember(queuename[[,interface[[,penalty[[,options[[,membername[[,stateinterface]]]]]))

Команда динамически добавляет интерфейс в существующую очередь вызовов, для обработки поступающих в нее вызовов (интерфейс как бы регистрируется в очереди вызовов, так же как агент, с использованием команды AgentCallbackLogin).

Аргументы
  • queuename - имя очереди вызовов, в которую необходимо добавить интерфейс.
  • interface - Название интерфейса для добавления в очередь, если не указано, используется текущий интерфейс.
  • penalty - Целое число большее или равное нулю, доступные участники, обрабатывающие очередь, с меньшим значением пенальти получают вызовы в первую очередь.
  • options: (версии 1.2+)
    • j - Если заданный интерфейс уже обрабатывает поступающие вызовы данной очереди и существует команда с приоритетом n+101, тогда с нее продолжиться выполнение команд плана набора. Иначе, команда выйдет с кодом ошибки.
    • В версии 1.6+ нет значений для поля «options», т.к. параметр «j» был удален, но, если необходимо указать остальные параметры, то этот аргумент должен быть указан как пустой параметр: ,,
  • membername - имя для участника обработки очереди, под которым он будет добавлен.
  • stateinterface - альтернативный интерфейс, который будет использоваться для определения состояния участника обработки очереди.
Код возврата

При возникновении ошибки возвращает -1.

По завершению выполнения, команда также установит переменную AQMSTATUS в одно из значений:

  • ADDED
  • MEMBERALREADY
  • NOSUCHQUEUE
Пример:
 AddQueueMember(sales,PJSIP/2666)

Используя вариант этой команды: AddQueueMember(<queuename>), вы добавите интерфейс, который совершает вызов, в список участников, которые обрабатывают очередь. <queuename> - это имя очереди вызовов, описанной в файле queues.conf

пример2:

exten => _101,1,Noop(agent logged on)
   same => n,Set(queueN=q${EXTEN:0:1})
   same => n,AddQueueMember(${queueN},Local/${CALLERID(num)}@from-queue/n)
   same => n,PlayBack(ru/agent-loginok)
*CLI> queue show q1
q1 has 0 calls (max 11) in 'random' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
   Members:
      Local/4887@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken no calls yet
   No Callers
См. также

Команды диалплана Asterisk

Команды диалплана Asterisk

$
0
0

Команды диалплана Asterisk

В данном документе приведен список команд, которые Вы можете использовать в плане набора (extensions.conf). Получить список и описание приложений, доступных на вашем сервере Asterisk Вы можете командами CLI:
core show applicationsи core show application <name>.

Asterisk Dialplan Applications

Asterisk: Настройка


Настройка очередей (queues.conf) Asterisk

$
0
0

Настройка очередей (queues.conf) Asterisk

Организация очередей входящих вызовов для создания колл центра.
Конфигурация очереди осуществляется в файле /etc/asterisk/queues.conf.
Для создания статической очереди, достаточно определить её имя в квадратных скобках и стратегиювызова операторов.
Остальные параметры будут назначены по умолчанию.

/etc/asterisk/queues.conf

[queue_01]
strategy = ringall

В дальнейшем имя очереди будет использовано для вызова ее в диалплане командой Queue.

 exten => s,1,Queue(queue_01)

Для применения параметров очередей и управления ими, могут быть использованы команды консоли Asterisk:

*CLI> queue
add   reload   remove   reset    set      show     pause    unpause
queue reload

*CLI> queue reload
members     parameters  rules       all

Выполните queue reload allдля инициации новой очереди и queue show <имя очереди>для её отображения в консоли Asterisk:

*CLI> queue show queue_01
queue_01 has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
   No Members
   No Callers

В данном случае очередь пуста, принимать вызовы некому. Агенты принимающие вызовы в очереди могут быть статическими, т.е. назначены в конфиге очереди - queues.conf:

/etc/asterisk/queues.conf

[queue_01]
strategy = ringall
member = PJSIP/2777

Теперь у очереди есть members, пользователи для обработки входящих вызовов:

*CLI> queue show queue_01
queue_01 has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
   Members:
      PJSIP/2777 (ringinuse enabled) (Not in use) has taken no calls yet
   No Callers

Или же, агенты могут быть динамическими, т.е. добавляться при помощи интерфейсов Asterisk - CLI, AMIили AGI.

Пример конфигурации очереди

Комментарии даны относительно заданного значения.

  • [queue_01] ;имя очереди, все параметры заданные после него и до следующих […] скобок, будут относится к данной очереди.
  • announce-frequency=45 ;объявление каждые 45 секунд
  • announce-holdtime=yes ;объявлять среднее время ожидания
  • announce-position=yes ;объявлять позицию в очереди
  • autofill=yes ;включить автозаполнение очереди
  • autopause=no ;не вкл. автопаузу если оператор не ответил на вызов
  • autopausebusy=no ; не вкл. автопаузу, если оператор не ответил на вызов когда был занят.
  • autopausedelay=0 ; таймаут автопаузы =0 (выкл.)
  • autopauseunavail=yes ;вкл. автопаузу, если оператор недоступен.
  • joinempty=paused,penalty,inuse,ringing ;присоединиться к очереди, даже если все операторы имеет один из перечисленных статусов.
  • leavewhenempty=no ;не покидать очередь из-за если все недоступны
  • maxlen=11 ;максимально кол-во ожидающих в очереди = 11
  • memberdelay=0 ; пауза между перед соединением агента и вызывающего абонента = 0
  • monitor-type=mixmonitor ; приложение записи - mixmonitor
  • penaltymemberslimit=5 ;если очередь обслуживают 5 или меньше операторов, не использовать пенальти
  • periodic-announce-frequency=0 ;не делать объявление: все операторы заняты (по умолч.)
  • queue-callswaiting=queue-callswaiting ;файлы объявлений в очереди.
  • queue-thankyou=queue-thankyou
  • queue-thereare=queue-thereare
  • queue-youarenext=queue-youarenext
  • reportholdtime=no ; не объявлять агенту время, которое абонент провел в очереди
  • retry=5 ;пауза перед повторным вызовом оператора 5 секунд.
  • ringinuse=no ; не вызывать операторов со статусом 'in use' (вызывается очередью).
  • servicelevel=20 ; считать процент вызовов отвеченных в течении 20 секунд.
  • setqueuevar=yes ; задать переменные очереди
  • setinterfacevar=yes ;задать переменные интерфейсов (операторов очереди)
  • setqueueentryvar=yes ;задать переменные сред. время ожидания и позиция абонента.
  • strategy=ringall ; стратегия - звонят все операторы
  • timeout=15 ; время вызова операторов, перед retry
  • timeoutpriority=app ; приоритет таймаута приложения
  • timeoutrestart=yes ; сбросить таймаут оператора, если он CONGESTION
  • weight=0 ;вес очереди = 0
  • wrapuptime=0 ;время отдыха оператора после вызова = 0
  • member=PJSIP/2777 ;пользователь очереди.

Рассмотрим подробно параметры очередей (queues) Asterisk

Общие (глобальные) настройки очередей.

 [general]
Persistent Members (Постоянные пользователи )

Сохранять каждого динамического пользователя во внутренней БД Asterisk (astdb), чтобы после перезагрузки, все пользователи были восстановлены из записей очереди в astdb.
см. также RemoveQueueMember
По умолчанию:

 persistentmembers = no
AutoFill Behavior (Автозаполнение очереди)

Старое, по умолчанию, поведение очереди (autofill=no) подразумевало последовательный тип подключения, при котором ожидающий абонент, подключался к пользователю, только с первой позиции в очереди. Новое поведение по умолчанию, (autofill=yes) позволяет ожидающему абоненту, подключится к пользователю (агенту) очереди, с любой позиции, если есть свободные агенты, не дожидаясь, пока он займет головную позицию. Такое поведение позволяет быстрее обрабатывать вызовы и является предпочтительным.

 autofill = yes

Monitor Type (Приложение для записи разговоров )

Приложение MixMonitorзаписывает разговор непосредственно в один файл,
в отличии от устаревшего Monitor, раздельно записывающего вх. исх. голосовые потоки.

 monitor-type = MixMonitor
UpdateCDR behavior(Изменить поведение CDR)

Записать в поле CDRdstchannelимя агента, которое вы можете установить во время входа в систему с параметром MemberName AddQueueMember.

 updatecdr = yes
shared_lastcall (общий последний вызов)

Если оператор (агент) обслуживает больше чем одну очередь, учитывать параметры,
такие как wrapuptime (пауза после завершения разговора в течении которой на агента не поступают вызовы), для всех вызовов, из всех очередей.

 shared_lastcall=no
Negative_penalty_invalid

Рассматривать операторов с отрицательным пенальти, как неактивных (не подавать на них вызовы).

 negative_penalty_invalid = no
log_membername_as_agent

Регистрировать агентов с именем, а не номером интерфейса. параметр для обратной совместимости, поведение как при работе с модулем chan_agents.

 log_membername_as_agent = no

Параметры очередей

 [queuename]
Musicclass

Устанавливает класс Музыки на Удержании (MOH) используемый данной очередью. Эта установка будет иметь приоритет над всеми, кроме переменной канала, заданной в диалплане: Set(CHANNEL(musicclass)=whatever)

 musicclass = default
announce

Сообщение пользователю обслуживающему очередь.
Сообщение может быть проиграно пользователю (а не вызывающему абоненту)
перед тем, как он примет вызов, например , для идентификации очереди, из которой поступил вызов, если агент обслуживает более одной очереди.

 announce = file_to_play
strategy

Стратегия вызова операторов очереди.
Важнейший параметр, указывает как будет распределяться вызовы между агентами:

  • ringall - вызываются все пользователи одновременно, пока кто-нибудь не ответит (по умолчанию)
  • leastrecent - вызвать оператора дольше всех не принимавшего вызовы.
  • fewestcalls - вызвать оператора принявшего меньше всего вызовов.
  • random - распределить вызовы случайным образом.
  • rrmemory - по кругу, после агента отвечавшего крайним.
  • rrordered - тоже самое, что и rrmemory, но пользователи вызываются в порядке перечисления в конфиге очереди.
  • linear - вызывать начиная с первого в порядке перечисления. Динамические агенты, будут вызываться в порядке добавления.
  • wrandom - звонит случайный интерфейс, но использует штраф этого участника в качестве веса (weight) при расчете метрики.

Таким образом, оператор с пенальти 0 будет иметь метрику в диапазоне от 0 до 1000,
оператор с пенальти 1 от 0 до 2000,
а оператор с пенальти 2 будет иметь метрику между 0 и 3000.
Обратите внимание, что при использовании этой стратегии, пенальти оператора не такой же,
как при использовании других стратегий очереди.
Он используется ТОЛЬКО в качестве весового коэффициента для вычисления метрики.

 strategy = ringall
servicelevel

Параметр статистики. Задает диапазон от 0 до servicelevel=в секундах.
Приложение app_queueвысчитает процент вызовов, отвеченных за указанный период. Например, если servicelevel=30 ожидавших в очереди не более 30-ти секунд.

 servicelevel=30

Ниже приведен пример, где мы видим, что 89.4% процента вызовов в очереди q1были отвечены в течении 30 секунд (SL:89.4% within 30s).

*CLI> queue show q1
q1 has 0 calls (max unlimited) in 'leastrescent' strategy (6s holdtime, 120s talktime), W:0, C:5156, A:584, SL:89.4% within 30s
   Members:
      SIP/4886 (ringinuse disabled) (Not in use) has taken no calls yet
      SIP/4887 (ringinuse disabled) (Not in use) has taken no calls yet
      PJSIP/4889 (ringinuse disabled) (Unavailable) has taken no calls yet
   No Callers
context

Указывает на контекст диалплана, в который ожидающий в очереди абонент может попасть набором одной цифры в DTMF.
В контексте должен быть определен екстеншен для обработки этой цифры.
Например, можно использовать для интерактивного меню.

 context = context_name
penaltymemberslimit

не использовать penalty, если очередь обслуживают кол-во операторов меньшее или равное тому, что указано:

 penaltymemberslimit = 5

Примечание для рассматриваемых далее таймаутов очереди.
Таймаут выхода из очереди по не ответу, не является параметром очереди, а может быть назначен как опция вызова приложения Queue
Queue(queuename,[options],[optionalurl],[announceoverride],[timeout])
Пример:

 Queue(queuename,t,,,45)

queue timing options

Очередь имеет два разных «таймаута» связанных с ней. Один из них назначается в queue.conf. Этот таймаут указывает в течении какого промежутка времени, в секундах, будет вызываться телефон пользователя, прежде чем будет считаться, что он не ответил. Второй таймаут, это аргумент приложения Queue(). Это абсолютный таймаут, по истечении которого, вызов выходит из очереди и переходит на следующий приоритет в контексте. В некоторых ситуациях, эти таймауты сталкиваются. Например, если таймаут в queue.confустановлен 5 секунд, retry = 4 секунды, а таймаут приложения Queue()задан 10 секунд
произойдет следующее:

  • вызов попадает в очередь
  • очередь выбирает оператора и вызывает его в течении 5 секунд
  • затем выдерживается время retry - 4 секунды
  • очередь выбирает второго оператора.

Как долго будет вызываться второй оператор? Осталась 1 секунда до истечения абсолютного таймаута приложения Queue(). Будет ли второй оператор вызываться 1 секунду или 5 как задано в таймауте queue.conf?

Эту коллизию призван разрешить параметр timeoutpriority: если timeoutpriority=conf, то второй оператор будет вызваться в течении 5-ти секунд. Если timeoutpriority=app, то в течении 1-й секунды.

Существуют и некоторые исключения и приведенных выше правил:
предположим timeoutpriority=app, в queues.confтаймаут равен 0, а аргумент приложения Queueзадан 10 сек.
Тогда timeoutpriorityигнорируется, а таймаут приложенияиспользуется как таймаут вызова операторов queues/conf.
И наоборот, если таймаут приложенияне задан, тогда timeoutpriorityигнорируется и таймаут конф. файлаqueues.confвсегда используется.

Несмотря на то, что timeoutpriority=confтаймаут конфигурационного файлаqueues.confимеет приоритет над таймаутом приложения,
если таймаут конф. файларавен 0, каждый участник очереди будет вызываться в течении неопределенного времени, а таймаут приложениябудет проверяться после этих попыток.

По умолчанию: timeoutpriority=app

timeout = 15
retry = 5
timeoutpriority = app|conf
weight

Чем выше вес (weight) очереди, тем выше приоритет для вызова оператора обслуживающего больше одной очереди.
по умолч. 0

 weight=0
wrapuptime

После завершения успешного вызова, время отдыха оператора, прежде чем он снова сможет принимать вызовы. по умолч. 0

 wrapuptime=0
autofill

Переопределяет глобальную установку autofill, рассмотренную выше, отдельно для каждой очереди.

 autofill=yes|no
autopause

Поставить оператора на паузу, если он не ответил на вызов. см. также PauseQueueMember

  • no: Не использовать автопаузу для данной очереди.
  • yes: Поставить на паузу, только в данной очереди.
  • all: Поставить на паузу во всех очередях, которые обслуживает оператор.
 autopause=no|yes|all
Autopausedelay

Отложить постановку на паузу оператора на время, с момента завершения последнего неудачного вызова.

 autopausedelay=60
Autopausebusy

Ставить или нет оператора на паузу, если он занят (BUSY).

autopausebusy=no
Autopauseunavail

Ставить или нет оператора на паузу, если он недоступен (UNAVAILABEL).

 autopauseunavail=no
maxlen

Максимально кол-во ожидающих в очереди. Если превышено, последующие вызовы будут отвергаться.
0 - неограниченно.

maxlen=0
variables

Примечание для рассматриваемых ниже параметров очереди - setinterfacevar, setqueueentryvar, setqueuevar.
Если канал оператора (member channel) определен как Local,
то для установки переменных он должен быть оптимизирован при помощи опции /n.
Например:

 Local/2666@from-queue/n

Если setinterfacevar=yes, то следующие переменные будут назначены в каналах вызывающего абонента и оператора очереди:

  • MEMBERINTERFACE - наименование интерфейса оператора(например. Local/1234)
  • MEMBERNAME - имя оператора (например. O.Agentova)
  • MEMBERCALLS - кол-во вызовов принятых данным интерфейсом оператора.
  • MEMBERLASTCALL - Время последнего вызова (UNIX-time).
  • MEMBERPENALTY - штраф (penalty) оператора.
  • MEMBERDYNAMIC - указывает динамический пользователь или нет.
  • MEMBERREALTIME - указывает realtime конфигурация оператора или нет.
 setinterfacevar=no
пример
setqueueentryvar

Если setqueueentryvar=yes, то следующие переменные будут назначены в каналах вызывающего абонента и оператора очереди:

  • QEHOLDTIME - время ожидания вызывающего абонента.
  • QEORIGINALPOS - позиция в очереди.
 setqueueentryvar=no
setqueuevar

Если setqueuevar=yes, то следующие переменные будут назначены в каналах вызывающего абонента и оператора очереди, при соединении или когда вызывающий абонент покидает очередь:

  • QUEUENAME - имя очереди.
  • QUEUEMAX - максимальное кол-во вызовов разр. в очереди;
  • QUEUESTRATEGY - стратегия очереди;
  • QUEUECALLS - текущее кол-во вызовов в очереди;
  • QUEUEHOLDTIME - среднее время ожидания в очереди на данный момент;
  • QUEUECOMPLETED - кол-во обработанных вызовов;
  • QUEUEABANDONED - кол-во отвергнутых (неотвеченных) вызовов;
  • QUEUESRVLEVEL - уровень обслуживания очереди;
  • QUEUESRVLEVELPERF - процент вызовов отвечающих условию servicelevelна данный момент;
 setqueuevar=no
membermacro

Если установлено, выполнить Macro, когда соединение с оператором установлено.
Эта опция может быть перекрыта параметром macroприложения Queue()

 membermacro=macro_name[,arg1[,...][,argN]]
membergosub

Если установлено, выполнить GoSub, когда соединение с оператором установлено.
Эта опция может быть перекрыта параметром gosubприложения Queue()

 membergosub=gosub_context_name[,arg1[,...][,argN]]
announce-frequency

Как часто анонсировать позицию в очереди и среднее время ожидания. Если 0 то не анонсировать. Примечание: этот параметр игнорируется при изменении позиции абонента в очереди (см. min-announce-frequency)

 announce-frequency = 90
min-announce-frequency

Минимальный интервал между моментом перехода на следующую позицию и анонсом среднего времени удержания. Это полезно для избежания постоянных объявлений когда позиция в очереди абонента часто меняется. т.е., если позиция в очереди изменилась, то не оповещать, даже если подошло время announce-frequency. (см. announce-frequency)

 min-announce-frequency = 15
periodic-announce-frequency

Как часто делать periodic-announce.

 periodic-announce-frequency=60
random-periodic-announce

Производить периодическое оповещение в случайном порядке? По умолчанию - no.

 random-periodic-announce=no
relative-periodic-announce

Отсчитывать время для periodic-announceс момента завершения предыдущего анонса, а не от его начала. по умолчанию выключено.

 relative-periodic-announce=no
announce-holdtime

Включать объявление о среднем времени ожидания в объявление о позиции в очереди?
Можно указать yes, noили once (один раз).

 announce-holdtime = yes|no|once
announce-position

Объявлять позицию в очереди?
Возможные значения: «yes», «no», «limit», или «more».

  • yes - оповещать о позиции ожидающего абонента;
  • more - если кол-во ожидающих в очереди больше чем задано в announce-position-limit.

т.е., если announce-position-limit=5объявлять, что в очереди ожидают больше 5-ти абонентов.

  • limit - только ожидающие абоненты в пределах announce-position-limitуслышат объявление.
  • no - не объявлять позицию.
 announce-position = yes
announce-to-first-user

Если включено, то объявления будут проигрываться первому в очереди. Это может привести к ситуации, когда агент готов принять вызов, но соединени откладывается из-за объявления и приведет к задержкам в очереди. по умолчанию выключено.

 announce-to-first-user = no
announce-position-limit

Если назначено «limit» или «more» в announce-positionбудет задействован этот параметр.

 announce-position-limit = 5
announce-round-seconds

Округлять тайминги объявлений до заданного значения, если не = 0 Возможные значения 0, 5, 10, 15, 20, and 30.

announce-round-seconds = 10
Аудио файлы используемые для объявлений

Если не заданы другие, используются файлы перечисленные ниже:

queue-youarenext = queue-youarenext ;(«You are now first in line.»)

queue-thereare = queue-thereare ; («There are»)

queue-callswaiting = queue-callswaiting ; («calls waiting.»)

queue-holdtime = queue-holdtime ; («The current est. holdtime is»)

queue-minute = queue-minute ; («minute.»)

queue-minutes = queue-minutes ; («minutes.»)

queue-seconds = queue-seconds ; («seconds.»)

queue-thankyou = queue-thankyou ; («Thank you for your patience.»)

queue-reporthold = queue-reporthold ; («Hold time»)

periodic-announce = queue-periodic-announce ; («All reps busy / wait for next»)

queue-less-than

queue-quantity1

queue-quantity2

periodic-announce

Можно установить несколько звуковых файлов для основного объявления через запятую. Файлы будут воспроизведены в порядке перечисления.
Например:

 periodic-announce = queue-periodic-announce,your-call-is-important,please-wait
monitor-format

Для включения записи вызовов, требуется задать «monitor-format»,
если monitor-formatне задан, запись разговоров считается выключенной.
Вызовы будут записаны только с момента поднятию трубки оператором.

 monitor-format = gsm|wav|wav49
Queue Empty Options(параметры заполнения очереди)

Параметры очереди Asterisk «joinempty» и «leavewhenempty» регламентируют условия при которых абонент может встать в очередь и покинуть ее, соответственно.
Параметры «joinempty» и «leavewhenempty» могут принимать несколько значений, перечисленных через запятые.
Ниже приведем список факторов влияющих на эти параметры:

  • paused: считать недоступным, если оператор на паузе;
  • penalty: считать недоступным, если пенальти оператора меньше чем QUEUE_MAX_PENALTY;
  • inuse: считать недоступным, если телефон оператора в данный момент вызывается (звонит);
  • ringing: a member is not considered available if his phone is currently ringing
  • unavailable: Касается в основном каналов Agent (заданных в agents.conf). если агент назначен в agent.conf, но не зарегистрировался(каналы Agent можно считать устаревшими)
  • invalid: Интерфейсы имеющие статус «invalid».
  • unknown: Не имеющий явного статуса оператор.
  • wrapup: Оператор на таймауте wrapuptimeпосле вызова.

Пример, не подключаться к очереди,если все операторы имеют один из перечисленных статусов:

 joinempty = paused,inuse,invalid

Покинуть очередь, если все операторы имеют один из указанных статусов:

 leavewhenempty = inuse,ringing

; Устаревшие значения, могут быть указаны для обратной совместимости:

  • yes - (empty) for joinempty; penalty,paused,invalid for leavewhenempty
  • no - penalty,paused,invalid for joinempty; (empty) for leavewhenempty
  • strict - penalty,paused,invalid,unavailable
  • loose - penalty,invalid
reportholdtime

Если нужно оповестить оператора о том сколько абонент ожидал в очереди.

 reportholdtime = no
ringinuse

Чтобы избежать посылки вызова на оператора, чей интерфейс находится с состоянии 'in use', установите = no. Помимо общего значения очереди, можно установить этот параметр для отдельных пользователей очереди через команду QUEUE_MEMBER, поле 'ringinuse' реалтайм пользователей и CLI/AMI:

*CLI> queue set ringinuse no on SIP/4887 in queue1

 SIP/4887 (ringinuse disabled) (dynamic) (Not in use)

*CLI> queue set ringinuse yes on SIP/4887 in queue1

 SIP/4887 (ringinuse enabled) (dynamic) (Not in use)

только драйверы каналов SIPи PJSIP поддерживают в данный момент статус 'in use'

 ringinuse = no
memberdelay

Параметр устанавливает время задержки между моментом, когда агент отвечает на вызов и соединения его с вызывающим абонентом.

  memberdelay = 0
timeoutrestart

Если параметр «timeoutrestart» установлен в значение yes, тогда значение таймаута для агента будет сбрасываться, если от него будет получен сигнал BUSY или CONGESTION. Это бывает полезно, когда агент имеет возможность отметить вызов, отвергая его или, производя некоторые действия, которые имеют подобный эффект. (Обнаружено, что если вызов агента завершился со статусом NOANSWER (ring, no-answer), это так же заставляет вызов отправить к следующему агенту в очереди по алгоритму roundrobin).

 timeoutrestart = no
defaultrule

назначить правила по умолчанию. Конфигурация находится в queuerules.conf

 defaultrule = myrule
Members

Каждый пользователь очереди перечисляется в отдельной строке
в виде технология/строка набора. Под пользователем понимается оператор очереди.
Дополнительный параметр penaltyможет быть задан после запятой.

Каждый оператор очереди Asteriskимеет параметр penalty.
Пенальти может быть определен в настройках пользователя очереди:

  member ⇒ interface[,penalty][,membername][,state_interface][,ringinuse]

или при добавлении динамического агента:

  queue add member <dial string> to <queue> [[[penalty <penalty>] as <membername>] state_interface <interface>] 

Данный параметр определяет приоритет для посылки вызова на оператора, чем ниже пенальти, тем выше приоритет при выборе оператора для вызова.
Если пенальти не задан, то по умолчанию = 0

Предположим, очередь обслуживают 3 оператора с пенальти - 0,1 и 2 соответственно.
Первым будет вызван оператор с пенальти = 0 и только если он недоступен, оператор с пенальти = 1 и так далее.

Пенальти оператора может быть динамически изменен, например через CLI:

 queue set penalty <penalty> on <interface> [in <queue>]

или через AMI Actions QueuePenalty.

Пользователи с большим значением пенальти имеют, более низкий приоритет для вызовов.

После второй запятой назначается имя.
Использование имени может быть удобно для представления в логах очереди.
Разные интерфейсы могут использовать одно имя.

Дополнительное описание интерфейса указывается после третьей запятой.
На этот интерфейс будут посылаться уведомления app_queue,
но для вызова будет всегда использоваться указанный первым интерфейс.

 member => interface [,penalty][,membername][,state_interface][,ringinuse]

member => DAHDI/1
member => DAHDI/2,10
member => DAHDI/3,10,Stev Morrissev
member => Local/1000@default,0,Patty Smithoff,SIP/1000
member => Local/2000@default,0,Syd Buratinov,SIP/2000,no

Команда Asterisk: AddQueueMember

Asterisk: PauseQueueMember

Asterisk app: Queue

Asterisk: QueueLog

Asterisk: RemoveQueueMember

Asterisk: UnpauseQueueMember

Asterisk queuerules.conf

function 'QUEUE_EXISTS'

function 'QUEUE_MEMBER'

function 'QUEUE_MEMBER_LIST'

function 'QUEUE_VARIABLES'

function 'QUEUE_WAITING_COUNT'

Asterisk:Лог очереди (queue) в mysql

FreePBX Queues

Asterisk Call Center Stats

menu

IP АТС Asterisk и FreeSWITCH

$
0
0

IP АТС Asterisk и FreeSWITCH

Установка, настройка и обслуживание IP АТС Asterisk и FreeSWITCH.

Мы предлагаем услуги по установке, настройке и обслуживанию IP АТС Aterisk и FreeSWITCH. За годы работы, мы накопили внушительный опыт внедрения открытых и проприетарных телекоммуникационных платформ, что позволяет, предлагать нашим клиентам самые оптимальные решения.

Для внедрения IP АТС небольшой емкости (до 100 абонентов), прекрасно подходит программная АТС Asterisk с веб интерфейсом FreePBX. Русскоязычный, простой и интуитивно понятный веб интерфейс позволит вам, в дальнейшем, обслуживать АТС без дополнительных затрат. Все используемое ПО является свободно распространяемым и вы платите только за пусконаладку (от 10 000 рублей). Приобретая базовую установку Asterisk вы гарантировано получаете:

Программное обеспечение и функционал:

  • Asterisk 13
  • FreePBX 13 - веб интерфейс настройки Asterisk
  • CDR-viewer - веб интерфейс записи и детализации вызовов
  • ARI (RESTful) и AMI - интерфейсы приложений.
  • Протоколы связи: SIP, IAX2, h323, DAHDI
  • Функции: Очереди, Группы приема вызовов, Телеконференции, Автосекретарь, Маршрутизация вызовов, Переадресация вызовов, Факс-на-ЕМайл.
  • Операционная система: Centos 7 (Centos 6, Ubuntu или Debian - по требованию)

Базовую настройку IP АТС Asterisk:

  • Создание требуемого кол-ва IP абонентов
  • Подключение требуемого кол-ва SIP (или h323) транков к провайдеру IP телефонии.
  • Подключение потоков ISDN PRI E1.
  • Настройку входящей/исходящей маршрутизации по вашему ТЗ.
  • Настройку дневного/ночного режима
  • Настройка голосового меню (IVR)
  • Настройка групп приема вызовов.
  • Базовые настройки безопасности (IPtables и fail2ban)
  • Настройка приобретенного у нас оборудования (VoIPшлюзов, IP телефонов).
  • Консультации по настройке вашего оборудования.
  • Базовое обучение использования FreePBX для настройки Asterisk (Подключение IP абонентов, IP транков; создание очередей, телеконференций, голосовых меню, групп приема вызовов; использование сервисных кодов и отчетов о звонках.)
  • Бесплатную тех. поддержку в течении месяца с момента ввода в эксплуатацию.

Варианты установки:

  1. Продажа сервера с установкой и настройкой системы.
  2. Установка на сервере заказчика.
  3. Удаленная установка/настройка на сервере заказчика.
  4. Установка на VPS хостинге
  5. Установка на embedded устройства (например роутеры поддерживающие работу с OpenWRT, функционал может быть ограничен)

cdr_adaptive_odbc.conf

$
0
0

cdr_adaptive_odbc.conf

Модуль cdr_adaptive_odbcпозволяет добавлять собственные переменные в CDR,
создавать псевдонимы (alias) и фильтровать данные. Добавлять альтернативные
таблицы CDR, с уникальным содержанием.

Список полей таблицы CDRсоздаваемой при установке FreePBX:
calldate, clid, src, dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield,
did, recordingfile, cnum, cnam, outbound_cnum, outbound_cnam, dst_cnam

Как и следует из названия, модуль cdr_adaptive_odbc сохраняет CDRв базу данных через ODBC.
«adaptive» в данном случае означает, что она пытается приспособиться к структуре таблицы:
нет статической структуры таблиц, которые должны быть использованы с этим модулем.
Когда модуль загружен (или при перезагрузке), он читает структуру таблицы. Он ищет имя столбца, которому соответствует переменная CDR.
Это относится как к встроенным CDRпеременным, так и к пользовательским переменным.
Например, чтобы передавать данные из встроенной (builtin) переменной CDRchannel, в таблице базы данных должен быть столбец channel.

пример:

Добавим в кастомную CDRпеременную useragentзначение равное номеру SIPтелефона.

exten ⇒ 177,n,Set(CDR(useragent)=${CHANNEL(useragent)})

Чтобы данные переменной useragentбыли занесены через cdr_adaptive_odbc, надо создать столбец useragentв БД.

В файле конфигурации cdr_adaptive_odbc можно создать множество таблиц. Имя секции может быть любым, модуль не использует его. Вот пример простой конфигурации таблицы:

[mytable]
connection = asterisk
table = asterisk_cdr
Option Value/Example Notes
connection asterisk База данных. Параметры соединения настраиваются в res_odbc.conf. Обязательный параметр.
table asterisk_cdr Имя таблицы БД. Обязательное поле.
usegmtime no Использовать время GMT вместо локального времени. По умолчанию -'no'.

В дополнение к вышеперечисленным опциям cdr_adaptive_odbc.conf, можно задать ещё несколько.

Обычно, CDRищет столбец соответствующий имени переменной. Параметр aliasпозволяет соотнести имя переменной с отличным от него именем столбца.

 alias <CDR variable> => <column name>

Например:

 alias src => source

Также, можно отфильтровать определенное содержимое.

  filter <CDR variable> => <content>

Например:

  filter accountcode => 321

И наконец, можно добавить статические данные, дополнительно к поступающим из CDR.

 static <"Static Content Goes Here"> => <column name>

Например:

static "My Data" => my_id

; The point of this module is to allow you log whatever you like in terms of
; the CDR variables.  Do you want to log uniqueid?  Then simply ensure that
; your table has that column.  If you don't want the column, ensure that it
; does not exist in the table structure.  If you'd like to call uniqueid
; something else in your table, simply provide an alias in the configuration
; file that maps the standard CDR field name (uniqueid) to whatever column
; name you like.  
; Perhaps you'd like some extra CDR values logged that aren't
; in the standard repertoire of CDR variables (some that come to mind are
; certain values used for LCR:  route, per_minute_cost, and per_minute_price).
; Simply set those CDR variables in your dialplan, i.e. Set(CDR(route)=27),
; ensure that a corresponding column exists in your table, and cdr_adaptive_odbc
; will do the rest.
;
; This configuration defines the connections and tables for which CDRs may
; be populated.  Each context specifies a different CDR table to be used.
;
; The columns in the tables should match up word-for-word (case-insensitive)
; to the CDR variables set in the dialplan.  The natural advantage to this
; system is that beyond setting up the configuration file to tell you what
; tables to look at, there isn't anything more to do beyond creating the
; columns for the fields that you want, and populating the corresponding
; CDR variables in the dialplan.  For the builtin variables only, you may
; create aliases for the real column name.
;
; Please note that after adding columns to the database, it is necessary to
; reload this module to get the new column names and types read.
;
; Warning: if you specify two contexts with exactly the same connection and
; table names, you will get duplicate records in that table.  So be careful.
;

;[first]
;connection=mysql1
;table=cdr

;[second]
;connection=mysql1
;table=extracdr

;[third]
;connection=sqlserver
;table=AsteriskCDR
;schema=public ; for databases which support schemas
;usegmtime=yes ; defaults to no
;alias src => source
;alias channel => source_channel
;alias dst => dest
;alias dstchannel => dest_channel
;
; Any filter specified MUST match exactly or the CDR will be discarded
;filter accountcode => somename
;filter src => 123
; Negative filters are also now available
;filter src != 456
;
; Additionally, we now support setting static values per column.  The reason
; for this is to allow different sections to specify different values for
; a certain named column, presumably separated by filters.
;static "Some Special Value" => identifier_code
;
; Add quoted indentifiers for table and columns names.
;quoted_identifiers=" ; Default to null

Asterisk CDR - Call Detail Records - Детализированный отчет о звонках

Файлы конфигурации Asterisk

cdr_manager.conf

$
0
0

cdr_manager.conf

;
; Asterisk Call Management CDR
;
[general]
enabled = no

; The "mappings" category can be used to define additional "key: value" pairs
; that will be included in the manager event. (after AccountCode, Source, etc).
;
; Each line like "varname => label" will include a "label: ${CDR(varname)}"
; in the generated event where ${CDR(varname)} its replaced with its value
;
;[mappings]
;rate => Rate
;carrier => Carrier

Asterisk CDR - Call Detail Records - Детализированный отчет о звонках

Файлы конфигурации Asterisk

Viewing all 1052 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>