Рекомендации по настройке системы Asterisk
Базовые настройки Asterisk, на которые рассчитан модуль usm_asterisk
В данной статье приводится типичная базовая конфигурация контакт-центр, которая позволяет принимать входящие вызовы с линии SIP и передавать их в очередь, к которой подключены операторы.
Установку телефонной системы выполняйте по инструкции: http://blog.denisbondar.com/post/asterisk11-chan_dongle_e1550-ubuntu14
Исходные данные для демонстрационной конфигурации
- одна внешняя 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 и т.д.), то гарантировать работу модуля us_asterisk невозможно, так как логика работы Asterisk после подобной конфигурации часто бывает непредсказуемой и отследить прохождение вызова стандартным модулем невозможно.