FAQ по кампаниям
Повторный контакт
Повторный контакт- функционал позволяющий в рамках текущей кампании перезвонить клиенту в назначенное время.
Есть несколько вариантов использовать повторный контакт.
Вариант№1
1. Создаем таблицу кампании с полями «Телефон_повторного_контакта» и «Время_повторного_контакта»
2. Привязываем таблицу к исходящей кампании и в назначении полей выбираем назначения
3. В параметрах кампании ставим галочку отображать форму повторного контакта
4. Запускаем кампанию и после поднятия трубки оператором у него отобразятся 2 поля. Время и Телефон (повторные контакты). В эти поля сотрудник заносит Время (во сколько нужно перезвонить) и телефон (на который нужно перезвонить) . После этого нажимаем на кнопку «Запланировать». В указанное время произойдет повторный звонок на телефон
Вариант№2
1. Повторяем шаги 1 и 2 из Варианта№1
2. Далее создаем сценарий диалога. Используя компонент Поля ввода заносим телефон и время повторного контакта.
3. По кнопке Далее переходим на компонент «Повторный контакт». В поле номер выбираем Свойство – Телефон_повторного_контакта
В поле Телефон выбираем Свойство – Время_повторного_контакта.
Получаем следующий сценарий диалога:
4. При поступлении звонка по исходящей кампании у сотрудника откроется сценарий диалога
Указываем телефон, время и нажимаем кнопку Далее
Как сделать копию кампании вместе со сценарием диалога?
Вопрос: Как сделать копию компании вместе со сценарием диалога?
Ответ: На текущий момент Infinity X не позволяет делать копию диалоговых сценариев штатными средствами, но есть вариант решения:
Пример, имеется кампания с названием "Кампания1", с таблицей контрагентов "таблица1"
Необходимо создать точную копию, с таблицей - копией "таблица1"
Новая кампания будет называться "Кампания2" "таблица2"
1. Создаём новую таблицу - "таблица2", без дополнительных полей.
2. запускаем PgAdmin Делаем SQL запрос в БД, базы Cx_Configuration и узнаём имена наших таблиц в БД, в базе Cx_Work:
sel ect * fr om "D_Tables"
where "Name" = 'таблица1'
or "Name" = 'таблица2'
Допустим мы получили такие данные:
"таблица1" "Table_5000180026"
"таблица2" "Table_5003993956"
3.Идём в PgAdmin, браузер объектов, --> Cx_Work --> Схемы --> Public --> Таблицы --> находим наши "Table_5000180026" и "Table_5003993956"
Копируем из панели SQL запрос в окно редактора запросов и если мы не создавали доп. полей, запрос будет таким:
-- Table: "Table_5003993956"
-- DR OP TABLE "Table_5003993956";
CRE ATE TABLE "Table_5003993956"
(
"ID" bigint NOT NULL,
"State" integer,
CONSTRAINT "Table_5003993956_pkey" PRIMARY KEY ("ID"
)
WITH (
OIDS=FALSE
);
ALT ER TABLE "Table_5003993956"
OWNER TO cxdbuser;
4. Вставляем между "State" integer, и CONSTRAINT "Table_5003993956_pkey" PRIMARY KEY ("ID" новые строки (копируем существующие поля из панели SQL таблицы "Table_5000180026" (которая соответствует нашей "таблица1".
Удаляем знак комментария ('--') перед DR OP TABLE и в итоге запрос должен стать примерно таким:
DR OP TABLE "Table_5003993956";
CRE ATE TABLE "Table_5003993956"
(
"ID" bigint NOT NULL,
"State" integer,
anum text,
date_call timestamp without time zone,
agent_name text,
"QQQ" text,
link text,
agent text,
datetime_call timestamp without time zone,
bnum text,
contact_info text,
contact_comment text,
call_id text,
datetime_answer timestamp without time zone,
CONSTRAINT "Table_5003993956_pkey" PRIMARY KEY ("ID"
)
WITH (
OIDS=FALSE
);
ALT ER TABLE "Table_5003993956"
OWNER TO cxdbuser;
Проверяем (внимательно смотрим что мы пересоздаём таблицу2 а не таблицу 1, иначе можем потерять все данные таблицы1) и выполняем запрос.
Нажав кнопку "обновить" убеждаемся, что формат нашей "Table_5003993956" (таблица2) полностью соответствует формату "Table_5000180026" (таблица1)
5. Далее, аналогично создаём копию кампании, для начала создадим новую компанию, с названием "Кампания2", без каких либо настроек. Возможно этот момент можно пропустить, а просто создать соответствующую строку в таблице "O_Campaigns", но т.к. на текущий момент я ещё недостаточно хорошо изучил систему и на случай возможного существования каких либо зависимостей, лучше предварительно создать "пустую" компанию - это недолго.
6.И так, "пустая" компания с именем "Кампания2" и таблицей "таблица2" создана.
Для копирования настроек из 'Кампания1' в'Кампания2' (в том числе копирования сценария диалога),выполним вот такой SQL update:
upd ate "O_Campaigns" se t
"FieldParams" = (sel ect "FieldParams" fr om "O_Campaigns" where "Name"= 'Кампания1'),
"GridLayout" = (sel ect "GridLayout" fr om "O_Campaigns" where "Name"= 'Кампания1'),
"ScenarioData" = (sel ect "ScenarioData" fr om "O_Campaigns" where "Name"= 'Кампания1'),
"ScenarioSource" = (select "ScenarioSource" fr om "O_Campaigns" where "Name"= 'Кампания1'),
"ScenarioBinary" = (select "ScenarioBinary" fr om "O_Campaigns" wh ere "Name"= 'Кампания1'),
"LayoutData" = (select "LayoutData" fr om "O_Campaigns" wh ere "Name"= 'Кампания1')
wh ere "Name"= 'Кампания2'
Полагаю, что для последнего апдейта лучше создать процедуру или какой-нибудь скрипт, но для одного раза пойдёт и так.
Собственно всё!
Теперь "Кампания2" у нас точная копия ранее существовавшей компании "Кампания1", со всеми настройками (кроме назначенных операторов) и диалоговым сценарием.
Как настроить кнопки в кампании
Настройка кнопок
<?xml version="1.0"?>
<ArrayOfButtonInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ButtonInfo>
<Caption>Кнопка 11</Caption>
<Action>TransferToACD</Action>
<Params>555</Params>
<ImageIndex>-1</ImageIndex>
</ButtonInfo>
<ButtonInfo>
//...
<ButtonInfo>
//....
</ArrayOfButtonInfo>
Action:
1. OpenBrowser - открыть browser в новом окне
Params - url
2. ShowReport
Params - ID отчёта
3. TransferToACD - перевод на очередь/кампанию
Params - ID очереди/кампании
4. StartTransferToOperator - перевод с формой выбора оператора
QuickTransferToOperator - перевод с формой выбора оператора, быстрый
5. StartTransfer
QuickTransfer
6. MakeCall
7. DropCall
8. Execute - запустить процесс
ShellExecute
params - командная строка
Как открыть внешний браузер в рамках сценария диалога?
Ответ - Компонент "Фрагмент кода"
using (System.Diagnostics.Process process = new System.Diagnostics.Process())
{
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = "http://ya.ru";
process.StartInfo.Verb = "open";
process.Start();
}
Как в рамках сценария диалога осуществить перевод текущего звонка, без обращения к дополнительным инструментами оператора
Для решения данной задачи необходимо использовать элемент "Фрагмент кода":
Cx.Client.CallManagement.CallManagementInterface.CurrentCallQuickTransfer("123"); - для безусловного перевода
Cx.Client.CallManagement.CallManagementInterface.CurrentCallStartTransfer("123"); - для консультационного перевода
Как удалить записи из таблицы кампании посредством прямого обращения в базу?
Зайдите в PgAdmin
Логин: cxdbuser
Пароль: cxdbwizard
Таблицы кампании лежат в базе Cx_Work
Находим необходимую таблицу.
Нажимаем правой кнопкой на таблице – выбираем DELETE скрипт
Выполняем скрипт. Данным скриптом мы удаляем все данные в таблице.
Как организовать инструмент База знаний?
Для реализации Базы знаний в рамках сценария диалога Вам необходимо развернуть движок сайта Wiki (например, бесплатный движок MediaWiki) своими силами, или обратившись в техническую поддержку Infinity. В нужный момент сценария диалога Вы вставляете компонент Web-страница, и настраиваете переход на нее например по специальной кнопке. В результате, Ваш оператор может посмотреть необходимую информацию во встроенном браузере и затем продолжить беседу по сценарию. В качестве альтернативы можно использовать инструмент WEB-страница у оператора
Наполнить Базу знаний Вы сможете самостоятельно, либо это могут сделать наши технические специалисты по Вашему техническому заданию
Примеры реализации:
Добавили новые столбцы в проект существующей кампании, в карточке они отображаются, в таблице нет. Как исправить?
Чтобы они отображались достаточно выбрать соответствующую кампанию в разделе Управление – Кампании, и с зажатой клавишей Shift нажать кнопку «Настройка внешнего вида»
И подтверждаем сброс настроек
Как при использовании кампаний открывать WEB-форму или гиперссылку в браузере? И в чем отличие?
Вопрос: Как при использовании кампаний открывать WEB-форму или гиперссылку в браузере?
Ответ:
Отличие в том, что гиперссылка открывается в браузере назначенном по умолчанию, а WEB-форма открывается внутри функционального окна Infinity.
Для того чтобы настроить открытие таких карточек необходимо в кампании выбрать соответствующий пункт меню
В поле Внешняя карточка указываем http ссылку которую будем открывать, при этом в квадратных скобках можем указать название любого столбца кампании или несколько столбцов.
Как пример при входящем звонке будем подставлять в ссылку информацию из столбца кампании TELEPHONE
В результате при звонке система подставляет информацию и открывает окно бразуера.
Если необходимо передавать в гиперссылку какую-либо информацию из IVR (в данном случае будем передавать номер абонента), то следует создать соответствующий компонент IVR Информация о звонке перед компонентом IVR Входящая кампания
И добавить его название в ссылку
Результат
Как изменить параметр кампании через сценарий?
Это возможно сделать с помощью компоненты сценария «Вызов метода».
Выбираем компонент «Вызов метода» - выбираем метод «ИзменитьПараметрКонфигурации»
В параметрах указываем:
Наименование – имя параметра, который хотим изменить. Подглядывать имя параметра можно в инструменте Справочники – Справочник параметров – задаем имя в формате Папка.Подпапка.ИмяПараметра
Пример : Campaign.Mode.DynamicChannelsSelection
IDОбъекта - ID кампании
Значение - значение, которое хотим установить. (какой тип данных использует параметр можно посмотреть в справочнике параметров)
Расшифровка кодов состояния звонка в кампании
Проверка 1
Некорректная контактная информация 2
Отменён сценарием 3
Набор номера... 4
Ожидание... 5
Обрабатывается 6
Обработан 7
Ошибка 8
Занято 9
Нет ответа 10
Нет свободных линий 11
Потерян 12
Оператор отказался от звонка 13
Ожидание повтора (занято) 14
Ожидание повтора (нет ответа) 15
Контакт перенесён 16
Отправка 17
Отправлено 18
Доставлено 19
Короткий разговор 20
Факс 21
Абонент недоступен 22
Голосовая почта 23
Номер не обслуживается 24
Сброс 25
Тишина 27
Голосовое меню или автоответчик 28
Какой порядок работ по созданию кампании с использованием внешней БД?
1. Подготовительные работы:
1.1. Создать таблицу нужной структуры в базе данных. Идентификатор контрагента должен иметь тип bigint.
1.2. Установить ODBC-драйвер в зависимости от используемой СУБД.
1.3. Создать ODBC-подключение к базе данных (на сервере Infinity). Если 64-битная ОС, нужно запускать 32-битную утилиту управления ODBC: C:\windows\sysWOW64\odbcad32.exe.
2. Настройка Infinity X:
2.1. Создать базу данных в разделе "Базы данных". Выбрать драйвер "ODBC", в качестве строки подключения указать имя созданного на шаге 1.3 источника ODBC.
2.2. Создать провайдер в разделе "Провайдеры" полной выборки данных (например, sel ect * fr om MyContragents), указать имя таблицы.
2.3. Создать провайдер в разделе "Провайдеры" поштучной выборки данных (например, select * fr om MyContragents wh ere ID=:ID). Имя входного параметра - :ID. Выборка всегда должна возвращать одну запись для всех правильных ID.
2.4. Создать таблицу в разделе "Таблицы". Источник данных - внешний, провайдеры - созданные на этапе 2.2 и 2.3.
2.5. Открыть созданную таблицу. Проверить, что строки отображаются, редактируются, добавляются. При использовании сложных выборок (например, содержащих оператор join) потребуется задать на шаге 2.2 SQL-запросы для операций insert, update, delete.
2.6. Создать кампанию на основе созданной таблицы.
! Важно. Для нормальной работы системы Infinity с внешней базой данных необходимо обеспечить следующие требования:
1. Главное – стабильность. Не должно возникать проблем с работой ODBC-драйвера
2. Единичные запросы (ByID) должны выполняться не более 1 секунды
3. Объемные выборки (таблица кампании) должны выполняться не более 10 секунд
4. Хранимые процедуры, обновляющие что-либо во внешней БД должны выполняться не более 1 секунды
Какой тип данных необходимо установить полю которое будет содержать номер телефона?
Ответ: тип данных "Текст"
Как изменить вопросы которые отображаются оператору в рамках сценария диалога?
Заходите под учетной записью Администратора в раздел "Управление" – "Кампании"
Выбираете нужную кампанию и нажимаете "Редактор сценария"
Выбираете нужные компонент, если не видно содержание окошко следует раздвинуть
После двойного клика откроется окошко, которое можно редактировать.
Это и есть вопрос, который будет задать Ваш оператор.
Далее нажмите кнопку «Сохранить»
Как в сценарии диалога сделать проверку - заполнено ли поле и что в нем, в зависимости от этого строить дальнейший диалог?
Для этого используется компонент "Варианты". Рассмотрим на примере. У нас есть сценарий в котором первый компонент "Подсказка".
Поставим перед ним компонент "Варианты"
Кликаем два раза на этом компоненте. И выбираем кнопку на вершине с троеточием
В появившемся меню переходим на вкладку "Свойство" и выбираем название столбика таблицы кампании, который будем анализировать. В данном случае это ФИО. Нажимаем ок
Нажимаем "Добавить", для добавления варианта
Выбираем троеточие напротив надписи "<Пусто>"
В появившемся окне выбираем вкладку "Константа". Тип константы "строка" (или тот тип поля, который у вас задан для данного столбика в свойствах таблицы). "Значение" оставляем пустым, так мы будем анализировать, что исходное поле "ФИО" у данного контрагента пусто.
Нажимаем "ок" и добавляем еще один вариант. В появившемся окне выбираем вкладку "Константа". Тип константы "строка" (или тот тип поля, который у вас задан для данного столбика в свойствах таблицы). В "Значение" вписываем то значение которое будем искать и по особому обрабатывать сценарием.
Нажимаем ок. Красный хвост компонента привязываем к уже существующей подсказке.Таким образом все контрагенты у которых поле "ФИО" заполнено и не равно "Иван Иванович" будут обрабатываться как и раньше.
Создаем из верхнего зеленого хвоста компонент "Поле ввода" и заполняем его
Последнюю строчку не заполняем, оставляем <По умолчанию>. Соединяем новый компонент с любым другим, дабы цепочка не прерывалась
Добавляем альтернативное приветствие и тоже соединяем его
Проверяем
Как организовать автоматический запуск исходящей кампании в ежедневном режиме с 9.00 до 19.00?
Кампанию останавливать и запускать каждый день не нужно. Настройки времени звонка Вы можете изменить самостоятельно. Для этого необходимо зайти под учетной записью «Администратор». Вкладка - Управление -\Кампании. Нажать кнопку Изменить
Далее вкладка «Параметры» Пункт «Допустимое время обслуживания» \ Учитывать для «Телефон» \ Указываете необходимое Вам время. Есть возможность задать разное время звонка на разные типы телефонов.
Как мне в рамках сценария диалога, в подсказке, вывести имя текущего оператора?
Для этого необходимо выполнить следующие действия:
• в таблице, используемой в кампании необходимо создать поле, например - operator, с типом данных Число Целое (64 бит);
• в настройке назначения полей для кампании, для ранее созданного поля, необходимо указать тип значения – Безопасность.Пользователь, назначение – Персональный оператор (ID);
• при настройке сценария диалога, перед элементом, в рамках которого необходимо отобразить имя оператора, необходимо предусмотреть элемент Фрагмент Кода со следующим содержанием: «Contragent_operator = Cx.Client.Utils.GlobalUtils.UserInfo.IdUser;»
• в элементе подсказка можно вставить следующую конструкцию для отображения имени текущего оператора: «"+Cx.Client.Utils.GlobalUtils.UserInfo.UserName+"». В рамках приведенного примера, текст подсказки будет выглядеть следующим образом: «Здравствуйте, меня зовут "+Cx.Client.Utils.GlobalUtils.UserInfo.UserName+" вы можете ответить на пару вопросов?».
Как указать несколько исходящих маршрутов в кампаниях
Переходим в инструмент Управление - Кампании.(по умолчанию доступно для роли Администратор)
Выбираем нужную кампанию , нажимаем кнопку "Изменить".
На вкладке "Параметры" заполняем поле "Исходящий маршрут Infinity4" в виде "route1#route2#route3" (перечисление маршрутов через # и без кавычек)
В данном случае выбор исходящего маршрута будет происходить рандомно