Рекомендации по настройке системы Asterisk

Материал из WiKi - UserSide

en | ru

Базовые настройки Asterisk, на которые рассчитан модуль usm_asterisk

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

Исходные данные для демонстрационной конфигурации

  • одна внешняя SIP линия [SIPOPERATOR], со стороны которой поступают входящие телефонные вызовы. Номер телефона 0551234567, пароль qwerty123456, IP-адрес сервера пользователя 11.22.33.44
  • одна группа серийного искания (очередь вызовов)
  • четыре внутренние SIP линии, на которых работают пользователи контакт-центра - все они входят в одну очередь

sip.conf

Содержимое файла, отвечающего за SIP-линии

; общие настройки
[general]
language = ru
bindport=5060
callcounter = yes
limitonpeers = yes
dtmf=rfc2833
compensate=yes
defaultexpirey=3600
disallow=all
allow=alaw
registertimeout=3600
; здесь нужно перечислить все внешние sip-линии в указанном формате
register=0551234567:qwerty123456@11.22.33.44/0551234567

; далее настройки для внешнего пользователя, который предоставляет телефонный номер
[SIPOPERATOR]
type=friend
host=11.22.33.44
port=5060
defaultip=здесь_ip_адрес_на_интерфейсе_в_сторону_пользователя
fromdomain=здесь_доменное_имя_софтсвитча_пользователя
fromuser=0551234567
username=0551234567
secret=qwerty123456
registertimeout=3600
defaultexpirey=3600
nat=no
canreinvite=no
disallow=all
allow=alaw
qualify=yes
dtmfmode=inband
insecure=port,invite
context=from-external-sip ; данный контекст будет использоваться в маршрутизации при вызовах со стороны внешней sip-линии

; здесь общие настройки для всех внутренних sip-линий
[CallCenter](!)
call-limit=1 ; Ограничение одновременных звонков (пользователи принимают только один звонок)
qualify = no
dtmfmode=rfc2833
canreinvite=no
pickupgroup=1
callgroup=1
host=dynamic
type=friend
port=5060
qualify=yes
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0 ; разрешено подключаться отовсюду. Измените, если нужно иначе
callcounter=yes
faxdetect=no
disallow=all
allow=alaw
allow=gsm
context=from-internal-sip ; данный контекст будет использоваться в маршрутизации при вызовах с линий пользователей контакт цетра

; далее описаны 4 внутренние телефонные линии с применением общих настроек
[500](CallCenter)
username=500
nat=no
secret=здесь_пароль
callerid=operator 500 <500>

[501](CallCenter)
username=501
nat=no
secret=здесь_пароль
callerid=operator 501 <501>

[502](CallCenter)
username=502
nat=no
secret=здесь_пароль
callerid=operator 502 <502>

[503](CallCenter)
username=503
nat=no
secret=здесь_пароль
callerid=operator 503 <503>

queues.conf

Далее рассматривается группа в конфигурационном файле с настройками групп серийного искания (очередей)

[callcenter-queue]
monitor-type = MixMonitor
music = file_name ; имя файла без расширения, который будет проигрываться абоненту в режиме ожидания ответа пользователя
strategy = ringall ; стратегия серийного искания - звоним сразу всем
timeout = 30
retry = 2
joinempty = yes ; вызов может входить в очередь, даже если к ней не подключен ни один пользователь
ringinuse = no ; не принимать звонки тем, кто уже разговаривает
leavewhenempty = yes
announce-frequency = 30
announce-holdtime = no
; далее перечисляются члены группы
member => SIP/500
member => SIP/501
member => SIP/502
member => SIP/503

extensions.conf

В следующем файле настраивается маршрутизация. Рассмотрен фрагмент, который направляет входящие вызовы в группу и исходящие через внешнюю SIP-линию

; входящие вызовы - те, которые поступают с внешней sip-линии в сторону контакт-центра
[from-external-sip]
exten => s,1,Ringing() ; если требуется - направляем в сторону вызывающего сигнал КПВ (если не требуется - удалите строку)
exten => s,n,Wait(2)   ; ожидаем две секунды, чтобы звонящий услышал первый гудок после набора номера, если ответить сразу без гудка - абонент пугается :)
exten => s,n,Answer(300) ; отвечаем на вызов
exten => s,n,Playback(hello) ; проигрываем файл приветствия (имя файла без расширения)
exten => s,n,Queue(callcenter-queue) ; направляем вызов в очередь "callcenter-queue" 
exten => s,n,Hangup() ; направляем в сторону вызывающего отбой

; исходящие вызовы - те, которые поступают со стороны пользователей контакт-центра в сторону ТфОП
[from-internal-sip]
exten => _X.,1,Set(CALLERID(num)=380551234567)    ; Изменяем Caller_ID перед отправкой вызова в сеть ТфОП на номер внешней линии
exten => _X.,n,Dial(SIP/SIPOPERATOR/${EXTEN},300) ; Направляем вызов в сторону SIPOPERATOR

Не производите никакие другие настройки, если не знаете для чего они.

Если Вы осуществляете конфигурирование системы через различные веб-интерфейсы (trixbox, elastix, freepbx и т.д.), то гарантировать работу модуля usm_asterisk невозможно, так как логика работы Asterisk после подобной конфигурации часто бывает непредсказуемой и отследить прохождение вызова стандартным модулем невозможно.