Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
ifClient for 3CX
(WebAPI Client for 3CX) 3.2
for
3CX v15.5 SP2 – v16 SP4
3CX v14 SP2, v14 SP3
3CX v12.5 SP2
2
Оглавление 1 ifClient for 3CX .................................................................................................................................... 4
2 Схемы интеграции. ............................................................................................................................. 6
3 Системные требования. ...................................................................................................................... 8
3.1 Общие требования ...................................................................................................................... 8
3.2 ifClient для 3CX Phone System v15.5 SP2 – v16 SP4 ................................................................ 8
3.3 ifClient Plugin для 3CXPhone v15.5 ............................................................................................ 8
3.4 ifClient для 3CX Phone System v14 ............................................................................................ 8
3.5 ifClient Plugin для 3CXPhone v14 ............................................................................................... 8
3.6 ifClient для 3CX Phone System v12.5 ......................................................................................... 8
3.7 ifClient Plugin для 3CXPhone v12.5 ............................................................................................ 8
4 Лицензирование. ................................................................................................................................. 9
5 Установка. ............................................................................................................................................ 9
5.1 Сетевые ключи. ........................................................................................................................... 9
5.1.1 Установка сервера лицензирования. ...................................................................................... 9
5.1.2 Активация программного сетевого ключа. ........................................................................... 9
5.1.3 Подготовительный этап. ......................................................................................................... 9
5.1.4 Установка ifClient. ................................................................................................................. 10
5.1.5 Установка ifClient Plugin на пользовательском ПК. ........................................................... 10
5.2 Однопользовательские ключи. ................................................................................................. 10
5.3 Trial версия. ................................................................................................................................ 11
5.4 Возможные проблемы. .............................................................................................................. 11
6 Плагин «ifClient Plugin». .................................................................................................................. 13
7 Работа с ПО на терминальном сервере. .......................................................................................... 13
8 Тестирование ifClient через WebSocket. .......................................................................................... 14
9 Тестирование интеграции через COM объект ifClient на примере 1С v8. ................................... 16
10 События, cвойства, методы ifClient for 3CX. .................................................................................. 17
10.1 События...................................................................................................................................... 17
10.1.1 События WebSocket сервера ............................................................................................ 17
10.1.2 События COM объекта AddIn.COM_3CX_1C ................................................................ 17
10.1.3 Структура строки <Данные> для обработчика события. .............................................. 18
10.1.4 Тип события «channel» ..................................................................................................... 18
10.1.5 Тип события «phone» ........................................................................................................ 18
10.1.6 Тип события «plugin» ........................................................................................................ 19
10.1.7 Тип события «group» ........................................................................................................ 19
10.1.8 Тип события «groupmember» ........................................................................................... 20
10.1.9 Тип события «extensioninfo» ............................................................................................ 20
10.1.10 Тип события «localconnection» ........................................................................................ 21
3
10.1.11 Тип события «3cxphonecall» ............................................................................................ 22
10.1.12 Тип события «3cxphoneline» ............................................................................................ 23
10.1.13 Тип события «conf» ........................................................................................................... 23
10.1.14 Тип события «queueagent» ................................................................................................ 23
10.1.15 Тип события «chat» ........................................................................................................... 24
10.1.16 Тип события «chatmessage» .............................................................................................. 24
10.1.17 Тип события «chathistory» ................................................................................................ 24
10.1.18 Тип события «contact» ...................................................................................................... 24
10.1.19 Тип события «addcontact» ................................................................................................ 25
10.1.20 Тип события «updatecontact» ............................................................................................ 25
10.1.21 Тип события «deletecontact» ............................................................................................. 25
10.1.22 Тип события «findcontact» ................................................................................................ 25
10.1.23 Тип события «callhistory» ................................................................................................. 26
10.1.24 Тип события «prop» .......................................................................................................... 26
10.2 WebSocket - команды ................................................................................................................ 27
10.3 Свойства ..................................................................................................................................... 27
10.3.1 WebSocket – команды и ключи для установки и получения свойств ........................... 27
10.3.2 COM объект - свойства, WebSocket - значения ключей для установки и получения
свойств 28
10.4 COM объект - методы, WebSocket - управляющие команды ................................................ 35
10.4.1 Подключение к АТС, управление статусом .................................................................... 35
10.4.2 Общие методы для работы с вызовами ........................................................................... 38
10.4.3 Работа с софтфоном 3CXPhone ....................................................................................... 42
10.4.4 Работа с аппаратными телефонами, поддерживающими CTI ...................................... 48
10.4.5 Работа с конференциями .................................................................................................. 53
10.4.6 Работа с чатом ................................................................................................................... 55
10.4.7 Работа с телефонной книгой ............................................................................................ 57
10.4.8 Получение истории вызовов ............................................................................................ 59
10.4.9 Воспроизведение записи вызова...................................................................................... 61
11 Примеры кода 1С 8 для работы с COM объектом .......................................................................... 62
11.1 Загрузка ВК 1С. ......................................................................................................................... 62
11.2 Обработка внешних событий в 1С. ......................................................................................... 62
11.3 Обработка параметра <Данные>. ............................................................................................ 63
12 Контактная информация. .................................................................................................................. 65
4
1 ifClient for 3CX
Модуль интеграции ifClient for 3CX (предыдущее название WebAPI Client) предназначен для интеграции IP-АТС
3CX Phone System с другим программным обеспечением. С помощью ifClient можно осуществить
полнофункциональную интеграцию IP-АТС 3CX Phone System с 1С:Предприятие, различными облачными CRM
системами; сценариями VBScript и JavaScript и т.д.. Функционал модуля идентичен функционалу софтфона
3CXPhone for 3CX Phone System, находящегося в режиме CTI (управления настольным телефоном). Модуль работает
с любыми моделями аппаратных или программных телефонов.
ifClient состоит из двух частей: непосредственно сам модуль интеграции; плагин для софтфона 3CX Phone –
ifClient Plugin, предназначенный для управления софтфоном.
Модуль интеграции ifClient можно использовать как независимое приложение, осуществляя интеграцию через
WebSocket сервер модуля, или встроить его в интегрируемое ПО как COM компонент.
Функционал модуля интеграции.
Управление состоянием оператора:
- регистрация / отмена регистрации на сервере 3CX;
- управление статусом присутствия;
- управление статусом DND (не беспокоить);
- регистрация / отмена регистрации в очередях;
- выбор абонентского устройства для управления, при наличии нескольких устройств.
Управление телефоном и собственными вызовами оператора:
- осуществление исходящего вызова;
- ответ на входящий вызов (при использовании софтфона 3CXPhone или аппаратного телефона с поддержкой CTI);
- сброс входящего или активного вызова;
- перевод входящего вызова без поднятия трубки;
- слепой (безконсультативный) перевод вызова;
- сопроводительный перевод (консультативный);
- удержание / снятие с удержания;
- отключение / включение микрофона;
- отправка DTMF сигналов;
- управление статусом DND на телефоне с поддержкой CTI;
- получение истории вызовов с возможностью фильтрации по датам, номерам телефонов и типу вызовов;
- воспроизведение записей вызовов на телефоне или через проигрыватель.
Работа с вызовами на Автосекретаре (IVR):
- получение событий о вызовах на автосекретаре;
- сброс вызова;
- перевод вызова.
Работа с вызовами других операторов:
- получение событий о вызовах других операторов;
- перехват входящего не отвеченного вызова;
- сброс вызова;
- перевод вызова;
- вмешательство в активный разговор;
- подслушивание разговора;
- режим «подсказки».
Работа с конференциями:
- создание конференции;
- добавление / удаление участников конференции;
- включение / отключение звука участнику конференции;
- завершение конференции.
5
Работа с внутренним чатом 3CX Phone System:
- отправка, прием, удаление сообщений;
- получение истории сообщений чата.
Работа с телефонной книгой:
- получение контактов из персональной и корпоративной телефонных книг;
- поиск контакта в телефонной книге;
- добавление, редактирование и удаление контактов в телефонной книге.
On-line получение информации и событий с АТС:
- информация обо всех внутренних номерах 3CX Phone System: номер, фамилия и имя абонента; номер мобильного
телефона; статусы регистрации на АТС, DND, занятости, регистрации в очереди; регистрации в чате; текстового
статуса;
- события при изменении каких-либо данных внутренних абонентов;
- информация обо всех активных вызовах 3CX Phone System: номер, имя, фамилия вызывающего; номер, имя,
фамилия вызываемого; время начала вызова; время ответа на вызов; текущее состояние вызова; тип линии;
- события при возникновении или изменения статуса соединений.
6
2 Схемы интеграции.
ifClient является клиентским приложением и устанавливается на клиентский ПК, либо на терминальный сервер.
Интеграция с 3CX Phone System можно осуществить двумя способами:
взаимодействие интегрируемого ПО с ifClient по протоколу TCP, где ifClient выступает в качестве WebSocket
сервера;
встраивание COM объекта ifClient в интегрируемое ПО. Интеграция с 3CX через WebSocket:
7
Интеграция с использованием COM объекта ifClient:
8
3 Системные требования.
3.1 Общие требования 1. Операционная система: Windows 7/8/10, Windows Server 2008 и выше.
2. Установленный софтфон 3CXPhone for 3CX Phone System, идущий в составе 3CX Phone System.
3. Наличие звуковой карты и аудио устройств (при работе с софтфонами в качестве абонентского устройства).
4. Возможность подключения к ПК, на котором установлена АТС 3CX Phone System, по TCP/IP портам 5000, 5001, 80,
443 или других, в зависимости от того какие порты были выбраны при установке АТС.
3.2 ifClient для 3CX Phone System v15.5 SP2 – v16 SP4 1. Microsoft .NET Framework 4.5.1 и выше.
2. IP-АТС 3CX Phone System v15.5 SP2 – v16 SP4.
3. Софтфон 3CXPhone v15.5.7262.2 - v16.0.1.81
3.3 ifClient Plugin для 3CXPhone v15.5 1. Microsoft .NET Framework 4.5.1 и выше.
2. IP-АТС 3CX Phone System v.15.5 SP2 – SP6.
3.4 ifClient для 3CX Phone System v14 1. Microsoft .NET Framework 4.0 и выше.
2. IP-АТС 3CX Phone System v.14 SP2, SP3.
3.5 ifClient Plugin для 3CXPhone v14 1. Microsoft .NET Framework 4.5.0 и выше.
2. IP-АТС 3CX Phone System v.14 SP2, SP3.
3.6 ifClient для 3CX Phone System v12.5 1. Microsoft .NET Framework 4.0 и выше.
2. IP-АТС 3CX Phone System v.12 SP2.
3.7 ifClient Plugin для 3CXPhone v12.5 1. Microsoft .NET Framework 4.0 и выше.
2. IP-АТС 3CX Phone System v.12.5 SP2.
Запуск 3CXPhone при работе с аппаратными телефонами и сторонними софтфонами не требуется.
9
4 Лицензирование. Продукт является распространяемым по принципу "попробуй перед тем, как купить". Вы можете бесплатно
использовать ifClient for 3CX на протяжении 30 дней с момента установки Продукта (пробный период). После
окончания пробного периода продукт прекратит работу с выдачей соответствующего сообщения. Для использования
ifClient for 3CX после окончания пробного периода необходимо приобрести лицензию на использование. Модуль
интеграции ifClient и плагин для софтфона 3CXPhone ifClient Plugin лицензируются раздельно.
5 Установка.
5.1 Сетевые ключи.
5.1.1 Установка сервера лицензирования.
1. Загрузите Сервер лицензий Guardant 7 по ссылке: http://www.guardant.ru/support/download/server/.
2. Установите Сервер лицензий Guardant 7 на ПК\Сервер, который будет использоваться в качестве сервера
лицензирования.
3. Подключите аппаратный ключ к серверу лицензирования. Если вы приобрели программный ключ, выполните
действия из п.5.1.2.
4. Сохраните конфигурационный файл настроек клиента Сервера лицензирования, для распространения.
4.1. Зайдите на панель управления сервера лицензирования ("http://localhost:3185/" с сервера лицензирования или
"http://IP_адрес_сервера_лицензирования:3185/" с любого ПК в сети.
4.2. Кликните на ссылке "Client's setting".
4.3. Создайте файл gnclient.ini и скопируйте в него строки со страницы настроек "Client's setting", начиная со
строки [CLIENT].
5.1.2 Активация программного сетевого ключа. 1. Запустите на сервере лицензирования "Activation Wizard" (GuardantActivationWizard.exe).
2. В открывшемся окне "Мастера активации Guardant" нажмите кнопку "Указать файл лицензии" и укажите
высланный вам шаблон ключа (файл ххххххх.grdvd) и нажмите "Далее".
3. Введите в поле предоставленный вам серийный номер и нажмите "Далее", при успешной активации появится
соответствующее сообщение.
5.1.3 Подготовительный этап.
1. Если вы работаете с интегрируемым приложением на терминальном сервере, то установите софтфон 3CXPhone на
терминальном сервере, в противном случае установите софтфон на пользовательский ПК.
2. Настройте аккаунт на софтфоне (проще всего и быстрее это сделать через Welcome Email).
3. Проверьте работоспособность софтфона.
4. Важно!!! Если на панели софтфона отсутствует "статус присутствия", или окно "Сведения о присутствии"» не
открывается, или в нем отсутствует список абонентов, то это говорит о некорректной работе софтфона из-за средств
безопасности ОС, антивирусного ПО, настроек Веб сервера и т.п., и, соответственно, это влияет на
работоспособность ifClient, добейтесь полной работоспособности 3CXPhone.
5. Если в качестве абонентского устройства используется аппаратный телефон или 1С расположено на терминальном
сервере, а софтфон 3CXPhone - на пользовательском ПК, то последующий запуск софтфона не требуется.
10
6. Действия для 1С:Предприятия при использовании внешнего компонента, разработанного по технологии COM.
6.1. Зарегистрируйте библиотеку 1С addnmrs.dll (находится в каталоге bin, например C:\Program Files
(x86)\1cv82\8.2.19.76\bin) – при успешной регистрации должно появиться сообщение:
6.2. Зарегистрируйте библиотеку 1С comcntr.dll (находится в каталоге bin, например C:\Program Files
(x86)\1cv82\8.2.19.76\bin) – при успешной регистрации должно появиться сообщение аналогичное п.6.1.
5.1.4 Установка ifClient. 1. Если установлена предыдущая версия ПО - WebAPI Client for 3CX 2.x, то деинсталлируйте WebAPI Client.
2. Запустите установщик от имени администратора на сервере терминалов или на пользовательском ПК, в
зависимости от того где у вас запускается интегрируемое приложение.
3. В окне выбора компонентов отметьте "ifClient for 3CX".
4. Если в качестве абонентского устройства используется софтфон 3CXPhone, расположеный там же, где и
интегрируемое приложение, то в окне выбора компонентов дополнительно отметьте "ifClient Plugin for 3CX".
5. Если интегрируемое приложение используется на терминальном сервере, а софтфон используется на клиентском
ПК, то требуется отдельная установка плагина на клиентском ПК (п.5.1.5).
6. Выполните все действия для завершения установки выбранных компонентов.
7. Скопируйте файл gnclient.ini (п.5.1.1 п.п. 4) в каталог установки ifClient (c:\program files(x86)\Interface Ltd\ifClient for
3CX\).
8. Предоставьте пользователям сервера терминалов \ ПК права на запись и изменение файлов в каталоге
установки.
5.1.5 Установка ifClient Plugin на пользовательском ПК. Если интегрируемое приложение используется на терминальном сервере, а софтфон используется на клиентском ПК,
то установите ifClient Plugin на ПК.
1. Запустите установщик от имени администратора на ПК.
2. В окне выбора компонентов отметьте "ifClient Plugin for 3CX".
3. Выполните все действия для завершения установки выбранных компонентов.
4. Скопируйте файл gnclient.ini (п.5.1.1 п.п. 4) в каталог установки ifClient (c:\program files(x86)\Interface Ltd\ifClient for
3CX\).
5. Предоставьте пользователям ПК права на запись и изменение файлов в каталоге установке.
5.2 Однопользовательские ключи.
Важно!!! Однопользовательские ключи не работают в терминальных сессиях.
1. Выполните подготовительный этап (п.5.1.3) применительно к ПК.
2. Запустите установщик от имени администратора.
3. В окне выбора компонентов отметьте «ifClient for 3CX» и «Драйвер Giardant».
4. Если в качестве абонентского устройства используется софтфон 3CXPhone, то в окне выбора компонентов
дополнительно отметьте " ifClient Plugin for 3CX".
5. Выполните все действия для завершения установки выбранных компонентов.
При использовании внешнего компонента, разработанного по технологии Native API, регистрация библиотек
1С addnmrs.dll и comcntr.dll не требуется.
11
6. Подключите аппаратный ключ к ПК.
7. Если вы приобрели программный ключ, запустите "Activation Wizard" из меню "Пуск" - " ifClient for 3CX" и
выполните активацию лицензии согласно п.5.1.2 п.п.2-3.
5.3 Trial версия.
1. Выполните подготовительный этап (п.5.1.3) применительно к ПК или к серверу терминалов.
2. Установите ifClient согласно п.5.1.4 п.п.1-5 и, при необходимости, согласно п.5.1.5 п.п.1-3.
3. Запустите "Activation Wizard" из меню "Пуск" - " ifClient for 3CX" на терминальном сервере или клиентском ПК, в
зависимости от того, где вы запускаете 1С.
4. В открывшемся окне "Мастера активации Guardant" выделите лицензию "ifClient Trial" и нажмите "Далее".
5. Введите в поле серийный номер и нажмите "Далее", при успешной активации появится соответствующее
сообщение.
6. Если интегрируемое ПО используется на терминальном сервере, а софтфон используется на клиентском ПК, то
выполните активацию плагина на клиентском согласно п.п.3-5.
5.4 Возможные проблемы.
1. В 1С не работает нативный компонент - сообщение «FAILED Create COM object».
В 1С не работает COM компонент – сообщение «WebAPI_3CX_1C : ссылка на объект не указывает на
экземпляр объекта»
Решение. Установите ifClient от имени администратора системы. Если это не помогло, то запустите Командную
строку от имени администратора системы и выполните команду
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /codebase "C:\Program Files (x86)\Interface Ltd\ifClient
for 3CX\WebAPI_3CX_1C.dll"
2. В 1С не работает нативный компонент, сообщение «компонент не установлен».
Решение. Установите «Распространяемые пакеты Visual C++ для Visual Studio 2013» для платформы x86.
3. В интегрируемом ПО не отображаются абоненты, доступные для пользователя (из тех же групп, участником
которых он является).
Решение.
При запуске софтфона 3CXPhone не должно появляться сообщение «3CX Phone для Windows не удалось установить
соединение с 3CX Phone System Web API. В результате некоторые функции …». Данное сообщение говорит об
отсутствии трафика между АТС и софтфоном и, соответственно, между АТС и компонентом.
Проверьте работоспособность окна «Сведения о присутствии» софтфона 3CXPhone, предварительно настроив
3CXPhone на работу с АТС. Правильнее всего осуществлять настройку аккаунта в софтфоне через отправку «Welcome
Email». Если на панели софтфона отсутствует «статус присутствия», или окно «Сведения о присутствии» не
открывается, или в нем отсутствует список абонентов, то это говорит о некорректной работе софтфона из-за средств
безопасности ОС, антивирусного ПО, настроек Веб сервера и т.п., и, соответственно, это влияет на работоспособность
компонента. Добейтесь полной работоспособности 3CXPhone.
2. 3CXPhone работает корректно, но события телефонии не поступают в 1С.
Решение. Зарегистрируйте библиотеку 1С addnmrs.dll.
3. 1С не загружает COM объект, 1С выбивает при загрузке COM объекта.
Решение. Зарегистрируйте библиотеку 1С comcntr.dll.
4. События в интегрируемое ПО поступают с большой задержкой (На текущий момент данная проблемы выявлена
при использовании антивирусного ПО Kaspersky).
Решение. Исключите из контроля сетевых портов порты, используемые веб-сервисом сведений о присутствии.
5. Компонент не подключается к АТС.
Решение. В панели управления 3CX, в разделе «Параметры Безопасности» отключите опцию «SSL/SecureSIP
транспорт и алгоритмы шифрования».
12
6. В 1С недоступен некоторый функционал: подсказка, перехват, …, не приходят записи вызовов.
Решение. Установите соответствующие права и настройки пользователю на АТС.
13
6 Плагин «ifClient Plugin». Плагин предназначен для повышения удобства использования софтфона 3CXPhone for 3CX Phone System в качестве
абонентского устройства. При установке плагина вносятся изменения в файл 3CXWin8Phone.user.config.
Изменения в файле 3CXWin8Phone.user.config. В строку с ключем CRMPlugin добавляется ссылка на плагин:
<add key="CRMPlugin" value="CallTriggerCmdPlugin,ifClientPlugin"/>
Работа плагина обеспечивается установкой софтфона 3CXPhone в режим
работы «3CXPhone».
При использовании плагина управление собственными вызовами и
статусом присутствия из интегрируемого приложения приводит к
непосредственным действиям на софтфоне.
Отключение плагина.
При необходимости плагин можно отключить редактированием файла
3CXWin8Phone.user.config.
7 Работа с ПО на терминальном сервере.
Для работы с интегрируемым ПО, расположенным на терминальном сервере, модуль может устанавливаться как на
терминальном сервере, так и на клиентском ПК, в зависимости от типа интеграции.
Если интеграция осуществляется через WebSocket и ifClient используется на терминальном сервере, то для каждого
пользователя на сервере необходимо настроить уникальные TCP порты в ifClient, т.к. для каждого терминального
пользователя требуется отдельная копия ifClient.
При интеграции через COM объект ifClient устанавливается на сервере терминалов.
Если в качестве абонентского устройства на клиентском ПК используется софтфон 3CXPhone, то на клиентский ПК
необходимо установить плагин ifClient Plugin.
14
8 Тестирование ifClient через WebSocket. Первый запуск ifClient (ifClient.exe) необходимо выполнить от имени администратора системы. При запуске от имени
администратора в хранилище сертификатов устанавливаются самоподписанные сертификаты, необходимые для
работы через защищенное соединение (SSL) и предоставляется возможность настройки портов для соединения с
интегрируемым ПО.
Если сертификаты не установились по каким либо причинам или интегрируемое ПО использует собственное
хранилище сертификатов, то необходимо выгрузить сертификаты из ifClient и вручную поместить их в хранилище.
1. Кликните правой кнопкой мыши на иконке ifClient в трее и выберите пункт меню «Настройки».
15
2. Перейдите на вкладку «Сертификаты», нажмите кнопку
«Экспорт».
3. Задайте путь экспорта и пароль, который вам понадобится при
установке сертификатов. Нажмите кнопку «Сохранить».
4. В выбранный каталог выгрузятся три сертификата:
- InterfaceCA.crt – сертификат центра сертификации;
- ifClient_localhost_if56.p12 – сертификат издателя с ComonName, заданным как CN = localhost, CN = ifclient.if56.ru;
- ifClient_if56_localhost.p12 – сертификат издателя с ComonName, заданным как CN = ifclient.if56.ru, CN = localhost.
5. Загрузите сертификат InterfaceCA.crt в хранилище центров сертификации. Загрузите сертификаты
ifClient_localhost_if56.p12 и ifClient_if56_localhost.p12 в хранилище доверенных издателей или в личное хранилище,
используя пароль, заданный в шаге 3.
Для тестирования ifClient откройте в браузере адрес http://localhost:2565.или https://localhost:2566. Выберите URL
WebSocket сервера и нажмите кнопку «Подключиться к ifClient». Укажите в поле «Адрес» URL веб-сервиса сведений о
присутствии 3CX Phone System, UserId, пароль и нажмите кнопку «Подключиться к 3CX»…
Для использования URL ifclient.if56.ru добавьте в файл hosts следующую строку:
127.0.0.1 ifclient.if56.ru
16
9 Тестирование интеграции через COM объект ifClient на примере 1С v8.
Для тестирования ifClient через встраивание COM объекта воспользуйтесь готовыми панелями телефонии для ifClient,
не требующими встраивания в конфигурацию 1С. Панели вы можете загрузить с нашего сайта в разделе «Скачать».
17
10 События, cвойства, методы ifClient for 3CX.
10.1 События
10.1.1 События WebSocket сервера
События от WebSocket сервера поступают в виде текстовых сообщений в следующем виде:
source=<Источник>; <Данные>;\r\n;
Значения ключа source:
channel – события от канала подключения к 3CX Phone System;
chat – события внутреннего чата 3CX;
myinfo – события о собственных соединениях абонента;
group – события о группах абонентов, участниках групп и соединений у участников групп, в том числе и
собственных соединений абонента, события возникают только для тех групп, участником которых является
абонента, в соответствии с правами абонента и других участников;
queue – события об очередях, участниках очередей и соединений в очередях, в том числе и собственных
соединениях абонента;
ivr – события о вызовах на автосекретаре;
3cxphone – события от софтфона 3CXPhone, если используется плагин ifClient Plugin;
getprop – ответ на запрос о получении значения свойства (только для WebSocket).
Другие значения параметра на текущий момент не структурированы и могут меняться в следующих версиях.
События о соединениях поступают от всех источников, если свойство OnlyMyConnection выставлено в ложь.
Например, если абонент зарегистрирован в очереди и поступил вызов на очередь, то абоненту придут события
localconnection об этом вызове от трех источников – myinfo, group, queue.
Структура строки <Данные> подробно описаны событий смотрите в пункте 10.1.3.
10.1.2 События COM объекта AddIn.COM_3CX_1C OnEvent (<Источник COM>, <Источник>, <Данные>)
Данные:
<Источник COM>
Тип: Строка
Всегда «COM_3CX_1C»
<Источник>
Тип: Строка
Значения параметра описаны в 10.1.1
<Данные>
Тип: Строка
Данные события (см. 10.1.3).
18
10.1.3 Структура строки <Данные> для обработчика события.
Этот параметр представляет собой набор строк, разделенных символами переноса строки « \r\n ». Каждая строка
состоит из набора пар ключ-значение «<ключ_n>=<знач_n>», разделенных символом «;» (точка с запятой):
record=<ТипСобытия>;<Ключ1>=<Значение1>;<Ключ2>=<Значение2>;...<КлючN>=<ЗначениеN>;\r\n;
Ключ record определяет тип передаваемого события и имеет следующие значения:
3cxphonecall – вызов на софтфоне 3CXPhone;
3cxphoneline – состояние линии на софтфоне 3CXPhone;
callhistory – запись истории вызовов оператора;
channel – событие канала подключения к 3CX Phone System;
chat – участники чата;
chathistory – запись из истории сообщений чата;
chatmessage – передача текстового сообщения через чат;
conf – конференция;
extensioninfo – регистрационная информация об абоненте;
group – информация о группе;
groupmember – состояние внутреннего абонента;
localconnection – соединение;
phone – устройство оператора;
plugin – плагин ifClient Plugin;
prop – свойство ifClient (только для WebSocket);
queueagent –информация о регистрации абонента в очереди.
10.1.4 Тип события «channel»
Возникает в следующих случаях:
при успешном подключении к АТС;
при отключении от АТС;
при неудачном подключении или при разрыве соединения.
Набор ключей-значений:
record=channel – тип события;
state – состояние подключения:
connected – произошло подключение к АТС;
disconnected – произошло отключение от АТС;
error – ошибка при подключении, разрыв соединения с АТС;
msg – сообщение об ошибке.
Примеры:
record=channel;state=connected
record=channel;state=error;msg=Invalid password
10.1.5 Тип события «phone»
Возникает в следующих случаях:
при обнаружении устройства, зарегистрированного на АТС под User Id пользователя, во время подключения к
АТС, но до события channel;
при регистрации на АТС нового устройства под User Id пользователя;
при разрегистрации на АТС устройства под User Id пользователя;
при выборе устройства в качестве текущего изменением свойства CurrentPhoneId.
В событии могут содержаться данные о нескольких объектах как одного, так и разных типов (группе, абоненте,
соединении и т.д.).
Для минимизации трафика в событии передаются только измененные значения с момента последнего события по
объекту. Для получения полной информации о внутренних абонентах используйте методы GetAllExtension() и
GetAllGroups() сразу после подключения к 3CX.
19
Набор ключей-значений:
record=phone – тип события;
id – уникальный идентификатор устройства в рамках регистрации на АТС:
action – действие:
add – обнаружено зарегистрированное устройство при подключении, устройство зарегистрировалось
на АТС;
delete – произошла разрегистрация устройства на АТС;
set – устройство выбрано в качестве текущего (для управления из интегрируемого приложения).
useragent – User-Agent телефона или софтфона;
type – тип устройства:
1 – софтфон 3CXPhone;
2 – аппаратный телефон с поддержкой CTI (совместимый с 3CXPhone System);
3 – аппаратный телефон без поддержки CTI, сторонний софтфон;
host – ip адрес устройства;
port – порт устройства (SIP);
uri – SIP URI устройства.
Примеры:
record=phone;action=add;id=75;useragent=Yealink SIP-T28P 2.72.14.3;type=2;host=192.168.1.249;port=5062;
uri=sip:[email protected]:5062
record=phone;action=add;id=2629;useragent=3CXPhone for Windows 14.0.47020.0;type=1;host=192.168.1.97;port=0;
uri=sip:[email protected]:32534:rinstance=0-894c0f8ac3d54065a2cd1c048d19e39e:ob
record=phone;action=set;id=75
10.1.6 Тип события «plugin»
Возникает в следующих случаях:
при загрузке софтфоном 3CXPhone плагина ifClient Plugin;
при соединении / ошибке соединения компонента с плагином через Named Pipes.
Набор ключей-значений:
record=plugin – тип события;
id – ID устройства;
loaded – признак загрузки плагина (на текущий момент значение всегда "true"), возникает если в процессе
работы с компонентом был запущен софтфон и софтфон загрузил плагин;
channel – тип канала (на текущий момент значение всегда "pipe");
state – состояние канала "connected | error";
msg – описание ошибки.
Пример:
record=plugin;id=4260;loaded=true
record=plugin;id=4260;channel=pipe;state=connected
10.1.7 Тип события «group»
Возникает в следующих случаях:
при подключении к АТС;
при изменении названия группы внутренних номеров на АТС;
Событие приходит только к участникам группы. Если внутренний номер является участником нескольких групп, то
при подключении компонента к АТС, абонент получит данное событие для каждой группы, участником которой он
является.
Набор ключей-значений:
record=group – тип события;
id – ID группы;
name – наименование группы.
Пример:
record=group;id=2;name=DEFAULT;
20
10.1.8 Тип события «groupmember»
Возникает в следующих случаях:
1. при подключении к АТС;
2. при изменении состояния занятости абонента;
3. при включении или отключении режима DND («Не беспокоить»);
4. при изменении текущего статуса абонента;
5. при регистрации или отмене регистрации в очереди;
6. при включении или отключении режима DND («Не беспокоить»).
7. При изменении имени, фамилии или мобильного номера абонента на АТС.
Набор ключей-значений:
groupid – ID группы абонента, соответствует ключу Id в событии group;
record=groupmember – тип события;
id – уникальный ID абонента на АТС;
extensionnumber – внутренний номер абонента;
firstname – имя абонента;
lastname – фамилия абонента;
isregistered – информация о регистрации абонента на АТС, True – зарегистрирован, False - не
зарегистрирован;
lastname – фамилия абонента;
currentprofile – наименование текущего профиля пользователя;
currentprofileinternalname – внутреннее наименование в АТС текущего профиля пользователя;
currentstatus – текущий статус абонента, в версии 3CXPhone v12.5, произвольная текстовая информация,
задаваемая в 3CXPhone – Настройки Переключение вызова Выбранный статус (Доступен | Нет на
месте | и т.д.) Редактируемое поле «Статус». В версии 3CXPhone v12.0 данный статус находится
непосредственно на форме софтфона 3CXPhone;
queuestatus – информация о регистрации абонента в очередях, True – зарегистрирован, False - не
зарегистрирован;
isbusy – информация о занятости абонента, True – занят, False - не занят;
chatstatus – информация о регистрации абонента в чате, True – зарегистрирован, False - не
зарегистрирован;
mobilenumber – мобильный номер абонента.
Примеры.
Первичная информации о состоянии абонента, полученная после выполнения метода GetAllGroups():
groupid=2;record=groupmember;id=22;extensionnumber=14;firstname=Иван;lastname=Иванов;isregistered=True;
isdnd=False;currentstatus=В офисе;queuestatus=False;isbusy=False;chatstatus=Offline;mobilenumber=9229229292;
Изменилось состояние занятости абонента:
groupid=2;record=groupmember;isbusy=True;id=22;
10.1.9 Тип события «extensioninfo»
Возникает в следующих случаях:
при выполнении метода GetAllExtensions().
Набор ключей-значений:
record=extesioninfo – тип события;
id – уникальный ID абонента на АТС;
type – тип внутреннего номера может принимать следующие значения:
None – неизвестный;
Extension – внутренний абонент;
Queue – очередь вызовов;
RingGroup - группа вызова;
IVR - автосекретарь;
Fax – факс;
Conference – конференция;
Parking – парковка;
ExternalLine – внешние линии;
21
SpecialMenu – меню голосовой почты;
number – внутренний номер абонента;
firstname – имя абонента;
lastname – фамилия абонента;
mobilenumber – мобильный номер абонента;
emailaddress – адрес электронной почты абонента.
Пример:
record=extensioninfo;id=23;type=Extension;number=15;firstname=Петр;lastname=Сидоров;mobilenumber=;
Набор ключей может быть разный для различных типов номеров.
10.1.10 Тип события «localconnection»
Возникает при любом изменении состояния вызова. При вызовах между внутренними абонентами 3CX создаст
отдельное соединение (id) для каждого абонента в рамках одного вызова (callid). Следует также учесть, что при
наличии нескольких зарегистрированных устройств на одном внутреннем номере, на этапе дозвона на этот номер
(state=Ringing), 3CX создаст отдельное соединение для каждого зарегистрированного устройства.
Набор ключей-значений:
memberid – Id владельца соединения, ключ id из событий groupmember и extensioninfo;
record=localconnection – тип события;
id – Id соединения АТС с абонентским устройством;
callid – Id вызова, по значению данного ключа возможно осуществить связку c информацией, поступающей
от сервиса 3CX CDR Client (http://if56.ru/3cx-ip-phone-call-log-for-1c-database).
state – состояние вызова, может принимать следующие значения:
Dialing – дозвон до вызываемого абонента;
Connected – вызов установлен;
Ringing – поступает входящий вызов;
TryingToTransfer – вызов ожидает перевода, возникает у абонента переводящего вызов;
WaitingForNewParty – ожидание соединения с вызываемым абонентом, данное значение возможно
при осуществлении набора методом обратного вызова – после ответа вызывающего абонента на
Make Call от 3CX и перед непосредственным дозвоном до вызываемого (перед событием
localconnection с ключем state=Ringing у вызываемого абонента), либо при ожидании перевода вызова
у абонента, которого переводят, либо при ответе на вызов из очереди или голосового меню;
UnknownState – неизвестное состояние;
isincoming – признак входящего вызова, True – входящий, False - исходящий;
startedat – время начала вызова, поступает при начале вызова;
answeredat – время ответа на вызов, поступает при окончании вызова;
duration – длительность вызова, поступает при окончании вызова;
originatortype –тип линии автора?, ключ имеет значение только на входящем соединении, может принимать
значения:
None;
RingGroup – вызов абоненту поступил от группы вызова;
originatordn – номер группы вызова, от которой поступил вызов;
originatorname – имя группы вызова, от которой поступил вызов;
otherpartytype – тип абонента на другом конце линии, возможные значения:
None – неизвестно;
Conference – конференция;
Extension – внутренний абонент;
ExternalLine – внешняя линия (VOIP оператор или VOIP/PSTN шлюз);
Fax – факс;
IVR – автосекретарь;
Parking - парковка;
SpecialMenu – меню голосовой почты;
Queue – очередь;
otherpartydisplayname – имя абонента на другом конце линии, возможные значения:
для внутренних номеров - Имя и Фамилия из информации о пользователе;
для внешних - Имя и Фамилия из телефонной книги АТС;
для Автосекретаря – Наименование;
22
otherpartycallerid – caller ID абонента на другом конце линии;
otherpartydn – для внутренних вызовов – внутренний номер абонента на другом конце линии, для внешних-
входящих вызовов – виртуальный внутренний номер VOIP оператора или VOIP/PSTN шлюза;
ownertype – тип абонента владельца соединения, аналогично otherpartytype;
ownerdisplayname – имя абонента владельца соединения, Имя и Фамилия из информации о пользователе;
ownercallerid – caller ID владельца соединения;
ownerdn – внутренний номер владельца соединения;
recfile – имя файла записи вызова, ключ поступает при ответе на вызов, только в событиях с источником
myinfo;
legid – Id устройства, участвующего в вызове (callid), уникальность в рамках этого вызова;
devicecontact – SIP URI устройства, к которому относится событие;
action – признак завершения соединения, всегда action=delete.
Важно!!! В событии никогда не передается полный набор ключей!
Пример:
1. Начало вызова абонентом 11 (id=22), абонента с номером 9229229292, соединению присвоен Id=786
memberid=22;record=localconnection;id=786;callid=224;legid=1;state=Dialing;originatortype=None;originatordn=;
originatorname=;otherpartytype=None;otherpartydisplayname=;otherpartycallerid=9229229292;isincoming=False;
startedat=25.05.201517:32:40;ownertype=Extension;ownerdn=11;ownerdisplayname=Тимур Хусаинов;localid=;
otherpartydn=;ownercallerid=11;
2. Изменение статуса занятости у абонента id=22
groupid=2;record=groupmember;isbusy=True;id=22;
3. Изменение информации о соединении Id=786: тип абонента на другом конце линии – внешняя линия; номер найден
в адресной книге 3CX – это Петров Петр; вызов осуществляется через VOIP оператора с виртуальным номером 10004
memberid=22;record=localconnection;otherpartytype=ExternalLine;otherpartydisplayname=Петров, Петр;
otherpartycallerid=79229229292;otherpartydn=10004;id=786;
4. Изменение состояния соединения Id=786 – вызов установлен.
memberid=22;record=localconnection;state=Connected;id=786;
5. Изменение состояния соединения Id=786 – вызов завершен.
record=localconnection;id=786;endedat=25.05.2015 17:33:07;duration=00:00:18.1606330;action=delete;
6. Изменение статуса занятости у абонента id=22
groupid=2;record=groupmember;isbusy=False;id=22;
7. Создан файл записи вызова
record=localconnection;id=7556;callid=1932;recfile=[21]_21-15_20160609135457(1932).wav;
10.1.11 Тип события «3cxphonecall»
Возникает в следующих случаях:
при изменении состояния вызова на софтфоне 3CXPhone;
при выполнении метода GetLinesStatus3CXPhone().
Набор ключей-значений:
record=3cxphonecall – тип события;
line – номер линии 3CXPhone;
currentline – номер текущей линии 3CXPhone;
id – Id соединения АТС с абонентским устройством;
callid – Id вызова;
state – состояние линии, может принимать следующие значения:
Free – линия свободна;
Dialing – дозвон до вызываемого абонента
Connected – соединение установлено;
Ringing – поступает входящий вызов;
TryingToTransfer – вызов ожидает перевода, возникает у абонента переводящего вызов (только при
выполнении метода GetLinesStatus3CXPhone());
23
WaitingForNewParty – ожидание соединения с вызываемым абонентом (только при выполнении
метода GetLinesStatus3CXPhone());
UnknownState – неизвестное состояние (только при выполнении метода GetLinesStatus3CXPhone());
callstate – состояние вызова:
hold – вызов поставлен на удержание;
held – вызов поставлен на удержание другим абонентом;
established – вызов активен.
Примеры:
record=3cxphonecall;line=1;currentline=1;id=4437;callid=864;state=Ringing;
record=3cxphonecall;line=1;currentline=2;id=;callid=;state=Free;
Рекомендуем использовать данное событие только для определения линии софтфона, по которой осуществляется
вызов или для определения состояния занятости линии через вызов метода GetLinesStatus3CXPhone. Для изменения
состояния и атрибутов вызова используйте событие localconnection.
10.1.12 Тип события «3cxphoneline»
Возникает в следующих случаях:
при изменении текущей линии на софтфоне 3CXPhone;
при выполнении метода ChangeLine3CXPhone().
Набор ключей-значений:
record=3cxphoneline – тип события;
newline – номер вновь выбранной линии.
Примеры:
record=3cxphoneline;newline=2;
10.1.13 Тип события «conf»
Возникает при изменении статусов конференции.
Набор ключей-значений:
record=conf – тип события;
id – ID конференции;
number – номер участника конференции;
status – статус участника в конференции может принимать следующие значения:
JOINING – присоединение к конференции;
CONNECTED – подключение к конференции;
DISCONNECTED – отключение от конференции;
MUTED – отключен pder.
0 – окончание конференции, возникает у всех участников при завершении конференции
инициатором;
Пример:
record=conf;id=10;number=25;status=JOINING;
10.1.14 Тип события «queueagent»
Возникает при регистрации или отмене регистрации абонента в очереди.
Набор ключей-значений:
record=queueagent – тип события;
queuestatus – информация о состоянии регистрации абонента в очереди;
id – ID абонента.
Пример:
record=queueagent;queuestatus=True;id=22;
24
10.1.15 Тип события «chat»
Возникает при выполнении метода GetChats().
Набор ключей-значений:
record – chat – тип события;
party – список участников чата.
Примеры:
record=chat;party=21,22,23,24,25;
record=chat;party=25;
10.1.16 Тип события «chatmessage»
Возникает при передаче текстового сообщения в чате.
Набор ключей-значений:
record= chatmessage – тип события;
id – Id сообщения;
from – номер абонента отправителя;
to – номер абонента получателя;
party – список участников группового чата;
textmsg – текст сообщения.
Пример:
record=chatmessage;id=897;from=21;to=22;party=21,22,23,24,25;msg=Всем привет!;
10.1.17 Тип события «chathistory»
Возникает при выполнении метода GetChatMessages (запрос истории сообщений).
Набор ключей-значений:
record=chathistory – тип события;
id – Id сообщения;
from – номер абонента отправителя;
to – номер абонента получателя;
time – дата и время передачи сообщения;
party – список участников группового чата;
isnew – признак нового (непрочитанного) сообщения, True – новое, False - нет;
textmsg – текст сообщения.
Пример:
record=chathistory;id=897;from=21;to=22;time=22.01.2015 23:59:59;isnew=False;msg=Привет!;
10.1.18 Тип события «contact»
Возникает при выполнении метода GetPhonebookContacts (получить записи телефонной книги).
Событие возникает для каждого контакта.
Набор ключей-значений:
record=contact – тип события;
id – ID контакта;
number – основной номер контакта;
extnumber – номер контакта в системе 3CX (только для contacttype=LocalUser);
firstname – имя;
lastname – фамилия;
contacttype – тип контакта, может принимать следующие значения значения:
LocalUser – внутренний абонент 3CX;
PersonalPhonebook - контакт персональной телефонной книги;
CompanyPhonebook - контакт телефонной книги компании.
company – название компании контакта;
data0 – в 3CX в этом поле хранится значение Мобильный 2 (далее – только соответствия);
data1 – домашний;
25
data2 – домашний2;
data3 – рабочий;
data4 – рабочий2;
data5 – электронная почта;
data6 – другой;
data7 – рабочий факс;
data8 – основной факс;
data9 – пейджер.
Примечание: для экономии трафика пустые поля не передаются.
Пример:
record=contact;id=13;number=9228118811;extnumber=;firstname=Артем;lastname=Селекзянов;contacttype=CompanyPhon
ebook;company=ООО Интерфейс;
10.1.19 Тип события «addcontact»
Возникает при выполнении метода AddPhonebookContact (добавить контакт в телефонную книгу).
В поле данных передается добавленный контакт.
Набор ключей-значений соответствует событию contact.
Примечание: для экономии трафика пустые поля не передаются.
Пример:
record=addcontact;id=54;number=9998887766;extnumber=;firstname=Иван;lastname=Иванов;
contacttype=PersonalPhonebook;
10.1.20 Тип события «updatecontact»
Возникает при выполнении метода UpdatePhonebookContact (изменить данные контакта в телефонной книге).
В поле данных передается измененный контакт.
Набор ключей-значений соответствует событию contact.
Примечание: для экономии трафика пустые поля не передаются.
Пример:
record=updatecontact;id=52;number=9998887766;firstname=Петр;lastname=Петров;contacttype=CompanyPhonebook;data0
=8887776655;
10.1.21 Тип события «deletecontact»
Возникает при выполнении метода DeletePhonebookContact (удалить контакт из телефонной книги).
В поле данных передается удаленный контакт.
Набор ключей-значений соответствует событию contact.
Примечание: для экономии трафика пустые поля не передаются.
Пример:
record=deletecontact;id=53;number=9991112233;extnumber=;firstname=Семен;lastname=Семенов;contacttype=CompanyPh
onebook;
10.1.22 Тип события «findcontact»
Возникает при выполнении метода FindPhonebookContact (найти контакт).
В поле данных передается найденный контакт.
Набор ключей-значений соответствует событию «contact».
Для каждого найденного контакта возникает отдельное событие.
Примечание: для экономии трафика пустые поля не передаются.
Пример:
record=findcontact;id=31;extnumber=25;firstname=Евгений;lastname=Гаврусь;contacttype=LocalUser;company=;
26
10.1.23 Тип события «callhistory»
Возникает в следующих случаях:
при выполнении методов GetCallHistory() и GetCallHistoryByDate();
после завершения собственного вызова абонента и завершения всей цепочки соединений в вызове (при
завершении последнего соединения с данным callid), .
Пример:
record=callhistory;callid=1932;callhistoryid=53539;startedat=11.06.2016 18:54:55;answeredat=11.06.2016
18:54:57;endedat=11.06.2016 18:55:05;calltype=Outgoing;partycallerid=Ext.15;partydn=15;partydnname=Наталья
Коннова;partydntype=Extension;recfile=[21]_21-15_20160611135457(1932).wav;
10.1.24 Тип события «prop»
Возникает только при интеграции через WebSocket как ответ на команду получения значения свойства.
Набор ключей-значений:
record=prop – тип события;
prop – наименование свойства, полностью идентично значению ключа prop в команде getprop;
value – значение свойства.
Пример:
source=getprop;record=prop;prop=currentphoneid;value=74;
Если свойство содержит список значений, то каждое значение определяется отдельным типом события в ответном
событии.
Пример:
source=getprop;record=prop;prop=userprofileslist;value=list;
record=profile;id=39;name=Available;customname=Available;extendedstatus=;
record=profile;id=38;name=Away;customname=Away;extendedstatus=999;
record=profile;id=35;name=Out of office;customname=DND;extendedstatus=;
record=profile;id=37;name=Custom 1;customname=Available 2;extendedstatus=; record=profile;id=36;name=Custom
2;customname=Out of Office 2;extendedstatus=;
27
10.2 WebSocket - команды
При интеграции через WebSocket, взаимодействие между ifClient и интегрируемым ПО осуществляется посредством
двухстороннего обмена текстовыми сообщениями. Со стороны ifClient поступают сообщения-события об объектах
телефонии, из интегрируемого ПО в ifClient отправляются сообщения-команды для управления телефонией.
Команда представляет собой строку из набора пар ключ-значение «<ключ_n>=<знач_n>», разделенных символом «;»
(точка с запятой):
cmd=<Команда>;<Ключ1>=<Значение1>;<Ключ2>=<Значение2>;...<КлючN>=<ЗначениеN>;
Команды используются как для непосредственного управления телефонией, так и для установки-получения свойств
ifClient.
10.3 Свойства
10.3.1 WebSocket – команды и ключи для установки и получения свойств
10.3.1.1 Команды для установки и получения свойств
setprop Описание: установить значение свойства.
Пример:
cmd=setprop;...
getprop Описание: получить значение свойства.
Пример:
cmd=getprop;...
10.3.1.2 Ключи для установки и получения свойств
prop Описание: имя свойства.
value Описание: устанавливаемое значение свойства.
Примеры:
cmd=setprop;prop=<Имя свойства>;value=<Значение свойства>; cmd=getprop;prop=<Имя свойства>;
28
10.3.2 COM объект - свойства, WebSocket - значения ключей для установки и получения свойств
Address
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись. с версии 3.2.3.0 свойство не используется, оставлено для совместимости.
Тип: строка.
Описание: URL сервиса 3CX следующего вида http://<IPAddress|FQDN>:<порт>/MyPhone/MPWebService.asmx.
Получить URL для 3CX v14 SP2 можно в консоли управления 3CX Server Manager: «Troubleshooting» «Parameters»
«Пользовательские параметры», затем набрать в строке поиска «MYPHONE_LINK».
WebSocket:
cmd=setprop;prop=address;value=<Значение>; cmd=getprop;prop=address.
APIPort
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: целое.
Описание: порт Web-сервиса 3CX (обычно 5000). Чтобы исключить подключение по незащищенному порту
установите значение свойства в 0. Реализовано в версии 3.2.3.0.
WebSocket:
cmd=setprop;prop=apiport;value=<Значение>; cmd=getprop;prop=apiport.
APISSLPort
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: целое.
Описание: SSL порт Web-сервиса 3CX (обычно 5001). Чтобы исключить подключение по SSL порту установите
значение свойства в 0. Реализовано в версии 3.2.3.0.
WebSocket:
cmd=setprop;prop=apisslport;value=<Значение>; cmd=getprop;prop=apisslport.
29
CallerIdMinMatch
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: число.
Описание: минимальное количество цифр в номере телефона для идентификации при поиске в истории и записях
вызовов. CallerId сравниваются справа налево по количеству цифр, заданных CallerIdMinMatch. По умолчанию 10
(оптимальное значение).
WebSocket:
cmd=setprop;prop=calleridminmatch;value=<Значение>; cmd=getprop;prop=calleridminmatch;
CurrentPhoneId
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: число.
Описание: Id текущего устройства. Свойство позволяет задавать каким устройством будет происходить управление.
Переключение устройства можно производить в процессе работы. Если в качестве текущего устройства выбрать
аппаратный телефон, то также возможно управление софтфоном 3CXPhone при помощи методов, предназначенных
для работы с 3CXPhone.
Внимание! Компонент не задает текущее устройство. Выбор устройства необходимо осуществить непосредственно в
интегрируемом приложении, даже при наличии только одного устройства.
WebSocket:
cmd=setprop;prop=currentphoneid;value=<Значение>; cmd=getprop;prop=currentphoneid;
CurrentProfileId
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: число.
Описание: Id текущего статуса. Свойство позволяет задать статус присутствия.
WebSocket:
cmd=setprop;prop=currentprofileid;value=<Значение>; cmd=getprop;prop=currentprofileid;
30
IsSupportsCTI
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: только чтение.
Тип: булево.
Описание: поддержка текущим абонентским устройством (аппаратным телефоном) удаленного управления (CTI).
«Истина» - поддерживает, «Ложь» - не поддерживает. Список моделей телефонов, поддерживающих удаленное
управление, можно найти в файле C:\ProgramData\3CX\Data\Http\Interface\MyPhone\cti_template.xml. Так же
информацию о поддержке CTI можно получить из свойства UserPhonesList.
При поддержке телефоном CTI доступны следующие методы:
- SupportedCTICommands;
- AnswerCallCTI;
- MakeCallCTI;
- HoldCTI;
- DropCallCTI;
- AttendantTransferCTI;
- BlindTransferCTI;
- FinalizeTransferCTI;
- PressDialKeyCTI;
- MuteCTI;
- SpeakerOnOffCTI;
- PressLineKeyCTI;
- DNDOnCTI;
- DNDOffCTI.
WebSocket:
cmd=getprop;prop=issupportscti;
OnlyMyConnection
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: булево.
Описание: выводить события только о собственных соединениях оператора. Истина – только собственные, ложь –
события обо всех соединениях, доступных оператору в соответствии с правами на 3CX
WebSocket:
cmd=setprop;prop=onlymyconnection;value=<true|false> cmd=getprop;prop=onlymyconnection;
31
PBXLocalAddress
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: строка.
Описание: Локальный адрес 3CX Phone System. Чтобы исключить подключение на локальный адрес установите
значение свойства в пустую строку. Реализовано в версии 3.2.3.0.
WebSocket:
cmd=setprop;prop=pbxlocaladdress;value=<Значение>; cmd=getprop;prop=pbxlocaladdress.
PBXPublicAddress
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: строка.
Описание: Публичный адрес (FQDN) 3CX Phone System. Чтобы исключить подключение на публичный адрес
установите значение свойства в пустую строку. Реализовано в версии 3.2.3.0.
WebSocket:
cmd=setprop;prop=pbxpublicaddress;value=<Значение>; cmd=getprop;prop=pbxpublicaddress.
RequestTimeOut
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: число.
Описание: время ожидания ответа от Web-сервиса 3CX в секундах, после которого происходит разрыв соединения. В
3CX по умолчанию 20 секунд. Параметр необходимо устанавливать после подключения к АТС (после получения
события о подключении к АТС).
WebSocket:
cmd=setprop;prop=requesttimeout;value=<Значение> cmd=getprop;prop=requesttimeout;
32
UserName
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: строка.
Описание: внутренний номер / User ID для аутентификации на 3CX Phone System.
WebSocket:
cmd=setprop;prop=username;value=<Значение> cmd=getprop;prop=username;
UserPassword
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: чтение и запись.
Тип: строка.
Описание: пароль для аутентификации на 3CX Phone System.
WebSocket:
cmd=setprop;prop=userpassword;value=<Значение>
UserPhonesList
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API X Используйте тип события phone
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: только чтение.
Тип: COMSafeArray.
Описание: список всех устройств, зарегистрированных под User ID пользователя. Каждый элемент массива –
COMОбъект со следующими свойствами:
Id Тип: число
Описание: уникальный идентификатор устройства на АТС. Внимание! Уникальность только в рамках
регистрации. При разрегистрации-регистрации устройства или при перезагрузке АТС Id изменяется.
UserAgent Тип: строка
Описание: наименование устройства
Type Тип: число
Описание: тип устройства.
Значения:
- 1 – софтфон 3CXPhone
- 2 – аппаратный телефон с поддержкой CTI (совместимый с 3CXPhone System)
- 3 – телефон без поддержки CTI, сторонний софтфон
33
Contact Тип: COMОбъект
Описание: сетевая информация об устройстве. Объект содержит следующие свойства:
Host Тип: строка
Описание: IP адрес устройства
Port Тип: строка
Описание: порт устройства
User Тип: строка
Описание: User ID
Uri Тип: строка
Описание: унифицированный идентификатор устройства
WebSocket:
cmd=getprop;prop=userphoneslist;
UserProfilesList
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API X Используйте метод GetUserProfiles
COM_3CX.COM_3CX_1C V
WebSocket V
Использование: только чтение.
Тип: COMSafeArray.
Описание: список статусов присутствия. Каждый элемент массива – COMОбъект со следующими свойствами:
ProfileId Тип: число
Описание: уникальный идентификатор статуса
Name Тип: строка
Описание: именование статуса на АТС
CustomName Тип: число
Описание: дополнительное именование статуса на АТС
ExtendedStatus Тип: строка
Описание: собственное сообщение статуса
Команды WebSocket:
cmd=getprop;prop=userprofileslist;
34
UsePlugin – c версии 2.5.0 не используется, оставлено для совместимости. C версии 2.5.0 при использовании методов,
предназначенных для работы с 3CXPhone, подразумевается работоспособность плагина для 3CXPhone. Свойство
необходимо использовать если для исходящего вызова через софтфон используется метод MakeCall2.
Использование: чтение и запись.
Тип: булево.
Значение по умолчанию: Ложь.
Описание: использовать плагин WebAPI_3CX_1C_Plugin2. Установка свойства в значение «Истина» имеет смысл,
только при использовании в качестве абонентского устройства софтфона 3CXPhone.
Если свойство установлено как «Ложь», то методы выполняются путем запросов к АТС. Если свойство установлено в
«Истина», то становится доступным выполнение части методов, а выполнение ряда методов происходит
непосредственно на 3CXPhone.
Методы, становящиеся доступными для выполнения:
- AnswerCall;
- AnswerCall3CXPhone;
- ChangeLine3CXPhone;
- DropCall3CXPhone;
- GetLinesStatus3CXPhone;
- MicMute;
- MicUnMute;
- StopRecordCall.
Методы, выполняющиеся на софтфоне 3CXPhone при использовании плагина:
- MakeCall2;
- StartRecordCall.
35
10.4 COM объект - методы, WebSocket - управляющие команды Все методы ifClient реализованы как асинхронные, то есть ни один метод не ожидает завершения операции, что
позволяет исключить зависания при ожидании ответа. Таким образом, все методы компонента не имеют
возвращаемых значений (кроме метода Connected).
Управляющие команды для работы через WebSocket аналогичны командам для установки и получения свойств.
Команды и ключи-значения приведены в описании методов COM объекта.
10.4.1 Подключение к АТС, управление статусом Connect()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: осуществляет подключение компонента к серверу 3CX. Вызов метода инициирует передачу компонентом
ряда событий. Пользователю передаются события только по тем группам внутренних абонентов, участником которых
он является.
WebSocket:
cmd=connect;
Connected()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Возвращаемое значение:
Тип: Булево.
Описание: возвращает истину, если компонент подключен к серверу 3CX, ложь - не подключен.
WebSocket:
cmd=getprop;prop=connected;
Disconnect()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: осуществляет отключение модуля интеграции от сервера 3CX.
WebSocket:
cmd=disconnect;
36
GetAllExtensions()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: запрос данных о внутренних номерах АТС. Вызов метода инициирует тип события extensioninfo.
WebSocket:
cmd=getallextensions;
GetAllGroups()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: запрос информации обо всех группах, в которых участвует оператор, и ее участниках. Вызов метода
инициирует типы событий group, groupmember, localconnection от источника group.
WebSocket:
cmd=getallgroups;
GetUserProfiles()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: запрос информации о профилях. Вызов метода инициирует тип события profile.
WebSocket:
cmd=getallgroups;
37
SetDND(<Значение>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Значение> (обязательный)
Тип: Целое.
1 – включить режим DND, 0 – выключить режим DND.
Описание: включить или отключить режим DND (не беспокоить). Вызов метода инициирует тип события
groupmember.
WebSocket:
cmd=setdnd;value=<Значение>
SetQueue(<Значение>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Значение> (обязательный)
Тип: Целое.
1 – зарегистрироваться в очередях, 0 – отменить регистрацию в очередях.
Описание: регистрация или отмена регистрации во всех очередях. Вызов метода инициирует тип события
groupmember.
WebSocket:
cmd=setqueue;value=<Значение>
38
10.4.2 Общие методы для работы с вызовами DivertCall(<Номер>, < Id соединения >)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Номер > (обязательный)
Тип: Строка.
Номер или SIP Id на который необходимо выполнить перевод вызова.
< Id соединения> (обязательный)
Тип: Целое.
Значение ключа Id из события record=localconnection (см. п. 7.5.4).
Описание: Осуществить трансфер неотвеченного вызова (входящего). Возможен трансфер как собственного вызова,
так и входящих вызовов на других внутренних абонентов, в зависимости от прав пользователя на 3CX.
WebSocket:
cmd=divertcall;connid=<Id соединения>;dest=<Номер>;
DropCall(<Id соединения>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
< Id соединения> (обязательный)
Тип: Целое.
Значение ключа Id из события record=localconnection (см. п. 7.5.4).
Описание: В версиях до 1.1.7 включительно - сбросить собственный вызов (входящий/исходящий) пользователя. С
версии 1.1.8 - сбросить соединение любого абонента. При выполнении следующих условий: 3CXPhone в качестве
абонентского устройства; установлен плагин ifClient Plugin; свойство UsePlugin установлено в «Истина», собственные
вызовы будут сбрасываться непосредственно софтфоном 3CXPhone, во все остальных случаях сброс вызова будет
происходить путем отправки запроса к АТС.
WebSocket:
cmd=dropcall;connid=<Id соединения>;
MakeCall(<Номер>)
Параметры:
<Номер > (обязательный)
Тип: Строка.
Номер или SIP Id вызываемого абонента.
Описание: осуществление исходящего вызова. Метод оставлен для совместимости, рекомендуется использовать
метод MakeCall2.
WebSocket:
Не реализовано.
При использовании плагина ifClient Plugin рекомендуем использовать методы DropCall3CXPhone и
DropCall3CXPhoneByCallId.
39
MakeCall2(<Номер>, <Интерком>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Номер > (обязательный)
Тип: Строка.
Номер или SIP Id вызываемого абонента.
<Интерком> (обязательный)
Тип: Булево.
Признак поддержки абонентским устройством интерком. Если абонентское устройство поддерживает интерком и
данный параметр Интерком=Истина, то на устройстве произойдет автоответ на обратный вызов от АТС (Make Call).
При совместном использовании 3CXPhone и плагина ifClient Plugin значение параметра Интерком не влияет на
осуществление исходящего вызова, т.к. в этом случае осуществляется прямой набор c 3CXPhone.
Описание: осуществление исходящего вызова.
WebSocket:
cmd=makecall;dest=<Номер>;intercom=<Интерком>;
SetBargeInCall(< Id соединения >)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
< Id соединения> (обязательный)
Тип: Целое.
Значение ключа Id из события record=localconnection.
Описание: вмешаться в разговор. Метод доступен для пользователя при наличии у него соответствующих прав на
3CX. При использовании в качестве абонентского устройства 3CXPhone произойдет автоматическое подключение к
вызову вне зависимости от наличия плагина ifClient Plugin, в остальных случаях АТС инициирует обратный вызов
«Barge In» на абонентское устройство пользователя.
WebSocket:
cmd=bargeincall;connid=<Id соединения>;
SetListenCall(< Id соединения >)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
< Id соединения> (обязательный)
Тип: Целое.
Обратите внимание!!!
Для работы через WebSocket используется команда
makecall , а не makecall2 !!!
Внимание!!! Если абонентское устройство не поддерживает интерком и значение параметра
Интерком=Истина, то вызов осуществлен не будет.
При использовании плагина ifClient Plugin рекомендуем использовать метод MakeCall3CXPhone.
40
Значение ключа Id из события localconnection.
Описание: подслушать разговор. Метод доступен для пользователя при наличии у него соответствующих прав на
3CX. При использовании в качестве абонентского устройства 3CXPhone произойдет автоматическое подключение к
вызову вне зависимости от наличия плагина ifClient Plugin, в остальных случаях АТС инициирует обратный вызов
«Barge In» на абонентское устройство пользователя.
WebSocket:
cmd=listencall;connid=<Id соединения>;
SetWhisperCall(< Id соединения >)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
< Id соединения> (обязательный)
Тип: Целое.
Значение ключа Id из типа события localconnection.
Описание: перехватить входящий не отвеченный вызов. Метод доступен для пользователя при наличии у него
соответствующих прав на 3CX.
WebSocket:
cmd=pickupcall;connid=<Id соединения>;
SetPickupCall(< Id соединения >)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
< Id соединения> (обязательный)
Тип: Целое.
Значение ключа Id из типа события localconnection.
Описание: подсказка. Метод доступен для пользователя при наличии у него соответствующих прав на 3CX. При
использовании в качестве абонентского устройства 3CXPhone произойдет автоматическое подключение к вызову вне
зависимости от наличия плагина ifClient Plugin, в остальных случаях АТС инициирует обратный вызов «Barge In» на
абонентское устройство пользователя.
WebSocket:
cmd=whispercall;connid=<Id соединения>;
StartRecordCall(< Id соединения >)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
< Id соединения> (обязательный)
Тип: Целое.
41
Значение ключа Id из типа события localconnection.
Описание: включение записи вызова. Позволяет записывать как свои, так и чужие вызовы. Если у одного из
абонентов, участвующих в вызове, включен флажок «Записывать все звонки» в настройках 3CX Phone System, то
вызов метода игнорируется.
WebSocket:
В текущей версии не реализовано.
.
TransferCall(<Номер>, < Id соединения >)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Номер > (обязательный)
Тип: Строка.
Номер или SIP Id на который необходимо выполнить перевод вызова.
< Id соединения> (обязательный)
Тип: Целое.
Значение ключа Id из типа события localconnection.
Описание: Осуществить трансфер отвеченного вызова (входящего/исходящего). Возможен трансфер как собственного
вызова, так и вызовов других внутренних абонентов, в зависимости от прав пользователя на 3CX.
WebSocket:
cmd=transfercall;connid=<Id соединения>;dest=<Номер>;
42
10.4.3 Работа с софтфоном 3CXPhone Методы доступны только при выполнении следующих условий: 3CXPhone в качестве абонентского устройства;
установлен плагин ifClient Plugin; плагин загружается в софтфон.
AnswerCall()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры: нет
Описание: ответить на входящий вызов на 3CXPhone на текущей линии. Метод аналогичен методу
AnswerCall3CXPhone c параметром <Линия>, не лежащим в диапазоне от 1 до 5.
WebSocket:
В текущей версии не реализовано.
AnswerCall3CXPhoneByCallId (<Id вызова>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Id вызова> (обязательный)
Тип: Целое.
Значение ключа CallId из события record=localconnection или события record=3cxphonecall.
Описание: ответить на входящий вызов на 3CXPhone.
WebSocket:
cmd=answer3cxbycallid;callid=<Id вызова>;
AnswerCall3CXPhone (<Линия>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Линия> (обязательный)
Тип: Целое.
Номер линии софтфона (от 1 до 5), по которой необходимо ответить на входящий вызов. Если <Линия> не лежит в
диапазоне от 1 до 5, то будет осуществлена попытка ответа по текущей линии.
Описание: ответить на входящий вызов на 3CXPhone.
WebSocket:
cmd=answer3cx;line=<Линия>;
43
AttendantTransfer3CXPhoneByCallId (<Id вызова>, <Номер>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Id вызова> (обязательный)
Тип: Целое.
Значение ключа CallId из события record=localconnection или события record=3cxphonecall.
<Номер> (обязательный)
Тип: Строка.
Номер абонента, на который необходимо перевести вызов.
Описание: перевод вызова с консультацией.
WebSocket:
cmd=a_xfer3cxbycallid;callid=<Id вызова>;dest=<Номер>;
BlindTransfer3CXPhoneByCallId (<Id вызова>, <Номер>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Id вызова> (обязательный)
Тип: Целое.
Значение ключа CallId из события record=localconnection или события record=3cxphonecall.
<Номер> (обязательный)
Тип: Строка.
Номер абонента, на который необходимо перевести вызов.
Описание: слепой перевод вызова.
WebSocket:
cmd=b_xfer3cxbycallid;callid=<Id вызова>;dest=<Номер>;
CancelTransfer3CXPhoneByCallId (<Id вызова>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Id вызова> (обязательный)
Тип: Целое.
Значение ключа CallId из события record=localconnection или события record=3cxphonecall.
Описание: отмена перевода вызова с консультацией.
WebSocket:
cmd=c_xfer3cxbycallid;callid=<Id вызова>;
44
ChangeLine3CXPhone(<Линия>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Линия> (обязательный)
Тип: Целое.
Номер линии софтфона, на которую необходимо переключиться (от 1 до 5).
Описание: переключение между линиями 3CXPhone. Метод инициирует передачу события 3cxphoneline.
WebSocket:
cmd=changeline3cx;line=<Линия>;
DropCall3CXPhoneByCallId (<Id вызова>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Id вызова> (обязательный)
Тип: Целое.
Значение ключа CallId из события record=localconnection или события record=3cxphonecall.
Описание: завершение вызова.
WebSocket: cmd=dropcall3cxbycallid;callid=<Id вызова>;
DropCall3CXPhone (<Линия>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
< Линия> (обязательный)
Тип: Целое.
Номер линии софтфона, на которой необходимо сбросить вызов (от 1 до 5). Если <Линия> не лежит в диапазоне от 1
до 5, то будет осуществлен сброс вызова на текущей линии.
Описание: завершение вызова.
WebSocket:
cmd=dropcall3cx;line=<Линия>;
45
FinalizeTransfer3CXPhoneByCallId (<Id вызова>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Id вызова> (обязательный)
Тип: Целое.
Значение ключа CallId из события record=localconnection или события record=3cxphonecall.
Описание: завершение перевода вызова с консультацией.
WebSocket:
cmd=f_xfer3cxbycallid;callid=<Id вызова>;
GetLinesStatus3CXPhone(<Линия>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Линия> (обязательный)
Тип: Целое.
Номер линии софтфона, по которой необходимо получить статус (от 1 до 5). Если в качестве параметра передать 0, то
возникнет событие с информацией о состоянии всех линий.
Описание: получить данные о состоянии линии/линий 3CXPhone. Метод инициирует передачу события 3cxphonecall.
WebSocket:
cmd=getlinesstatus3cx;line=<Линия>;
HoldCall3CXPhone()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: удержание / снятие с удержания активного вызова.
WebSocket:
cmd=hold3cx;
46
MakeCall3CXPhone(<Номер>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Номер> (обязательный)
Тип: Строка.
Номер вызываемого абонента.
Описание: осуществление исходящего вызова по первой свободной линии.
WebSocket:
cmd=makecall3cx;dest=<Номер>;
MicMute()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: выключение микрофона на софтфоне 3CXPhone. Метод работает только при условии существования
активного вызова.
WebSocket:
cmd=micmute3cx;
MicUnMute()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: включение микрофона на софтфоне 3CXPhone. Метод работает только при условии существования
активного вызова.
WebSocket:
cmd=micunmute3cx;
47
SendDTMF3CXPhoneByCallId(<Id вызова>, <Строка>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Id вызова> (обязательный)
Тип: Целое.
Значение ключа CallId из события record=localconnection или события record=3cxphonecall.
< Строка > (обязательный)
Тип: Строка.
Цифры от 0 до 9 и символы *, #. Параметр может состоять из нескольких символов.
Описание: отправка DTMF.
WebSocket:
cmd=senddtmf3cxbycallid;callid=<Id вызова>;
StopRecordCall(< Id соединения >)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
< Id соединения> (обязательный)
Тип: Целое.
Значение ключа Id из события type=localconnection (см. п. 7.5.4).
Описание: выключение записи вызова. Если у одного из абонентов в настройках 3CX Phone System включен флажок
«Записывать все звонки», то запись вызова остановить невозможно.
WebSocket:
В текущей версии не реализовано.
48
10.4.4 Работа с аппаратными телефонами, поддерживающими CTI SupportedCTICommands()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Возвращаемое значение:
Тип: Целое.
Целое число, представляющее сумму значений:
0 – CTI команды не поддерживаются;
1 – включение/отключение громкой связи - SpeakerOnOffCTI();
2 – ответ на входящий вызов - AnswerCallCTI();
4 – отбой вызова - DropCallCTI();
8 – осуществление вызова - MakeCallCTI();
16 – слепой перевод вызова - BlindTransferCTI();
32 – перевод с консультацией - AttendantTransferCTI();
64 – завершить перевод с консультацией - FinalizeTransferCTI();
128 – не используется (зарезервировано);
256 – удержание, снятие с удержания - HoldCTI();
512 – отключение/включение микрофона - MuteCTI();
1024 – нажатие кнопки на номеронабирателе - PressLineKeyCTI();
2048 – установка режима DND - DNDOnCTI();
4096 – снятие режима DND - DNDOffCTI().
Описание: получение информации о командах, поддерживаемых телефоном.
WebSocket:
cmd=supportedcticommands;
AnswerCallCTI()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет.
Описание: ответ на входящий вызов.
WebSocket:
cmd=answercti;
AttendantTransferCTI(<Номер>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Номер> (обязательный)
Тип: Строка.
Номер абонента, на который необходимо перевести вызов.
Описание: перевод вызова с консультацией. Если после консультации принимается решение о переводе вызова, то
49
необходимо выполнить метод FinalizeTransferCTI(), в противном случае - DropCallCTI() HoldCTI() для
продолжения вызова, либо DropCallCTI() DropCallCTI() для завершения вызова.
WebSocket:
cmd=a_xfercti;dest=<Номер>
BlindTransferCTI(<Номер>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Номер> (обязательный)
Тип: Строка.
Номер абонента, на который необходимо перевести вызов.
Описание: слепой перевод вызова.
WebSocket:
cmd=b_xfercti;dest=<Номер>
DropCallCTI()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет.
Описание: сбросить текущий вызов.
WebSocket:
cmd=dropcallcti; FinalizeTransferCTI()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет.
Описание: завершение перевода с консультацией.
WebSocket:
cmd=f_xfercti;
50
HoldCTI()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет.
Описание: удержание, снятие с удержания текущего вызова.
WebSocket:
cmd=holdcti;
MakeCallCTI(<Номер>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Номер> (обязательный)
Тип: Строка.
Номер вызываемого абонента.
Описание: осуществление исходящего вызова.
WebSocket:
cmd=makecallcti;dest=<Номер>
MuteCTI()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет.
Описание: отключить/включить микрофон.
WebSocket:
cmd=mutecti;
PressDialKeyCTI(<Строка>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
< Строка > (обязательный)
Тип: Строка.
Цифры от 0 до 9 и символы *, #. Параметр может состоять из нескольких символов.
Описание: метод имитирует нажатие кнопок на номеронабирателе телефона. Метод можно использовать для посыла
51
DTMF сигналов.
WebSocket:
cmd=pressdialkeycti;code=<Строка>
PressLineKeyCTI(<Линия>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Линия> (обязательный)
Тип: Целое.
Номер линии на телефоне.
Описание: выбор SIP линии на телефоне.
WebSocket:
cmd=presslinekeycti;line=<Номер аккаунта на телефоне> SpeakerOnOffCTI()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: включение или отключение режима громкой связи.
WebSocket: cmd=speakeronoffcti; DNDOnCTI()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: включение или отключение режима громкой связи.
WebSocket:
cmd=dndoncti;
52
DNDOffCTI()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры: нет
Описание: включение или отключение режима громкой связи.
WebSocket:
cmd=dndoffcti;
53
10.4.5 Работа с конференциями SetConferenceAdd(<Номер>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
<Номер > (обязательный)
Тип: Строка.
Номер или SIP Id добавляемого в конференцию абонента.
Описание: добавить участника в конференцию и начать конференцию. Метод вызывается последовательно для
каждого участника конференции. Для номера инициирующего конференцию метод вызывать не требуется.
WebSocket: В текущей версии не реализовано.
SetConferenceDelete(<Id участника>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
<Id участника > (обязательный)
Тип: Целое.
Id участника конференции из события record=conf.
Описание: удалить участника из конференции.
WebSocket: В текущей версии не реализовано.
SetConferenceMute(<Id участника>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
<Id участника > (обязательный)
Тип: Целое.
Id участника конференции из события record=conf.
Описание: отключить звук (входящий и исходящий) участнику конференции.
WebSocket: В текущей версии не реализовано.
54
SetConferenceUnMute(<Id участника>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
<Id участника > (обязательный)
Тип: Целое.
Id участника конференции из события record=conf.
Описание: включить звук участнику конференции.
WebSocket: В текущей версии не реализовано.
55
10.4.6 Работа с чатом DeleteChatMessages(<Абонент(ы)>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
< Абонент > (обязательный)
Тип: Строка.
Номер или SIP Id абонента, чат с которым удаляется. Номера абонентов группового чата, разделенные «,» (запятой),
для удаления группового чата.
Описание: Удаление всех сообщений чата. Сообщения удаляются только у абонента, вызвавшего метод, у абонента,
по которому удаляется чат, сообщения остаются.
WebSocket:
cmd=deletechatmessages;number=<Номер1[,Номер2]...[,НомерN]>;
GetChatMessages(<Номер >, <ТолькоНовые>, <Дата с>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Номер> (обязательный)
Тип: Строка.
Номер или SIP Id абонента, переписку с которым требуется получить. В 1С для получения истории по всем абонентам
необходимо передать пустую строку.
<ТолькоНовые>(обязательный)
Тип: Булево
<Дата с> (обязательный)
Тип: Дата.
Начальная дата, с которой необходимо получить сообщения. В 1С для получения истории без ограничения по дате
значение параметра должно быть «Неопределено».
Получить сообщения чата.
Описание: Получение истории чата.
WebSocket:
cmd=getchatmessages;[number=<Номер>;][onlynew=<true|false>;]
GetChats()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Описание: Получение чатов оператора.
WebSocket:
cmd=getchats;
56
SendChatMessage(<Абонент(ы)>,<Текст>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
< Абонент> (обязательный)
Тип: Строка.
Внутренние номера или SIP Id абонентов, разделенные «,» (запятой), на которые необходимо послать сообщение.
< Текст > (обязательный)
Тип: Строка.
Текст сообщения чата
Описание: передача указанным внутренним абонентам текстового сообщения.
WebSocket:
cmd=sendchatmessage;number=<Номер1[,Номер2]...[,НомерN]>;message=<Текст>;
SetChatMessagesReceived(<Массив>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API X Используйте метод SetChatMessagesReceivedStr
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Массив> (обязательный)
Тип: Массив.
Массив целочисленных значений ключа Id из событий record=chatmessage (см. п. 10.1.15) или record=chathistory (см.
п. 10.1.17).
Описание: Пометка сообщения как прочитанного. При открытии формы чата в софтфоне 3CXPhone новые сообщения
помечаются как прочитанные.
WebSocket:
cmd=setchatmessagesreceived;id=<Id_1[,Id_2]...[,Id_N]>;
SetChatMessagesReceivedStr(<Id сообщений>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket X Используйте метод SetChatMessagesReceived
Параметры:
<Id сообщений> (обязательный)
Тип: Строка.
Значения ключа Id из событий record=chatmessage (см. п. 10.1.15) или record=chathistory (см. п. 10.1.17),
перечисленные через запятую.
Описание: Пометка сообщений как прочитанных. При открытии формы чата в софтфоне 3CXPhone новые сообщения
помечаются как прочитанные.
57
10.4.7 Работа с телефонной книгой GetPhonebookContacts()
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры: Нет.
Описание: Получение все контактов из корпоративной телефонной книги 3CX Phone System и персональной
телефонной книги абонента. Вызов метода инициирует передачу компонентом событий contact.
WebSocket:
В текущей версии не реализовано.
UpdatePhonebookContact(<Данные контакта>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
<Данные контакта>(обязательный)
Тип: Строка
Строка в формате <Ключ>=<Значение>
Набор ключей-значений:
id – ID контакта;
number – основной номер контакта;
firstname – имя;
lastname – фамилия;
contacttype – тип контакта, может принимать следующие значения значения:
PersonalPhonebook - контакт персональной телефонной книги;
CompanyPhonebook - контакт телефонной книги компании.
company – название компании контакта;
data0 – в 3CX в этом поле хранится значение Мобильный 2 (далее – только соответствия);
data1 – домашний;
data2 – домашний2;
data3 – рабочий;
data4 – рабочий2;
data5 – электронная почта;
data6 – другой;
data7 – рабочий факс;
data8 – основной факс;
data9 – пейджер.
Описание: Изменить данные контакта в телефонной книге, поиск контакта в телефонной книге осуществляется по
значению ключей id и contacttype.
Примечание: Контакты с типом LocalUser могут быть добавлены или отредактированы только в консоли управления
3CX.
WebSocket:
В текущей версии не реализовано.
Пример :
ВладелецФормы.ТФ3_Компонента.UpdatePhonebookContact(“id=13;number=9228118811; firstname=Артем;
lastname=Селекзянов;contacttype=CompanyPhonebook;company=ООО Интерфейс”);
58
AddPhonebookContact(<Данные контакта>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
<Данные контакта> (обязательный)
Тип: Строка.
Строка в формате <Ключ>=<Значение>
Набор ключей см. в методе UpdatePhonebookContact, ключ Id передавать не требуется.
Описание: Добавить контакт в телефонную книгу.
Примечание: Контакты с типом LocalUser могут быть добавлены или отредактированы только в консоли управления
3CX.
WebSocket:
В текущей версии не реализовано.
DeletePhonebookContact(<Id контакта>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
<Id контакта> (обязательный)
Тип: Число
Идентификатор контакта.
Описание: Удалить контакт из телефонной книги 3CX.
Примечание: Контакты с типом LocalUser могут быть удалены только в консоли управления 3CX.
WebSocket:
В текущей версии не реализовано.
FindPhonebookContact(<Строка поиска>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket +
Параметры:
<Строка поиска> (обязательный)
Тип: Строка
Строка для поиска.
Описание: Найти контакты в телефонной книге.
Примечание: Поиск производится по всем полям телефонной книги.
Например при задании строки «905» будут найдены абоненты (9058887766, 9228905461, [email protected] и т. п.)
WebSocket:
В текущей версии не реализовано.
59
10.4.8 Получение истории вызовов Внимание! Доступна только история собственных вызовов оператора.
GetCallHistory(<Номер начальной записи>, <Количество от начальной записи>, <Тип вызовов>,
<Фильтр по номерам>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Номер начальной записи> (обязательный)
Тип: Число.
Номер записи истории вызовов, с которой необходимо получить данные. 0 – соответствует последнему по времени
вызову.
<Количество от начальной записи> (обязательный)
Тип: Число.
Количество записей, которое необходимо получить (обработать). Фильтр по номерам будет накладываться на заданное
количество записей истории.
<Тип вызовов> (обязательный)
Тип: Число.
0 – все вызовы, 1 – пропущенные, 2 – входящие, 3 - исходящие.
<Фильтр по номерам> (обязательный)
Тип: Строка.
Фильтр по номерам телефонов – регулярное выражение (RegExp). Например:
"" – не фильтровать;
"222" – фильтровать по номерам, включающим «222»;
"222|333" – фильтровать по номерам, включающим «222» или «333».
Внимание! Фильтр по номерам накладывается на массив заданный параметром <Количество от начальной записи>,
соответственно при фильтрации результирующее количество записей будет меньше параметра <Количество от
начальной записи>.
Описание: Получить историю вызовов. Метод может применяться для начального заполнения истории при
подключении к АТС. История возвращается в хронологическом порядке от более поздней даты к более ранней.
WebSocket:
cmd=getcallhistory;start=<Номер начальной записи>;limit=<Количество от начальной
записи>;[calltype=<Тип вызовов>;][number=<Фильтр по номерам>;]
60
GetCallHistoryByDate(<Дата с>, <Дата по>, <Тип вызовов>, <Номер>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Дата с> (обязательный)
Тип: Дата.
Начальная дата (более ранняя).
<Дата по> (обязательный)
Тип: Число.
Конечная дата (более поздняя).
<Тип вызовов> (обязательный)
Тип: Число.
0 – все вызовы, 1 – пропущенные, 2 – входящие, 3 - исходящие.
<Номер> (обязательный)
Тип: Строка.
Фильтр по номерам телефонов – регулярное выражение (RegExp). Например:
"" – не фильтровать;
"222" – фильтровать по номерам, включающим «222»;
"222|333" – фильтровать по номерам, включающим «222» или «333»;
Описание: Получить историю вызовов за период. История возвращается в хронологическом порядке от более поздней
даты к более ранней.
WebSocket:
cmd=getcallhistorybydate;startdate=<Дата с>;enddate=<Дата по>;[calltype=<Тип
вызовов>;][number=<Фильтр по номерам>;]
61
10.4.9 Воспроизведение записи вызова Внимание! Воспроизводятся только собственные записи оператора!
PlayMyRecord (<Имя файла>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Имя файла> (обязательный)
Тип: Строка.
Имя файла вызова, должен быть равен значению ключа recfile из типов событий localconnection и callhistory.
Описание: Воспроизводит файл записи вызова в проигрывателе по умолчанию.
WebSocket:
cmd=playmyrecord;record=<Имя файла>;
PlayMyRecordOnPhone (<Имя файла>)
Реализация:
ВК 1C AddIn.COM_3CX_1C V
ВК 1C Native API V
COM_3CX.COM_3CX_1C V
WebSocket V
Параметры:
<Имя файла> (обязательный)
Тип: Строка.
Имя файла вызова, должен быть равен значению ключа recfile из типов событий localconnection и callhistory.
Описание: Воспроизводит файл записи вызова на телефоне оператора.
WebSocket:
cmd=playmyrecordonphone;record=<Имя файла>;
62
11 Примеры кода 1С 8 для работы с COM объектом
11.1 Загрузка ВК 1С.
Загрузка ВК производится на клиенте в модуле формы, обработки или общего модуля с установленным флагом
Клиент:
Если ПодключитьВнешнююКомпоненту("Addin.COM_3CX_1C") Тогда
Попытка
ТФ3_Компонента = Новый("Addin.COM_3CX_1C");
Исключение
Сообщить("Ошибка загрузки компоненты 3CX WebAPI Client 1C. Подсистема 3CX будет недоступна.");
ТФ3_Компонента = Неопределено;
КонецПопытки;
Иначе
Сообщить("Компонента 3CX WebAPI Client 1C не загружена. Подсистема 3CX будет недоступна.");
ТФ3_Компонента = Неопределено;
КонецЕсли;
11.2 Обработка внешних событий в 1С.
После подключения ВК нужно обработать внешние события от компоненты. Код может находиться либо в
модуле управляемого приложения, либо в модуле формы. Во втором случае необходимо позаботиться, чтобы форма не
могла быть закрыта пользователем.
Для модуля управляемого приложения:
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
Если Источник = "COM_3CX_1C" Тогда
//<Здесь помещаем код обработки события телефонии>
Возврат;
КонецЕсли;
//<Здесь, возможно, код других обработчиков>
КонецПроцедуры
Для модуля формы вызывается процедура ВнешнееСобытие:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник = "COM_3CX_1C" Тогда
//<Здесь помещаем код обработки события телефонии>
Возврат;
КонецЕсли;
//<Здесь, возможно, код других обработчиков>
КонецПроцедуры
63
11.3 Обработка параметра <Данные>.
Исходя из этой структуры данных, наиболее оптимальным будет следующий алгоритм:
Вспомогательная функция преобразования строки, состоящей из пар ключ-значение, разделенных символом «;» в
структуру 1С:
Функция СтрокаВСтруктуру(Стр)
Рез = Новый Структура;
ТекКлюч = "";
ТекЗн = "";
ТекБуф = "";
ТекСимв = "";
Стр = Стр + ";";
Стр = СтрЗаменить(Стр, Символы.ПС, "");
ТекСост = "Ключ";
Для н = 1 По СтрДлина(Стр) Цикл
ТекСимв = Сред(Стр, н, 1);
Если ТекСимв = "=" Тогда
Если ТекСост = "Ключ" Тогда
ТекКлюч = СокрЛП(ТекБуф);
ТекБуф = "";
ТекСост = "Знач";
Продолжить;
КонецЕсли;
КонецЕсли;
Если ТекСимв = ";" Тогда
Если ТекСост = "Знач" Тогда
ТекЗн = СокрЛП(ТекБуф);
ТекБуф = "";
Если ТекКлюч <> "" Тогда
Рез.Вставить(ТекКлюч, ТекЗн);
КонецЕсли;
ТекСост = "Ключ";
Продолжить;
КонецЕсли;
КонецЕсли;
ТекБуф = ТекБуф + ТекСимв;
КонецЦикла;
Возврат Рез;
КонецФункции
Некоторое усложнение функции вызвано тем, что при передаче строковых данных они могут сами содержать знак
равенства «=». Функция корректно отрабатывает эти ситуации.
64
Пример процедуры обновления активных соединений в 1С. Предполагается, что есть какая-то структура ТЗВсеЗвонки,
в которой хранится список активных звонков.
Процедура ОбновитьПредставлениеСоединения(Стр)
ТекСтр = ТЗВсеЗвонки.Найти(Стр.ИдЗаписи, "ИдЗаписи");
ФлагУдаления = Ложь;
//Проверка, если есть свойство "Действие" и его значение равно "delete",
//тогда соединение завершено и запись нужно удалить.
Если Стр.Свойство = "Действие" Тогда
Если ТекСтр <> Неопределено Тогда
Если Стр.Действие = "delete" Тогда
ТЗВсеЗвонки.Удалить(ТекСтр);
ФлагУдаления = Истина;
КонецЕсли;
Иначе
ФлагУдаления = Истина;
КонецЕсли;
Если ФлагУдаления = Истина Тогда
Возврат;
КонецЕсли;
КонецЕсли;
//Обновляем информацию соединения
Если ТекСтр = Неопределено Тогда
ТекСтр = ТЗВсеЗвонки.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств (ТекСтр, Стр);
КонецПроцедуры
65
12 Контактная информация.
ООО «Интерфейс»
ИП Хусаинов Т.Р.
ул. Кутузова, д. 19
г. Орск Оренбургской области
462404
Российская Федерация
Тел.: +7 (3537) 25-08-35, 20-38-38
E-mail: [email protected]
Web: http://if56.ru
Редакция от 27.03.2020г.
© ООО «Интерфейс»