Infinity X: Отчеты
Infinity X: Сценарии IVR (голосовое меню)
Infinity X: Кампании в call-центре
FAQ по кампаниям
Повторный контакт Как в сценарии диалога сделать проверку - заполнено ли поле и что в нем, в зависимости от этого строить дальнейший диалог? Как организовать инструмент База знаний? Как удалить записи из таблицы кампании посредством прямого обращения в базу? Как изменить вопросы которые отображаются оператору в рамках сценария диалога? Какой тип данных необходимо установить полю которое будет содержать номер телефона? Как в рамках сценария диалога осуществить перевод текущего звонка, без обращения к дополнительным инструментами оператора Какой порядок работ по созданию кампании с использованием внешней БД? Как открыть внешний браузер в рамках сценария диалога? Как указать несколько исходящих маршрутов в кампаниях Как настроить кнопки в кампании Опишите пожалуйста расшифровку кодов состояния звонка в кампании Как при использовании кампаний открывать WEB-форму или гиперссылку в браузере? И в чем отличие? Как изменить параметр кампании через сценарий? Как сделать копию кампании вместе со сценарием диалога? Добавили новые столбцы в проект существующей кампании, в карточке они отображаются, в таблице нет. Как исправить? Как мне в рамках сценария диалога, в подсказке, вывести имя текущего оператора? Как организовать автоматический запуск исходящей кампании в ежедневном режиме с 9.00 до 19.00?
Infinity X: Установка и настройка
Infinity X: Описание типов рабочих мест
Рабочее место оператора call-центра
Телефонная платформа Infinity 4(устарело)
FAQ
Сущности вызов, соединение и сеанс Какие порты нужно открыть для подключения IP-телефонов? Как использовать ключ защиты, установленный на другом компьютере? Каким образом можно самостоятельно диагностировать причину возникновения проблемы с потоком Е1 на основании лога сервера телефонии? Как сбросить пароль Администратора Infinity Contact-Center 4 Как зарезервировать порт, чтобы предупредить возникновение ситуации, когда данный порт заняло другое ПО? Мы суммируем статистические данные из разных таблиц, однако значения получаем разные. В чем может быть причина? После установки Infinity не запускается панель управления. В чем может быть проблема? При использовании модуля распределенных серверов возникает односторонняя слышимость (либо дополнительный сервер не запускается). В чем может быть проблема? Какие порты необходимы для полноценной работы Infinity 4? Как перенести все Лог- файлы на другой диск? Как разбить на части файлы trace? Можно ли настроить автоматическую подстановку случайного А-номера при исходящем звонке? Почему при создании нового IP-узла (Рабочее место администратора -> Оборудование -> IP-узлы Н.323, SIP) он не появляется во вкладке Интеллектуальная АТС -> IP-узлы Н.323, SIP? Прошивка ключа Sentinel Расшифровка статусов звонков в таблице M_Calls Почему при запуске серверной части Infinity с помощью утилиты "Управление сервером" при нажатии кнопки "Подключиться" выдается "Состояние: Ошибка подключения" Почему при наборе номера с рабочего места слышны три коротких гудка, после чего происходит отбой, и софтфон переходит в состояние Готов? Как перевести звонок на внешнего абонента? Почему при запуске клиентского приложения возникает надпись "Софтфон не назначен"? При разговоре оператора с абонентом периодически раздается характерный звук, как его убрать и что это такое? Что делать, если при установке на win 7 и win 2008 библиотеки не регистрируются в автоматическом режиме? Как улучшить качество звука на Windows Vista? По каким причинам при входящем звонке может не определяться номер звонящего абонента? Какие существуют способы интеграции АТС и «Infinity IP 4»? По какому префиксу отправляются СМС-сообщения? Как привязать IP -телефон к рабочему месту? Где и зачем устанавливается эмуляция flash? Не получается зарегистрировать БД FireBird. Сервер «Infinity IP АТС» не запускается, какие меры необходимо предпринять? Для чего используется Альтернатива Кода "2" в основных параметрах интеллектуальной АТС Что означает галочка не удерживать абонента при повторном нажатии Flash? После установки платы Ольха. Выключаем компьютер, а он перезапускается. Какие действия необходимо произвести для устранения данной неполадки? Для чего необходим параметр Формат передаваемого номера? Необходимо использовать определенное устройство для выхода в город. Какую дополнительную настройку необходимо произвести в исходящих маршрутах? Что будет если данную настройку не производить? В интеллектуальной АТС присутствует пункт абоненты АТС, чем они отличаются от других абонентов АТС не внесенных в этот список? Где производится привязка IP абонента определенному рабочему месту? В графе оборудование сервера телефонии указано 2 серверных IP-адреса, что это означает? Что означают значения префикс и Постфикс в свойствах устройств, и для чего они используются? Как изменить путь к БД? Провайдер потока Е1 поставляет только 12 линий из 30. Какие настройки в «Infinity IP АТС» необходимо произвести? По непонятной причине иногда отключаются некоторые сервера (например ServerT). В чем может быть причина? Как определить были ли разрывы соединения TCP? Неожиданно перестал запускаться сервер. В логе пишет что срок действия ключа закончен, однако по нашим данным ключ пока должен работать. В чем может быть причина? После проверки базы данных Firebird на ошибки с помощью инструмента Database Validation ошибок не найдено Гарантирует ли это что база данных не содержит ошибок? В настройках IP-абонентов есть галочка "Запретить одновременные звонки". Для чего она необходима? При установке был создан пользователь БД INFINITYUSER. Возможно ли изменять его имя и пароль? У нас у каждого внутреннего номера есть параметр переадресации звонка на мобильный при занятости. Почему данный параметр не срабатывает при входящем звонке? У нас в наличии имеется АТС и «Infinity IP АТС», номерной план на АТС и «Infinity IP АТС» будет отличаться как сделать так чтобы не создавать все номера абонентов АТС в «Infinity IP АТС», для возможности позвонить на любой номер из различных номерных пуло У меня стоит сервер Windows 2003 64x, в интерфейсе Infinity вместо русских символов отображаются знаки вопросов, как это исправить? Как определить, что звонок звонил более N секунд и оператор не взял трубку? Как сделать так что бы при звонке с мобильного в call-центр тарификация абонента начиналась не с поднятия трубки call-центром, а с ответа оператора? По какой причине могут возникать проблемы с качеством связи(заикания, пропадает голос, трески в записи разговоров и т.д.) Можно ли изменить путь к записанным разговорам на отличный от заданного по умолчанию и как это сделать? Вместо русских символов отображаются знаки вопросов Вывести имя текущего оператора NAT Тарификация с момента коммутации Некоторые детали SIP Причины отбоя в потоке E1

Таблицы в карточках и сценариях диалога, база адресов

Таблицы в карточках и сценариях диалога, база адресов

1. Отображение произвольных таблиц

1.1. Отображение окна со списком строк, в качестве источника данных – простой провайдер. Задаем обработчик клика на кнопке в сценарии карточки
void Button1_Execute(object sender, EventArgs e)
{
     Cx.Client.Campaigns.Misc.MiscUtils.ShowSelectDialog("Выберите слово", "WorkProvider_Table_6003650012", null, 0, null);
}

 image001.png

1.2. В качестве источника – отфильтрованный (параметризованный) провайдер, при этом при открытии окна выбрана конкретная строка
void Button1_Execute(object sender, EventArgs e)
{
    var parameters = new System.Collections.Generic.Dictionary<string, object>();
    parameters["IDLanguage"] = 6003650023;
     Cx.Client.Campaigns.Misc.MiscUtils.ShowSelectDialog("Выберите слово", "xWords.ByIDLanguage", parameters, 6003650028, null);
}

 image003.png

1.3. Заданный список столбцов и редакторов
void Button1_Execute(object sender, EventArgs e)
{
    var parameters = new System.Collections.Generic.Dictionary<string, object>();
    parameters["IDLanguage"] = 6003650023;

    var fields = new System.Collections.Generic.Dictionary<string, string>();
    fields["IDLanguage"] = "Cx.Client.Custom.xLanguage";
    fields["Name"] = "";

     Cx.Client.Campaigns.Misc.MiscUtils.ShowSelectDialog("Выберите слово", "xWords.ByIDLanguage", parameters, 6003650028, fields);
}

image005.png

1.4. Работа с результатом (выбранной строкой). Можно использовать все поля, которые есть в провайдере (а не только те, которые видны в таблице)

void Button1_Execute(object sender, EventArgs e)
{
    var parameters = new System.Collections.Generic.Dictionary<string, object>();
    parameters["IDLanguage"] = 6003650023;

    var fields = new System.Collections.Generic.Dictionary<string, string>();
    fields["IDLanguage"] = "Cx.Client.Custom.xLanguage";
    fields["Name"] = "";

    var result = Cx.Client.Campaigns.Misc.MiscUtils.ShowSelectDialog("Выберите слово", "xWords.ByIDLanguage", parameters, 6003650028, fields);

    if (result == null || result.Count == 0)
        System.Windows.Forms.MessageBox.Show("Ничего не выбрано");
    else
        System.Windows.Forms.MessageBox.Show("Выбрано: "+Convert.ToString(result["ID"])+" "+Convert.ToString(result["Name"]));
}

 image007.png

1.5. Располагаем аналогичную таблицу в виде вкладки карточки (при необходимости вкладку можно перенести в настройке внешнего вида карточки). Настройка внешнего вида – Настройка карточек:

[
  {
    "Kind": "Table",
    "Name": "Words",
    "Caption": "Слова",
    "TableParams": {
      "ProviderName": "xWords.ByIDLanguage",
      "Parameters": {
        "IDLanguage": 6003650023
      },
      "CurrentRowID": 6003650028,
      "Editors": {
        "IDLanguage": "Cx.Client.Custom.xLanguage",
        "Name": ""
      }
    }
  }
]

 image008.png

1.6. Изменить источник данных в таблице на лету (например, при изменении значения поля). Дописываем сценарий карточки:

public override void ColumnChanged(DataColumnChangeEventArgs e)
{
    if (e.Column.ColumnName == "IDLanguage")
    {
       var idLanguage = Convert.ToInt64(e.Row[e.Column]);
       var parameters = new System.Collections.Generic.Dictionary<string, object>();
       parameters["IDLanguage"] = idLanguage;

       var ae = _card.GetAdvancedEditor("Words");
       ae.ReloadData("xWords.ByIDLanguage", parameters, 6003650028);
    }
}

   image010.png
image012.png

1.7. Обработать клик на строке таблицы и получить все значения полей строки
public override void OnShow()
{
       var ae = _card.GetAdvancedEditor("Words");
       ae.AssignFocusedRowChangedEvent(WordsFocusedRowChanged);
}

private void WordsFocusedRowChanged(System.Collections.Generic.IDictionary<string, object> data_)
{
    if (data_ == null || data_.Count == 0)
        System.Windows.Forms.MessageBox.Show("Ничего не выбрано");
    else
        System.Windows.Forms.MessageBox.Show("Выбрано: "+Convert.ToString(data_["ID"])+" "+Convert.ToString(data_["Name"]));
}

  image014.pngimage007.png

1.8. То же самое в качестве шага сценария диалога – используем компонент «Таблица»
 
image015.png

image017.png

image019.png

1.9. Приятный бонус для упрощения жизни: в настройке кнопок теперь можно вместо XML использовать JSON. Два примера ниже идентичны:
<?xml version="1.0"?>
<ArrayOfButtonInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd="http://www.w3.org/2001/XMLSchema&quot;&gt;
  <ButtonInfo>
    <Caption>Address</Caption>
    <Action></Action>
  </ButtonInfo>
  <ButtonInfo>
    <Caption>HyperLinksList</Caption>
    <Action>HyperLinksList</Action>
    <Params></Params>
    <ImageIndex>-1</ImageIndex>
  </ButtonInfo>
</ArrayOfButtonInfo> 

[
  {
    "Caption": "Address",
  }, 
  {
    "Caption": "HyperLinksList",
    "Action": "HyperLinksList",
  }, 
]


2. Отображение отчета

2.1. Отчет из сценария карточки в виде отдельного окна
void Button1_Execute(object sender, EventArgs e)
{
    var parameters = new System.Collections.Generic.Dictionary<string, object>();
    parameters["Abonent"] = "6411010";
    parameters["TimeStartTo"] = new DateTime(2020, 01, 01);

    Cx.Client.Campaigns.Misc.MiscUtils.ShowReport("Отчет из карточки", 30100284, parameters);
}

 image021.png

2.2. Отчет в качестве вкладки карточки. Настройка внешнего вида – Настройка карточек:
[
  {
    "Kind": "Report",
    "Name": "Calls",
    "Caption": "Отчет-вкладка",
    "ReportParams": {
      "IDReport": 30100284,
      "Parameters": {
        "Abonent": "6411010",
        "TimeStartTo": "2020-01-01",
      }
    }
  }
]

 image023.png

2.3. Отчет в сценарии диалога. Кроме заданных явно в качестве параметров передаются все поля текущего контрагента.

image025.png

image027.png

3. Отображение вложенной кампании

3.1. Отображение полной кампании из кода сценария карточки

void Button1_Execute(object sender, EventArgs e)
{
    Cx.Client.Campaigns.Misc.MiscUtils.ShowCampaign("Вложенная кампания", 6004935333);
}

 image029.png

3.2. Фильтрация кампании – указываем провайдера и параметры

void Button1_Execute(object sender, EventArgs e)
{
    var parameters = new System.Collections.Generic.Dictionary<string, object>();
    parameters["IDLanguage"] = 6003650023;

    Cx.Client.Campaigns.Misc.MiscUtils.ShowCampaign(
        "Вложенная кампания",     // Заголовок
        6004935333,               // ID кампании  
        "xWords.ByIDLanguage",    // Имя провайдера
        parameters                // Параметры
    );
}

image031.png

3.3. Скрытие лишних кнопок
void Button1_Execute(object sender, EventArgs e)
{
    var parameters = new System.Collections.Generic.Dictionary<string, object>();
    parameters["IDLanguage"] = 6003650023;

    Cx.Client.Campaigns.Misc.MiscUtils.ShowCampaign(
        "Вложенная кампания",     // Заголовок
        6004935333,               // ID кампании  
        "xWords.ByIDLanguage",    // Имя провайдера
        parameters,               // Параметры
        false,                    // Добавить
        false,                    // Изменить (карточка)
        false,                    // Удалить
        false,                    // Копировать
        true                      // Сценарий диалога
    );
}

 image033.png

3.4. Вложенная кампания на вкладке карточки. Настройка внешнего вида – Настройка карточек:
[
  {
    "Kind": "Campaign",
    "Name": "Words",
    "Caption": "Слова",
    "CampaignParams": {
      "IDCampaign": 6004935333,
      "ProviderName": "xWords.ByIDLanguage",
      "Parameters": {
        "IDLanguage": 6003650023
      },
      CanAdd: false,
      CanEdit: false,
      CanDelete: false,
      CanCopy: false,
      CanRunDialogScenario: true
    }
  }
]

 image037.png

3.5. Замена источника данных при изменении значения поля основной карточки
public override void ColumnChanged(DataColumnChangeEventArgs e)
{
    if (e.Column.ColumnName == "IDLanguage")
    {
       var idLanguage = Convert.ToInt64(e.Row[e.Column]);
       var parameters = new System.Collections.Generic.Dictionary<string, object>();
       parameters["IDLanguage"] = idLanguage;

       var ae = _card.GetAdvancedEditor("Words");
       ae.ReloadData("xWords.ByIDLanguage", parameters, 6003650028);
    }
}

 image037.png

image039.png

3.6. Отображение вложенной карточки
На основной карточке создаем пустой элемент и группу вокруг него. После этого в коде сценария карточки можно разместить в этой группе карточку любого контрагента любой кампании. Например, это можно сделать по клику на таблице:
private void WordsFocusedRowChanged(System.Collections.Generic.IDictionary<string, object> data_)
{
    if (data_ != null)
    {
        var id = Convert.ToInt64(data_["ID"]);
        if (id > 0)
            _card.ShowCardToGroup("Вложенная карточка", 6004935333, id);
    }
}

 image041.png

image043.png

image045.png

4. База адресов

Цель – отобразить в карточке кампании взаимосвязанные редакторы регион – район – город  - улица, которые обеспечат удобную работу с адресами России.
1. Скачиваем актуальную БД ФИАС в формате XML (около 4 ГБ, https://fias.nalog.ru/Updates.aspx)
2. Запускаем утилиту FIAS_Parser. Указываем актуальные имена файлов и отключаем импорт домов:
 
image047.png

3. Запускаем полученный sql-скрипт (примерный объем, поэтому используем командную строку: psql.exe -h localhost -p 10000 -f Cx_FIAS.sql postgres cxdbuser). В результате получаем созданную и заполненную БД Cx_FIAS
4. Подключаем базу данных:
 
image049.png

5. Создаем четыре провайдера:
Fias.Regions: sel ect distinct aoguid, offname || ' ' || shortname as name fr om "FIAS_Objects" where parentguid = '' and actstatus=1 order by offname || ' ' || shortname
Fias.Districts: sel ect aoguid, offname || ' ' || shortname as name fr om "FIAS_Objects" where parentguid=:parentguid and actstatus=1 and aolevel=3 order by offname || ' ' || shortname
Fias.Cities: select aoguid, offname || ' ' || shortname as name fr om "FIAS_Objects" wh ere parentguid=:parentguid and actstatus=1 and (aolevel between 4 and 6) order by offname || ' ' || shortname
Fias.Streets: select aoguid, offname || ' ' || shortname as name fr om "FIAS_Objects" wh ere parentguid=:parentguid and actstatus=1 and aolevel = 7 order by offname || ' ' || shortname
6. Для каждого провайдера создаем по таблице и пользовательскому редактору:
 
image050.png

image051.png

7. В таблице кампании должны быть поля следующих типов (наименования могут отличаться, а также может быть несколько групп полей, если на карточке необходимо работать с несколькими адресами одновременно):
 
image052.png

8. Назначение полей – выбираем пользовательские редакторы:
 
image054.png

9. Сценарий карточки на удивление прост:
public override void OnInit()
{
    _card.InitializeFiasEditors("IDRegion", "IDDistrict", "IDCity", "IDStreet", "HouseNum", "FullAddress");
}

10. Если поля названы по другому – указываем здесь их правильные имена. Если адресов несколько – вызываем эту функцию несколько раз.

11. Результат:
 
image056.png

image058.png

image060.png

image062.png
Заполните форму обратной связи.
Наши специалисты проведут презентацию платформы, проконсультируют по возможностям, ответят на вопросы и подготовят персональное предложение по стоимости
Нажимая кнопку «Отправить», вы принимаете условия политики конфинденциальности
Спасибо за обращение!
Менеджеры свяжутся с вами в ближайшее время.
Если у вас срочный вопрос,
звоните нам по телефону +7 (495) 641-10-10
Закрыть