更新时间:2022-05-06 GMT+08:00
分享

发起呼叫

StartCall

接口描述

该接口用于通过呼叫号码或者呼叫第三方账号发起呼叫。

注意事项

  1. 在登录状态下调用该接口。
  2. 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。

方法定义

1
HWM_SDK_AGENT_API hwmsdk::HwmErrCode StartCall(const HwmStartCallInfo* startCallInfo);

回调函数

1
virtual void OnStartCallResult(hwmsdk::HwmErrCode ret, const char* reason) {};

参数描述

参数

是否必须

类型

描述

startCallInfo

HwmStartCallInfo

发起呼叫信息。

表1 结构体HwmStartCallInfo参数说明

参数

是否必须

类型

描述

name

char[]

主叫名称。

callee

HwmCallContactInfo

被叫信息。

callType

HwmCallType

呼叫类型。

表2 结构体HwmCallContactInfo参数说明

参数

是否必须

类型

描述

name

char[]

被呼叫人名称。

number

char[]

被呼叫人号码。如果填分配给帐号的sip号码(如+99111244216210249)则呼叫该帐号的App;如果填PSTN号码(如18700000000),则通过VoIP网关呼叫该号码,前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一(优先级 : number>thirdUserId),帐号密码鉴权时使用。

thirdUserId

char[]

被呼叫人第三方帐号。与number二选一(优先级 : number>thirdUserId),App ID鉴权时使用。

表3 枚举HwmCallType说明

枚举值

描述

CALL_TYPE_AUDIO

音频呼叫。

CALL_TYPE_VIDEO

视频呼叫。

返回值

表4 返回值

类型

描述

HwmErrCode

成功返回0,其他值表示失败。失败返回值见错误码参考

示例代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* 发起呼叫
*/
int demoStartCallDlg::clickStartCall()
{
    hwmsdkagent::HwmStartCallInfo data;
    memset(&data, 0, sizeof(hwmsdkagent::HwmStartCallInfo));
 
    //被叫人姓名
    CString calleeNameCstr;
    m_calleeNameEdit.GetWindowText(calleeNameCstr);
    string calleeName = CTools::UNICODE2UTF(calleeNameCstr);
    errno_t nRet = strcpy_s(data.callee.name, sizeof(data.callee.name), calleeName.c_str());
 
    //被叫人号码
    CString calleeNumberCstr;
    m_calleeNumberEdit.GetWindowText(calleeNumberCstr);
    string calleeNumber = CTools::UNICODE2UTF(calleeNumberCstr);
    nRet += strcpy_s(data.callee.number, sizeof(data.callee.number), calleeNumber.c_str());
 
    //被叫人三方账号
    CString calleeThirdUserIdCstr;
    m_calleeThirdUserIdEdit.GetWindowText(calleeThirdUserIdCstr);
    string calleeThirdUserId = CTools::UNICODE2UTF(calleeThirdUserIdCstr);
    nRet += strcpy_s(data.callee.thirdUserId, sizeof(data.callee.thirdUserId), calleeThirdUserId.c_str());
 
    //主叫人姓名
    CString callerNameCstr;
    m_callerNameEdit.GetWindowText(callerNameCstr);
    string callerName = CTools::UNICODE2UTF(callerNameCstr);
    nRet += strcpy_s(data.name, sizeof(data.name), callerName.c_str());
 
    if (nRet != 0)
    {
        AfxMessageBox(_T("String Copy Error!"));
    }
 
    //视频或音频
    CString callTypeCString;
    m_callTypeCombo.GetWindowText(callTypeCString);
    hwmsdkagent::HwmCallType type = hwmsdkagent::CALL_TYPE_VIDEO;
    if (_T("Video") == callTypeCString)
    {
        data.callType = hwmsdkagent::CALL_TYPE_VIDEO;
    }
    else if (_T("Audio") == callTypeCString)
    {
        data.callType = hwmsdkagent::CALL_TYPE_AUDIO;
    }
 
    int ret = hwmsdkagent::StartCall(&data);
 
    return ret;
}
分享:

    相关文档

    相关产品

关闭导读