Соединение с последним обслужившим оператором — различия между версиями
Строка 1: | Строка 1: | ||
− | Задача: При входящем звонке соединить клиента с последним обслужившим сотрудником. | + | Задача: При входящем звонке соединить клиента '''с последним обслужившим сотрудником'''. |
− | В данной статье последний обслуживший сотрудник - любой пользователь, который последний разговаривал с данным клиентом. Для решения этой задачи используется sql-запрос в статистику соединений [a_stat_connections_1x1] базы данных Oktell. | + | В данной статье последний обслуживший сотрудник - любой пользователь, который последний разговаривал с данным клиентом. Для решения этой задачи используется sql-запрос в статистику соединений '''[a_stat_connections_1x1]''' базы данных Oktell. |
− | Главный сценарий входящей маршрутизации выглядит следующим образом: | + | '''Главный сценарий''' входящей маршрутизации выглядит следующим образом: |
Строка 9: | Строка 9: | ||
− | Компонент присвоения "Определяем Caller id". В переменную callerid записываем номер абонента с помощью функции "Номер абонента (CallerID)" | + | Компонент присвоения "'''Определяем Caller id'''". В переменную '''callerid''' записываем номер абонента с помощью функции "'''Номер абонента (CallerID)'''" |
Строка 15: | Строка 15: | ||
− | В компоненте sql-запроса "определяем последнего обслужившего сотрудника" делаем запрос в таблицу соединений и определяем с кем в последний раз общался данный абонент: | + | В компоненте '''sql-запроса''' "'''определяем последнего обслужившего сотрудника'''" делаем запрос в таблицу соединений и определяем с кем в последний раз общался данный абонент: |
Строка 60: | Строка 60: | ||
− | Переменной запроса @callerid присваиваем переменную сценария callerid, @name - operator, @prefix - operatorprefix | + | Переменной запроса '''@callerid''' присваиваем переменную сценария '''callerid''', '''@name''' - '''operator''', '''@prefix''' - '''operatorprefix''' |
Строка 66: | Строка 66: | ||
− | Переменная operatorprefix теперь содержит внутренний номер нужного нам сотрудника, если такой сотрудник не найден, то номер будет пустой. SQL запрос отсеивает все групповые номера, оставляя только стандартные номера, у которых определен только один пользователь. | + | Переменная '''operatorprefix''' теперь содержит внутренний номер нужного нам сотрудника, если такой сотрудник не найден, то номер будет пустой. '''SQL запрос''' отсеивает все групповые номера, оставляя только стандартные номера, у которых определен только один пользователь. |
− | Далее запускается отладочное уведомление, в котором показывается значение переменной callerid и operatorprefix. Затем в компоненте сравнения определяется пустой ли номер callerid. | + | Далее запускается отладочное уведомление, в котором показывается значение переменной '''callerid''' и '''operatorprefix'''. Затем в компоненте сравнения определяется пустой ли номер '''callerid'''. |
Строка 75: | Строка 75: | ||
− | Если номер не пустой и оператор определен, сценарий переходит по ветке ложь на компонент "переключение" (промежуточное отладочное уведомление не рассматривается). В компоненте переключения в свойстве "номер" указана переменная operatorprefix. По желанию, в компоненте можно включить очередь ожидания. | + | Если номер не пустой и оператор определен, сценарий переходит по ветке ложь на компонент "'''переключение'''" (промежуточное отладочное уведомление не рассматривается). В компоненте переключения в свойстве "'''номер'''" указана переменная '''operatorprefix'''. По желанию, в компоненте можно включить '''очередь ожидания'''. |
Строка 82: | Строка 82: | ||
Если данного оператора нет на месте, звонок переводится в главный сценарий входящую маршрутизацию. | Если данного оператора нет на месте, звонок переводится в главный сценарий входящую маршрутизацию. | ||
+ | |||
+ | '''Дополнительно''': Если последний раз клиент общался с директором, то скорее всего при повторном звонке не надо переводить заново на директора, в таком случае, в sql-запросе следует добавить после строки "...and bstr!='ivr'" строку | ||
+ | and not in [director, zamdir] |
Версия 08:16, 13 ноября 2013
Задача: При входящем звонке соединить клиента с последним обслужившим сотрудником.
В данной статье последний обслуживший сотрудник - любой пользователь, который последний разговаривал с данным клиентом. Для решения этой задачи используется sql-запрос в статистику соединений [a_stat_connections_1x1] базы данных Oktell.
Главный сценарий входящей маршрутизации выглядит следующим образом:
Компонент присвоения "Определяем Caller id". В переменную callerid записываем номер абонента с помощью функции "Номер абонента (CallerID)"
В компоненте sql-запроса "определяем последнего обслужившего сотрудника" делаем запрос в таблицу соединений и определяем с кем в последний раз общался данный абонент:
select @prefix=prefix,@name=np.name from ( select np.prefix, u.name from A_RuleRecords rr inner join A_NumberPlanAction as npa on rr.ruleid = npa.extraid and npa.numtype=0 inner join A_NumberPlan as np on np.id=npa.numid inner join A_Users as u on rr.reactid = u.id ) np where np.Prefix in ( select cn.Prefix from ( select np.Prefix, count(np.Name) countname from ( select np.prefix, u.name from A_RuleRecords rr inner join A_NumberPlanAction as npa on rr.ruleid = npa.extraid and npa.numtype=0 inner join A_NumberPlan as np on np.id=npa.numid inner join A_Users as u on rr.reactid = u.id ) np group by np.Prefix ) cn where cn.countname = 1 ) and np.Name in (select top 1 bstr from a_stat_connections_1x1 where astr = @callerid and bstr!='ivr' order by timeanswer desc)
Переменной запроса @callerid присваиваем переменную сценария callerid, @name - operator, @prefix - operatorprefix
Переменная operatorprefix теперь содержит внутренний номер нужного нам сотрудника, если такой сотрудник не найден, то номер будет пустой. SQL запрос отсеивает все групповые номера, оставляя только стандартные номера, у которых определен только один пользователь.
Далее запускается отладочное уведомление, в котором показывается значение переменной callerid и operatorprefix. Затем в компоненте сравнения определяется пустой ли номер callerid.
Если номер не пустой и оператор определен, сценарий переходит по ветке ложь на компонент "переключение" (промежуточное отладочное уведомление не рассматривается). В компоненте переключения в свойстве "номер" указана переменная operatorprefix. По желанию, в компоненте можно включить очередь ожидания.
Если данного оператора нет на месте, звонок переводится в главный сценарий входящую маршрутизацию.
Дополнительно: Если последний раз клиент общался с директором, то скорее всего при повторном звонке не надо переводить заново на директора, в таком случае, в sql-запросе следует добавить после строки "...and bstr!='ivr'" строку
and not in [director, zamdir]