Asterisk: организуем автоматическое распределение поступающих вызовов::Журнал СА 12.2007
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Книжная полка  

Защиты много не бывает

Среди книжных новинок издательства «БХВ» есть несколько изданий, посвященных методам социальной инженерии

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

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

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6252
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6955
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4244
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3021
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3815
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3833
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6328
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3179
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3472
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7288
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10655
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12375
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14012
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9137
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7090
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5398
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4628
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3436
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3167
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3411
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3034
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Asterisk: организуем автоматическое распределение поступающих вызовов

Архив номеров / 2007 / Выпуск №12 (61) / Asterisk: организуем автоматическое распределение поступающих вызовов

Рубрика: Администрирование /  Продукты и решения

Сергей Яремчук

Asterisk: организуем автоматическое распределение поступающих вызовов

От оперативности персонала, работающего с клиентами, зависит мнение о самой организации в целом. Если клиент подолгу будет звонить в службу поддержки, это вряд ли положительно скажется на имидже компании. Использование популярного VoIP-сервера IP-PBX Asterisk поможет решить эту проблему.

В журнале уже подробно рассказывалось о настройке Asterisk [1-3]. Конечно, много воды с тех пор утекло. Уже доступна новая ветка продукта 1.4.x с новыми возможностями и параметрами, а некоторые старые убраны, но общий принцип настроек остался таким же.

Asterisk может работать как система, автоматически распределяющая поступающие вызовы (ACD – Automatic Call Distribution). В службах поддержки это очень полезная возможность, пользователь звонит на один из номеров, а на звонок отвечает свободный в данное время сотрудник.

Реализуется такая функциональность при помощи агентов. Агент активируясь в системе, используя специальную процедуру, объявляет себя доступным для приема вызовов. Количество агентов ничем в общем-то не ограничено. Каждый агент при настройке получает идентификационный номер. Здесь следует учитывать, что номера телефонов и ID агента – это не одно и то же.

Asterisk-агенты не привязаны к одному номеру и могут подключаться с любых номеров. Для этого пользователь должен позвонить по определенному внутреннему номеру и ввести последовательно по подсказкам системы свой ID, пароль и номер телефона (в конце каждого действия необходимо нажимать <#>), к которому его нужно привязать. То есть агент – это как бы еще один виртуальный номер телефона, но позвонить по нему может только сервер. Кстати, поэтому агентов можно использовать и в том случае, когда сотрудники не имеют постоянного рабочего места, назначив каждому ID агента, можно всегда его «поймать» вне зависимости от того, какой телефон он сейчас использует.

Настройки agents.conf в AsteriskNOW

Настройки agents.conf в AsteriskNOW

Настройки queues.conf в AsteriskNOW

Настройки queues.conf в AsteriskNOW

По умолчанию все конфигурационные файлы сервера Asterisk находятся в каталоге /etc/asterisk. Применение агентов не снимает необходимости в создании записи для регистрации телефона в sip.conf или users.conf и экстеншна в extensions.conf. Поэтому в sip.conf заносим информацию о номере телефона, например 600:

[600]

type=friend

host=dynamic

username=600

secret=600_password

nat=no

canreinvite=no

context=callcenter

callerid="User" <600>

allow=gsm

allow=ulaw

allow=alaw

Остальные пользователи добавляются аналогично. Если база пользователей ведется в файле users.conf, то в описание номера следует добавить параметр «hasagent = yes».

Теперь можно перейти непосредственно к настройке работы агентов.

Настройка агентов

Агенты определяются в файле agents.conf, в самом простом случае достаточно добавить в конце файла параметр agent с необходимыми значениями.

$ sudo mcedit /etc/asterisk/agents.conf

[general]

; Сохранение статуса агентов в локальной базе не требует

; повторной его регистрации в случае перезагрузки сервера

persistentagents=yes

; Разрешение/запрет привязывать к одному экстеншну

; несколько агентов. По умолчанию разрешено

;multiplelogin=yes

[agents]

; Количество неудачных регистраций агента перед отказом

; (по умолчанию – 3)

maxlogintries=5

; Отключение агента, если трубка в течение

; указанного времени (в секундах) не снята

autologoff=15

; Отключаем обязательное подтверждение регистрации кнопкой

; <#> при регистрации агента через agentcallpark,

; по умолчанию включено, но иногда это вызывает проблемы

ackcall=no

; Время (в мс) между окончанием разговора и повторным вызовом

; агента из очереди. Нужно, например, чтобы пользователь

; успел заполнить отчет (0 – задержка отсутствует)

wrapuptime=5000

; Класс фоновой музыки ожидания для агентов

musiconhold = default

; Звуковой сигнал, проигрываемый при подключении агентов

custom_beep=beep

; Звуковой файл, проигрываемый при отключении агента

;agentgoodbye => vm-goodbye

; Членство в группах для агентов, используется в queues.conf

;group=1,2

; Далее описывается запись разговоров агентов с клиентами.

; Эта секция является глобальной для канала агентов

; chan_agent

; Включение записи (по умолчанию выключено)

;recordagentcalls=yes

; Формат файла: wav (по умолчанию), gsm, wav49

recordformat=gsm

; Включать в записи CDR поле с именем файла, содержащего

; запись этого вызова. По умолчанию - отключено

;createlink=yes

; Строка, добавляемая к имени при записи, позволяет

; формировать URL

;urlprefix=http://localhost/calls/

; По умолчанию записи сохраняются

; в /var/spool/asterisk/monitor, каталог можно изменить

;savecallsin=/var/calls

; Описание агентов, в виде

; agent => agentID,agentPassword,имя

agent => 3001,1234,Vasja Pupkin

agent => 3002,2345, Serg Jaremchuk

Параметром autologoff следует пользоваться очень осторожно. Если абонент на некоторое время отошел от рабочего места, а Asterisk его отключил, это может обнаружиться не сразу. В некоторых случаях лучше приучить пользователей снимать и затем восстанавливать регистрацию агента, если он временно не сможет отвечать на звонки. Если параметр timeout в файле queues.conf меньше значения autologoff, то агент в любом случае не будет отключаться.

Очереди обработки вызовов

Очереди для обработки вызовов определены в файле queues.conf. Причем одновременно поддерживается несколько очередей вызовов. Имена очередей используются затем в качестве аргумента Queue в extensions.conf. В queues.conf все можно оставить по умолчанию, достаточно добавить в конце файла описание новой очереди. Некоторые параметры файлов agents.conf и queues.conf совпадают, объяснение этому простое, агентов также можно записать в этом файле в качестве участников, обрабатывающих указанную очередь.

Файл queues.conf:

; Создаем новую очередь MyQueue

[MyQueue]

; Персональный MOH, используется, если нет musiconhold

; в agents.conf

; musicclass = default

; Если агент участвует в нескольких очередях,

; ему проигрывается сообщение, помогающее сориентироваться

; и правильно принять клиента

announce = queue-markq

; Поиск свободного агента

strategy=ringall

; Сколько должен звонить телефон у агента прежде,

; чем переключиться на следующего

timeout=15

; Ожидание перед повторной попыткой обзвона

retry=5

; Вес очереди, то есть приоритет вызова, очереди

; с большим приоритетом будет отдаваться предпочтение

weight=0  

wrapuptime=15

; Максимальное количество абонентов в очереди

; (0 - без ограничений)

maxlen = 0

; Через сколько объявлять о приблизительном времени

; ожидания или позиции абонента в очереди (0 - выкл)

announce-frequency = 60

; yes|no|once – включение в анонсы времени ожидания

; абонента

announce-holdtime = no

; Периодическое сообщение, вроде «Спасибо, что позвонили,

; ожидайте, вам скоро ответят», чтобы абонет не думал,

; что о нем все забыли

periodic-announce = thank-you-message

; Проигрывать thank-you-message каждые 60 секунд ожидания

periodic-announce-frequency = 60

; Величина для округления значения времени

announce-round-seconds = 10

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

; прождал клиент

reportholdtime = yes

; При установке в yes, значение тайм-аута для агента будет

; сбрасываться, если от него будут получены сигналы BUSY

; или CONGESTION, например агент отметил вызов

timeoutrestart = no

; Описание агентов, обслуживающих очередь

member => Agent/3001

member => Agent/3002

; member => Agent/@1    ; Это группа агентов

При описании агента, через запятую, после ID (member => Agent/3002,1) может указываться параметр penalty. Сервер будет последовательно обзванивать агентов, начиная с penalty с меньшим номером, если они все заняты, то перейдет на агентов с более высоким значением penalty. Это можно использовать для обслуживания очереди в критические моменты. Например, у персонала с номером penalty = 0 отвечать на звонки – это основная обязанность, они и будут обслуживать очередь. Если количество звонков увеличится, будет привлечен дополнительный персонал с penalty = 1 и так далее.

Параметр strategy отвечает за распределение вызовов между агентами. По умолчанию используется значение ringall, при котором звонок производится по всем свободным номерам, пока один из них не ответит. Такой режим не всегда удобен, и можно рекомендовать только при критических нагрузках, поэтому в зависимости от ситуации его нужно изменить на другой. Например, в небольшом офисе подойдет вариант более справедливый rrmemory. В этом случае запоминается последний агент, которому был передан звонок, при поступлении следующего запроса поиск начнется со следующего по списку агента. Режим roundrobin несколько похож на rrmemory, только запоминается агент, с которого начинался поиск, и в следующий раз поиск начнется со следующего по списку. Возможны другие варианты: random (произвольный агент), leastrecent (отвечавший ранее других) и fewestcalls (получивший меньшее количество звонков в этой очереди).

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

Чтобы агенты могли регистрироваться, необходимо в extensions.conf добавить специальные расширения и занести сам экстеншн:

; номер для регистрации агента

exten=> 7001,1,AgentCallbackLogin(||${CALLERIDNUM}@callcenter)

[callcenter]

exten=> 911,1,Answer

exten=> 911,2,Ringing

exten=> 911,3,Wait(2)

exten=> 911,4,Queue(MyQueue)

exten=> 911,5,Hangup

; и номера телефонов

exten => 600,1,Dial(SIP/600)

; и так далее

После изменений в конфигурации не забываем перезагружать Asterisk:

$ sudo asterisk -r

CLI> reload

Сервер должен показать, что модуль app_queue.so готов к работе (True Call Queueing).

Теперь, чтобы зарегистрировать агента, набираем номер 7001 и по подсказкам системы вводим сначала ID = 3001 и #, затем пароль 1234 и #. При работе с некоторыми софтфонами (X-Lite и ZoIPer njxyj) Asterisk почему-то не определяет автоматически номер телефона, поэтому на третьем шаге может последовать запрос о номере, к которому следует привязать агента – 600 и #.

Если все сделано правильно, то будет проиграно сообщение «agent-loginok», сервер положит трубку, а в консоли появится сообщение:

Callback Agent '3001' logged in on 600@callcenter

Setting global variable 'AGENTBYCALLERID_600' to '3001'

Если в регистрации отказано и в консоли выдано сообщение:

Extension '600@callcenter' is not valid for automatic login of agent '3001'

проверьте еще раз все позиции номерного плана, в которые входят внутренний номер и агент. После регистрации агент будет поставлен в очередь на обработку поступающих звонков на номер 911. Если после соединения с 911 выдается сообщение:

Unable to join queue 'MyQueue'

то скорее всего на данный момент ни один из агентов не зарегистрирован. Позвонив повторно на номер 7001, можно сменить телефон, к которому будет привязан агент, или, нажав <#>, отменить регистрацию агента. При поступлении входящего звонка Asterisk поднимает трубку, переводя соединение в состояние ответа, и вызывает свободного в данное время агента. Если все номера заняты, звонившему может выдаваться информация о времени ожидания и приблизительном времени, когда ему ответят, и музыка.

Настройка музыки при ожидании

Слушать гудки, пока абонент не снял трубку, скучно, чтобы немного снять напряжение, можно установить мелодию, которая будет проиграна вместо гудков. В Asterisk в качестве источника звука можно использовать файлы в форматах WAV, MP3, UL, RAW и других, а также потоковое аудио. Формат WAV в версии 1.4.x используется по умолчанию и является предпочтительным, так как отнимает меньше системных ресурсов на конвертирование. Учитывая нагрузку на канал и качество связи, 8 бит часто вполне достаточно, использовать файлы с лучшим качеством не стоит. В ранних версиях для воспроизведения MP3-файлов необходимо было установить утилиту mpg123 или другую, используемую для преобразования mpeg в PCM. Сейчас разработчики Asterisk отказались от его использования, и для поддержки MP3 необходимо использовать пакет asterisk-addons. В поставке Asterisk уже есть несколько мелодий, которые находятся в каталоге /var/lib/asterisk/moh. В самом простом случае достаточно в musiconhold.conf указать новый класс, состоящий всего из нескольких директив:

[default]

mode => files

directory => /var/lib/asterisk/moh

random=yes

Класс default описывает ресурс для MON. В нем мы указали режим воспроизведения файлов, каталог, в котором находится музыка, и установили их случайное воспроизведение. Если файлы имеют специфический формат, который не может воспроизвести Asterisk, дополнительно следует использовать директиву «application». В качестве аргумента в «application» можно использовать и скрипты, умеющие воспроизводить музыку в определенном формате.

Вот собственно и все настройки. Как видите, использование Asterisk может помочь решить весьма непростую проблему обслуживания клиентов. Успехов.

  1. Платов М. Asterisk и Linux: миссия IP-телефония. Действие 1 //«Системный администратор», № 6, 2005 г. – C. 12-19.
  2. Платов М. Asterisk и Linux: миссия IP-телефония. Действие 2 //«Системный администратор», № 7, 2005 г. – C. 32-38.
  3. Платов М. Asterisk и Linux: миссия IP-телефония. Действие 3 //«Системный администратор», № 8, 2005 г. – C. 10-19.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru