通话管理 API
语音通话控制,包括拨号、接听、挂断、保持等。
头文件:#include <tapi_call.h>
openvela 实现说明
- SIM 卡标识:部分接口不带 slot_id,使用默认卡;需要指定卡时通过 tapi_call_set_default_slot 切换
- 同步/异步:拨号、应答等耗时操作同时提供同步版本和 _async 版本(回调风格)
- 按 ID 操作:长生命周期通话通过返回的 call ID(字符串)唯一标识,*_by_id 接口据此执行操作
- DTMF:拨号盘按键通过 tapi_call_send_tones(批量)或 tapi_call_start_dtmf / tapi_call_stop_dtmf(持续按键)触发
- 会议通话:通过 tapi_call_dial_conferece 和 tapi_call_merge_call 组织,tapi_call_separate_call 拆分
拨打与应答
tapi_call_dial
int tapi_call_dial(tapi_context context, int slot_id, char* number, int hide_callerid, int event_id, tapi_async_function p_handle);
发起语音通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- number 电话号码。
- hide_callerid 是否隐藏主叫号码。
- event_id 事件 ID,用于回调匹配。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_dial_async
int tapi_call_dial_async(tapi_context context, int slot_id, char* number, int hide_callerid, int event_id, void* user_data, tapi_async_function p_handle);
发起语音通话(异步版本)。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- number 电话号码。
- hide_callerid 是否隐藏主叫号码。
- event_id 事件 ID,用于回调匹配。
- user_data 用户数据,传递给回调函数。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
挂断控制
tapi_call_hangup_all_calls
int tapi_call_hangup_all_calls(tapi_context context, int slot_id);
挂断所有通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
保持与切换
tapi_call_release_and_answer
int tapi_call_release_and_answer(tapi_context context, int slot_id);
挂断当前通话并接听等待中的来电。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_hold_and_answer
int tapi_call_hold_and_answer(tapi_context context, int slot_id);
保持当前通话并接听等待中的来电。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_release_and_swap
int tapi_call_release_and_swap(tapi_context context, int slot_id);
挂断当前通话并切换到保持中的通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_hold_call
int tapi_call_hold_call(tapi_context context, int slot_id);
保持当前通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_unhold_call
int tapi_call_unhold_call(tapi_context context, int slot_id);
恢复保持中的通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
转移与会议
tapi_call_transfer
int tapi_call_transfer(tapi_context context, int slot_id);
转接通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_merge_call
int tapi_call_merge_call(tapi_context context, int slot_id, int event_id, tapi_async_function p_handle);
合并通话(多方通话)。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- event_id 事件 ID,用于回调匹配。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_merge_call_async
int tapi_call_merge_call_async(tapi_context context, int slot_id, int event_id, void* user_data, tapi_async_function p_handle);
合并通话(多方通话)(异步版本)。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- event_id 事件 ID,用于回调匹配。
- user_data 用户数据,传递给回调函数。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_separate_call
int tapi_call_separate_call(tapi_context context, int slot_id, int event_id, char* call_id, tapi_async_function p_handle);
从多方通话中分离指定通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- event_id 事件 ID,用于回调匹配。
- call_id 通话 ID。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_hangup_multiparty
int tapi_call_hangup_multiparty(tapi_context context, int slot_id);
挂断多方通话会议。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
DTMF 与拨号音
tapi_call_send_tones
int tapi_call_send_tones(void* context, int slot_id, char* tones);
发送 DTMF 按键音播放请求。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- tones DTMF 按键序列。
返回值:
成功时返回 0,失败时返回负的错误码。
通话查询
tapi_call_get_all_calls
int tapi_call_get_all_calls(tapi_context context, int slot_id, int event_id, tapi_async_function p_handle);
获取当前所有通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- event_id 事件 ID,用于回调匹配。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_get_call_by_state
int tapi_call_get_call_by_state(tapi_context context, int slot_id, int state, tapi_call_info* call_list, int size, tapi_call_info* out_list);
按通话状态筛选通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- state 状态。
- call_list 通话列表。
- size 大小。
- out_list 输出列表。
返回值:
成功时返回 0,失败时返回负的错误码。
紧急号码
tapi_call_get_ecc_list
int tapi_call_get_ecc_list(tapi_context context, int slot_id, ecc_info* out);
获取紧急呼叫号码列表。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- out 输出参数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_is_emergency_number
int tapi_call_is_emergency_number(tapi_context context, char* number);
检查指定号码是否是紧急号码。
参数:
- context Telephony 上下文句柄。
- number 电话号码。
返回值:
成功时返回 0,失败时返回负的错误码。
事件订阅
tapi_call_register_emergency_list_change
int tapi_call_register_emergency_list_change(tapi_context context, int slot_id, void* user_obj, tapi_async_function p_handle);
注册紧急号码列表变更回调。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- user_obj 用户对象指针。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_register_ringback_tone_change
int tapi_call_register_ringback_tone_change(tapi_context context, int slot_id, void* user_obj, tapi_async_function p_handle);
注册回铃音变更回调。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- user_obj 用户对象指针。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_register_default_voicecall_slot_change
int tapi_call_register_default_voicecall_slot_change(tapi_context context, void* user_obj, tapi_async_function p_handle);
注册默认语音通话卡槽变更回调。
参数:
- context Telephony 上下文句柄。
- user_obj 用户对象指针。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
会议通话
tapi_call_dial_conferece
int tapi_call_dial_conferece(tapi_context context, int slot_id, char* participants[], int size);
发起 IMS 会议通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- participants 参与者列表。
- size 大小。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_invite_participants
int tapi_call_invite_participants(tapi_context context, int slot_id, char* participants[], int size);
请求会议服务器邀请额外参与者加入会议。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- participants 参与者列表。
- size 大小。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_register_call_state_change
int tapi_call_register_call_state_change(tapi_context context, int slot_id, void* user_obj, tapi_async_function p_handle);
注册通话状态变更回调。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- user_obj 用户对象指针。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
按 ID 操作
tapi_call_answer_by_id
int tapi_call_answer_by_id(tapi_context context, int slot_id, char* call_id);
按 ID 接听通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- call_id 通话 ID。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_answer_by_id_async
int tapi_call_answer_by_id_async(tapi_context context, int slot_id, char* call_id, void* user_obj, tapi_async_function p_handle);
按 ID 接听通话(异步版本,结果通过回调返回)。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- call_id 通话 ID。
- user_obj 用户对象指针。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_hangup_by_id
int tapi_call_hangup_by_id(tapi_context context, int slot_id, char* call_id);
按 ID 挂断通话。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- call_id 通话 ID。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_deflect_by_id
int tapi_call_deflect_by_id(tapi_context context, int slot_id, char* call_id, char* number);
转移来电到指定号码。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- call_id 通话 ID。
- number 电话号码。
返回值:
成功时返回 0,失败时返回负的错误码。
连续 DTMF
tapi_call_start_dtmf
int tapi_call_start_dtmf(tapi_context context, int slot_id, unsigned char digit, int event_id, tapi_async_function p_handle);
开始发送 DTMF 按键音。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- digit DTMF 按键字符。
- event_id 事件 ID,用于回调匹配。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_stop_dtmf
int tapi_call_stop_dtmf(tapi_context context, int slot_id, int event_id, tapi_async_function p_handle);
停止发送 DTMF 按键音。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
- event_id 事件 ID,用于回调匹配。
- p_handle 异步回调函数。
返回值:
成功时返回 0,失败时返回负的错误码。
默认卡槽
tapi_call_set_default_slot
int tapi_call_set_default_slot(tapi_context context, int slot_id);
设置默认语音通话卡槽。
参数:
- context Telephony 上下文句柄。
- slot_id SIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_get_default_slot
int tapi_call_get_default_slot(tapi_context context, int* out);
获取默认语音通话卡槽。
参数:
- context Telephony 上下文句柄。
- out 输出参数。
返回值:
成功时返回 0,失败时返回负的错误码。