Джим Меггелен - Asterisk™: будущее телефонии Второе издание
Протокол открытого взаимодействия OSP (Open Settlement Protocol) официально описан в ETSI TS 101 321, документе Европейского института стандартов по телекоммуникациям (European Telecommunication Standards Institute, ETSI), являющемся результатом деятельности рабочей группы TIPHON. Похоже, OSP - это еще одна попытка применить старое мышление телекоммуникационной отрасли к нарушающим установившийся порядок технологиям.
oss.conf
С помощью файла oss.conf Asterisk конфигурируется для использования драйвера OSS (Open Sound System - открытая звуковая система), чтобы сделать возможным обмен информацией со звуковой картой по каналу CONSOLE. Обратите внимание, что сегодня предпочтительным интерфейсом для канала CONSOLE является ALSA.
phone.conf
Файл phone.conf используется для конфигурации платы Quicknet PhoneJACK. Плата PhoneJACK предоставляет нечто подобное интерфейсу FXS с той точки зрения, что к ней можно подключить аналоговый телефон и передавать вызовы через Asterisk.
Файл privacy.conf используется для управления максимальным числом попыток ввода пользователем его 10-значного телефонного номера в приложении PrivacyManager(). Приложение PrivacyManager() определяет, задан ли Caller ID (ID звонящего) для входящего вызова. Абонент делает столько попыток ввести свой 10-значный номер, сколько указано в privacy.conf; приложение задает для переменной канала PRIVACYMGR STATUS значение SUCCESS или FAILED. Если Caller ID задан, приложение не выполняет никаких действий.
Приложение PrivacyManager() также может принимать аргументы в диалплане. Таким образом, можно оставить значение в памяти, а не использовать операцию ввода/вывода на диск для чтения конфигурационного файла, но это будет иметь смысл только при интенсивном использовании данного приложения (много вызовов в секунду).
queues.conf
Asterisk предоставляет базовую функциональность центра обработки вызовов через свою систему очередей вызовов. Однако те, кто использовал ее в более ответственных средах, часто сообщают о необходимости дополнительной настройки решений. Эта настройка может быть выполнена в файле queues.conf.
В разделе [general] файла queues.conf располагаются настройки, которые будут применяться ко всем очередям вызовов. Если для параметра persistentmembers присвоено значение yes, участник, добавляемый в систему посредством приложения AddQueueMember() или интерфейса Asterisk Manager, будет храниться в AstDB и, следовательно, сохраняться при перезагрузках системы.
Параметр autofill (автозаполнение) позволяет Asterisk более эффективно распределять звонки между участниками обработки очереди вызовов, особенно если в очереди находятся несколько вызывающих абонентов и несколько агентов обработки вызовов могут принять звонок. Рекомендуется задавать для autofill значение yes.
Другой общий параметр queues.conf - MonitorType (тип записи разговора). Если задано значение MixMonitor, входящий и исходящий звуковые потоки будут записываться вместе. Если задано значение Monitor, будет использоваться более старый метод записи входящего и исходящего аудиопотоков в разных файлах.
privacy.conf
Далее можно описать одну или более очередей, указывая имя очереди в квадратных скобках ([]). Для каждой очереди вызовов доступны следующие параметры:
musiconhold (музыка во время ожидания)
Этот параметр позволяет задавать класс музыки во время ожидания (сконфигурированный в файле musiconhold.conf), используемый для очереди.
announce (приветствие)
Когда вызов представляется участнику обработки очереди вызовов, этому агенту будет воспроизведено приглашение, заданное параметром announce, перед установлением соединения с вызывающим абонентом. Это может быть полезным для агентов, зарегистрированных в нескольких очередях. Можно задать или полный путь к файлу, или путь относительно папки /var/lib/asterisk/sounds/.
strategy (стратегия)
Asterisk может использовать шесть стратегий распределения вызовов между агентами:
ringall (звонить всем)
Очередь звонит всем доступным агентам и устанавливает соединение с агентом, ответившим первым (это по умолчанию).
roundrobin (циклический) - устаревший
Очередь последовательно перебирает всех агентов до тех пор, пока не найдет того, кто может принять вызов. roundrobin не учитывает загруженности агентов. Также, поскольку roundrobin всегда начинает с первого агента в очереди, эта стратегия подходит только в среде, где агенты более высокого ранга должны обрабатывать все вызовы, и только в случае их занятости принять вызов могут агенты с более низким рангом.
leastrecent (самый давний)
Вызов направляется на обработку агенту, который не получал вызовы дольше всех.
fewestcalls (меньше всего вызовов)
Вызов направляется на обработку агенту, который получил меньше всего звонков. Эта стратегия не учитывает фактической загруженности агента; она учитывает только количество принятых им вызовов (например, агент, принявший 3 вызова по 10 мин каждый, будет предпочтительнее агента, принявшего 5 вызовов по 2 мин каждый).
random (случайный)
Как следует из имени этого параметра, выбор агента осуществляется случайным образом. Для небольшого центра обработки вызовов эта стратегия, вероятно, наиболее предпочтительная.
rrmemory
Очередь перебирает список обработчиков очереди вызовов, отслеживая, кто из них получил вызов последним. При поступлении следующего вызова Asterisk начнет с этого участника. (Эта стратегия известна как циклическая память (round-robin memory)). Она обеспечивает более или менее равномерное распределение вызовов между агентами.
servicelevel (уровень обслуживания)
В центре обработки вызовов уровень обслуживания представляет максимальное время ожидания вызывающего абонента перед тем, как его звонок будет передан на обработку агенту. Например, если для servicelevel задано значение 60 и показатель уровня обслуживания равен 80%, это означает, что 80% поступивших в очередь вызовов были переданы агентам в течение менее 60 с.
context
Если для очереди задан контекст, вызывающий абонент, нажав всего одну цифру, сможет выйти на соответствующий добавочный номер в заданном контексте, если тот существует. Это действие выводит вызывающего абонента из очереди вызовов, то есть он потеряет свое место в очереди - об этом необходимо помнить при использовании данной функции.
timeout
Значение timeout определяет максимальную продолжительность попыток дозвониться агенту (в секундах), по истечении которого агент будет признан недоступным, а вызов будет возвращен в очередь.
retry
По истечении времени ожидания значение параметра retry определяет, сколько секунд необходимо подождать, прежде чем представлять вызов вновь доступному агенту.
weight (вес)
Параметр weight определяет ранг очереди вызовов. Если вызовы ожидают в нескольких очередях, первыми агентам будут предлагаться очереди с большим значением weight. При проектировании очередей вызовов необходимо помнить следующее: эта стратегия может привести к тому, что вызов из очереди с самым низким весом никогда не получит ответа. Всегда необходимо гарантированно обеспечить перевод вызовов из очередей с более низким весом в очереди с более высоким весом, чтобы не допустить бесконечного ожидания ответа.
maxlen (максимальная длина)
maxlen - это максимальное количество вызовов, которое может быть добавлено в данную очередь, прежде чем вызов перейдет к следующему приоритету текущего добавочного номера.
announce-frequency (частота объявлений)
Значение announce-frequency (задаваемое в секундах) определяет, как часто вызывающему абоненту объявляется его место в очереди вызовов и предполагаемое время ожидания.
announce-holdtime (объявить время ожидания)
Существует три допустимых значения этого параметра: yes, no и once. Параметр announce-holdtime определяет, должно ли быть включено предполагаемое время ожидания в объявление места в очереди вызовов. Если задано значение once, оно будет озвучено для вызывающего абонента только один раз.
monitor-format (формат записи)
Этот параметр принимает три возможных значения: wav, gsm и wav49. Активируя эту опцию, вы сообщаете Asterisk о своем желании записывать все выполненные вызовы в очереди в заданном формате. Если эта опция не задана, звонки не будут записываться.
monitor-join (объединить запись)
Приложение Monitor() в Asterisk обычно выполняет запись каждого из направлений разговора в отдельный файл. Задавая параметру monitor-join значение yes, мы указываем Asterisk объединять эти файлы в конце разговора. Этот параметр следует задавать, только если задан параметр MonitorType для приложения Monitor.
joinempty
Этот параметр принимает три значения: yes, no и strict. Позволяет определять возможность добавления вызывающих абонентов в очередь вызовов на основании статуса участников обработки очереди. Опция strict запретит добавление вызывающих абонентов в очередь, если все участники обработки вызовов недоступны.
leavewhenempty (покинуть, если пустая)
Этот параметр определяет, будут ли ожидающие ответа вызывающие абоненты удалены из очереди вызовов при возникновении условия, не допускающего добавления абонента в очередь (то есть когда все ваши агенты вышли из системы и ушли домой).