[ English | 简体中文 ]
通话管理 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);
发起语音通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
发起语音通话(异步版本)。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
挂断所有通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
保持与切换
tapi_call_release_and_answer
int tapi_call_release_and_answer(tapi_context context, int slot_id);
挂断当前通话并接听等待中的来电。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_hold_and_answer
int tapi_call_hold_and_answer(tapi_context context, int slot_id);
保持当前通话并接听等待中的来电。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_release_and_swap
int tapi_call_release_and_swap(tapi_context context, int slot_id);
挂断当前通话并切换到保持中的通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_hold_call
int tapi_call_hold_call(tapi_context context, int slot_id);
保持当前通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_unhold_call
int tapi_call_unhold_call(tapi_context context, int slot_id);
恢复保持中的通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
转移与会议
tapi_call_transfer
int tapi_call_transfer(tapi_context context, int slot_id);
转接通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
合并通话(多方通话)。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
合并通话(多方通话)(异步版本)。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
从多方通话中分离指定通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
挂断多方通话会议。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
DTMF 与拨号音
tapi_call_send_tones
int tapi_call_send_tones(void* context, int slot_id, char* tones);
发送 DTMF 按键音播放请求。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。tonesDTMF 按键序列。
返回值:
成功时返回 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);
获取当前所有通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
按通话状态筛选通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
获取紧急呼叫号码列表。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。out输出参数。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_is_emergency_number
int tapi_call_is_emergency_number(tapi_context context, char* number);
检查指定号码是否是紧急号码。
参数:
contextTelephony 上下文句柄。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);
注册紧急号码列表变更回调。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
注册回铃音变更回调。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
注册默认语音通话卡槽变更回调。
参数:
contextTelephony 上下文句柄。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 会议通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
请求会议服务器邀请额外参与者加入会议。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
注册通话状态变更回调。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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 接听通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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 接听通话(异步版本,结果通过回调返回)。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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 挂断通话。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
转移来电到指定号码。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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 按键音。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。digitDTMF 按键字符。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 按键音。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 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);
设置默认语音通话卡槽。
参数:
contextTelephony 上下文句柄。slot_idSIM 卡槽 ID(0 或 1)。
返回值:
成功时返回 0,失败时返回负的错误码。
tapi_call_get_default_slot
int tapi_call_get_default_slot(tapi_context context, int* out);
获取默认语音通话卡槽。
参数:
contextTelephony 上下文句柄。out输出参数。
返回值:
成功时返回 0,失败时返回负的错误码。