Работа с модулем интеграции 1С 3CX

Интеграция 3CX Phone System обеспечивается путем вызова внешней компоненты 1С client_3cxTo1c.dll, которая регистрируется как DLL библиотека Windows.

Попытка

//Для демо-версии 1С 7.X

ПодключитьВнешнююКомпоненту("AddIn.3cxTo1cIntegratorDemo");
Интегратор3СХ=СоздатьОбъект("AddIn.3cxTo1cIntegrator");

//Для демо-версии 1С 8.X

ПодключитьВнешнююКомпоненту("AddIn.3cxTo1cIntegratorDemo");
Интегратор3СХ=Новый("AddIn.3cxTo1cIntegrator");

//Для рабочей версии 1С 7.X

ПодключитьВнешнююКомпоненту("AddIn.3cxTo1cIntegrator");
Интегратор3СХ=СоздатьОбъект("AddIn.3cxTo1cIntegrator");

//Для рабочей версии 1С 8.X

ПодключитьВнешнююКомпоненту("AddIn.3cxTo1cIntegrator");
Интегратор3СХ=Новый("AddIn.3cxTo1cIntegrator");

//Для терминальной версии версии 1С 7.X

ПодключитьВнешнююКомпоненту("AddIn.3cxTo1cIntegratorTerminal");
Интегратор3СХ=СоздатьОбъект("AddIn.3cxTo1cIntegrator");

//Для терминальной версии 1С 8.X

ПодключитьВнешнююКомпоненту("AddIn.3cxTo1cIntegratorTerminal");
Интегратор3СХ=Новый("AddIn.3cxTo1cIntegrator");

Исключение
   Сообщить(ИнформацияОбОшибке().Описание);

КонецПопытки;

В дальнейшем используются методы полученного объекта Интегратор3СХ, например вызов инициируется так: 

Попытка
  Результат=Интегратор3СХ.Вызвать(ВнутрНомер, НомерКуда );
  Сообщить("Вызов от "+ВнутрНомер+" к "+НомерКуда+"  "+Результат );
Исключение
  Сообщить(ИнформацияОбОшибке().Описание);
КонецПопытки;

Все подаваемые таким образом команды сразу возвращают строковые значения - результат передачи команды в 3СХ. Это или <<OK>>,  или <<Ошибка>> текст ошибки. При возникновении системной ошибки, такой, например, как обрыв связи, генерируется исключение.

Для получения информации о событиях, происходящих на сервере 3СХ, необходимо определить обработчик внешнего события.

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные )
  Если Источник = "3cxTo1c" Тогда 
    Сообщить(Событие+" >>  "+Данные);
    //дальнейшая обработка .....
  КонецЕсли;
КонецПроцедуры

Например, при звонке из софтфона 3CX Phone с номера 100 на номер "эхо" (*777) этот код выдаст примерно такие строки:

Дозвон >>  2010.10.14 02:27:26.640&8&100&*777
Звонок >>  2010.10.14 02:27:26.875&8&100&*777
НачалоРазговора >>  2010.10.14 02:27:26.968&8
Соединение >>  2010.10.14 02:27:26.968&8&100
Соединение >>  2010.10.14 02:27:27.031&8&*777
Отсоединение >>  2010.10.14 02:27:28.250&8&100&1.281
Отсоединение >>  2010.10.14 02:27:28.328&8&*777&1.297
КонецРазговора >>  2010.10.14 02:27:28.328&8&1.360

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

Строка Данные состоит из нескольких частей, разделенных символом "&". Если в какой-либо части присутствовал символ "&", он будет заменен на "$amp". Первая часть - это всегда время возникновения события в формате гггг.мм.дд чч:мн:ск.мил, независимо от региональных установок. Вторая часть - идентификатор разговора в 3СХ. При инициализации любого разговора, еще до его начала, сервер 3СХ присваивает ему свой номер. Номера идут по порядку, начиная с 0 при старте сервиса 3СХ, потому номер глобально не уникален. Формат остальных частей строки Данные  зависит от значения параметра Событие.