Функция lineMakeCall (tapi.h)

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

Синтаксис

LONG lineMakeCall(
  HLINE                  hLine,
  LPHCALL                lphCall,
  LPCSTR                 lpszDestAddress,
  DWORD                  dwCountryCode,
  LPLINECALLPARAMS const lpCallParams
);

Параметры

hLine

Дескриптор устройства с открытой линией, на котором должен быть инициирован вызов.

lphCall

Указатель на дескриптор HCALL. Дескриптор действителен только после того, как приложение получит сообщение LINE_REPLY , указывающее, что функция lineMakeCall успешно завершена. Используйте этот дескриптор для идентификации вызова при вызове других телефонных операций в вызове. Изначально приложение является единственным владельцем этого вызова. Этот дескриптор будет пустым, если функция возвращает ошибку (синхронно или асинхронно в ответном сообщении).

lpszDestAddress

Указатель на адрес назначения. Этот формат соответствует стандартному формату набора номера. Этот указатель может иметь значение NULL для ненабранных адресов (как при использовании горячего телефона) или при выполнении всех наборов с помощью lineDial. В последнем случае lineMakeCall выделяет доступный внешний вид звонка, который обычно остается в состоянии dialtone до начала набора номера. Поставщики услуг, имеющие возможности обратного мультиплексирования, могут позволить приложению указать несколько адресов одновременно.

dwCountryCode

Код страны или региона вызываемой стороны. Если указано значение 0, реализация использует значение по умолчанию.

lpCallParams

Указатель на структуру LINECALLPARAMS . Эта структура позволяет приложению указать способ настройки вызова. Если задано значение NULL , устанавливается голосовой вызов по умолчанию с частотой 3,1 кГц и выбирается произвольный адрес источника в строке. Эта структура позволяет приложению выбирать такие элементы, как режим носителя вызова, скорость передачи данных, ожидаемый режим мультимедиа, адрес источника, блокировка сведений об идентификаторе вызывающего абонента и параметры набора.

Возвращаемое значение

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

LINEERR_ADDRESSBLOCKED, LINEERR_INVALLINEHANDLE, LINEERR_BEARERMODEUNAVAIL, LINEERR_INVALLINESTATE, LINEERR_CALLUNAVAIL, LINEERR_INVALMEDIAMODE, LINEERR_DIALBILLING, LINEERR_INVALPARAM, LINEERR_DIALDIALTONE, LINEERR_INVALPOINTER, LINEERR_DIALPROMPT, LINEERR_INVALRATE, LINEERR_DIALQUIET, LINEERR_NOMEM, LINEERR_INUSE, LINEERR_OPERATIONFAILED, LINEERR_INVALADDRESS, LINEERR_OPERATIONUNAVAIL, LINEERR_INVALADDRESSID, LINEERR_RATEUNAVAIL, LINEERR_INVALADDRESSMODE, LINEERR_ RESOURCEUNAVAIL, LINEERR_INVALBEARERMODE, LINEERR_STRUCTURETOOSMALL, LINEERR_INVALCALLPARAMS, LINEERR_UNINITIALIZED, LINEERR_INVALCOUNTRYCODE, LINEERR_USERUSERINFOTOOBIG.

Комментарии

Если возвращается LINEERR_INVALLINESTATE, строка в настоящее время не находится в состоянии, в котором может быть выполнена эта операция. Список допустимых в настоящее время операций можно найти в элементе dwLineFeatures (типа LINEFEATURE_) в структуре LINEDEVSTATUS . Вызов lineGetLineDevStatus обновляет сведения в LINEDEVSTATUS. Если возвращается LINEERR_DIALBILLING, LINEERR_DIALQUIET, LINEERR_DIALDIALTONE или LINEERR_DIALPROMPT, ни одно из действий, выполненных lineMakeCall , не было выполнено; Например, ни один из набираемых адресов до набора символа-обидчика не был набран, состояние перехватчика не изменилось и т. д.

После завершения набора номера в приложение обычно отправляется несколько LINE_CALLSTATE сообщений, уведомляющих его о ходе вызова. Общеприемлемая последовательность переходов состояния вызова не указана, так как на практике не может быть гарантирована одна фиксированная последовательность переходов. Типичная последовательность может привести к переходу вызова от dialtone, dialing, proceeding, ringback, к подключенной. При использовании линий без набора вызов обычно может перейти непосредственно в подключенное состояние.

Приложение может указать исходный адрес на указанном устройстве линии. Поставщик услуг, который моделирует все станции на коммутаторе в виде адресов на одном устройстве, позволяет приложению выполнять вызовы с любой из этих станций с помощью lineMakeCall.

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

Приложение может частично набирать номера с помощью lineMakeCall и продолжать набор с помощью lineDial. Дополнительные сведения о частичном наборе номера см. в разделе lineDial и TSPI_lineMakeCall. Чтобы прервать попытку вызова, используйте lineDrop.

После того как lineMakeCall вернет приложению сообщение об успешном выполнении, в приложение отправляется LINE_CALLSTATE сообщение, указывающее текущее состояние вызова. Это состояние не обязательно LINECALLSTATE_DIALTONE.

Эта функция может отправлять данные по сети в незашифрованном виде; Таким образом, кто-то прослушивает в сети, возможно, сможет прочитать данные. Перед использованием этого метода следует учитывать риск безопасности при отправке данных в виде чистого текста.

Осторожностью TAPI запишет возвращенные данные в буфер, на который ссылается lphCall, при возвращении сообщения LINE_REPLY. Это означает, что буфер должен оставаться действительным до тех пор, пока не будет возвращено сообщение LINE_REPLY. в противном случае могут возникнуть повреждения данных и исключения.
 

Требования

   
Целевая платформа Windows
Header tapi.h
Библиотека Tapi32.lib
DLL Tapi32.dll

См. также раздел

Справочник по базовым службам телефонии

Доступные для набора номера адреса

LINECALLPARAMS

LINEDEVSTATUS

LINE_CALLSTATE

LINE_REPLY

Обзор справочника по TAPI 2.2

lineDial

lineDrop

lineGetLineDevStatus