RTX(腾讯通) SendIM 注意事项(c++开发)

来源:互联网 发布:java线程池配置 编辑:程序博客网 时间:2024/06/09 21:30

SDK文档解说比较少

先列出原接口函数:

 

IRTXSAPIRootOBj::SendIM

 

发送IM消息

HRESULT SendIM( [in] BSTR bstrSender, [in] BSTR bstrPwd, [in] BSTR bstrReceivers, [in] BSTR bstrMsg, [in] BSTR bstrSessionID);

 

Parameters

[in]bstrSender 发送者。

[in]bstrPwd 密码。

[in]bstrReceivers 接收者,多人用分号码;隔开。

[in] bstrMsg 消息内容。

[in] bstrSessionID 会话ID,一个GUID 标识一个窗口。

 

由于开发是用的com组件,所以调用该接口出错时会抛出_com_error类型异常,具体可以如下使用:

try

{

SendIM(...);

}

catch(_com_error& ce)

{

...//ce中包含了异常信息,具体可以查看msdn来具体解析

}

再说说五个参数吧:

如果bstrSender不存在,那么会抛出_com_error异常

如果bstrPwd错误,也会抛出_com_error异常

如果bstrReceivers不存在,啥也不会干,悲了个具的

如果bstrMsg,没有这个的错误

如果bstrSessionID格式不对,也会抛出_com_error异常,如果是使用错误,可能会发生莫名奇妙的表现问题,具体可以见上一篇SessionId说明的文章

 

注意另外一个错误:

由于RTXServer可以更改用户是否为第三方验证,所以如果bstrSender是第三方验证的话,那么也会抛出异常,具体看异常信息可能会说传递了无效参数,解决方案可以是先关闭第三方校验,发生完毕再打开第三方校验,虽然效率低了点,如下

SetUserAuthType(sender,VARIANT_FALSE);//关闭发送者的第三方校验

SendIM(sender,...);                                     //发送消息

SetUserAuthType(sender,VARIANT_TRUE); //打开发送者的第三方校验

 

over!