Сценарий переключения для внешних номеров

Материал из Oktell
Перейти к: навигация, поиск

Наверх

Сценарий переключения - это IVR сценарий, который запускается всякий раз, когда вы переводите звонок на другого сотрудника. Перевод звонка может осуществляться, например, с помощью кнопки TRAN на ip-телефоне Yealink, а в клиентском приложении при использовании USB гарнитуры мы можем перевести звонок с помощью кнопки Флеш.

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

Пользователи Б и В могут быть представлены как внутренними номерами, так и внешними, что дает нам вообще говоря 4 ситуации:

  • внутренний пользователь Б переключает на внутреннего пользователя В
  • внутренний пользователь Б переключает на внешний номер В
  • внешний номер Б переключает на внутреннего пользователя В (только если установлен режим FLASH на внешней линии)
  • внешний номер Б переключает на внешнего пользователя В (только если установлен режим FLASH на внешней линии)

Первый вопрос, который встает перед нами - будет ли в самом начале пользователь Б разговаривать с пользователем В, прежде чем переключит А на В.

Если да, то тогда пользователь Б нажимает флеш -> набирает номер -> ожидает ответа пользователя В. Пользователь В, может в свою очередь, как ответить на звонок, так и нет. Но об этом попозже. Клиент А все это время слушает мелодию ожидания. В случае удачного соединения Б и В, пользователь Б (который переключает) должен положить трубку и клиент А соединится с пользователем В.

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

Второй вопрос, который встает перед нами - доступен ли абонент В. Если абонент В недоступен, то клиент А должен опять соединиться с Б. Это добавляет еще 2 варианта.

Таким образом, мы приходим к выводу, что в сценарии переключения могут быть 4*2*2 = 16 различных вариантов, которые все нужны учесть при создании.

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

Схема работы сценария

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

Перекл.png
  • 1. Перевод звонка внутренней линией на внутреннюю. Пользователи Б и В - внутреннии линии.

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

  • а) При нажатии на флеш запустится сценарий переключения. Затем на компоненте "Режим Flash" служебной переменной Режим Flash устанавливается значение 1. Если пользователь Б положит трубку, то у клиента А (который был во Flash буфере) запустится сценарий переключения с того компонента, на котором отключился пользователь Б. Затем в компоненте сравнения "Это не внутренний пользователь?" сценарий будет продолжен по ветке Ложь, и переменной "НОМЕР ВОЗВРАТА" присвоится номер пользователя Б. В случае неудачного перевода на пользователя В, клиент А вернется именно на этот номер. Затем на компоненте сравнения "флеш пусто?" сценарий перейдет по ветке Ложь и переменной НОМЕР будет присвоен номер пользователя В (с помощью функции CalledId). На компоненте сравнения "Номер Пусто?" в зависимости от типа устройства на котором происходит переключение стандартным образом происходит сборка номера В, до компонента присвоения "На который = Номер". Это обозначает, что номер пользователя В находится в переменной "НАКОТОРЫЙ". Далее происходит набор номера В.
  • б)На компоненте "Внутренние" происходит вызов абонента В. Если пользователь Б продолжает ожидать коммутацию и пользователь В берет трубку. То переменной "невозврат" присваивается 1 , а номеру возврата (то есть в случае неудачной коммутации) присваивается номер "НАКОТОРЫЙ", то есть пользователя В. Таким образом, всегда есть информация, о том куда звонить клиенту А в случае неудачной коммутации. После разговора пользователь Б положит трубку, и А переключится на В. Также есть возможность пользователю В положить трубку и А соединится с Б.
  • в) Если пользователь В недоступен, то после компонента "ВНУТРЕННИЕ", пользователь Б в режиме предпрослушивания услышит короткие гудки "занято", и у него произойдет сброс линии. Это осуществляется с помощью компонента "статус объекта" с помощью функции "мягкий сброс". После этого Октелл вернется А к Б. Также здесь специально поставлен компонент (устанавливающий есть ли линия во флеше), устанавливающий "незвозврат" в 1, так как иначе будут возникать случаи, что после коммутации А и Б, Б повесит трубку, А будет опять возвращаться к нему.
  • г) Если пользователь Б не хочет коммутироваться с В, то он услышав первые гудки кладет трубку, тогда А (начинающий с компонента ВНУТРЕННИЕ) успешно коммутируется и ему ставится переменная "невозврат = 1" и "НОМЕР ВОЗВРАТА" = номер пользователя В. В случае если В недоступен клиент А услышит короткие гудки, и с помощью компонента "статус объекта" произойдет сброс линии у А. Мягкий сброс затем запускает сценарий вместо отбоя, куда мы вставим компоненты обеспечивающие возврат клиента А к Б (так как была неудачная коммутация)

Выглядит он следующим образом:

Вместо отбоя.png

В самом начале в компоненте "наша линия?" проверяется соответствует ли линия, запустившая сценарий - линии А (которая присвоена в сценарии входящей маршрутизации). Далее сценарий перейдет по ветке "правда" и определит, есть ли НОМЕР ВОЗВРАТА - если такого не имеется произойдет обрыв связи. Иначе будет третье сравнение, в котором проверяется переменная невозврат, отвечающая за возврат звонка на Б. Происходит пауза 3 секунды, после чего А возвращается к Б. Невозврат затем ставится в состояние 1. (состояние "невозврат" = 1 отвечает за то, что вовзращать к Б не надо). Возврат к Б осуществляется по номеру "НОМЕР ВОЗВРАТА".

  • 2. В случае, когда внутренняя линия переключает на внешний номер (либо сразу набирая внешний , либо переключая на быстрый), можно поставить режим Flash на внешней линии. Подробнее в сценарии набора быстрых/внешних номеров. Остальная маршрутизация звонка при переключении происходит также, как описано выше.


  • 3. Чтобы работал перевод звонка с внешнего номера, необходимо добавить во внутренние номера "*", как служебный номер Flash, далее выполнить все действия указанные в этой статье.. Это работает только если в вашем главном сценарии (сценарии входящей маршрутизации) стоит переключение на внутренний номер, который содержит в себе внешний. При вызове через компонент "переключение на внешний номер" вам надо добавить компонент "статус объекта" в сценарии исходящей маршрутизации. Далее, речь идет о быстрых номерах, или групповом номере, внутри которого есть внешний номер. Таким образом, у каждого 11-значного номера есть свой короткий внутренний номер.

При переводе звонка с внешнего номера, надо учитывать, что "режим Flash = 1" не будет работать как описано выше. Она обозначает, как это описано выше, что сценарий переключения у клиента А запустится с того места, на котором закончился сценарий у пользователя Б. Этого не происходит при переключении с внешних линий.

  • а) Когда мы переводим звонок с внешнего номера, то в сценарии переключения в переменной callerid находится не быстрый номер, а 11-значный. Чтобы звонок в случае неудачной коммутации А и В, возвращался к Б (с возможностью режима Flash), необходимо во время первой коммутации А и Б сохранить внутренний номер Б. Например, в сценарии входящей маршрутизации, перед переключением на Б, сохранить в глобальную переменную "НОМЕР ВОЗВРАТА" внутренний номер этого пользователя.

В сценарии переключении, в самом начале будут пройдены компоненты Старт1 -> Поднять трубку -> режим Flash -> невозврат = 0. Затем на компоненте сравнения "это не внутренний пользователь?" сценарий пойдет по ветке правда. Далее на компоненте "Флеш пусто?" переходит по ветке Ложь, переменной НОМЕР присваивается CalledId (номер пользователя В). Далее идет сборка номера (если отсутствует). Далее переменной НАКОТОРЫЙ присваивается набираемый НОМЕР. Далее, так как мы переводим на внутренний номер, сценарий дойдет до компонента ВНУТРЕННИЕ.

Если мы ожидаем ответа от пользователя В, и коммутация оказывается успешной, то переменной "невозврат" присваивается 1, переменной "НОМЕР ВОЗВРАТА" присваивается значение переменной "НАКОТОРЫЙ" (пользователя В).



  • ВАЖНО: Если клиент А переводится на В, то Б должен повесить трубку первым, и А скоммутируется с В. Если В не хочет разговаривать с А, то Б должен нажать "*", и в таком случае он вернется к А. Если В вешает трубку первым, то на его линии запускается сценарий вместо отбоя, в котором сценарий переходит на компонент "наша линия?" по ветке ложь, на компоненте "есть во флеше?" по ветке ложь и переменной невозврат присваивается 0. Это обеспечивает возврат А к В. (У А запускается сценарий вместо отбоя, в котором он переключается на номер В).


  • б) Если Б ожидая ответ от В, не дождался ответа, то он услышит 3 секунды коротких гудков в компоненте busy, далее в компоненте сравнения "флеш = 0" переходим по ветке Ложь и переменной "невозврат" присваивается 1. Затем происходит мягкий сброс у Б (с помощью функции номер линии). Запускается сценарий вместо отбоя. В компоненте сравнения "наша линия?" (под "наша" понимается линия клиента А) и по ветке ложь переходит в компонент "есть во флеше?", далее по ветке Ложь переменной "невозврат" присваивается 0. Происходит обрыв связи. В этом случае у А запускается также сценарий вместо отбоя, в котором на компоненте "наша линия?" переходит уже по ветке "правда", далее, как описано выше, происходит возврат на "НОМЕР ВОЗВРАТА".
  • в) В случае если Б не хочет дожидаться коммутации с В, то услышав первые гудки Б положит трубку. Тогда на линии А сценарий переключения запустится заново, в этом случае он пойдет по ветке Правда у компонента "это не внутренний пользователь?", затем на компоненте "флеш пусто?" перейдет по ветке Правда, и на компоненте "переключение пусто?" по ветке ложь доходит до компонента "задержка". Задержка составляет 1 секунду. Затем переменной "НОМЕР" присваивается переменная "НАКОТОРЫЙ" (которая хранит номер В). Далее все происходит также как описано выше, но с точки зрения клиента А. Если А удачно коммутируется с В, то переменной "невозврат" ставится 1, и переменной "НОМЕР ВОЗВРАТА" присваивается номер В.
  • г) Если В не ответил клиенту А, то сценарий на его линии переходит к компоненту busy, играет короткие гудки 3 секунды, затем происходит мягкий сброс на его линии. В сценарии вместо отбоя внешней линии, клиент А возвратится к Б.

Таким образом, рассмотрен универсальный сценарий переключения.

ВНИМАНИЕ! Для корректного импорта сценариев необходима версия Oktell не ниже 2.8 130704.

Основные моменты

  • в сценарии, где клиент А соединяется с пользователем Б должны быть выставлены сессионные переменные
    • ЛИНИЯВХОД = функция: номер линии
    • НОМЕР ВОЗВРАТА = внутренний номер пользователя
  • должен быть использован этот сценарий набора быстрых/внешних номеров для переключения с внешних линий. В сценарии в компоненте Дозвон 1 укажите направления по которым будет проходить дозвон. Уберите также Caller id в свойствах этого компонента.
  • использованы сценарий переключения и сценарий вместо отбоя. (корректно выставлены в общих настройках)
  • если сценарий используется в качестве "Сценария IVR sip-transfer-переключения", то необходимо выставить в компоненте Старт параметр запуска переменную "НАКОТОРЫЙ".

Файл:С Сценарий Переключения.zip

Данный сценарий не является готовым решением, а представлен как демонстрационный материал