Урок 25 Маршрутизация исходящих вызовов — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
 
(не показано 30 промежуточных версии этого же участника)
Строка 2: Строка 2:
 
| [[Уроки | Наверх]]
 
| [[Уроки | Наверх]]
 
| [[Урок 24 IVR сценарий входящей маршрутизации | К предыдущему уроку]]
 
| [[Урок 24 IVR сценарий входящей маршрутизации | К предыдущему уроку]]
|
+
| [[Урок 26 IVR сценарий переключения|К следующему уроку]]
 
|-
 
|-
 
|}
 
|}
Строка 18: Строка 18:
 
* Система может самостоятельно инициировать звонок, например, через служебный сценарий, сервис автодозвона или менеджер задач.
 
* Система может самостоятельно инициировать звонок, например, через служебный сценарий, сервис автодозвона или менеджер задач.
  
В каждом из этих сценариев в первую очередь определяется тип набранного номера: внутренний или внешний. Если набран внешний - необходимо определить по каким линиям пойдет набор, это требуется для оптимизации расходов. Например, для совершения междугородних вызовов по всей России потребуется особый тарифный план, а в сценариях потребуется обозначить эти линии. Для этого выполняются необходимые проверки, например на длину номера, время совершения звонка, производятся запросы во внешние сервисы и обращение к базам данных. В итоге определяется выбор направления и совершается звонок. Особое внимание следует обратить защите от несанкционированных звонков на международные или платные короткие номера - их желательно запретить полностью или установить пароль для ввода.
+
В каждом из этих сценариев в первую очередь определяется тип набранного номера: внутренний или внешний. Если набран внешний - необходимо определить по каким линиям пойдет набор, это требуется для оптимизации расходов. Например, для совершения междугородних вызовов по всей России потребуется особый тарифный план от крупного провайдера связи, а звонки на мобильные дешевле совершать через специальную SIM-карту в SIP-GSM шлюзе. Для этого выполняются необходимые проверки, например на длину номера, время совершения звонка, производятся запросы во внешние сервисы и обращение к базам данных. В итоге определяется выбор направления и совершается звонок. Особое внимание следует обратить защите от несанкционированных звонков на международные или платные короткие номера - их желательно запретить полностью или установить пароль доступа.
  
  
Строка 24: Строка 24:
  
 
IVR сценарий маршрутизации исходящих вызовов - системный сценарий для набора внутренних и внешних номеров пользователями системы. Сценарий запускается во время набора номера с внутренней линии (IP-телефон, гарнитура, USB-телефон).  
 
IVR сценарий маршрутизации исходящих вызовов - системный сценарий для набора внутренних и внешних номеров пользователями системы. Сценарий запускается во время набора номера с внутренней линии (IP-телефон, гарнитура, USB-телефон).  
 +
 +
<span style="color:red">ВНИМАНИЕ: В этом и есть отличие, между внутренними и внешними линиями. Любой вызов с внешней линии попадает в IVR сценарий входящей маршрутизации, а вызовы с внутренних линий - в IVR сценарий исходящей маршрутизации.
  
 
Начиная проектирование сценария необходимо принять во внимание, что большинство IP-телефонов и софтфонов могут сразу передавать информацию о набранном номере еще до входа в сценарий, а аналоговые телефоны и USB-телефоны набирают номер уже после соединения. Если в первом случае можно определить набранный номер с помощью функции "'''Внешний номер (CalledId)'''", то во втором - придется реализовывать набор номера в сценарии. Таким образом, мы получаем следующие блоки:
 
Начиная проектирование сценария необходимо принять во внимание, что большинство IP-телефонов и софтфонов могут сразу передавать информацию о набранном номере еще до входа в сценарий, а аналоговые телефоны и USB-телефоны набирают номер уже после соединения. Если в первом случае можно определить набранный номер с помощью функции "'''Внешний номер (CalledId)'''", то во втором - придется реализовывать набор номера в сценарии. Таким образом, мы получаем следующие блоки:
Строка 40: Строка 42:
  
  
Воспользуемся компонентом «присвоение», в котором создадим новую переменную сценария номер.
+
Компонент "'''НОМЕР=CalledID'''". Определяет набранный номер и сохраняет его в переменную.
Размещение переменной локальное, тип — строковая.
+
* Переменной "'''НОМЕР'''" (строка) присваиваем значение функции '''CalledID(внешний номер)'''
В качестве значения указываем функцию CalledID(внешний номер),которая вернет набранный номер.
+
  
[[Файл:Ats3.png|center]]
+
Компонент "'''Номер пусто?'''". Маршрутизирует пользователя на блок ввода номера, если набранный номер пуст.
 +
* Аргумент 1 - переменная "'''НОМЕР'''"
 +
* Аргумент 2 - пустая строка
 +
* Тип сравнения - "'''='''"
  
  
Далее переходим к компоненту сравнение в которым проанализируем наличие набранного номера.
+
<center>[[Файл:Ats3.png]][[Файл:Ats4.png]]</center>
В качестве аргумента 1 выбираем ранее созданную переменную «Номер», в качестве аргумента 2 оставляем пустоту.
+
 
Тип сравнения — равенство(=).
+
 
Таким образом мы будем сравнивать набранный номер с пустотой.
+
Если равенство не выполнится — это будет означать,что некий набранный номер существует, мы сразу перейдем к блоку анализа набранного номера с последующей маршрутизацией.
Соответственно,если набранный номер равен пустоте это означает что устройство никакую информацию нам не передало, и нам необходимо организовать набор номер,на который в дальнейшем осуществим вызов.
+
Если равенство не выполнится — это будет означать,что некий набранный номер существует, мы сразу перейдем к 3ему блоку, блоку анализа набранного номера с последующей маршрутизацией.
+
  
[[Файл:Ats4.png|center]]
 
  
  
 
===Блок: Набор номера в сценарии===
 
===Блок: Набор номера в сценарии===
  
Во втором блоке мы рассмотрим каким образом реализовать набор номера, для последующего вызова.
+
Если набранный номер равен пустоте это означает что устройство никакую информацию нам не передало, а значит необходимо вручную организовать набор номера.
  
Воспользуемся компонентом воспроизведение с преднабором.
+
Компонент "'''Начинаем собирать номер'''". Используется воспроизведение с преднабором, цель которого получить первый цифру набираемого номера.  
В качестве аудио файла выбираем длинный гудок АТС — city.
+
* Файл - выберем файл с длинным гудком, '''snd_city_60_50sek.wav'''. Файл можно найти в папке '''\Oktell\Server\Snd'''
Символы прерывания указывать не будем,далее переменная — номер, в нее мы будем производить набор номера,очищать буфер оставляем да, максимальное время 20 и более секунд.
+
* Буфер для DTMF - переменная "НОМЕР"
Далее указываем количество символов,которые запишутся в переменную в рамках данного компонента - выставляем 1.
+
* Очистить буфер - Да
Затем назначаем переход к следующему компоненту — компонент до ввод, в котором мы продолжим собирать номер.
+
* Макс время, с - 20
Так же назначаем переход по таймауту, назначаем на "Обрыв связи".
+
* Количество символов - 1, определяет минимальное количество символов для набора номера.  
 +
* Переход - на компонент "Начинаем собирать номер"
 +
* Переход, таймаут - на компонент "'''Обрыв связи'''". Если в течении 20 секунд (параметр Макс время, с) пользователь не набрал ни одного символа, сценарий завершается.  
  
[[Файл:Ats5.png|center]]
 
  
 +
Компонент "'''+1 цифра'''". Производит донабор номера - компонент принимает следующую цифру и добавляет ее в переменную "НОМЕР"
 +
*Буфер для DTMF - переменная "НОМЕР"
 +
*Очистить буфер -  Такая настройка поможет записывать полученные символы в конец переменной не затирая предыдущее значение.
 +
* Макс время, с - 3, по истечению этого времени считается что набор номера произведен.
 +
* Количество символов - 1
 +
* Переход - на компонент "Пауза 2"
 +
* Переход, таймаут - на компонент "Длина номера".
  
Далее переходим к компоненту преднабор, с помощью которого произведем донабор номера.
+
Компоненты "'''Пауза 2'''" и "'''Пауза 3'''" с нулевой задержкой позволяют пользователю набирать столько цифр, сколько он пожелает. Как только пользователь перестанет набирать символы, то по истечению 3х секунд (параметр Макс время, с) сценарий будет считать, что номер набран и перейдет к следующему блоку. С помощью такой схемы мы зацикливаем ввод, давая таким образом пользователя по 3 секунды на ввод каждой цифры.
Символы прерывания так же не указываем.
+
В качестве переменной выбираем ту же самую переменную номер,что и в предыдущем компоненте.
+
Очищать буфер выставляем — НЕТ. Такая настройка поможет записывать полученные символы в конец переменной не затирая предыдущее значение.
+
Далее — максимальное время 3 секунды,
+
количество символом -1.
+
Переход на компонент «Пауза»,Переход,таймаут — на компонент «меню сравнения» для дальнейшего анализа.
+
  
[[Файл:Ats6.png|center]]]
 
  
 +
<center>[[Файл:Ats5.png]][[Файл:Ats6.png]]</center>
  
В компоненте пауза выставляем 0 задержку,после чего осуществляем переход снова на компонент доввод,который мы использовали ранее.
 
С помощью такой схемы мы зацикливаем ввод, давая таким образом пользователя по 3 секунды на ввод каждой цифры.
 
Далее переходим к следующему блоку.
 
  
 
===Блок: Анализ номера и маршрутизация вызова===
 
===Блок: Анализ номера и маршрутизация вызова===
  
[[Файл:Ats7.png|center]]
+
Данный блок фактически является основной частью сценария. Здесь необходимо произвести анализ набранного номера и маршутизировать коммутацию на соответствующие направления. Если вам и придется делать какие-либо изменения, то, как правило, вы будет производить их именно в этой части сценария.  
  
  
В данном блоке мы произведем конечный анализ набранного номера и распределим коммутацию на соответствующие направления.
+
[[Файл:Урок25-004.png|center]]
  
Компонент меню сравнения.
 
В данном компоненте в качестве аргумента выбираем выражение, где с помощью строкой функции длина строки получаем длину набранного номера.
 
т.е.
 
  
[[Файл:Ats8.png|center]]
+
Компонент "'''Длина номера'''" - меню, задача которого определить тип набираемого номера и направить пользователя в соответствующую ветку.
 +
* Аргумент - выражение '''Len( [НОМЕР] )''' , которое определяет длину набранного номера
 +
* Значения:
 +
: 3 - на компонент "->".  
 +
* Переход, прочее - на компонент "Внешние"
  
 +
Таким образом, если длина номера составляет 3 символа,осуществляем переключения на внутренние номера. Если же аргумент принимает прочие значения,то осуществляем переход на компонент переключение на внешние линии, с указанием направлений.
  
Далее в свойства значения указываем значения,которые может принять аргумент и назначаем соответствующие переходы.
+
<span style="color:red">ВНИМАНИЕ: Если у вас используются четырехзначные внутренние номера, вам нужно добавить в меню обработку длины номера в 4 символа. Здесь же иногда приходится добавлять ветку по длине номера в 10 символов - когда менеджеры набирают номер без "8" (или "7") спереди номера, например, 9171112233. В этом случае нужно преобразовать номер, добавив '''8''' с помощью выражения: '''8'+[НОМЕР]''.  
Таким образом, если длина номера составляет 3 символа,осуществляем переключения на внутренние номера —  на компонент «переключение»
+
Если же аргумент принимает прочие значения,то осуществляем переход на компонент переключение на внешние линии, с указанием направлений.
+
  
[[Файл:Ats9.png|center]]
 
  
 +
[[Файл:Урок25-002.png|center]]
  
[[Файл:Ats10.png|center]]
 
  
Далее рассмотрим свойства компонента переключение на внешние линии.
+
Компонент "'''ВНЕШНИЕ'''" - переключение на внешние линии.
В качестве номера указываем нашу переменную номер.
+
*Номер - переменная "НОМЕР".
Тип набора — без преобразований.
+
*Тип набора — Без преобразований.
Тип вызова — обычный
+
*Тип вызова — Обычный
Направления — указываем внешние линии через которые должны осуществляться звонки на внешнюю сеть.
+
*Направления — указываем внешние линии через которые должны осуществляться звонки на внешнюю сеть. По умолчанию, установлено "Все внешние линии".  
Далее переходим к свойству коммутировать сразу — выбираем: нет,прослушивать медиа-поток.
+
*Коммутировать сразу — выбираем: нет,прослушивать медиа-поток.
Затем переход  назначаем на стоп.
+
Все остальные переходы на воспроизведение.
+
Далее рассмотрим переключение внутрь.
+
Назначение — внутрь
+
Номер — переменная содержащая номер.
+
Тип вызова — обычный.
+
Переходим к очереди ожидания — выставляем ДА
+
Время ожидания ответа 40 секунд.
+
Затем переход назначаем на стоп, остальные переходы на воспроизведение.
+
  
[[Файл:Ats11.png|center]]
+
Значение "'''Нет, прослушивать медиа-поток'''" означает, что пока внешний абонент не поднимет трубку (ответ 200 OK), внутреннему пользователю Oktell будет воспроизводить гудки. Если звонок неудачный в статистике АТС вы увидите неудачную попытку и записи разговора не будет. Если выставить свойству значение "'''Нет, воспроизводить мелодию'''", то вместо собственных гудков Oktell будет воспроизводить указанный файл.  
  
 +
Значение "'''Да'''" (то есть коммутировать сразу) означает полную передачу звука от провайдера, а также сразу засчитывание данной попытки как полноценной коммутации. В статистике АТС вы увидите полноценный разговор (хотя по факту его не было, например не подняли трубку). Отличие от предыдущего значения в том, что все звонки считаются успешными. Как правило, это портит статистику и применяется в редких случаях.
 +
 +
*Переход - на компонент "Стоп 2"
 +
*Все остальные переходы - на компонент воспроизведения "'''busy'''"
 +
 +
<span style="color:red">ВНИМАНИЕ: Как правило, перед этим переключением находится еще ряд различных сравнений и функций, определяющих первые цифры номера, на какое направление его выгоднее направить. Возможно, обращение к внешним сервисам или базе данных для реализации какого-либо функционала. Подробнее можно прочитать в статье [[Выбор исходяшей линии по маске]].
 +
 +
Компонент "'''ВНУТРЕННИЕ'''" - переключение на внутренние линии.
 +
*Назначение — Внутрь
 +
*Номер - переменная "НОМЕР"
 +
*Тип вызова - Обычный
 +
*Очередь ожидания — Нет
 +
*Время ожидания ответа - 20.
 +
*Переход - на компонент "Стоп 2"
 +
*Все остальные переходы - на компонент воспроизведения "'''busy'''"
 +
 +
 +
[[Файл:Урок25-003.png|center]]
 +
 +
 +
Компонент "'''busy'''" - воспроизводит короткие гудки в случае неудачного соединения
 +
*Режим — Файл полностью.
 +
*Файл - выберем файл с длинным гудком, '''snd_busy_120sek.wav'''. Файл можно найти в папке '''\Oktell\Server\Snd'''
 +
Переход - на компонент "Обрыв связи".
 +
 +
Таким образом, в случае отрицательного перехода,например вызываемый абонент не отвечает или не найдены внешние свободные линии — пользователь Oktell услышит короткие гудки, после чего сможет положить трубку.
 +
 +
<span style="color:red">ВНИМАНИЕ: Вместо коротких гудков вы можете вставить файл с записью причины отбоя. Например, после неудачного соединения вам в трубку произносится "К сожалению, номер занят. Чтобы оставить голосовое сообщение нажмите 1". Здесь можно использовать любой другой функционал, например сервис автодозвона или сервис уведомлений, когда номер освободится.
  
Далее рассмотрим компонент воспроизведение, на который мы назначали все отрицательные переходы.
 
В данном компоненте ставим режим — файл полностью.
 
В качестве аудиофайла выбираем звук АТС Busy(короткие гудки).
 
После чего маршрутизируем коммутацию на обрыв связи.
 
Таким образов,в случае отрицательного перехода,например вызываемый абонент не отвечает или не найдены внешние свободные линии — пользователь Октелл услышит короткие гудки,после чего сможет положить трубку.
 
  
 
[[Файл:Ats13.png|center]]
 
[[Файл:Ats13.png|center]]
  
  
<u>'''Скачать сценарий:'''</u> [http://wiki.oktell.ru/images/2/22/%28%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%29_%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D1%85.oscr Маршрутизация_исходящих.oscr]
+
'''Скачать сценарий:'''  [http://wiki.oktell.ru/images/2/22/%28%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%29_%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D1%85.oscr Маршрутизация исходящих.oscr]
 +
 
 +
===Назначение сценария===
 +
 
 +
Сценарий исходящей маршрутизации назначается в модуле ''Администрирование/Общие настройки'' на вкладке "'''Сценарии АТС'''". Для того, чтобы назначить сценарий выберите его в выпадающем списке напротив соответствующей строки и поставьте крестик для его активации, затем сохраните настройки. После выполнения данных действий сценарий будет дополнительно подсвечен синим цветом в списке.
 +
 
 +
 
 +
[[Файл:Урок25-001.png|center|700px]]
 +
 
 +
 
 +
==Сценарий набора быстрых/внешних номеров==
 +
 
 +
Что будет, если пользователь наберет быстрый номер? К примеру, пусть в системе имеется быстрый номер 500, под которым подразумевается внешний 84955294989. Когда пользователь совершит вызов, сценарий занесет в переменную НОМЕР значение 500. В связи с тем, что длина номера 3 знака - сценарий передаст управление компоненту "ВНУТРЕННИЕ", который попытается его набрать. На этом этапе система, обращается в свою базу данных и понимает, что на самом деле это внешний номер, а значит необходимо определить внешние линии, через которые он будет набираться.
 +
 
 +
На помощь нам приходит служебный сценарий набора быстрых/внешних номеров, на вход которого передается внешний номер для набора. В ходе работы сценарий должен определить внешние направления для совершения звонка и вернуть управление в сценарий исходящей маршрутизации (или другой управляющий модуль, который запустил этот сценарий). 
 +
 
 +
<span style="color:red">ВНИМАНИЕ: В этом сценарии рекомендуется определить ту же логику оптимального выбора линии, как и в IVR сценарии исходящей маршрутизации. В противном случае, вы рискуете звонить на междугородние номера через местные городские линии, а в конце месяца получить немалый счет.
 +
 
 +
После выбора этих параметров сценарий завершается и возвращается в IVR исходящей маршрутизации, который произведет набор и продолжит свое выполнение.
 +
 
 +
Сценарий набора быстрых внешних/номеров запускается для следующих ситуаций:
 +
* Идет набор быстрого номера
 +
* Происходит набор внутреннего стандартного номера, в котором содержится хотя бы один внешний номер. Например, при наборе группового номера, в котором вызывается два внутренних пользователя и один внешний мобильный.
 +
* Вызывается внешний номер из конференц-связи
 +
* Установлена переадресация на внешний номер
 +
 
 +
Рассмотрим стандартный служебный сценарий набора быстрых/внешних номеров, который изначально включен в состав дистрибутива:
 +
 
 +
 
 +
[[Файл:Урок25-005.png|center]]
 +
 
 +
 
 +
Компонент "'''Старт 1'''". На вход сценария передается внешний номер, который необходимо набрать. Для сохранения параметра запуска используется переменная '''Номер''' (строковая).
 +
 
 +
Компонент "'''На внешку'''". Требуется для определения внешних направлений и передачи управления обратно в управляющий модуль.
 +
* Номер/команда - переменная "'''Номер'''"
 +
* Среда - Внешняя сеть
 +
* Обслуживание - '''Управляющий модуль''', обязательная настройка для корректной работы сценария.
 +
* Тип вызова - Обычный
 +
* Направления - выберите линии или направления для совершения вызова. По умолчанию, используются все внешние линии.
 +
* Фильтровать по правам - Нет.
 +
 
 +
 
 +
[[Файл:Урок25-006.png|center]]
 +
 
 +
 
 +
После завершения сценария, управление возвращается в сценарий исходящей маршрутизации, где происходит набор номера и переход по соответствующим веткам.
 +
 
 +
'''Скачать сценарий:''' [http://wiki.oktell.ru/images/9/9f/%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B9_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D0%B0_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D1%85_%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D1%85_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D0%BE%D0%B2.oscr Сценарий набора быстрых внешних номеров.oscr]
 +
 
 +
 
 +
===Назначение сценария===
 +
 
 +
Сценарий быстрых/внешних номеров назначается в модуле ''Администрирование/Общие настройки'' на вкладке "'''Сценарии АТС'''". Для того, чтобы назначить сценарий выберите его в выпадающем списке напротив соответствующей строки и поставьте крестик для его активации, затем сохраните настройки.
 +
 
 +
 
 +
[[Файл:Урок25-007.png|center|700px]]
 +
 
 +
 
 +
'''Поздравляем!''' Теперь вы умеете строить маршрутизацию исходящих вызовов. Можете переходить к следующему уроку.
 +
 
 +
'''Техническая документация:''' [[Сценарии АТС]]
 +
 
 +
 
 +
== Вопросы и задания ==
 +
 
 +
* Для чего нужен сценарий исходящей маршрутизации и сценарий набора быстрых/внешних номеров? Какие функции они выполняют?
 +
* Настройте оптимальный выбор внешней линий для совершения звонка в сценарии исходящей маршрутизации. Воспользуйтесь статьей [[Выбор исходяшей линии по маске]].
 +
* Реализуйте запись информации обо всех попытках исходящих вызовов в базу данных. Необходимо сохранять следующие данные: имя оператора, дата вызова, вызываемый номер, результат звонка (успех, занято, не отвечает, ошибка, прервано).
 +
* Введите пароль на международные звонки, а вызовы на короткие четырехзначные номера запретите полностью.
 +
* Настройте систему таким образом, чтобы при вызове мобильного номера сотрудника, он мог переключить звонок обратно в офис. Воспользуйтесь статьей [[Если звонок принят на мобильном. Как переключить его обратно в офис]].
 +
 
 +
{|cellpadding="10" cellspacing="0" border="0"
 +
| [[Уроки | Наверх]]
 +
| [[Урок 24 IVR сценарий входящей маршрутизации | К предыдущему уроку]]
 +
| [[Урок 26 IVR сценарий переключения|К следующему уроку]]
 +
|-
 +
|}

Текущая версия на 10:02, 19 января 2015

Наверх К предыдущему уроку К следующему уроку

Введение

На прошлом уроке мы разбирались с приемом и обработкой входящих соединений, на этом уроке мы разберемся с исходящими вызовами. Все исходящие вызовы разделяют на две группы - исходящие на внешние линии и внутренние звонки (на внутренние линии).

В системе Oktell совершить исходящий звонок различными способами:

  • Когда пользователь системы набирает номер со своего устройства запускается сценарий IVR исходящей маршрутизации
  • Во время перевода звонка используется сценарий IVR маршрутизации при переводе звонка (если он отсутствует используется сценарий исходящей маршрутизации)
  • Если вызов номера происходит в рамках сбора конференции, запускается служебный сценарий набора внешних/быстрых номеров (если приглашен внешний номер) или служебный сценарий набора внутренних номеров при приглашении в конференцию (если приглашен внутренний номер)
  • Система может самостоятельно инициировать звонок, например, через служебный сценарий, сервис автодозвона или менеджер задач.

В каждом из этих сценариев в первую очередь определяется тип набранного номера: внутренний или внешний. Если набран внешний - необходимо определить по каким линиям пойдет набор, это требуется для оптимизации расходов. Например, для совершения междугородних вызовов по всей России потребуется особый тарифный план от крупного провайдера связи, а звонки на мобильные дешевле совершать через специальную SIM-карту в SIP-GSM шлюзе. Для этого выполняются необходимые проверки, например на длину номера, время совершения звонка, производятся запросы во внешние сервисы и обращение к базам данных. В итоге определяется выбор направления и совершается звонок. Особое внимание следует обратить защите от несанкционированных звонков на международные или платные короткие номера - их желательно запретить полностью или установить пароль доступа.


Сценарий исходящей маршрутизации

IVR сценарий маршрутизации исходящих вызовов - системный сценарий для набора внутренних и внешних номеров пользователями системы. Сценарий запускается во время набора номера с внутренней линии (IP-телефон, гарнитура, USB-телефон).

ВНИМАНИЕ: В этом и есть отличие, между внутренними и внешними линиями. Любой вызов с внешней линии попадает в IVR сценарий входящей маршрутизации, а вызовы с внутренних линий - в IVR сценарий исходящей маршрутизации.

Начиная проектирование сценария необходимо принять во внимание, что большинство IP-телефонов и софтфонов могут сразу передавать информацию о набранном номере еще до входа в сценарий, а аналоговые телефоны и USB-телефоны набирают номер уже после соединения. Если в первом случае можно определить набранный номер с помощью функции "Внешний номер (CalledId)", то во втором - придется реализовывать набор номера в сценарии. Таким образом, мы получаем следующие блоки:

  • 1й блок будет анализировать есть ли набранный номер
  • 2й даст возможность совершить набор номера, если устройство его не передало
  • 3й произведет анализ набранного номера и совершит маршрутизацию по соответствующим направлениям.

Рассмотрим стандартный сценарий исходящей маршрутизации, который включен изначально в дистрибутив Oktell. Сценарий выглядит следующим образом:

Ats1.png


Блок: Определение набранного номера

Ats2.png


Компонент "НОМЕР=CalledID". Определяет набранный номер и сохраняет его в переменную.

  • Переменной "НОМЕР" (строка) присваиваем значение функции CalledID(внешний номер)

Компонент "Номер пусто?". Маршрутизирует пользователя на блок ввода номера, если набранный номер пуст.

  • Аргумент 1 - переменная "НОМЕР"
  • Аргумент 2 - пустая строка
  • Тип сравнения - "="


Ats3.pngAts4.png


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


Блок: Набор номера в сценарии

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

Компонент "Начинаем собирать номер". Используется воспроизведение с преднабором, цель которого получить первый цифру набираемого номера.

  • Файл - выберем файл с длинным гудком, snd_city_60_50sek.wav. Файл можно найти в папке \Oktell\Server\Snd
  • Буфер для DTMF - переменная "НОМЕР"
  • Очистить буфер - Да
  • Макс время, с - 20
  • Количество символов - 1, определяет минимальное количество символов для набора номера.
  • Переход - на компонент "Начинаем собирать номер"
  • Переход, таймаут - на компонент "Обрыв связи". Если в течении 20 секунд (параметр Макс время, с) пользователь не набрал ни одного символа, сценарий завершается.


Компонент "+1 цифра". Производит донабор номера - компонент принимает следующую цифру и добавляет ее в переменную "НОМЕР"

  • Буфер для DTMF - переменная "НОМЕР"
  • Очистить буфер - Такая настройка поможет записывать полученные символы в конец переменной не затирая предыдущее значение.
  • Макс время, с - 3, по истечению этого времени считается что набор номера произведен.
  • Количество символов - 1
  • Переход - на компонент "Пауза 2"
  • Переход, таймаут - на компонент "Длина номера".

Компоненты "Пауза 2" и "Пауза 3" с нулевой задержкой позволяют пользователю набирать столько цифр, сколько он пожелает. Как только пользователь перестанет набирать символы, то по истечению 3х секунд (параметр Макс время, с) сценарий будет считать, что номер набран и перейдет к следующему блоку. С помощью такой схемы мы зацикливаем ввод, давая таким образом пользователя по 3 секунды на ввод каждой цифры.


Ats5.pngAts6.png


Блок: Анализ номера и маршрутизация вызова

Данный блок фактически является основной частью сценария. Здесь необходимо произвести анализ набранного номера и маршутизировать коммутацию на соответствующие направления. Если вам и придется делать какие-либо изменения, то, как правило, вы будет производить их именно в этой части сценария.


Урок25-004.png


Компонент "Длина номера" - меню, задача которого определить тип набираемого номера и направить пользователя в соответствующую ветку.

  • Аргумент - выражение Len( [НОМЕР] ) , которое определяет длину набранного номера
  • Значения:
3 - на компонент "->".
  • Переход, прочее - на компонент "Внешние"

Таким образом, если длина номера составляет 3 символа,осуществляем переключения на внутренние номера. Если же аргумент принимает прочие значения,то осуществляем переход на компонент переключение на внешние линии, с указанием направлений.

ВНИМАНИЕ: Если у вас используются четырехзначные внутренние номера, вам нужно добавить в меню обработку длины номера в 4 символа. Здесь же иногда приходится добавлять ветку по длине номера в 10 символов - когда менеджеры набирают номер без "8" (или "7") спереди номера, например, 9171112233. В этом случае нужно преобразовать номер, добавив 8' с помощью выражения: 8'+[НОМЕР].


Урок25-002.png


Компонент "ВНЕШНИЕ" - переключение на внешние линии.

  • Номер - переменная "НОМЕР".
  • Тип набора — Без преобразований.
  • Тип вызова — Обычный
  • Направления — указываем внешние линии через которые должны осуществляться звонки на внешнюю сеть. По умолчанию, установлено "Все внешние линии".
  • Коммутировать сразу — выбираем: нет,прослушивать медиа-поток.

Значение "Нет, прослушивать медиа-поток" означает, что пока внешний абонент не поднимет трубку (ответ 200 OK), внутреннему пользователю Oktell будет воспроизводить гудки. Если звонок неудачный в статистике АТС вы увидите неудачную попытку и записи разговора не будет. Если выставить свойству значение "Нет, воспроизводить мелодию", то вместо собственных гудков Oktell будет воспроизводить указанный файл.

Значение "Да" (то есть коммутировать сразу) означает полную передачу звука от провайдера, а также сразу засчитывание данной попытки как полноценной коммутации. В статистике АТС вы увидите полноценный разговор (хотя по факту его не было, например не подняли трубку). Отличие от предыдущего значения в том, что все звонки считаются успешными. Как правило, это портит статистику и применяется в редких случаях.

  • Переход - на компонент "Стоп 2"
  • Все остальные переходы - на компонент воспроизведения "busy"

ВНИМАНИЕ: Как правило, перед этим переключением находится еще ряд различных сравнений и функций, определяющих первые цифры номера, на какое направление его выгоднее направить. Возможно, обращение к внешним сервисам или базе данных для реализации какого-либо функционала. Подробнее можно прочитать в статье Выбор исходяшей линии по маске.

Компонент "ВНУТРЕННИЕ" - переключение на внутренние линии.

  • Назначение — Внутрь
  • Номер - переменная "НОМЕР"
  • Тип вызова - Обычный
  • Очередь ожидания — Нет
  • Время ожидания ответа - 20.
  • Переход - на компонент "Стоп 2"
  • Все остальные переходы - на компонент воспроизведения "busy"


Урок25-003.png


Компонент "busy" - воспроизводит короткие гудки в случае неудачного соединения

  • Режим — Файл полностью.
  • Файл - выберем файл с длинным гудком, snd_busy_120sek.wav. Файл можно найти в папке \Oktell\Server\Snd

Переход - на компонент "Обрыв связи".

Таким образом, в случае отрицательного перехода,например вызываемый абонент не отвечает или не найдены внешние свободные линии — пользователь Oktell услышит короткие гудки, после чего сможет положить трубку.

ВНИМАНИЕ: Вместо коротких гудков вы можете вставить файл с записью причины отбоя. Например, после неудачного соединения вам в трубку произносится "К сожалению, номер занят. Чтобы оставить голосовое сообщение нажмите 1". Здесь можно использовать любой другой функционал, например сервис автодозвона или сервис уведомлений, когда номер освободится.


Ats13.png


Скачать сценарий: Маршрутизация исходящих.oscr

Назначение сценария

Сценарий исходящей маршрутизации назначается в модуле Администрирование/Общие настройки на вкладке "Сценарии АТС". Для того, чтобы назначить сценарий выберите его в выпадающем списке напротив соответствующей строки и поставьте крестик для его активации, затем сохраните настройки. После выполнения данных действий сценарий будет дополнительно подсвечен синим цветом в списке.


Урок25-001.png


Сценарий набора быстрых/внешних номеров

Что будет, если пользователь наберет быстрый номер? К примеру, пусть в системе имеется быстрый номер 500, под которым подразумевается внешний 84955294989. Когда пользователь совершит вызов, сценарий занесет в переменную НОМЕР значение 500. В связи с тем, что длина номера 3 знака - сценарий передаст управление компоненту "ВНУТРЕННИЕ", который попытается его набрать. На этом этапе система, обращается в свою базу данных и понимает, что на самом деле это внешний номер, а значит необходимо определить внешние линии, через которые он будет набираться.

На помощь нам приходит служебный сценарий набора быстрых/внешних номеров, на вход которого передается внешний номер для набора. В ходе работы сценарий должен определить внешние направления для совершения звонка и вернуть управление в сценарий исходящей маршрутизации (или другой управляющий модуль, который запустил этот сценарий).

ВНИМАНИЕ: В этом сценарии рекомендуется определить ту же логику оптимального выбора линии, как и в IVR сценарии исходящей маршрутизации. В противном случае, вы рискуете звонить на междугородние номера через местные городские линии, а в конце месяца получить немалый счет.

После выбора этих параметров сценарий завершается и возвращается в IVR исходящей маршрутизации, который произведет набор и продолжит свое выполнение.

Сценарий набора быстрых внешних/номеров запускается для следующих ситуаций:

  • Идет набор быстрого номера
  • Происходит набор внутреннего стандартного номера, в котором содержится хотя бы один внешний номер. Например, при наборе группового номера, в котором вызывается два внутренних пользователя и один внешний мобильный.
  • Вызывается внешний номер из конференц-связи
  • Установлена переадресация на внешний номер

Рассмотрим стандартный служебный сценарий набора быстрых/внешних номеров, который изначально включен в состав дистрибутива:


Урок25-005.png


Компонент "Старт 1". На вход сценария передается внешний номер, который необходимо набрать. Для сохранения параметра запуска используется переменная Номер (строковая).

Компонент "На внешку". Требуется для определения внешних направлений и передачи управления обратно в управляющий модуль.

  • Номер/команда - переменная "Номер"
  • Среда - Внешняя сеть
  • Обслуживание - Управляющий модуль, обязательная настройка для корректной работы сценария.
  • Тип вызова - Обычный
  • Направления - выберите линии или направления для совершения вызова. По умолчанию, используются все внешние линии.
  • Фильтровать по правам - Нет.


Урок25-006.png


После завершения сценария, управление возвращается в сценарий исходящей маршрутизации, где происходит набор номера и переход по соответствующим веткам.

Скачать сценарий: Сценарий набора быстрых внешних номеров.oscr


Назначение сценария

Сценарий быстрых/внешних номеров назначается в модуле Администрирование/Общие настройки на вкладке "Сценарии АТС". Для того, чтобы назначить сценарий выберите его в выпадающем списке напротив соответствующей строки и поставьте крестик для его активации, затем сохраните настройки.


Урок25-007.png


Поздравляем! Теперь вы умеете строить маршрутизацию исходящих вызовов. Можете переходить к следующему уроку.

Техническая документация: Сценарии АТС


Вопросы и задания

  • Для чего нужен сценарий исходящей маршрутизации и сценарий набора быстрых/внешних номеров? Какие функции они выполняют?
  • Настройте оптимальный выбор внешней линий для совершения звонка в сценарии исходящей маршрутизации. Воспользуйтесь статьей Выбор исходяшей линии по маске.
  • Реализуйте запись информации обо всех попытках исходящих вызовов в базу данных. Необходимо сохранять следующие данные: имя оператора, дата вызова, вызываемый номер, результат звонка (успех, занято, не отвечает, ошибка, прервано).
  • Введите пароль на международные звонки, а вызовы на короткие четырехзначные номера запретите полностью.
  • Настройте систему таким образом, чтобы при вызове мобильного номера сотрудника, он мог переключить звонок обратно в офис. Воспользуйтесь статьей Если звонок принят на мобильном. Как переключить его обратно в офис.
Наверх К предыдущему уроку К следующему уроку