lineForward 函数根据指定的转发指令转发指定行上指定地址的调用。 当发起的地址(dwAddressID)转发时,该地址的指定传入调用被开关偏转为另一个号码。 此函数提供向前和请勿打扰功能的组合。 此函数还可以取消当前生效的转发。
语法
LONG lineForwardA(
HLINE hLine,
DWORD bAllAddresses,
DWORD dwAddressID,
LPLINEFORWARDLIST const lpForwardList,
DWORD dwNumRingsNoAnswer,
LPHCALL lphConsultCall,
LPLINECALLPARAMS const lpCallParams
);
参数
hLine
线路设备的句柄。
bAllAddresses
指定是要转发行上的所有发起地址还是只转发指定的地址。 如果
dwAddressID
要转发其传入呼叫的指定行上的地址。 如果 bAllAddressesTRUE,则忽略此参数。
地址标识符永久关联到地址;标识符在操作系统升级中保持不变。
lpForwardList
指向一个固定大小的数据结构的指针,该结构描述特定转发指令的类型 LINEFORWARDLIST。
dwNumRingsNoAnswer
呼叫前的响铃数被视为“无答案”。如果 dwNumRingsNoAnswer 超过范围,则实际值将设置为允许范围内最近的值。
lphConsultCall
指向 HCALL 位置的指针。 在某些电话环境中,此位置加载了咨询呼叫的句柄,该呼叫用于咨询正在转发的参与方,应用程序将成为此呼叫的初始所有者。 即使在呼叫转接不需要咨询呼叫的环境中,此指针也必须有效。 如果未创建咨询呼叫,此句柄将设置为 NULL。
lpCallParams
指向 LINECALLPARAMS
返回值
如果函数异步完成,则返回正请求标识符;如果发生错误,则返回负错误号。 如果函数成功,则
LINEERR_INVALLINEHANDLE、LINEERR_NOMEM、LINEERR_INVALADDRESSID、LINEERR_OPERATIONUNAVAIL、LINEERR_INVALADDRESS、LINEERR_OPERATIONFAILED、LINEERR_INVALCOUNTRYCODE、LINEERR_RESOURCEUNAVAIL、LINEERR_INVALPOINTER、LINEERR_STRUCTURETOOSMALL、LINEERR_INVALPARAM、LINEERR_UNINITIALIZED。
言论
成功的转发仅指示服务提供商已接受请求,而不是在交换机上设置转发。 LINE_ADDRESSSTATE(转发)消息提供在交换机上设置转发的确认。
地址转发仍然有效,直到再次调用此函数。 最新的转发列表将替换旧的转发列表。 通过将 NULL 指针指定 为 lpForwardList,可以取消转发。 如果为转发列表中的条目指定了 NULL 目标地址,则该操作将充当不打扰。
地址的转发状态也可能在外部受到影响;例如,通过交换机上的管理操作或来自另一个工作站的用户执行管理操作。 服务提供商可能无法了解此状态更改,并且可能无法与交换机已知的转发状态保持同步。
由于服务提供商可能不知道地址的转发状态“肯定”(也就是说,它可能以未知方式转发或未转发),因此,除非无法设置新的转发指令,否则 lineForward 成功。 换句话说,请求所有转发在实际上没有转发成功时取消。 这是因为没有“不向前”,因此只能更改前面的转发指令集。
此操作的成功或失败不取决于前面的转发指令集,在设置不同的转发指令时也是如此。 在设置新的转发说明之前,提供程序应“不先行一切”。 由于这可能需要在模拟电话环境中花费一些时间,因此提供商可能还需要将当前转发与新转发进行比较,并且只向开关发出指令以进入最终状态(不会受到影响的未更改转发)。
当 LINEFORWARDLISTdwNumEntries 设置为零时调用 lineForward 时,其效果与提供 NULLlpForwardList 参数的效果相同。 它取消当前生效的所有转发。
注意
tapi.h 标头将 lineForward 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
目标平台 | 窗户 |
标头 | tapi.h |
库 | Tapi32.lib |
DLL | Tapi32.dll |