Wiki Infinity X Опис модуля інтеграції
Модуль інтеграції Infinity X Версія
У цьому документі описані способи вирішення основних завдань з інтеграції з Infinity X відповідно до моделей First-Party і Third-Party. Використовувані технології: COM/ActiveX та .NET.
- Моделі інтеграції
- Технології інтеграції
- Принцип інтеграції
- Приклади вирішення типових завдань
- Здійснення вихідного дзвінка
Модель інтеграції First - Party передбачає управління системою першої особи, тобто. здійснювати всі дії від імені конкретного оператора. Як правило, ця модель використовується при інтеграції робочих місць різних інформаційних систем із Infinity X .
Модель Third – Party дозволяє керувати системою від третьої особи, тобто. здійснювати операції від імені всіх операторів. Як правило, ця модель використовується при інтеграції сервера інформаційних систем Infinity X .
Використання візуальних форм ActiveX можливе лише в моделі First-Party.
Обидві моделі інтеграції передбачають використання однієї з двох технологій: COM/ActiveX або . NET.
Технологія COM дозволяє за допомогою будь-якої мови програмування звертатися до об'єктів системи та керувати ними. Технологія ActiveX дозволяє вбудовувати візуальні інструменти Infinity X в інформаційну систему. Зокрема, ці технології зручно застосовувати при інтеграції Infinity X з платформою 1С, Lotus Notes, Excel і т.д.
Приклад вбудовування інтерфейсів Infinity в Excel методом ActiveX
Технологія. NET має на увазі проведення інтеграції з використанням засобів розробкипрограмного забезпечення, що підтримують платформу. NET Framework. Як правило, це Microsoft Visual Studio (мови C #. NET, VB. NET, C++. NET), а також Embarcadero / Borland Delphi.
Взаємодія інформаційної системи з Infinity X складається з наступних етапів:
1. Підготовчі операції
a. Ініціалізація модуля інтеграції
c. Отримання необхідних вирішення конкретних завдань інтерфейсів
2. Основна змістовна частина
a. Взаємодія з інтерфейсами (отримання інформації та здійснення операцій)
3. Завершення роботи
a. Відключення від сервера Infinity X
b. Визволення ресурсів
Для використання технології COM/ActiveX необхідно:
- Встановити робоче місце Infinity X
- Зареєструвати COM-об'єкти (запустити файл register.bat)
- Створити COM-об'єкт "Cx.Integration.Core"
Для використання технології .NET необхідно:
- Встановити робоче місце Infinity X
- Створити проект на базі платформи .NET Framework 4.0
- Підключити до проекту такі зборки:
- Створити екземпляр конектора «Infinity X»
Приклади вирішення типових завдань
1. Здійснення вихідного дзвінка
Завдання: при запущеному робочому місці оператора з внутрішнім номером «101» підключитися до сервера в режимі Third-Party та здійснити від його імені вихідний дзвінок на номер «84956411010».
Приклад використання технології COM (вміст файлу MakeCall.vbs, який можна виконати через командний рядок Windows):
Set Srv = CreateObject("Cx.Integration.Core")
LogonResult = Srv.LogonEx("IntegrationUser", "1234", "20000", "192.168.200.101", 10010)
If (Not Srv.IsConnected) Then
Set CallManagement =Srv.GetCallManagement("101")
Приклад використання технології .NET (мовою C#):
private void button1_Click( object sender, EventArgs e)
factory = AgatInfinityConnectorManager .GetAvailableFactories().FirstOrDefault(item => item.FactoryName == "Infinity X" );
if (factory == null )
throw new Exception ("Factory Infinity X not found");
connector = factory.CreateInstance( this );
connector.Connected += new EventHandler (connector_Connected);
connector.Connect( "Login:\"IntegrationUser\" Password:\"1234\" ServerAddress:\"192.168.200.101\" ServerPort:10010 BiDir" , true );
void connector_Connected( object sender, EventArgs e)
using ( ICallManagement callManagement = connector.GetCallManagement( "101" ))
Детальний опис основних інтерфейсів та функцій
public interface ICxIntegrationCore
/// Ідентифікатор екземпляра ядра (використовується при відображенні ActiveX-форм)
string Core >get; >
/// Встановити режим обробки виняткових ситуацій
True - виключення увімкнені , False - відключені
void SetUseExceptions(bool Value);
/// Опис останньої помилки
/// Детальний опис останньої помилки
/// Підключитися до сервера
void Connect(string ConnectionString);
Роль "20000" - Адміністратор, "20004" - Оператор, "20010" - ThirdParty
/// 1 - успішно, інше - код помилки (див. LogonResult)
int LogonEx (string Login, string Password, string Role, string ServerAddress, int ServerPort);
/// Вийти з системи
/// Вимкнутись від сервера
/// Повертає стан поточного підключення до сервера
string LogonResultToString( int Result);
////Отримати інтерфейс керування викликами
Внутрішній номер абонента, з'єднання якого необхідно
/// Керувати (FirstParty). Якщо порожньо - отримуємо інтерфейс для керування всіма дзвінками
/// Інтерфейс керування викликами
IComCallManagement GetCallManagement(string Extension);
/// Отримати інтерфейс доступу до інформації про дзвінки, з'єднання та сеанси
/// Інтерфейс доступу до інформації про виклики, з'єднання та сеанси
/// Отримати інтерфейс керування користувачами
/// Інтерфейс управління користувачами
/// Отримати інтерфейс керування кампаніями
/// Інтерфейс управління кампаніями
AgatInfinityConnector. ICampaignsManagement GetCampaignsManagement();
/// Отримати інтерфейс утиліт
AgatInfinityConnector. IUtilsManager GetUtilsManager();
/// Примусове збирання налаштувань інструментів та їх збереження в рамках робочого столу.
/// Повертає чи вдалося зберегти налаштування.
/// Налаштування можуть бути не збережені з наступних причин:
/// Скидання робочих столів адміністратором,
/// Помилка при збереженні,
/// Метод призначений скидання налаштувань інструментів, до створення.
void GetVersion (out int Ver1, out int Ver2, out int Ver3, out int Ver4);
/// Отримати значення генератора до роботи з БД (Int64)
/// Обробники подій для скриптових мов
public interface ICxIntegrationCoreEvents
// Викликається перед створенням немодального вікна
// Через Info.HostID потрібно повернути ID HostCtrl-а в якому буде показано вікно
void BeforeCreateTool( IToolDescr ToolInfo, об'єкт Info);
// Event: 1 - Create - вікно створено
// 2 - Destroy - вікно закрите
// Params- не використовується
void ToolStateChanged( IToolDescr ToolInfo, int Event, object Params);