Отправка записей разговоров на e-mail — различия между версиями
(Новая страница: «Наверх '''Задача:''' Отправить записи разговора клиента с операторами на почту. ...») |
м (→Установка сценария) |
||
(не показано 29 промежуточных версии этого же участника) | |||
Строка 1: | Строка 1: | ||
[[Практики|Наверх]] | [[Практики|Наверх]] | ||
+ | |||
+ | __TOC__ | ||
+ | |||
'''Задача:''' Отправить записи разговора клиента с операторами на почту. Учесть переключения клиента между операторами. | '''Задача:''' Отправить записи разговора клиента с операторами на почту. Учесть переключения клиента между операторами. | ||
+ | |||
Руководителям всех отделов, подразделений и целых предприятий бывает полезно знать как их сотрудники общаются с клиентами, верно ли они преподносят информацию о продукте, правильно ли предлагают услуги. Если не контролировать этот процесс, лояльность ваших клиентов, и их отношение к организации в целом, может упасть. | Руководителям всех отделов, подразделений и целых предприятий бывает полезно знать как их сотрудники общаются с клиентами, верно ли они преподносят информацию о продукте, правильно ли предлагают услуги. Если не контролировать этот процесс, лояльность ваших клиентов, и их отношение к организации в целом, может упасть. | ||
− | Отследить качество клиентского обслуживания и разрешить спорные ситуации, возникающие при телефонных контактах с клиентами, поможет прослушивание аудиозаписей телефонных разговоров. В Oktell все разговоры сотрудников с клиентами записываются по умолчанию. | + | Отследить качество клиентского обслуживания и разрешить спорные ситуации, возникающие при телефонных контактах с клиентами, поможет прослушивание аудиозаписей телефонных разговоров. В '''Oktell''' все разговоры сотрудников с клиентами записываются по умолчанию. |
+ | |||
Вы так же можете настроить автоматическую отправку отчета о разговорах на вашу электронную почту. В тексте письма вы получите дату и время звонка, имя оператора, продолжительность разговора, номер телефона клиента и его оценку разговора. | Вы так же можете настроить автоматическую отправку отчета о разговорах на вашу электронную почту. В тексте письма вы получите дату и время звонка, имя оператора, продолжительность разговора, номер телефона клиента и его оценку разговора. | ||
− | При большом количестве звонков, ваша почта может быстро переполниться, поэтому советуем настроить оповещение только в крайних случаях. Например, когда клиент поставил сотруднику оценку | + | При большом количестве звонков, ваша почта может быстро переполниться, поэтому советуем настроить оповещение только в крайних случаях. Например, когда клиент поставил сотруднику оценку “'''2'''” за обслуживание. |
В таких крайних случаях крайне важно понять, почему клиент недоволен и поставил низкую оценку. Учитывая, что в компаниях клиента могут переключать от одного оператора к другому, требуется восстановить всю последовательность разговоров - от первой коммутации с секретарем до последней коммутации с ответственным оператором. | В таких крайних случаях крайне важно понять, почему клиент недоволен и поставил низкую оценку. Учитывая, что в компаниях клиента могут переключать от одного оператора к другому, требуется восстановить всю последовательность разговоров - от первой коммутации с секретарем до последней коммутации с ответственным оператором. | ||
− | |||
− | Для решения задачи используется сценарий обработки контента. Сценарий выглядит следующим образом: | + | Для отправки записей разговоров в сценарии используется компонент "'''Отправка Email'''". В этом компоненте возможно прикрепить до 5 вложений. Однако встает вопрос - что делать, если клиент общался больше чем с пятью операторами (суммарное количество переключение превышает 4). Существует несколько способов решения данной задачи. |
+ | |||
+ | '''Способ 1:''' В сценарии отправляются 5 записей разговора - это могут быть последние пять коммутаций клиента с оператором, или, например, первая и четыре последних коммутации. | ||
+ | |||
+ | *'''Достоинства:''' Такие сервисы как mail.ru или gmail.com позволяют сразу проигрывать вложенные звуковые файлы, не скачивая их. Это позволяет руководителю быстро прослушать записи разговоров прямо из окна браузера, что очень удобно. | ||
+ | |||
+ | *'''Недостатки:''' По сути, если количество коммутаций больше 5, то мы теряем часть из них. Все зависит от максимального количества переключений, которое может быть в вашей компании. | ||
+ | |||
+ | |||
+ | [[Файл:Отправка записей на почту 015.png |center]] | ||
+ | |||
+ | |||
+ | '''Способ 2:''' В сценарии все найденные записи разговоров запаковываются в zip-архив, который затем отправляется одним вложением в элекронном письме. | ||
+ | |||
+ | *'''Достоинства:''' В электронном письме может быть отправлено неограниченное количество записей (ограничение идет уже от Smtp-провайдера по максимальному размеру вложений). Если клиента переключали 10 раз между различными операторами - вы получите полную историю разговоров клиента. | ||
+ | |||
+ | *'''Недостатки:''' В отличии от первого способа, архив придется скачать и распаковать. Этот процесс может занимать некоторое время. | ||
+ | |||
+ | |||
+ | [[Файл:Отправка записей на почту 016.png |center]] | ||
+ | |||
+ | |||
+ | '''Способ 3:''' Комбинация первого и второго способов. Если количество найденных коммутаций больше пяти - они запаковываются в архив, если их пять или меньше - отправляются в электронном письме напрямую. | ||
+ | |||
+ | <span style="color:red"> Рекомендуется использовать третий способ как наиболее удобный. </span> В статье данный способ рассматривается по частям на примере первого и второго способов. | ||
+ | |||
+ | |||
+ | === Сценарий прямой отправки на email === | ||
+ | |||
+ | Для решения задачи используется '''сценарий обработки контента'''. Сценарий выглядит следующим образом: | ||
+ | |||
+ | |||
+ | [[Файл:Отправка записей на почту 001.png |center]] | ||
Компонент "'''Старт 1'''" - в качестве параметра запуска переменная '''content''' (строковая). В этой переменной будет храниться контент цепочки коммутаций. | Компонент "'''Старт 1'''" - в качестве параметра запуска переменная '''content''' (строковая). В этой переменной будет храниться контент цепочки коммутаций. | ||
+ | |||
Компонент "'''Вывод контента'''" - отладочное уведомление, выводит переменную '''content'''. | Компонент "'''Вывод контента'''" - отладочное уведомление, выводит переменную '''content'''. | ||
+ | |||
Компонент "'''Количество коммутаций'''" - Парсер, определяет количество коммутаций с операторами (исключает соединение с IVR-сценариями). | Компонент "'''Количество коммутаций'''" - Парсер, определяет количество коммутаций с операторами (исключает соединение с IVR-сценариями). | ||
Строка 32: | Строка 70: | ||
* '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций. | * '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций. | ||
− | Если парсер не находит таких коммутаций, он переходит по ветке "Ошибка". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение. | + | Если парсер не находит таких коммутаций, он переходит по ветке "'''Ошибка'''". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение. |
+ | |||
+ | |||
+ | [[Файл:Отправка записей на почту 002.png |center]] | ||
+ | |||
Компонент "'''Ув1'''" - отладочное уведомление, выводит переменную '''com_count'''. | Компонент "'''Ув1'''" - отладочное уведомление, выводит переменную '''com_count'''. | ||
+ | |||
Компонент "'''Счетчик'''" - присвоение переменной '''i''' (строковая) значения '''1''' (строка). | Компонент "'''Счетчик'''" - присвоение переменной '''i''' (строковая) значения '''1''' (строка). | ||
+ | |||
Компонент "'''Id записи'''" - парсер, определяет i-й Id коммутации, по которой в дальнейшем восстанавливается путь к файлу записи. Счетчик i в дальнейшем инкрементируется, таким образом пробегаются все коммутации клиента с операторами. | Компонент "'''Id записи'''" - парсер, определяет i-й Id коммутации, по которой в дальнейшем восстанавливается путь к файлу записи. Счетчик i в дальнейшем инкрементируется, таким образом пробегаются все коммутации клиента с операторами. | ||
Строка 44: | Строка 88: | ||
* '''Поисковый запрос''' - используется следующее '''выражение''': | * '''Поисковый запрос''' - используется следующее '''выражение''': | ||
− | 'commutation:has([name=abonent])>[key=idconnection]:eq('+[i]+')' | + | 'commutation:has([name=abonent])>[key=idconnection]:eq('+[i]+')' |
* '''Функция''' - Значение атрибута | * '''Функция''' - Значение атрибута | ||
* '''Атрибут''' - value | * '''Атрибут''' - value | ||
* '''Результат в переменную''' - переменная '''id''' (строковая). В переменной будет храниться id коммутации. | * '''Результат в переменную''' - переменная '''id''' (строковая). В переменной будет храниться id коммутации. | ||
+ | |||
+ | |||
+ | [[Файл:Отправка записей на почту 003.png |center]] | ||
+ | |||
Компонент "'''Путь к файлу'''" - В SQL-запросе явно прописывается в какой папке располагаются записи разговоров. Рекомендуется проверить запрос на предмет использования в вашей системе (возможно, стоит убрать ''(x86)''). Используется следующий SQL-запрос: | Компонент "'''Путь к файлу'''" - В SQL-запросе явно прописывается в какой папке располагаются записи разговоров. Рекомендуется проверить запрос на предмет использования в вашей системе (возможно, стоит убрать ''(x86)''). Используется следующий SQL-запрос: | ||
Строка 66: | Строка 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' | ||
где | где | ||
− | '''@filename''' - переменная file (строковая) | + | *'''@filename''' - переменная file (строковая) |
− | '''@id''' - переменная id. | + | *'''@id''' - переменная id. |
− | |||
− | Компонент " | + | Компонент "'''Вывод пути'''" - отладочное уведомление, выводит переменную '''file'''. |
− | '''Пояснение:''' Все записи разговоров требуется отправить в компоненте '''Отправка Email'''. Компонент поддерживает до 5 вложений и эти вложения необходимо каким-либо образом указывать. Поэтому используются 5 строковых переменных file1...file5, в каждую из которых в ходе цикла записывается путь к записи разговора. Путь к первой записи разговора (i=1) будет записан в переменную file1, путь к пятой (i=5) в file5. Путь к шестой записи разговора будет перезаписан в переменную file1 и так далее. Таким образом при отправке электронного письма, к нему будут прикреплены последние пять коммутаций клиента. | + | |
+ | Компонент "'''file?'''" - Компонент меню производит циклическую запись в переменные '''file1''', '''file2''', '''file3''', '''file4''' и '''file5'''. | ||
+ | |||
+ | '''Пояснение:''' Все записи разговоров требуется отправить в компоненте '''Отправка Email'''. Компонент поддерживает до 5 вложений и эти вложения необходимо каким-либо образом указывать. Поэтому используются 5 строковых переменных '''file1'''...'''file5''', в каждую из которых в ходе цикла записывается путь к записи разговора. Путь к первой записи разговора ('''i=1''') будет записан в переменную '''file1''', путь к пятой ('''i=5''') в '''file5'''. Путь к шестой записи разговора будет перезаписан в переменную '''file1''' и так далее. Таким образом при отправке электронного письма, к нему будут прикреплены последние пять коммутаций клиента. | ||
У компонента используются следующие настройки: | У компонента используются следующие настройки: | ||
Строка 92: | Строка 142: | ||
* по ветке 3 - путь записывается в переменную file3 | * по ветке 3 - путь записывается в переменную file3 | ||
* по ветке 4 - путь записывается в переменную file4 | * по ветке 4 - путь записывается в переменную file4 | ||
+ | |||
+ | |||
+ | [[Файл:Отправка записей на почту 004.png |center]] | ||
+ | |||
Компонент "'''Обнуление имени файла'''" - переменной "'''file'''" присваивается пустая строка. | Компонент "'''Обнуление имени файла'''" - переменной "'''file'''" присваивается пустая строка. | ||
+ | |||
Компонент "'''i++'''" - переменной '''i''' присваивается выражение "'''[i]+1'''" | Компонент "'''i++'''" - переменной '''i''' присваивается выражение "'''[i]+1'''" | ||
+ | |||
Компонент "'''Проверка на завершение'''" - значение счетчика '''i''' после инкремента сравнивается с количеством коммутаций '''com_count'''. | Компонент "'''Проверка на завершение'''" - значение счетчика '''i''' после инкремента сравнивается с количеством коммутаций '''com_count'''. | ||
Строка 105: | Строка 161: | ||
Если '''ложь''', то переход на компонент "'''Ув2'''" и в дальнейшем на отправку электронного письма. | Если '''ложь''', то переход на компонент "'''Ув2'''" и в дальнейшем на отправку электронного письма. | ||
+ | |||
Компонент "'''Ув2'''" - отладочное уведомление, показывает значения переменных '''file1'''..'''file5'''. | Компонент "'''Ув2'''" - отладочное уведомление, показывает значения переменных '''file1'''..'''file5'''. | ||
− | Компонент " | + | |
+ | Компонент "'''Количество вложений'''" - нужен для того, чтобы правильно задать отправку e-mail письма. Если имеется 1 коммутация, то прикрепляется только переменная '''file1'''; если 4 коммутации, то соответственно настраиваются 4 вложения. Если коммутаций 5 и больше, то отправляются 5 вложений. | ||
+ | |||
+ | |||
+ | Компоненты '''отправка e-mail''' настраиваются одинаковым образом: | ||
+ | * '''Способ отправки''' - настраивается smtp-сервер, данные для авторизации. | ||
+ | * '''Кому''' - адрес получателя | ||
+ | * '''От кого''' - адрес отправителя | ||
+ | * '''Тема''', '''Содержание письма''' - генерируется соответствующая информация. В содержании письма можно указать с какого номера на какой номер звонил клиент, сколько времени ожидал на линии, с какими операторами разговаривал. В данном сценарии не рассматривается. | ||
+ | * '''Вложение 1'''..'''Вложение 5''' - указываются соответствующие переменные '''file 1'''... '''file 5'''. | ||
+ | |||
+ | |||
+ | [[Файл:Отправка записей на почту 006.png |center]] | ||
+ | |||
+ | |||
+ | |||
+ | ===Сценарий отправки записей в zip-архиве === | ||
+ | |||
+ | Для решения задачи используется '''сценарий обработки контента'''. Сценарий выглядит следующим образом: | ||
+ | |||
+ | |||
+ | [[Файл:Отправка записей на почту 007.png |center]] | ||
+ | |||
+ | |||
+ | В сценарии используется внешний процесс '''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:\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 |center]] | ||
+ | |||
+ | |||
+ | Компонент "'''Ув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|center]] | ||
+ | |||
+ | |||
+ | Компонент "'''Путь к файлу'''" - В 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 | ||
+ | <nowiki>set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)</nowiki> | ||
+ | +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|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, то мы теряем часть из них. Все зависит от максимального количества переключений, которое может быть в вашей компании.
Способ 2: В сценарии все найденные записи разговоров запаковываются в zip-архив, который затем отправляется одним вложением в элекронном письме.
- Достоинства: В электронном письме может быть отправлено неограниченное количество записей (ограничение идет уже от Smtp-провайдера по максимальному размеру вложений). Если клиента переключали 10 раз между различными операторами - вы получите полную историю разговоров клиента.
- Недостатки: В отличии от первого способа, архив придется скачать и распаковать. Этот процесс может занимать некоторое время.
Способ 3: Комбинация первого и второго способов. Если количество найденных коммутаций больше пяти - они запаковываются в архив, если их пять или меньше - отправляются в электронном письме напрямую.
Рекомендуется использовать третий способ как наиболее удобный. В статье данный способ рассматривается по частям на примере первого и второго способов.
Сценарий прямой отправки на email
Для решения задачи используется сценарий обработки контента. Сценарий выглядит следующим образом:
Компонент "Старт 1" - в качестве параметра запуска переменная content (строковая). В этой переменной будет храниться контент цепочки коммутаций.
Компонент "Вывод контента" - отладочное уведомление, выводит переменную content.
Компонент "Количество коммутаций" - Парсер, определяет количество коммутаций с операторами (исключает соединение с IVR-сценариями).
- Документ - переменная content
- Алгоритм - Язык OQuery для HTML
- Поисковый запрос - используется следующее выражение:
commutation:has([name=abonent])>[key=idconnection]
- Функция - Количество элементов
- Результат в переменную - переменная com_count (число). В переменной будет храниться количество коммутаций.
Если парсер не находит таких коммутаций, он переходит по ветке "Ошибка". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение.
Компонент "Ув1" - отладочное уведомление, выводит переменную com_count.
Компонент "Счетчик" - присвоение переменной i (строковая) значения 1 (строка).
Компонент "Id записи" - парсер, определяет i-й Id коммутации, по которой в дальнейшем восстанавливается путь к файлу записи. Счетчик i в дальнейшем инкрементируется, таким образом пробегаются все коммутации клиента с операторами.
- Документ - переменная content
- Алгоритм - Язык OQuery для HTML
- Поисковый запрос - используется следующее выражение:
'commutation:has([name=abonent])>[key=idconnection]:eq('+[i]+')'
- Функция - Значение атрибута
- Атрибут - value
- Результат в переменную - переменная id (строковая). В переменной будет храниться id коммутации.
Компонент "Путь к файлу" - В 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
Компонент "Обнуление имени файла" - переменной "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.
Сценарий отправки записей в zip-архиве
Для решения задачи используется сценарий обработки контента. Сценарий выглядит следующим образом:
В сценарии используется внешний процесс 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 (число). В переменной будет храниться количество коммутаций.
Если парсер не находит таких коммутаций, он переходит по ветке "Ошибка". Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение.
Компонент "Ув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 коммутации.
Компонент "Путь к файлу" - В 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
- Ожидание завершения - Да
Компонент "Отправка e-mail" - отправляет архив с записями разговоров на электронную почту:
- Способ отправки - настраивается smtp-сервер, данные для авторизации.
- Кому - адрес получателя
- От кого - адрес отправителя
- Тема, Содержание письма - генерируется соответствующая информация. В содержании письма можно указать с какого номера на какой номер звонил клиент, сколько времени ожидал на линии, с какими операторами разговаривал. В данном сценарии не рассматривается.
- Вложение 1 - переменная path
Комбинированный метод
На основании выше сказанного можно создать сценарий, в котором анализируется количество записей разговоров com_count. Если их больше 5, то отправка реализуется с помощью zip-архива, если 5 или меньше - отправляются вложениями.
Сценарий выглядит следующим образом:
Установка сценария
Перейдите в Администрирование - Общие настройки - Сценарии АТС и укажите созданный сценарий в качестве Служебного сценария обработки контента. Нажмите "Сохранить".
Также установите следующие настройки в разделе Администрирование - Общие настройки - "Управление записями разговоров". После установки нажмите "Сохранить".
При создании сценариев использовалась статья: Получить путь к записи разговора по завершению коммутации
Скачать файлы сценариев: Контент_Запись_Разговора.zip
Для использования необходимо
1) Файл 7za.exe поместить на диск C:\
2) Во всех компонентах отправки email поменять настройки smtp-сервера, адреса получателя и отправителя, текст письма.
3) Обозначить сценарий в качестве служебного сценария обработки контента