lineMakeCall 函数 (tapi.h)

lineMakeCall 函数在指定行上对指定目标地址进行调用。 (可选)如果请求除默认调用设置参数之外的任何参数,则可以指定调用参数。

语法

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

参数

hLine

要发起调用的开行设备的句柄。

lphCall

指向 HCALL 句柄的指针。 仅当应用程序收到指示 lineMakeCall 函数成功完成的LINE_REPLY消息后,句柄才有效。 在对呼叫调用其他电话操作时,使用此句柄来标识呼叫。 应用程序最初是此调用的唯一所有者。 如果函数通过答复消息) 以同步或异步方式返回错误 (,则此句柄为无效。

lpszDestAddress

指向目标地址的指针。 这遵循标准可拨号号码格式。 对于 (与热电话) 或使用 lineDial 执行所有拨号时一样,此指针可为 NULL。 在后一种情况下, lineMakeCall 分配一个可用的呼叫外观,该外观通常保持 拨号 状态,直到拨号开始。 具有反向多路复用功能的服务提供商可以允许应用程序一次指定多个地址。

dwCountryCode

被调用方的国家或地区代码。 如果指定值 0,则实现将使用默认值。

lpCallParams

指向 LINECALLPARAMS 结构的指针。 此结构允许应用程序指定它希望如何设置调用。 如果指定 NULL ,则会建立默认的 3.1 kHz 语音呼叫,并选择线路上的任意发起地址。 此结构允许应用程序选择诸如呼叫的持有者模式、数据速率、预期媒体模式、发起地址、阻止呼叫方 ID 信息和拨号参数等元素。

返回值

如果异步完成函数,则返回正请求标识符;如果发生错误,则返回负错误号。 如果函数成功,则相应LINE_REPLY消息的 dwParam2 参数为零;如果发生错误,则为负错误数。 可能的返回值为:

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,则表示行当前不处于可执行此操作的状态。 可以在 LINEDEVSTATUS 结构中类型LINEFEATURE_) 的 dwLineFeatures 成员 (中找到当前有效操作的列表。 调用 lineGetLineDevStatus 更新 LINEDEVSTATUS 中的信息。 如果返回LINEERR_DIALBILLING、LINEERR_DIALQUIET、LINEERR_DIALDIALTONE或LINEERR_DIALPROMPT,则 lineMakeCall 未执行任何其他操作;例如,在有问题的字符之前,没有一个可拨号地址,也没有更改挂钩开关状态,等等。

拨号完成后,通常会向应用程序发送多个 LINE_CALLSTATE 消息,以通知其呼叫进度。 未指定通常有效的调用状态转换序列,因为在实践中无法保证单个固定的转换序列。 典型的序列可能会导致呼叫从 拨号拨号继续回拨已连接的转换。 使用非拨号线路时,呼叫通常可以直接转换为 连接 状态。

应用程序可以选择指定指定线路设备上的源地址。 将交换机上的所有工作站建模为单线设备上的地址的服务提供商允许应用程序使用 lineMakeCall 从这些工作站发起呼叫。

呼叫参数允许应用程序进行非语音呼叫或请求默认不可用的特殊呼叫设置选项。

应用程序可以使用 lineMakeCall 部分拨号,并使用 lineDial 继续拨号。 有关部分拨号的详细信息,请参阅 lineDialTSPI_lineMakeCall。 若要放弃调用尝试,请使用 lineDrop

lineMakeCall 向应用程序返回成功答复消息后,向应用程序发送LINE_CALLSTATE消息以指示调用的当前状态。 此状态不一定LINECALLSTATE_DIALTONE。

此函数可能以未加密的形式通过网络发送数据;因此,在网络上窃听的人可能能够读取数据。 使用此方法之前,应考虑以明文形式发送数据的安全风险。

谨慎 当返回LINE_REPLY消息时,TAPI 会将返回的数据写入 lphCall 引用的缓冲区。 这意味着缓冲区必须保持有效,直到返回LINE_REPLY消息;否则,可能会发生数据损坏和异常。
 

要求

   
目标平台 Windows
标头 tapi.h
Library Tapi32.lib
DLL Tapi32.dll

另请参阅

基本电话服务参考

可拨号地址

LINECALLPARAMS

LINEDEVSTATUS

LINE_CALLSTATE

LINE_REPLY

TAPI 2.2 参考概述

lineDial

lineDrop

lineGetLineDevStatus