• Главная
  • Карта сайта
Не найдено

Asterisk: організуємо автоматичний розподіл викликів

Стаття надрукована в журналі

Внизу посилання на відео

Від оперативності персоналу, що працює з клієнтами, залежить думка про саму організацію в цілому. Якщо клієнт довго буде дзвонити в службу підтримки, це навряд чи позитивно позначиться на іміджі компанії. Використання популярного VoIP-сервера IP-PBX Asterisk допоможе вирішити цю проблему.

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

Asterisk може працювати як система, автоматично розподіляє виклики (ACD - Automatic Call Distribution). У службах підтримки це дуже корисна можливість, користувач дзвонить на один з номерів, а на дзвінок відповідає вільний в даний час співробітник.

Реалізується така функціональність за допомогою агентів. Агент активуючи в системі, використовуючи спеціальну процедуру, оголошує себе доступним для прийому викликів. Кількість агентів нічим в общем-то не обмежена. Кожен агент при налаштуванні отримує ідентифікаційний номер. Тут слід враховувати, що номери телефонів та ID агента - це не одне і те ж.

Asterisk-агенти не прив'язані до одного номеру і можуть підключатися з будь-яких номерів. Для цього користувач повинен подзвонити за вказаним внутрішнім номером іввесті послідовно за підказками системи свій ID, пароль і номер телефону (в кінці кожного дії необхідно натискати #), до якого його потрібно прив'язати. Тобто агент - це як би ще один віртуальний номер телефону, але подзвонити по ньому може тільки сервер. До речі, тому агентів можна використовувати і в тому випадку, коли співробітники не мають постійного робочого місця, призначивши кожному ID агента, можна завжди його «зловити» незалежно від того, який телефон він зараз використовує.

За замовчуванням всі конфігураційні файли сервера 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.

Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью