Отправка записей разговоров на e-mail — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
м (Установка сценария)
 
(не показано 20 промежуточных версии этого же участника)
Строка 5: Строка 5:
  
 
'''Задача:''' Отправить записи разговора клиента с операторами на почту. Учесть переключения клиента между операторами.  
 
'''Задача:''' Отправить записи разговора клиента с операторами на почту. Учесть переключения клиента между операторами.  
 +
  
 
Руководителям всех отделов, подразделений и целых предприятий бывает полезно знать как их сотрудники общаются с клиентами, верно ли они преподносят информацию о продукте, правильно ли предлагают услуги. Если не контролировать этот процесс, лояльность ваших клиентов, и их отношение к организации в целом, может упасть.  
 
Руководителям всех отделов, подразделений и целых предприятий бывает полезно знать как их сотрудники общаются с клиентами, верно ли они преподносят информацию о продукте, правильно ли предлагают услуги. Если не контролировать этот процесс, лояльность ваших клиентов, и их отношение к организации в целом, может упасть.  
  
Отследить качество клиентского обслуживания и разрешить спорные ситуации, возникающие при телефонных контактах с клиентами, поможет прослушивание аудиозаписей телефонных разговоров. В Oktell все разговоры сотрудников с клиентами записываются по умолчанию.
+
Отследить качество клиентского обслуживания и разрешить спорные ситуации, возникающие при телефонных контактах с клиентами, поможет прослушивание аудиозаписей телефонных разговоров. В '''Oktell''' все разговоры сотрудников с клиентами записываются по умолчанию.
 +
 
  
 
Вы так же можете настроить автоматическую отправку отчета о разговорах на вашу электронную почту. В тексте письма вы получите дату и время звонка, имя оператора, продолжительность разговора, номер телефона клиента и его оценку разговора.  
 
Вы так же можете настроить автоматическую отправку отчета о разговорах на вашу электронную почту. В тексте письма вы получите дату и время звонка, имя оператора, продолжительность разговора, номер телефона клиента и его оценку разговора.  
  
При большом количестве звонков, ваша почта может быстро переполниться, поэтому советуем настроить оповещение только в крайних случаях. Например, когда клиент поставил сотруднику оценку “2” за обслуживание.  
+
При большом количестве звонков, ваша почта может быстро переполниться, поэтому советуем настроить оповещение только в крайних случаях. Например, когда клиент поставил сотруднику оценку “'''2'''” за обслуживание.  
  
 
В таких крайних случаях крайне важно понять, почему клиент недоволен и поставил низкую оценку. Учитывая, что в компаниях клиента могут переключать от одного оператора к другому, требуется восстановить всю последовательность разговоров - от первой коммутации с секретарем до последней коммутации с ответственным оператором.  
 
В таких крайних случаях крайне важно понять, почему клиент недоволен и поставил низкую оценку. Учитывая, что в компаниях клиента могут переключать от одного оператора к другому, требуется восстановить всю последовательность разговоров - от первой коммутации с секретарем до последней коммутации с ответственным оператором.  
  
Для отправки записей разговоров в сценарии используется компонент "Отправка Email". В этом компоненте возможно прикрепить до 5 вложений. Однако встает вопрос - что делать, если клиент общался больше чем с пятью операторами (суммарное количество переключение превышает 4). Существует несколько способов решения данной задачи.  
+
 
 +
Для отправки записей разговоров в сценарии используется компонент "'''Отправка Email'''". В этом компоненте возможно прикрепить до 5 вложений. Однако встает вопрос - что делать, если клиент общался больше чем с пятью операторами (суммарное количество переключение превышает 4). Существует несколько способов решения данной задачи.  
  
 
'''Способ 1:''' В сценарии отправляются 5 записей разговора - это могут быть последние пять коммутаций клиента с оператором, или, например, первая и четыре последних коммутации.  
 
'''Способ 1:''' В сценарии отправляются 5 записей разговора - это могут быть последние пять коммутаций клиента с оператором, или, например, первая и четыре последних коммутации.  
Строка 23: Строка 26:
  
 
*'''Недостатки:''' По сути, если количество коммутаций больше 5, то мы теряем часть из них. Все зависит от максимального количества переключений, которое может быть в вашей компании.  
 
*'''Недостатки:''' По сути, если количество коммутаций больше 5, то мы теряем часть из них. Все зависит от максимального количества переключений, которое может быть в вашей компании.  
 +
 +
 +
[[Файл:Отправка записей на почту 015.png |center]]
 +
  
 
'''Способ 2:''' В сценарии все найденные записи разговоров запаковываются в zip-архив, который затем отправляется одним вложением в элекронном письме.  
 
'''Способ 2:''' В сценарии все найденные записи разговоров запаковываются в zip-архив, который затем отправляется одним вложением в элекронном письме.  
Строка 29: Строка 36:
  
 
*'''Недостатки:''' В отличии от первого способа, архив придется скачать и распаковать. Этот процесс может занимать некоторое время.  
 
*'''Недостатки:''' В отличии от первого способа, архив придется скачать и распаковать. Этот процесс может занимать некоторое время.  
 +
 +
 +
[[Файл:Отправка записей на почту 016.png |center]]
 +
  
 
'''Способ 3:''' Комбинация первого и второго способов. Если количество найденных коммутаций больше пяти - они запаковываются в архив, если их пять или меньше - отправляются в электронном письме напрямую.  
 
'''Способ 3:''' Комбинация первого и второго способов. Если количество найденных коммутаций больше пяти - они запаковываются в архив, если их пять или меньше - отправляются в электронном письме напрямую.  
 +
 +
<span style="color:red"> Рекомендуется использовать третий способ как наиболее удобный. </span> В статье данный способ рассматривается по частям на примере первого и второго способов.
 +
  
 
=== Сценарий прямой отправки на email ===
 
=== Сценарий прямой отправки на email ===
  
Для решения задачи используется сценарий обработки контента. Сценарий выглядит следующим образом:  
+
Для решения задачи используется '''сценарий обработки контента'''. Сценарий выглядит следующим образом:  
  
  
Строка 56: Строка 70:
 
* '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций.
 
* '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций.
  
Если парсер не находит таких коммутаций, он переходит по ветке "Ошибка". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение.  
+
Если парсер не находит таких коммутаций, он переходит по ветке "'''Ошибка'''". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение.  
  
  
Строка 100: Строка 114:
 
  if (@idrecdir>0)
 
  if (@idrecdir>0)
 
  select @path=path from A_Stat_RecordDirectories where id=@idrecdir
 
  select @path=path from A_Stat_RecordDirectories where id=@idrecdir
  set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)
+
  <nowiki>set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)</nowiki>
 
  +substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'
 
  +substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'
  
Строка 155: Строка 169:
  
  
Компоненты отправка e-mail настраиваются одинаковым образом:  
+
Компоненты '''отправка e-mail''' настраиваются одинаковым образом:  
 
* '''Способ отправки''' - настраивается smtp-сервер, данные для авторизации.  
 
* '''Способ отправки''' - настраивается smtp-сервер, данные для авторизации.  
 
* '''Кому''' - адрес получателя
 
* '''Кому''' - адрес получателя
Строка 165: Строка 179:
 
[[Файл:Отправка записей на почту 006.png |center]]
 
[[Файл:Отправка записей на почту 006.png |center]]
  
 
От каждого компонента по ветке ''Ошибка'' сценарий переходит на уведомление администратору. В случае успешной отправки, сценарий заканчивается.
 
  
  
 
===Сценарий отправки записей в zip-архиве ===
 
===Сценарий отправки записей в zip-архиве ===
  
Для решения задачи используется сценарий обработки контента. Сценарий выглядит следующим образом:  
+
Для решения задачи используется '''сценарий обработки контента'''. Сценарий выглядит следующим образом:  
  
  
Строка 178: Строка 190:
  
 
В сценарии используется внешний процесс '''7za.exe''' - консольное приложение от 7-zip (скачано по ссылке [http://www.7-zip.org/download.html http://www.7-zip.org/download.html]). Данное консольное приложение предварительно скопировано на диск '''C:\'''.  
 
В сценарии используется внешний процесс '''7za.exe''' - консольное приложение от 7-zip (скачано по ссылке [http://www.7-zip.org/download.html http://www.7-zip.org/download.html]). Данное консольное приложение предварительно скопировано на диск '''C:\'''.  
 +
 +
'''Скачать приложение:''' [[Media:7za.zip|7za.zip]]
  
 
'''Пример''' архивации двух файлов '''C:\1.mp3''' и '''C:\2.mp3''' в архив '''С:\archive.zip''':
 
'''Пример''' архивации двух файлов '''C:\1.mp3''' и '''C:\2.mp3''' в архив '''С:\archive.zip''':
Строка 202: Строка 216:
 
* '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций.
 
* '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций.
  
Если парсер не находит таких коммутаций, он переходит по ветке "Ошибка". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение.  
+
Если парсер не находит таких коммутаций, он переходит по ветке "'''Ошибка'''". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение.  
  
  
Строка 214: Строка 228:
  
 
* Присвоение переменной '''path'''(строковая) - выражения  
 
* Присвоение переменной '''path'''(строковая) - выражения  
  ' c:\temp\archive'+substr(now,0,2)+substr(now,3,2)+ substr(now,8,2)+'-'+substr(now,11,2)+
+
  'c:\temp\archive'+substr(now,0,2)+substr(now,3,2)+ substr(now,8,2)+'-'+substr(now,11,2)+
 
  substr(now,14,2)+substr(now,17,2)+'.zip'
 
  substr(now,14,2)+substr(now,17,2)+'.zip'
  
Строка 220: Строка 234:
  
 
* Присвоение переменной '''cmd'''(строковая) - выражения  
 
* Присвоение переменной '''cmd'''(строковая) - выражения  
  'a -tzip'+[path]
+
  'a -tzip '+[path]
  
 
: В переменной '''cmd''' будут храниться все параметры командной строки, которые в конце сценария будут переданы программе '''7za.exe'''.
 
: В переменной '''cmd''' будут храниться все параметры командной строки, которые в конце сценария будут переданы программе '''7za.exe'''.
Строка 241: Строка 255:
  
  
[[Файл:Отправка записей на почту 003.png |center]]
+
[[Файл:Отправка записей на почту 011.png|center]]
  
  
Строка 260: Строка 274:
 
  if (@idrecdir>0)
 
  if (@idrecdir>0)
 
  select @path=path from A_Stat_RecordDirectories where id=@idrecdir
 
  select @path=path from A_Stat_RecordDirectories where id=@idrecdir
  set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)
+
  <nowiki>set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)</nowiki>
 
  +substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'
 
  +substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'
  
 
где  
 
где  
  
*'''@filename''' - переменная file (строковая)
+
*'''@filename''' - переменная file (строковая, выходная)
*'''@id''' - переменная id.
+
*'''@id''' - переменная id (входная, содержит ID коммутации).
  
  
Строка 302: Строка 316:
 
* '''Параметры командной строки''' командной строки - переменная '''cmd'''
 
* '''Параметры командной строки''' командной строки - переменная '''cmd'''
 
* '''Ожидание завершения''' - Да
 
* '''Ожидание завершения''' - Да
 +
 +
 +
[[Файл:Отправка записей на почту 008.png|center]]
 +
 +
 +
Компонент "'''Отправка e-mail'''" - отправляет архив с записями разговоров на электронную почту:
 +
* '''Способ отправки''' - настраивается smtp-сервер, данные для авторизации.
 +
* '''Кому''' - адрес получателя
 +
* '''От кого''' - адрес отправителя
 +
* '''Тема''', '''Содержание письма''' - генерируется соответствующая информация. В содержании письма можно указать с какого номера на какой номер звонил клиент, сколько времени ожидал на линии, с какими операторами разговаривал. В данном сценарии не рассматривается.
 +
* '''Вложение 1''' - переменная '''path'''
 +
 +
 +
[[Файл:Отправка записей на почту 010.png|center]]
 +
 +
=== Комбинированный метод===
 +
 +
На основании выше сказанного можно создать сценарий, в котором анализируется количество записей разговоров '''com_count'''. Если их больше 5, то отправка реализуется с помощью zip-архива, если 5 или меньше - отправляются вложениями.
 +
 +
Сценарий выглядит следующим образом:
 +
 +
 +
[[Файл:Отправка записей на почту 012.png|center]]
 +
 +
 +
=== Установка сценария===
 +
 +
Перейдите в '''Администрирование''' - '''Общие настройки''' - '''Сценарии АТС''' и укажите созданный сценарий в качестве ''Служебного сценария обработки контента''. Нажмите "'''Сохранить'''".
 +
 +
 +
[[Файл:Отправка записей на почту 013.png|center]]
 +
 +
 +
Также установите следующие настройки в разделе '''Администрирование''' - '''Общие настройки''' - "Управление записями разговоров". После установки нажмите "'''Сохранить'''".
 +
 +
 +
[[Файл:Отправка записей на почту 014.png|center]]
 +
 +
 +
 +
При создании сценариев использовалась статья: [[Получить путь к записи разговора по завершению коммутации]]
 +
 +
'''Скачать файлы сценариев:''' [[Media:%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82_%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D1%8C_%D0%A0%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0.zip|Контент_Запись_Разговора.zip]]
 +
 +
Для использования необходимо<br>
 +
'''1)''' Файл '''7za.exe''' поместить на диск '''C:'''\ <br>
 +
'''2)''' Во всех компонентах отправки email поменять настройки smtp-сервера, адреса получателя и отправителя, текст письма.<br>
 +
'''3)''' Обозначить сценарий в качестве служебного сценария обработки контента<br>

Текущая версия на 11:24, 31 марта 2023

Наверх


Задача: Отправить записи разговора клиента с операторами на почту. Учесть переключения клиента между операторами.


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

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


Вы так же можете настроить автоматическую отправку отчета о разговорах на вашу электронную почту. В тексте письма вы получите дату и время звонка, имя оператора, продолжительность разговора, номер телефона клиента и его оценку разговора.

При большом количестве звонков, ваша почта может быстро переполниться, поэтому советуем настроить оповещение только в крайних случаях. Например, когда клиент поставил сотруднику оценку “2” за обслуживание.

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


Для отправки записей разговоров в сценарии используется компонент "Отправка Email". В этом компоненте возможно прикрепить до 5 вложений. Однако встает вопрос - что делать, если клиент общался больше чем с пятью операторами (суммарное количество переключение превышает 4). Существует несколько способов решения данной задачи.

Способ 1: В сценарии отправляются 5 записей разговора - это могут быть последние пять коммутаций клиента с оператором, или, например, первая и четыре последних коммутации.

  • Достоинства: Такие сервисы как mail.ru или gmail.com позволяют сразу проигрывать вложенные звуковые файлы, не скачивая их. Это позволяет руководителю быстро прослушать записи разговоров прямо из окна браузера, что очень удобно.
  • Недостатки: По сути, если количество коммутаций больше 5, то мы теряем часть из них. Все зависит от максимального количества переключений, которое может быть в вашей компании.


Отправка записей на почту 015.png


Способ 2: В сценарии все найденные записи разговоров запаковываются в zip-архив, который затем отправляется одним вложением в элекронном письме.

  • Достоинства: В электронном письме может быть отправлено неограниченное количество записей (ограничение идет уже от Smtp-провайдера по максимальному размеру вложений). Если клиента переключали 10 раз между различными операторами - вы получите полную историю разговоров клиента.
  • Недостатки: В отличии от первого способа, архив придется скачать и распаковать. Этот процесс может занимать некоторое время.


Отправка записей на почту 016.png


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

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


Сценарий прямой отправки на email

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


Отправка записей на почту 001.png


Компонент "Старт 1" - в качестве параметра запуска переменная content (строковая). В этой переменной будет храниться контент цепочки коммутаций.


Компонент "Вывод контента" - отладочное уведомление, выводит переменную content.


Компонент "Количество коммутаций" - Парсер, определяет количество коммутаций с операторами (исключает соединение с IVR-сценариями).

  • Документ - переменная content
  • Алгоритм - Язык OQuery для HTML
  • Поисковый запрос - используется следующее выражение:
commutation:has([name=abonent])>[key=idconnection]
  • Функция - Количество элементов
  • Результат в переменную - переменная com_count (число). В переменной будет храниться количество коммутаций.

Если парсер не находит таких коммутаций, он переходит по ветке "Ошибка". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение.


Отправка записей на почту 002.png


Компонент "Ув1" - отладочное уведомление, выводит переменную com_count.


Компонент "Счетчик" - присвоение переменной i (строковая) значения 1 (строка).


Компонент "Id записи" - парсер, определяет i-й Id коммутации, по которой в дальнейшем восстанавливается путь к файлу записи. Счетчик i в дальнейшем инкрементируется, таким образом пробегаются все коммутации клиента с операторами.

  • Документ - переменная content
  • Алгоритм - Язык OQuery для HTML
  • Поисковый запрос - используется следующее выражение:
'commutation:has([name=abonent])>[key=idconnection]:eq('+[i]+')'
  • Функция - Значение атрибута
  • Атрибут - value
  • Результат в переменную - переменная id (строковая). В переменной будет храниться id коммутации.


Отправка записей на почту 003.png


Компонент "Путь к файлу" - В SQL-запросе явно прописывается в какой папке располагаются записи разговоров. Рекомендуется проверить запрос на предмет использования в вашей системе (возможно, стоит убрать (x86)). Используется следующий SQL-запрос:

declare @aln nvarchar(10)
declare @bln nvarchar(10)
declare @idrecdir int
declare @ts nvarchar(50)
declare @path nvarchar(1000)
select top 1 @aln=case when alinenum<blinenum then alinenum else blinenum end,
@bln=case when blinenum>alinenum then blinenum else alinenum end,
@idrecdir=idrecdir, 
@ts=replace(convert(nvarchar(10), TimeStart, 121),'-','_')+'__'+
replace(convert(nvarchar(20), TimeStart, 114),':','_') from A_Stat_Connections_1x1
where Id=@id and isrecorded=1
set @path='C:\Program Files (x86)\oktell\Server\RecordedFiles\'
if (@idrecdir>0)
select @path=path from A_Stat_RecordDirectories where id=@idrecdir
set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)
+substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'

где

  • @filename - переменная file (строковая)
  • @id - переменная id.


Компонент "Вывод пути" - отладочное уведомление, выводит переменную file.


Компонент "file?" - Компонент меню производит циклическую запись в переменные file1, file2, file3, file4 и file5.

Пояснение: Все записи разговоров требуется отправить в компоненте Отправка Email. Компонент поддерживает до 5 вложений и эти вложения необходимо каким-либо образом указывать. Поэтому используются 5 строковых переменных file1...file5, в каждую из которых в ходе цикла записывается путь к записи разговора. Путь к первой записи разговора (i=1) будет записан в переменную file1, путь к пятой (i=5) в file5. Путь к шестой записи разговора будет перезаписан в переменную file1 и так далее. Таким образом при отправке электронного письма, к нему будут прикреплены последние пять коммутаций клиента.

У компонента используются следующие настройки:

  • Аргумент - выражение "[i]%5". Выражение возвращает остаток от деления переменной i на 5.
  • Значения - 0, 1, 2, 3, 4.

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

  • по ветке 0 - путь записывается в переменную file5 (т.к. это выполнится при i=5, 10...)
  • по ветке 1 - путь записывается в переменную file1
  • по ветке 2 - путь записывается в переменную file2
  • по ветке 3 - путь записывается в переменную file3
  • по ветке 4 - путь записывается в переменную file4


Отправка записей на почту 004.png


Компонент "Обнуление имени файла" - переменной "file" присваивается пустая строка.


Компонент "i++" - переменной i присваивается выражение "[i]+1"


Компонент "Проверка на завершение" - значение счетчика i после инкремента сравнивается с количеством коммутаций com_count.

  • Аргумент 1 - переменная i
  • Аргумент 2 - переменная com_count
  • Тип сравнения - <=

Если правда, то производится еще одна итерация. Переход на компонент Id записи.

Если ложь, то переход на компонент "Ув2" и в дальнейшем на отправку электронного письма.


Компонент "Ув2" - отладочное уведомление, показывает значения переменных file1..file5.


Компонент "Количество вложений" - нужен для того, чтобы правильно задать отправку e-mail письма. Если имеется 1 коммутация, то прикрепляется только переменная file1; если 4 коммутации, то соответственно настраиваются 4 вложения. Если коммутаций 5 и больше, то отправляются 5 вложений.


Компоненты отправка e-mail настраиваются одинаковым образом:

  • Способ отправки - настраивается smtp-сервер, данные для авторизации.
  • Кому - адрес получателя
  • От кого - адрес отправителя
  • Тема, Содержание письма - генерируется соответствующая информация. В содержании письма можно указать с какого номера на какой номер звонил клиент, сколько времени ожидал на линии, с какими операторами разговаривал. В данном сценарии не рассматривается.
  • Вложение 1..Вложение 5 - указываются соответствующие переменные file 1... file 5.


Отправка записей на почту 006.png


Сценарий отправки записей в zip-архиве

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


Отправка записей на почту 007.png


В сценарии используется внешний процесс 7za.exe - консольное приложение от 7-zip (скачано по ссылке http://www.7-zip.org/download.html). Данное консольное приложение предварительно скопировано на диск C:\.

Скачать приложение: 7za.zip

Пример архивации двух файлов C:\1.mp3 и C:\2.mp3 в архив С:\archive.zip:

C:\7za.exe a -tzip c:\archive.zip "C:\1.mp3" "C:\2.mp3"


Далее рассматриваются компоненты сценария:

Компонент "Старт 1" - в качестве параметра запуска переменная content (строковая). В этой переменной будет храниться контент цепочки коммутаций.


Компонент "Вывод контента" - отладочное уведомление, выводит переменную content.


Компонент "Количество коммутаций" - Парсер, определяет количество коммутаций с операторами (исключает соединение с IVR-сценариями).

  • Документ - переменная content
  • Алгоритм - Язык OQuery для HTML
  • Поисковый запрос - используется следующее выражение:
commutation:has([name=abonent])>[key=idconnection]
  • Функция - Количество элементов
  • Результат в переменную - переменная com_count (число). В переменной будет храниться количество коммутаций.

Если парсер не находит таких коммутаций, он переходит по ветке "Ошибка". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение.


Отправка записей на почту 002.png


Компонент "Ув1" - отладочное уведомление, выводит переменную com_count.


Компонент "cmd" - создание командной строки для консоли 7za.exe. В компоненте задано:

  • Присвоение переменной path(строковая) - выражения
'c:\temp\archive'+substr(now,0,2)+substr(now,3,2)+ substr(now,8,2)+'-'+substr(now,11,2)+
substr(now,14,2)+substr(now,17,2)+'.zip'
Переменная path содержит путь к zip-архиву. В примере, все созданные архивы будут храниться в папке "c:\temp", ее нужно будет очищать либо вручную либо автоматически с помощью сценария.
  • Присвоение переменной cmd(строковая) - выражения
'a -tzip '+[path]
В переменной cmd будут храниться все параметры командной строки, которые в конце сценария будут переданы программе 7za.exe.


Компонент "Счетчик" - присвоение переменной i (строковая) значения 1 (строка).


Компонент "Id записи" - парсер, определяет i-й Id коммутации, по которой в дальнейшем восстанавливается путь к файлу записи. Счетчик i в дальнейшем инкрементируется, таким образом пробегаются все коммутации клиента с операторами.

  • Документ - переменная content
  • Алгоритм - Язык OQuery для HTML
  • Поисковый запрос - используется следующее выражение:
'commutation:has([name=abonent])>[key=idconnection]:eq('+[i]+')'
  • Функция - Значение атрибута
  • Атрибут - value
  • Результат в переменную - переменная id (строковая). В переменной будет храниться id коммутации.


Отправка записей на почту 011.png


Компонент "Путь к файлу" - В SQL-запросе явно прописывается в какой папке располагаются записи разговоров. Рекомендуется проверить запрос на предмет использования в вашей системе (возможно, стоит убрать (x86)). Используется следующий SQL-запрос:

declare @aln nvarchar(10)
declare @bln nvarchar(10)
declare @idrecdir int
declare @ts nvarchar(50)
declare @path nvarchar(1000)
select top 1 @aln=case when alinenum<blinenum then alinenum else blinenum end,
@bln=case when blinenum>alinenum then blinenum else alinenum end,
@idrecdir=idrecdir, 
@ts=replace(convert(nvarchar(10), TimeStart, 121),'-','_')+'__'+
replace(convert(nvarchar(20), TimeStart, 114),':','_') from A_Stat_Connections_1x1
where Id=@id and isrecorded=1
set @path='C:\Program Files (x86)\oktell\Server\RecordedFiles\'
if (@idrecdir>0)
select @path=path from A_Stat_RecordDirectories where id=@idrecdir
set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)
+substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'

где

  • @filename - переменная file (строковая, выходная)
  • @id - переменная id (входная, содержит ID коммутации).


Компонент "Вывод пути" - отладочное уведомление, выводит переменную file.


Компонент "cmd+file" - добавляет найденный файл к параметрам командной строки. В компоненте переменной cmd присваивается выражение

[cmd]+' "'+[file]+'"'


Компонент "Обнуление имени файла" - переменной "file" присваивается пустая строка.


Компонент "i++" - переменной i присваивается выражение "[i]+1"


Компонент "Проверка на завершение" - значение счетчика i после инкремента сравнивается с количеством коммутаций com_count.

  • Аргумент 1 - переменная i
  • Аргумент 2 - переменная com_count
  • Тип сравнения - <=

Если правда, то производится еще одна итерация. Переход на компонент Id записи.

Если ложь, то переход на компонент "Ув2" и в дальнейшем на отправку электронного письма.


Компонент "Ув2" - отладочное уведомление, показывает значения переменных file1..file5.


Компонент "Создание архива" - запускает внешний процесс C:\7za.exe с параметрами cmd.

  • Файл - указывается путь к приложению. В примере, C:\7za.exe
  • Путь - абсолютный
  • Параметры командной строки командной строки - переменная cmd
  • Ожидание завершения - Да


Отправка записей на почту 008.png


Компонент "Отправка e-mail" - отправляет архив с записями разговоров на электронную почту:

  • Способ отправки - настраивается smtp-сервер, данные для авторизации.
  • Кому - адрес получателя
  • От кого - адрес отправителя
  • Тема, Содержание письма - генерируется соответствующая информация. В содержании письма можно указать с какого номера на какой номер звонил клиент, сколько времени ожидал на линии, с какими операторами разговаривал. В данном сценарии не рассматривается.
  • Вложение 1 - переменная path


Отправка записей на почту 010.png

Комбинированный метод

На основании выше сказанного можно создать сценарий, в котором анализируется количество записей разговоров com_count. Если их больше 5, то отправка реализуется с помощью zip-архива, если 5 или меньше - отправляются вложениями.

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


Отправка записей на почту 012.png


Установка сценария

Перейдите в Администрирование - Общие настройки - Сценарии АТС и укажите созданный сценарий в качестве Служебного сценария обработки контента. Нажмите "Сохранить".


Отправка записей на почту 013.png


Также установите следующие настройки в разделе Администрирование - Общие настройки - "Управление записями разговоров". После установки нажмите "Сохранить".


Отправка записей на почту 014.png


При создании сценариев использовалась статья: Получить путь к записи разговора по завершению коммутации

Скачать файлы сценариев: Контент_Запись_Разговора.zip

Для использования необходимо
1) Файл 7za.exe поместить на диск C:\
2) Во всех компонентах отправки email поменять настройки smtp-сервера, адреса получателя и отправителя, текст письма.
3) Обозначить сценарий в качестве служебного сценария обработки контента