Подключение к COM-объекту — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
(Новая страница: «Наверх Работа с COM-объек...»)
 
Строка 1: Строка 1:
 
[[Аудио_и_видео_звонки_из_информационных_терминалов_и_банкоматов|Наверх]]
 
[[Аудио_и_видео_звонки_из_информационных_терминалов_и_банкоматов|Наверх]]
 +
 +
__TOC__
  
 
Работа с COM-объектом считается устаревшей и не поддерживает ряд методов, в частности работу с видео сессиями. Развитие COM-библиотеки приостановлено. Взамен была предложена альтернатива по работе с [[Использования native win32 библиотеки|native win32 библиотекой]].
 
Работа с COM-объектом считается устаревшей и не поддерживает ряд методов, в частности работу с видео сессиями. Развитие COM-библиотеки приостановлено. Взамен была предложена альтернатива по работе с [[Использования native win32 библиотеки|native win32 библиотекой]].
 +
 +
==Регистрация COM-библиотеки==
 +
 +
COM объект представлен одной библиотекой (SipClient.dll). Его регистрация осуществляется стандартным способом при помощи утилиты <span style="color:green">regsvr32.exe</span>.
 +
 +
*Команда для исполнения регистрации выглядит:
 +
 +
:<span style="color:green">regsvr32 SipClient.dll </span>
 +
 +
либо
 +
 +
:<span style="color:green">путь\regsvr32 путь\SipClient.dll </span>
 +
 +
 +
*Команда для удаления регистрации:
 +
 +
:<span style="color:green">regsvr32 /u SipClient.dll </span>
 +
 +
 +
После успешной регистрации (о чем будет сообщено дополнительно в диалоговом окне), в списке доступных COM-объектов будет присутствовать и объект <span style="color:green">SipClientObj.</span>
 +
 +
 +
Регистрация объекта скорее всего должна производиться в момент установки приложения.
 +
 +
 +
==Информация о COM-объекте==
 +
 +
 +
Полное имя объекта: <span style="color:green">SipClientObj</span>
 +
 +
GUID объекта: <span style="color:green">2E6048CC-CCE1-4DEA-BB30-76BC3CEB92A1</span>
 +
 +
 +
 +
Интерфейс для вызова методов: <span style="color:green">interface ISipClient</span>
 +
 +
GUID интерфейса: <span style="color:green">F75E3D25-9095-4152-87DF-DF85ECFBD553</span>
 +
 +
 +
 +
Интерфейс для callback-методов: <span style="color:green">dispinterface _ISIPClientEvents</span>
 +
 +
GUID интерфейса: <span style="color:green">CDFD5DB2-2C32-425E-A95E-D330B9EF9D5A</span>
 +
 +
 +
Библиотека: <span style="color:green">SipClient 1.0 Type Library</span>
 +
 +
GUID библиотеки: <span style="color:green">8A4C2812-8D07-49D2-BD1A-1B66400C8E29</span>
 +
 +
 +
==Используемые наборы-перечисления==
 +
 +
Поддерживаемые кодеки:
 +
 +
typedef enum
 +
{
 +
        SIPCODEC_G711A,
 +
        SIPCODEC_G711U,
 +
        SIPCODEC_GSM,
 +
        SIPCODEC_G729,
 +
 +
} SIPCODEC;
 +
 +
 +
Состояния SIP-клиента:
 +
 +
typedef enum
 +
{
 +
        SIPSTATE_IDLE,            <span style="color:darkviolet">// состояние покоя</span>
 +
        SIPSTATE_CONNECTING,      <span style="color:darkviolet">// производится соединение с сервером (передача информации)</span>
 +
        SIPSTATE_CONNECTED,      <span style="color:darkviolet">// связь с сервером установленна - переход к вызову оператора</span>
 +
        SIPSTATE_CALLING,        <span style="color:darkviolet">// вызов оператора</span>
 +
        SIPSTATE_INCALL,          <span style="color:darkviolet">// в разговоре</span>
 +
        SIPSTATE_DISCONNECTING,  <span style="color:darkviolet">// разрыв соединения</span>
 +
 +
} SIPSTATE;
 +
 +
 +
==Интерфейс обращений ISIPClient==
 +
 +
Настройка параметров вызова. Применение происходит до осуществления звонка. Настоятельно не рекомендуется изменять значения во время сеанса связи.
 +
 +
HRESULT SetupSIPAccount (
 +
[in] BSTR szDomain,
 +
[in] BSTR szSIPProxy,
 +
[in] BSTR szRemoteId,
 +
[in] BSTR szUserId,
 +
[in] BSTR szUserName,
 +
[in] BSTR szUserInfo
 +
)
 +
 +
 +
Устанавливает параметры SIP-клиента. Перед осуществлением звонка необходимо установить значения в соответствии с решаемой задачей, и только после этого произвести вызов. Необходимо указать имя или адрес основного сервера, который должен обработать этот вызов
 +
 +
:*'''szDomain''' имя сервера (например: myhost.ru)
 +
:*'''szSIPProxy''' ip адрес или днс имя сервера с опциональным портом (например: myhost.ru, 212.333.111.213:5070)
 +
:::::порт по умолчанию 5060
 +
:*'''szRemoteId''' идентификатор вызываемой службы (должно совпадать с соответствующим параметром в карте)
 +
:*'''szUserId''' идентификатор клиента (произвольно, но не пустой)
 +
:*'''szUserName''' не обязательное имя клиента
 +
:*'''szUserInfo''' информация которую необходимо передать на сервер (при передаче кодируется в utf-8)
 +
 +
 +
Выставление и получение параметров по отдельности. Применение происходит до осуществления звонка. Каждая функция устанавливает значение полей, соответствующих параметрам функции SetupSIPAccount.
 +
 +
*<span style="color:green">HRESULT SIPDomain ( [out, retval] BSTR* pVal )</span>
 +
*<span style="color:green">HRESULT SIPDomain ( [in] BSTR newVal )</span>
 +
 +
*<span style="color:green">HRESULT SIPProxy ( [out, retval] BSTR* pVal )</span>
 +
*<span style="color:green">HRESULT SIPProxy ( [in] BSTR newVal )</span>
 +
 +
*<span style="color:green">HRESULT RemoteId ( [out, retval] BSTR* pVal )</span>
 +
*<span style="color:green">HRESULT RemoteId ( [in] BSTR newVal )</span>
 +
 +
*<span style="color:green">HRESULT UserId ( [out, retval] BSTR* pVal )</span>
 +
*<span style="color:green">HRESULT UserId ( [in] BSTR newVal )</span>
 +
 +
*<span style="color:green">HRESULT UserName ( [out, retval] BSTR* pVal )</span>
 +
*<span style="color:green">HRESULT UserName ( [in] BSTR newVal )</span>
 +
 +
*<span style="color:green">HRESULT UserInfo ( [out, retval] BSTR* pVal )</span>
 +
*<span style="color:green">HRESULT UserInfo ( [in] BSTR newVal )</span>
 +
 +
 +
Настройки звуковой подсистемы. Применение происходит до осуществления звонка. Настоятельно не рекомендуется изменять значения во время сеанса связи.
 +
 +
*'''HRESULT GetSpkDevCount ( [out, retval] int* pCount )'''
 +
:Возвращает количество доступных устройств вывода звука (динамиков).
 +
 +
*'''HRESULT GetSpkDeviceAt ( [in] int nIndex, [out, retval] BSTR* pszDeviceName )'''
 +
:Возвращает название устройства вывода звука (динамика) по порядковому индексу. Используется в дальнейшем для установки устройства функцией SetupVoiceDevice.
 +
 +
*'''HRESULT GetMicDevCount ( [out, retval] int* pCount )'''
 +
:Возвращает количество доступных устройств ввода звука (микрофонов).
 +
 +
*'''HRESULT GetMicDeviceAt ( [in] int nIndex, [out, retval] BSTR* pszDeviceName )'''
 +
:Возвращает название устройства ввода звука (микрофона) по порядковому индексу. Используется в дальнейшем для установки устройства функцией SetupVoiceDevice.
 +
 +
*'''HRESULT SetupVoiceDevice ( [in] BSTR szSpkDevice, [in] BSTR szMicDevice, [in] SIPCODEC prefCodec )'''
 +
:Устанавливает указанные устройства в качестве микрофона и в качестве динамика, а также приоритетный звуковой кодек из приведенного выше набора.
 +
 +
 +
Выставление и получение параметров по отдельности. Применение происходит до осуществления звонка. Каждая функция устанавливает значение полей, соответствующих параметрам функции SetupVoiceDevice.
 +
 +
*'''HRESULT SelectedSpkDevice ( [out, retval] BSTR* pVal )'''
 +
:Возвращает текущее выбранное устройство вывода звука (динамик).
 +
 +
*'''HRESULT SelectedSpkDevice ( [in] BSTR newVal )'''
 +
:Устанавливает текущее выбранное устройства вывода звука (динамик). Отдельная альтернатива функции SetupVoiceDevice.
 +
 +
*'''HRESULT SelectedMicDevice ( [out, retval] BSTR* pVal )'''
 +
:Возвращает текущее выбранное устройство ввода звука (микрофон).
 +
 +
*'''HRESULT SelectedMicDevice ( [in] BSTR newVal )'''
 +
:Устанавливает текущее выбранное устройства вывода звука (динамик). Отдельная альтернатива функции SetupVoiceDevice.
 +
 +
*'''HRESULT PreferredCodec ( [out, retval] SIPCODEC* pVal )'''
 +
:Возвращает текущий выбранный предпочитаемый кодек.
 +
 +
*'''HRESULT PreferredCodec ( [in] SIPCODEC newVal )'''
 +
:Устанавливает текущий выбранный предпочитаемый кодек. Отдельная альтернатива функции SetupVoiceDevice.
 +
 +
 +
Управление вызовом.
 +
 +
*'''HRESULT Call ( [out, retval] VARIANT_BOOL* pRes )'''
 +
:Осуществление вызова (соединение по TCP с сервером, передача szUserInfo, после положительного ответа совершается звонок оператору по UDP). Предварительно необходимо установить параметры вызовом SetupSIPAccount.
 +
 +
*'''HRESULT Hungup ( void )'''
 +
:Завершает текущее активное соединение.
 +
 +
*'''HRESULT SentDTMF ( [in] CHAR chDTMF, [out, retval] VARIANT_BOOL* pRes )'''
 +
:Генерирует и отправляет DTMF сигнал на сервер. Может пригодиться для взаимодействия с голосовым меню и ввода дополнительной информации.
 +
 +
 +
Не реализованные функции.
 +
 +
*'''HRESULT SendUserMessage ( [in] BSTR szMessage )'''
 +
:Отправляет текстовое сообщение в ходе разговора.
 +
 +
*'''HRESULT SetupSocksServer ( [in] BSTR szSocksAddress, [in] WORD wPort, [in] BSTR szSocksUser, [in] BSTR szSocksPassword )'''
 +
:Настройка SOCKS на случай невозможности определить автоматом. В текущей реализации объект может осуществлять вызов только через NAT или через прямое подключение к интернет.
 +
 +
 +
==Интерфейс событий _ISIPClientEvents==
 +
 +
*'''void OnCallConnected ( [in] BSTR info )'''
 +
:Соединение прошло успешно. Объект находится в разговоре.
 +
 +
*'''void OnCallRejected ( [in] BSTR reason )'''
 +
:Вызов отклонен. В строке-параметре передается информация о причине отказа.
 +
 +
*'''void OnCallFinished ( [in] VARIANT_BOOL localEnd, [in] BSTR eventInfo )'''
 +
:Вызов завершен. Параметр указывает - локальный
 +
 +
*'''void OnDataSent ( void )'''
 +
:Данные отправлены (только при использовании SendUserMessage - не реализовано).
 +
 +
*'''void OnDataReceive ( [in] BSTR data )'''
 +
:Данные получены (только при использовании SendUserMessage - не реализовано).
 +
 +
*'''void OnError ( [in] BSTR errorText )'''
 +
:Произошла ошибка. Строковый параметр содержит описание.
 +
 +
*'''void OnStateChanged ( [in] SIPSTATE newState )'''
 +
:Изменилось состояние объекта. Параметр передает новое состояние из приведенного выше набора состояний.

Версия 10:09, 1 апреля 2014

Наверх

Работа с COM-объектом считается устаревшей и не поддерживает ряд методов, в частности работу с видео сессиями. Развитие COM-библиотеки приостановлено. Взамен была предложена альтернатива по работе с native win32 библиотекой.

Регистрация COM-библиотеки

COM объект представлен одной библиотекой (SipClient.dll). Его регистрация осуществляется стандартным способом при помощи утилиты regsvr32.exe.

  • Команда для исполнения регистрации выглядит:
regsvr32 SipClient.dll

либо

путь\regsvr32 путь\SipClient.dll


  • Команда для удаления регистрации:
regsvr32 /u SipClient.dll


После успешной регистрации (о чем будет сообщено дополнительно в диалоговом окне), в списке доступных COM-объектов будет присутствовать и объект SipClientObj.


Регистрация объекта скорее всего должна производиться в момент установки приложения.


Информация о COM-объекте

Полное имя объекта: SipClientObj

GUID объекта: 2E6048CC-CCE1-4DEA-BB30-76BC3CEB92A1


Интерфейс для вызова методов: interface ISipClient

GUID интерфейса: F75E3D25-9095-4152-87DF-DF85ECFBD553


Интерфейс для callback-методов: dispinterface _ISIPClientEvents

GUID интерфейса: CDFD5DB2-2C32-425E-A95E-D330B9EF9D5A


Библиотека: SipClient 1.0 Type Library

GUID библиотеки: 8A4C2812-8D07-49D2-BD1A-1B66400C8E29


Используемые наборы-перечисления

Поддерживаемые кодеки:

typedef enum
{
       SIPCODEC_G711A,
       SIPCODEC_G711U,
       SIPCODEC_GSM,
       SIPCODEC_G729,

} SIPCODEC;


Состояния SIP-клиента:

typedef enum
{
       SIPSTATE_IDLE,            // состояние покоя
       SIPSTATE_CONNECTING,      // производится соединение с сервером (передача информации)
       SIPSTATE_CONNECTED,       // связь с сервером установленна - переход к вызову оператора
       SIPSTATE_CALLING,         // вызов оператора
       SIPSTATE_INCALL,          // в разговоре
       SIPSTATE_DISCONNECTING,   // разрыв соединения

} SIPSTATE;


Интерфейс обращений ISIPClient

Настройка параметров вызова. Применение происходит до осуществления звонка. Настоятельно не рекомендуется изменять значения во время сеанса связи.

HRESULT SetupSIPAccount ( 
[in] BSTR szDomain, 
[in] BSTR szSIPProxy, 
[in] BSTR szRemoteId, 
[in] BSTR szUserId, 
[in] BSTR szUserName, 
[in] BSTR szUserInfo
)


Устанавливает параметры SIP-клиента. Перед осуществлением звонка необходимо установить значения в соответствии с решаемой задачей, и только после этого произвести вызов. Необходимо указать имя или адрес основного сервера, который должен обработать этот вызов

  • szDomain имя сервера (например: myhost.ru)
  • szSIPProxy ip адрес или днс имя сервера с опциональным портом (например: myhost.ru, 212.333.111.213:5070)
порт по умолчанию 5060
  • szRemoteId идентификатор вызываемой службы (должно совпадать с соответствующим параметром в карте)
  • szUserId идентификатор клиента (произвольно, но не пустой)
  • szUserName не обязательное имя клиента
  • szUserInfo информация которую необходимо передать на сервер (при передаче кодируется в utf-8)


Выставление и получение параметров по отдельности. Применение происходит до осуществления звонка. Каждая функция устанавливает значение полей, соответствующих параметрам функции SetupSIPAccount.

  • HRESULT SIPDomain ( [out, retval] BSTR* pVal )
  • HRESULT SIPDomain ( [in] BSTR newVal )
  • HRESULT SIPProxy ( [out, retval] BSTR* pVal )
  • HRESULT SIPProxy ( [in] BSTR newVal )
  • HRESULT RemoteId ( [out, retval] BSTR* pVal )
  • HRESULT RemoteId ( [in] BSTR newVal )
  • HRESULT UserId ( [out, retval] BSTR* pVal )
  • HRESULT UserId ( [in] BSTR newVal )
  • HRESULT UserName ( [out, retval] BSTR* pVal )
  • HRESULT UserName ( [in] BSTR newVal )
  • HRESULT UserInfo ( [out, retval] BSTR* pVal )
  • HRESULT UserInfo ( [in] BSTR newVal )


Настройки звуковой подсистемы. Применение происходит до осуществления звонка. Настоятельно не рекомендуется изменять значения во время сеанса связи.

  • HRESULT GetSpkDevCount ( [out, retval] int* pCount )
Возвращает количество доступных устройств вывода звука (динамиков).
  • HRESULT GetSpkDeviceAt ( [in] int nIndex, [out, retval] BSTR* pszDeviceName )
Возвращает название устройства вывода звука (динамика) по порядковому индексу. Используется в дальнейшем для установки устройства функцией SetupVoiceDevice.
  • HRESULT GetMicDevCount ( [out, retval] int* pCount )
Возвращает количество доступных устройств ввода звука (микрофонов).
  • HRESULT GetMicDeviceAt ( [in] int nIndex, [out, retval] BSTR* pszDeviceName )
Возвращает название устройства ввода звука (микрофона) по порядковому индексу. Используется в дальнейшем для установки устройства функцией SetupVoiceDevice.
  • HRESULT SetupVoiceDevice ( [in] BSTR szSpkDevice, [in] BSTR szMicDevice, [in] SIPCODEC prefCodec )
Устанавливает указанные устройства в качестве микрофона и в качестве динамика, а также приоритетный звуковой кодек из приведенного выше набора.


Выставление и получение параметров по отдельности. Применение происходит до осуществления звонка. Каждая функция устанавливает значение полей, соответствующих параметрам функции SetupVoiceDevice.

  • HRESULT SelectedSpkDevice ( [out, retval] BSTR* pVal )
Возвращает текущее выбранное устройство вывода звука (динамик).
  • HRESULT SelectedSpkDevice ( [in] BSTR newVal )
Устанавливает текущее выбранное устройства вывода звука (динамик). Отдельная альтернатива функции SetupVoiceDevice.
  • HRESULT SelectedMicDevice ( [out, retval] BSTR* pVal )
Возвращает текущее выбранное устройство ввода звука (микрофон).
  • HRESULT SelectedMicDevice ( [in] BSTR newVal )
Устанавливает текущее выбранное устройства вывода звука (динамик). Отдельная альтернатива функции SetupVoiceDevice.
  • HRESULT PreferredCodec ( [out, retval] SIPCODEC* pVal )
Возвращает текущий выбранный предпочитаемый кодек.
  • HRESULT PreferredCodec ( [in] SIPCODEC newVal )
Устанавливает текущий выбранный предпочитаемый кодек. Отдельная альтернатива функции SetupVoiceDevice.


Управление вызовом.

  • HRESULT Call ( [out, retval] VARIANT_BOOL* pRes )
Осуществление вызова (соединение по TCP с сервером, передача szUserInfo, после положительного ответа совершается звонок оператору по UDP). Предварительно необходимо установить параметры вызовом SetupSIPAccount.
  • HRESULT Hungup ( void )
Завершает текущее активное соединение.
  • HRESULT SentDTMF ( [in] CHAR chDTMF, [out, retval] VARIANT_BOOL* pRes )
Генерирует и отправляет DTMF сигнал на сервер. Может пригодиться для взаимодействия с голосовым меню и ввода дополнительной информации.


Не реализованные функции.

  • HRESULT SendUserMessage ( [in] BSTR szMessage )
Отправляет текстовое сообщение в ходе разговора.
  • HRESULT SetupSocksServer ( [in] BSTR szSocksAddress, [in] WORD wPort, [in] BSTR szSocksUser, [in] BSTR szSocksPassword )
Настройка SOCKS на случай невозможности определить автоматом. В текущей реализации объект может осуществлять вызов только через NAT или через прямое подключение к интернет.


Интерфейс событий _ISIPClientEvents

  • void OnCallConnected ( [in] BSTR info )
Соединение прошло успешно. Объект находится в разговоре.
  • void OnCallRejected ( [in] BSTR reason )
Вызов отклонен. В строке-параметре передается информация о причине отказа.
  • void OnCallFinished ( [in] VARIANT_BOOL localEnd, [in] BSTR eventInfo )
Вызов завершен. Параметр указывает - локальный
  • void OnDataSent ( void )
Данные отправлены (только при использовании SendUserMessage - не реализовано).
  • void OnDataReceive ( [in] BSTR data )
Данные получены (только при использовании SendUserMessage - не реализовано).
  • void OnError ( [in] BSTR errorText )
Произошла ошибка. Строковый параметр содержит описание.
  • void OnStateChanged ( [in] SIPSTATE newState )
Изменилось состояние объекта. Параметр передает новое состояние из приведенного выше набора состояний.