Asterisk настройка звонков по времени

Голосовое дерево

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

Приводим наш диалплан к следующему виду:

vi /etc/asterisk/extensions.conf

exten => 333,1,Answer()
exten => 333,2,Background(basic-pbx-ivr-main)
exten => 333,3,WaitExten(5)
exten => 1,1,Goto(managers,s,1)
exten => 2,1,Goto(support,s,1)

exten => s,1,Ringing
 same => n,Wait(1)
 same => n,Background(/var/lib/asterisk/sounds/wav/managers)
 same => n,Waitexten(5)
exten => 1,1,Dial(SIP/201)
exten => 2,1,Dial(SIP/202)
exten => 0,1,Goto(outcaling,333,1)

exten => s,1,Ringing
 same => n,Wait(1)
 same => n,Background(/var/lib/asterisk/sounds/wav/support)
 same => n,Waitexten(5)
exten => 1,1,Dial(SIP/101)
exten => 2,1,Dial(SIP/102)
exten => 0,1,Goto(outcaling,333,1)

* где:

  • 333 — внутренний номер, позвонив на который мы услышим голосовое меню.
  • WaitExten(5) — система ожидает ввода номера в течение 5 секунд.
  • 1,1,Goto(managers,s,1) — если абонент ввел 1, переходим к диалплану managers, пункту s,1.
  • 2,1,Goto(support,s,1) — если абонент ввел 2, переходим к диалплану support, пункту s,1.
  • Background(/var/lib/asterisk/sounds/wav/managers) — запись голосового меню для managers.
  • Background(/var/lib/asterisk/sounds/wav/support) — запись голосового меню для support.

Перечитываем настройки диалплана:

asterisk -x «dialplan reload»

Настройка IVR в FreePBX 13

”Здравствуйте, вы позвонили в компанию «Company Name», для соединения с отделом продаж – нажмите 1, если вы являетесь партнером нашей компании – нажмите 2, по вопросам технической поддержки – 3. Для соединения с оператором – оставайтесь на линии”. Наверное, сейчас уже ни одна компания не осталась без подобного сценария обработки входящих звонков. Короткие гудки в трубке, прежде чем Вам ответит сотрудник компании, в которую Вы пытаетесь дозвониться – теперь уже большая редкость. Всё это стало возможным с появлением цифровых АТС, а функционал, пример которого был приведен выше, называется IVR (Interactive Voice Response) в русской литературе – голосовое меню. В сегодняшней статье, мы рассмотрим функционал IVR на примере IP-АТС Asterisk и FreePBX 13.

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

В больших кол-центрах к организации IVR подходят серьёзно, учитываются все факторы вплоть до психологического. От того насколько грамотно подобран голос диктора, музыкальное сопровождение и информация сообщения, зависит расположение клиента, который дозвонился в компанию и его лояльность. Информация, которая сообщается в меню IVR должна быть изложена лаконично, дружелюбно и емко. Поэтому в первую очередь – необходимо написать текст IVR и его сценарий. Общая рекомендация – ограничиться несколькими опциями, т.е не стоит задавать слишком большое меню с 6 и более опциями, поскольку в нем попросту будет сложно ориентироваться.

Принцип настройки

IVR настраивается в плане набора Aterisk (dialplan) — в конфигурационном файле extensions.conf.

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

Записать голосовое приветствие с просьбой ввода номера можно с помощью различных программ звукозаписи. Asterisk работает с форматами .waw, .gsm. В случае наличия другого формата, можно воспользоваться пакетом для конвертации — sox. Также можно загрузить и установить готовый список голосов на русском, который частично, можно использовать.

Freepbx13 распределение звонков по времени

Модуль, отвечающий за распределение вызовов по времени – Time Conditions. Данный модуль представляет из себя набор правил, в который включены временные группы (Time Group).В модуле настраиваются два условия: первое – если выполняются правила Time Group, а второе, если данные правила не выполняется. Модуль Time Conditions чаще всего применяется для маршрутизации вызовов в зависимости от рабочего времени в компании, например, маршрут для вызовов с 10:00 до 19:00 на секретаря, а после и по выходным, вызовы маршрутизируются на заранее записанное голосовое сообщение.

Важно отметить, что если вы решили настроить данный модуль, то стоит начать с настройки Time Group. Итак, приступаем к настройке

Для этого, подключитесь к интерфейсу FreePBX в правами администратора, и перейдите во вкладку Applications и далее во вкладку Time Conditions

Итак, приступаем к настройке. Для этого, подключитесь к интерфейсу FreePBX в правами администратора, и перейдите во вкладку Applications и далее во вкладку Time Conditions

Перейдя в интерфейс настройки, нажимаем Add Time Condition и добавляем новое условии маршрутизации по времени:

Разберемся конкретнее с каждым из параметров настройки:

  • Time Condition Name — Укажите название данного условия. Удобнее всего давать имена в соответствие с логикой работы данных кондиций. Например, «Work Hours» для рабочего времени и «Holidays» для выходных.
  • Override Code Pin — В FreePBX13 существует Feature Code, по умолчанию это *27. С его помощью можно менять временные кондиции (Time Conditions). Поле Override Code Pin позволяет ввести пин-код, который будет запрошен у пользователя, который попытается изменить это временное условие.
  • Invert BLF HintДа/Нет. Для каждой из временных кондиций, создается BLF хинт (hint). Соответственно, ка телефонном аппарате с поддержкой BLF можно отображать статус данной временной кондиции. По умолчанию, (Invert BLF Hint = No) – это означает, что в случае, если данный временная кондиция не совпадает, то в BLF выставляется статус «INUSE», а это как правило, красная лампочка. В случае, если кондиция совпадает с временной группой, то выставляется статус «NOT_INUSE», а это, как правило зеленая лампочка. В случае, если параметр Invert BLF Hint = Yes, то указанные выше позиции определяется в обратном порядке.
  • Change Override — Текущий статус перезаписи временного условия отображается в выпадающем меню. Если это новое временное условие, которое ещё не сохранено, статус будет НЕИЗВЕСТНО. В ином случае, вы увидите текущий статус. Выпадающее меню дает вам возможность изменять статус перезаписи:
    1. Unchanged — статус перезаписи не будет изменен.
    2. Reset Override — удаляет любой статус перезаписи, который отмечен.
    3. Temporary Matched / Unmatched — создает временную перезапись, пока текущий промежуток времени не истечет.
    4. Permanent Matched / Unmatched — создает постоянную перезапись, пока перезапись не будет удалена.
  • Time Group — Временная группа, в которой отмечается временной промежуток, дни недели и месяцы. Именно на базе Time Group происходит маршрутизация вызовов в Time Condition
  • Destination non-matches — Направление для вызова, если вызов не попал под правила настроенные в Time Group

После внесения всех настроек необходимо нажать Save, а затем Apply Config.

Маршрутизация звонков по времени в Asterisk

Приведу пример маршрутизации звонков по времени в Asterisk. Допустим в файле /etc/asterisk/extensions.conf есть настроенный контекст для транка со следующими параметрами:

И чтобы разрулить звонки по времени на разные телефоны укажем для контекста этого транка только вложенные контексты:

По сути daytime, nighttime, sunday это только названия контекстов, для которых прописано время в контексте , их можно называть как угодно.

И потом в этих отдельных контекстах уже пропишем нужные екстеншены. То есть, днем:

Можно также например создать контекст holiday с праздничными днями:

Для тех кто хочет расписать подробнее по дням, приведу список дней на английском: mon — Monday — Понедельник tue — Tuesday — Вторник wed — Wednesday — Среда thu — Thursday — Четверг fri — Friday — Пятница sat — Saturday — Суббота sun — Sunday — Воскресенье

Аналогично сокращаются до трех букв и названия месяцев.

источник

Таймаут по времени ожидания и неправильные действия

Добавим обработку неправильно введенной цифры и превышение времени ожидания. В вышеуказанном примере просто происходит отбой звонка.

Данное поведения указывается в диалплане с помощью ключей t и i. Добавим их в наш конфиг:

vi /etc/asterisk/extensions.conf

exten => 333,1,Answer()
 same => n,Background(basic-pbx-ivr-main)
 same => n,WaitExten(5)
exten => 1,1,Goto(managers,s,1)
exten => 2,1,Goto(support,s,1)
exten => t,1,Dial(SIP/101)
exten => i,1,Background(invalid)
 same => n,Goto(outcaling,333,3)

 * где t,1,Dial(SIP/101) — позвонить по номеру 101, если будет превышен таймаут ожидания; i,1,Background(invalid) — сообщить о том, что введен неправильный номер.

Добавление операторов к очереди (агентов)

Пользователей, которые отвечают на звонки очереди называют агентами или операторами. Есть два типа агентов — статические и динамические. Первые прописываются в конфигурационном файле queues.conf, вторые — могут присоединятся к очереди, становясь на некоторое время оператором.

Статические агенты

Для создания статического оператора, открываем конфигурационный файл очереди:

vi /etc/asterisk/queues.conf

В настройках очереди добавляем:

strategy = ringall
member => SIP/101,1

* в данном примере, мы добавили оператора к нашей очереди. Это sip агент с именем 101. 1 на конце — пенальти (используется для выставления приоритета при использовании некоторых стратегий).

Перечитываем все конфигурационные файлы:

asterisk -x «core reload»

Динамические агенты

Динамические агенты могут присоединиться к очереди в любой момент набором специального сочетания кнопок на телефонном аппарате. Настройка сервера выполняется в конфигурационном файле диалплана:

vi /etc/asterisk/extensions.conf

exten => *999#,1,Verbose(2,Adding dynamic member to support queue)
 same => n,Set(MemberInfo=${CHANNEL(channeltype)}/${CHANNEL(peername)})
 same => n,AddQueueMember(support,${MemberInfo})
 same => n,Playback(agent-loginok)
 same => n,Hangup()
exten => *888#,1,Verbose(2,Removing dynamic member from support queue.)
 same => n,Set(MemberInfo=${CHANNEL(channeltype)}/${CHANNEL(peername)})
 same => n,RemoveQueueMember(support,${MemberInfo})
 same => n,Playback(agent-loggedoff)
 same => n,Hangup()

* в данном примере, если агент набирает *999#, он присоединяется к очереди и может принимать вызовы. При наборе *888# агент выходит из очереди.
* Verbose — вывод в консоль информации; Set — задает значение переменной, в данном примере, MemberInfo; AddQueueMember/RemoveQueueMember — соответственно, добавляет к очереди агента и удаляет из нее; Playback — проигрывает голосовой сигнал; Hangup — дает сигнал отбоя.

Аутентификация агентов

1. Общий пароль для всех агентов

Можно сделать так, чтобы Asterisk требовал от агентов ввод пароля для присоединения к очереди. Для этого наш диалплан приводим к такому виду:

vi /etc/asterisk/extensions.conf

exten => *999#,1,Verbose(2,Adding dynamic member to support queue)
 same => n,Authenticate(1234)
 same => n,Set(MemberInfo=${CHANNEL(channeltype)}/${CHANNEL(peername)})
 same => n,AddQueueMember(support,${MemberInfo})
 same => n,Playback(agent-loginok)
 same => n,Hangup()

* где Authenticate — запрос пароля, в данном примере, 1234.

2. Индивидуальные пароли для каждого агента

Если необходимо, чтобы каждый агент перед входом вводил свои номер и пароль, необходимо воспользоваться приложением VMAuthenticate (аутентификация по электронному почтовому ящику). Настройку начнем с правки диалплана:

vi /etc/asterisk/extensions.conf

exten => *999#,1,Verbose(2,Adding a member to the cc_ege_support queue.)
 same => n,Read(AGENT_USERID,agent-user)
 same => n,VMAuthenticate(${AGENT_USERID}@vmauth)
 same => n,Set(MemberInfo=${CHANNEL(channeltype)}/${CHANNEL(peername)})
 same => n,AddQueueMember(support,${MemberInfo})
 same => n,Playback(agent-loginok)
 same => n,Hangup()

* Read — запрашиваем данные у агента (agent-user — голосовой файл), и записываем в переменную AGENT_USERID; VMAuthenticate — запрашиваем пароль для почтового ящика ${AGENT_USERID} с контекстом vmauth.

Добавляем почтовые ящики:

1001 => 1234, dmosk, [email protected]
1002 => 5678, dmosk2, [email protected]

* vmauth — контекст (его мы указали в диалплане); 1001/1002 — номера агентов; 1234/5678 — пароли.

Для применения настроек перечитываем диалплан:

asterisk -x «dialplan reload»

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: