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

Материал из Oktell
Перейти к: навигация, поиск
Строка 8: Строка 8:
 
__TOC__
 
__TOC__
  
Сценарии маршрутизации исходящих вызовов - системный сценарий для набора внутренних и внешних номеров пользователями системы. С помощью этого сценария система позволяет организовать "умный" выбор линии в зависимости от набираемого номера, текущего пользователя и других параметров. Особое внимание при составлении сценария следует обратить вопросу безопасности, таким как звонки на международные или платные короткие номера. 
+
==Введение ==
  
<!--
+
Кто может совершать исходящие вызовы и какие сценарии на это влияют?
'''3.''' В зависимости от набранного номера определяется тип номера: внутренний или внешний. Если набран внешний - необходимо определить по каким линиям пойдет набор. На этом этапе выполняются необходимые проверки на длину номера, время совершения звонка и др, производятся запросы во внешние сервисы и обращение к базам данных.
+
  
'''4.''' Выполняется переключение и в зависимости от результата обработка неудачного соединения или служебные действия после успешной коммутации. -->
+
 
 +
==Сценарий исходящей маршрутизации==
 +
 
 +
IVR сценарии маршрутизации исходящих вызовов - системный сценарий для набора внутренних и внешних номеров пользователями системы. С помощью этого сценария система позволяет организовать "умный" выбор линии в зависимости от набираемого номера, текущего пользователя и других параметров. Особое внимание при составлении сценария следует обратить вопросу безопасности, таким как звонки на международные или платные короткие номера.
  
 
Начиная проектирование сценария необходимо принять во внимание, что большинство IP-телефонов и софтфонов могут передавать информацию о набранном номере до входа в сценарий, а аналоговые телефоны и USB-телефоны набирают номер уже после соединения. Если в первом случае можно определить набранный номер с помощью функции "'''Внешний номер (CalledId)'''", то во втором - придется реализовывать набор номера в сценарии. Таким образом, мы получаем следующие блоки:
 
Начиная проектирование сценария необходимо принять во внимание, что большинство IP-телефонов и софтфонов могут передавать информацию о набранном номере до входа в сценарий, а аналоговые телефоны и USB-телефоны набирают номер уже после соединения. Если в первом случае можно определить набранный номер с помощью функции "'''Внешний номер (CalledId)'''", то во втором - придется реализовывать набор номера в сценарии. Таким образом, мы получаем следующие блоки:
Строка 19: Строка 21:
 
* 2й даст возможность совершить набор номера, если устройство его не передало
 
* 2й даст возможность совершить набор номера, если устройство его не передало
 
* 3й произведет анализ набранного номера и совершит маршрутизацию по соответствующим направлениям.
 
* 3й произведет анализ набранного номера и совершит маршрутизацию по соответствующим направлениям.
 +
 +
 +
Рассмотрим стандартный сценарий исходящей маршрутизации, который включен изначально в дистрибутив Oktell. Сценарий выглядит следующим образом:
 +
 +
[[Файл:Ats1.png|center]]
 +
 +
 +
===Блок: Определение набранного номера===
 +
 +
[[Файл:Ats2.png|center]]
 +
 +
 +
Воспользуемся компонентом «присвоение», в котором создадим новую переменную сценария номер.
 +
Размещение переменной локальное, тип — строковая.
 +
В качестве значения указываем функцию CalledID(внешний номер),которая вернет набранный номер.
 +
 +
[[Файл:Ats3.png|center]]
 +
 +
 +
Далее переходим к компоненту сравнение в которым проанализируем наличие набранного номера.
 +
В качестве аргумента 1 выбираем ранее созданную переменную «Номер», в качестве аргумента 2 оставляем пустоту.
 +
Тип сравнения — равенство(=).
 +
Таким образом мы будем сравнивать набранный номер с пустотой.
 +
Соответственно,если набранный номер равен пустоте это означает что устройство никакую информацию нам не передало, и нам необходимо организовать набор номер,на который в дальнейшем осуществим вызов.
 +
Если равенство не выполнится — это будет означать,что некий набранный номер существует, мы сразу перейдем к 3ему блоку, блоку анализа набранного номера с последующей маршрутизацией.
 +
 +
[[Файл:Ats4.png|center]]
 +
 +
 +
===Блок: Набор номера в сценарии===
 +
 +
Во втором блоке мы рассмотрим каким образом реализовать набор номера, для последующего вызова.
 +
 +
Воспользуемся компонентом воспроизведение с преднабором.
 +
В качестве аудио файла выбираем длинный гудок АТС — city.
 +
Символы прерывания указывать не будем,далее переменная — номер, в нее мы будем производить набор номера,очищать буфер оставляем да, максимальное время 20 и более секунд.
 +
Далее указываем количество символов,которые запишутся в переменную в рамках данного компонента - выставляем 1.
 +
Затем назначаем переход к следующему компоненту — компонент до ввод, в котором мы продолжим собирать номер.
 +
Так же назначаем переход по таймауту, назначаем на "Обрыв связи".
 +
 +
[[Файл:Ats5.png|center]]
 +
 +
 +
Далее переходим к компоненту преднабор, с помощью которого произведем донабор номера.
 +
Символы прерывания так же не указываем.
 +
В качестве переменной выбираем ту же самую переменную номер,что и в предыдущем компоненте.
 +
Очищать буфер выставляем — НЕТ. Такая настройка поможет записывать полученные символы в конец переменной не затирая предыдущее значение.
 +
Далее — максимальное время 3 секунды,
 +
количество символом -1.
 +
Переход на компонент «Пауза»,Переход,таймаут — на компонент «меню сравнения» для дальнейшего анализа.
 +
 +
[[Файл:Ats6.png|center]]]
 +
 +
 +
В компоненте пауза выставляем 0 задержку,после чего осуществляем переход снова на компонент доввод,который мы использовали ранее.
 +
С помощью такой схемы мы зацикливаем ввод, давая таким образом пользователя по 3 секунды на ввод каждой цифры.
 +
Далее переходим к следующему блоку.
 +
 +
===Блок: Анализ номера и маршрутизация вызова===
 +
 +
[[Файл:Ats7.png|center]]
 +
 +
 +
В данном блоке мы произведем конечный анализ набранного номера и распределим коммутацию на соответствующие направления.
 +
 +
Компонент меню сравнения.
 +
В данном компоненте в качестве аргумента выбираем выражение, где с помощью строкой функции длина строки получаем длину набранного номера.
 +
т.е.
 +
 +
[[Файл:Ats8.png|center]]
 +
 +
 +
Далее в свойства значения указываем значения,которые может принять аргумент и назначаем соответствующие переходы.
 +
Таким образом, если длина номера составляет 3 символа,осуществляем переключения на внутренние номера —  на компонент «переключение»
 +
Если же аргумент принимает прочие значения,то осуществляем переход на компонент переключение на внешние линии, с указанием направлений.
 +
 +
[[Файл:Ats9.png|center]]
 +
 +
 +
[[Файл:Ats10.png|center]]
 +
 +
Далее рассмотрим свойства компонента переключение на внешние линии.
 +
В качестве номера указываем нашу переменную номер.
 +
Тип набора — без преобразований.
 +
Тип вызова — обычный
 +
Направления — указываем внешние линии через которые должны осуществляться звонки на внешнюю сеть.
 +
Далее переходим к свойству коммутировать сразу — выбираем: нет,прослушивать медиа-поток.
 +
Затем переход  назначаем на стоп.
 +
Все остальные переходы на воспроизведение.
 +
Далее рассмотрим переключение внутрь.
 +
Назначение — внутрь
 +
Номер — переменная содержащая номер.
 +
Тип вызова — обычный.
 +
Переходим к очереди ожидания — выставляем ДА
 +
Время ожидания ответа 40 секунд.
 +
Затем переход назначаем на стоп, остальные переходы на воспроизведение.
 +
 +
[[Файл:Ats11.png|center]]
 +
 +
 +
Далее рассмотрим компонент воспроизведение, на который мы назначали все отрицательные переходы.
 +
В данном компоненте ставим режим — файл полностью.
 +
В качестве аудиофайла выбираем звук АТС Busy(короткие гудки).
 +
После чего маршрутизируем коммутацию на обрыв связи.
 +
Таким образов,в случае отрицательного перехода,например вызываемый абонент не отвечает или не найдены внешние свободные линии — пользователь Октелл услышит короткие гудки,после чего сможет положить трубку.
 +
 +
[[Файл: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]

Версия 13:10, 10 ноября 2014

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

Введение

Кто может совершать исходящие вызовы и какие сценарии на это влияют?


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

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

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

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


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

Ats1.png


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

Ats2.png


Воспользуемся компонентом «присвоение», в котором создадим новую переменную сценария номер. Размещение переменной локальное, тип — строковая. В качестве значения указываем функцию CalledID(внешний номер),которая вернет набранный номер.

Ats3.png


Далее переходим к компоненту сравнение в которым проанализируем наличие набранного номера. В качестве аргумента 1 выбираем ранее созданную переменную «Номер», в качестве аргумента 2 оставляем пустоту. Тип сравнения — равенство(=). Таким образом мы будем сравнивать набранный номер с пустотой. Соответственно,если набранный номер равен пустоте это означает что устройство никакую информацию нам не передало, и нам необходимо организовать набор номер,на который в дальнейшем осуществим вызов. Если равенство не выполнится — это будет означать,что некий набранный номер существует, мы сразу перейдем к 3ему блоку, блоку анализа набранного номера с последующей маршрутизацией.

Ats4.png


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

Во втором блоке мы рассмотрим каким образом реализовать набор номера, для последующего вызова.

Воспользуемся компонентом воспроизведение с преднабором. В качестве аудио файла выбираем длинный гудок АТС — city. Символы прерывания указывать не будем,далее переменная — номер, в нее мы будем производить набор номера,очищать буфер оставляем да, максимальное время 20 и более секунд. Далее указываем количество символов,которые запишутся в переменную в рамках данного компонента - выставляем 1. Затем назначаем переход к следующему компоненту — компонент до ввод, в котором мы продолжим собирать номер. Так же назначаем переход по таймауту, назначаем на "Обрыв связи".

Ats5.png


Далее переходим к компоненту преднабор, с помощью которого произведем донабор номера. Символы прерывания так же не указываем. В качестве переменной выбираем ту же самую переменную номер,что и в предыдущем компоненте. Очищать буфер выставляем — НЕТ. Такая настройка поможет записывать полученные символы в конец переменной не затирая предыдущее значение. Далее — максимальное время 3 секунды, количество символом -1. Переход на компонент «Пауза»,Переход,таймаут — на компонент «меню сравнения» для дальнейшего анализа.

Ats6.png
]


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

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

Ats7.png


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

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

Ats8.png


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

Ats9.png


Ats10.png

Далее рассмотрим свойства компонента переключение на внешние линии. В качестве номера указываем нашу переменную номер. Тип набора — без преобразований. Тип вызова — обычный Направления — указываем внешние линии через которые должны осуществляться звонки на внешнюю сеть. Далее переходим к свойству коммутировать сразу — выбираем: нет,прослушивать медиа-поток. Затем переход назначаем на стоп. Все остальные переходы на воспроизведение. Далее рассмотрим переключение внутрь. Назначение — внутрь Номер — переменная содержащая номер. Тип вызова — обычный. Переходим к очереди ожидания — выставляем ДА Время ожидания ответа 40 секунд. Затем переход назначаем на стоп, остальные переходы на воспроизведение.

Ats11.png


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

Ats13.png


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