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

Материал из Oktell
Перейти к: навигация, поиск
Строка 40: Строка 40:
  
  
Компонент Воспользуемся компонентом «присвоение», в котором создадим новую переменную сценария номер.
+
Компонент "'''НОМЕР=CalledID'''". Определяет набранный номер и сохраняет его в переменную.
Размещение переменной локальное, тип — строковая.
+
* Переменной "'''НОМЕР'''" (строка) присваиваем значение функции '''CalledID(внешний номер)'''
В качестве значения указываем функцию CalledID(внешний номер),которая вернет набранный номер.
+
  
<center>[[Файл:Ats3.png]][[Файл:Ats4.png]]</center>
+
Компонент "'''Номер пусто?'''". Маршрутизирует пользователя на блок ввода номера, если набранный номер пуст.  
 +
* Аргумент 1 - переменная "'''НОМЕР'''"
 +
* Аргумент 2 - пустая строка
 +
* Тип сравнения - "'''='''"
  
  
Далее переходим к компоненту сравнение в которым проанализируем наличие набранного номера.
+
<center>[[Файл:Ats3.png]][[Файл:Ats4.png]]</center>
В качестве аргумента 1 выбираем ранее созданную переменную «Номер», в качестве аргумента 2 оставляем пустоту.
+
Тип сравнения — равенство(=).
+
Таким образом мы будем сравнивать набранный номер с пустотой.
+
Соответственно,если набранный номер равен пустоте это означает что устройство никакую информацию нам не передало, и нам необходимо организовать набор номер,на который в дальнейшем осуществим вызов.
+
Если равенство не выполнится — это будет означать,что некий набранный номер существует, мы сразу перейдем к 3ему блоку, блоку анализа набранного номера с последующей маршрутизацией.
+
  
 +
 +
Если равенство не выполнится — это будет означать,что некий набранный номер существует, мы сразу перейдем к блоку анализа набранного номера с последующей маршрутизацией.
  
  
Строка 59: Строка 58:
 
===Блок: Набор номера в сценарии===
 
===Блок: Набор номера в сценарии===
  
Во втором блоке мы рассмотрим каким образом реализовать набор номера, для последующего вызова.
+
Если набранный номер равен пустоте это означает что устройство никакую информацию нам не передало, а значит необходимо вручную организовать набор номера.
  
 
Воспользуемся компонентом воспроизведение с преднабором.
 
Воспользуемся компонентом воспроизведение с преднабором.
В качестве аудио файла выбираем длинный гудок АТС — city.
+
Компонент "'''Начинаем собирать номер'''". Используется воспроизведение с преднабором, цель которого получить первый цифру набираемого номера.
Символы прерывания указывать не будем,далее переменная — номер, в нее мы будем производить набор номера,очищать буфер оставляем да, максимальное время 20 и более секунд.
+
* Файл - выберем файл с длинным гудком, '''snd_city_60_50sek.wav'''. Файл можно найти в папке '''snd_city.wav'''
Далее указываем количество символов,которые запишутся в переменную в рамках данного компонента - выставляем 1.
+
* Буфер для DTMF - переменная "НОМЕР"
Затем назначаем переход к следующему компоненту — компонент до ввод, в котором мы продолжим собирать номер.
+
* Очистить буфер - Да
Так же назначаем переход по таймауту, назначаем на "Обрыв связи".
+
* Макс время, с - 20
 +
* Количество символов - 1, определяет минимальное количество символов для набора номера.  
 +
* Переход - на компонент "Начинаем собирать номер"
 +
* Переход, таймаут - на компонент "Обрыв связи". Если в течении 20 секунд (параметр Макс время, с) пользователь не набрал ни одного символа, сценарий завершается.
 +
 
  
 
[[Файл:Ats5.png|center]]
 
[[Файл:Ats5.png|center]]
  
  
Далее переходим к компоненту преднабор, с помощью которого произведем донабор номера.
+
Компонент "'''+1 цифра'''". Производит донабор номера - компонент принимает следующую цифру и добавляет ее в переменную "НОМЕР"
Символы прерывания так же не указываем.
+
*Буфер для DTMF - переменная "НОМЕР"
В качестве переменной выбираем ту же самую переменную номер,что и в предыдущем компоненте.
+
*Очистить буфер Такая настройка поможет записывать полученные символы в конец переменной не затирая предыдущее значение.
Очищать буфер выставляем — НЕТ. Такая настройка поможет записывать полученные символы в конец переменной не затирая предыдущее значение.
+
* Макс время, с - 3, по истечению этого времени считается что набор номера произведен.
Далее — максимальное время 3 секунды,
+
* Количество символов - 1
количество символом -1.
+
* Переход - на компонент "Пауза 2"
Переход на компонент «Пауза»,Переход,таймаут на компонент «меню сравнения» для дальнейшего анализа.
+
* Переход, таймаут - на компонент "Длина номера".
  
[[Файл:Ats6.png|center]]]
+
Компоненты "Пауза 2" и "Пауза 3" с нулевой задержкой позволяют пользователю набирать столько цифр, сколько он пожелает. Как только пользователь перестанет набирать символы, то по истечению 3х секунд (параметр Макс время, с) сценарий будет считать, что номер набран и перейдет к следующему блоку. С помощью такой схемы мы зацикливаем ввод, давая таким образом пользователя по 3 секунды на ввод каждой цифры.
  
  
В компоненте пауза выставляем 0 задержку,после чего осуществляем переход снова на компонент доввод,который мы использовали ранее.
+
[[Файл:Ats6.png|center]]]
С помощью такой схемы мы зацикливаем ввод, давая таким образом пользователя по 3 секунды на ввод каждой цифры.
+
 
Далее переходим к следующему блоку.
+
  
 
===Блок: Анализ номера и маршрутизация вызова===
 
===Блок: Анализ номера и маршрутизация вызова===
 +
  
 
[[Файл:Ats7.png|center]]
 
[[Файл:Ats7.png|center]]

Версия 08:27, 11 ноября 2014

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

Введение

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

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

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

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


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

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

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

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

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

Ats1.png


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

Ats2.png


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

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

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

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


Ats3.pngAts4.png


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


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

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

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

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


Ats5.png


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

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

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


Ats6.png
]


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

Ats7.png


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

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

Ats8.png


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

Ats9.png


Ats10.png

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

Ats11.png


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

Ats13.png


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