当前知识库站点已不再维护。请移步新版知识库:https://help.rongcloud.cn/

Web SDK常见问题及排除方式(下)

收集了初始化链接、获取历史消息、获取用户信息、音视频通话等逻辑里的常见错误,提供了完备的排查思路和工具,可以帮助开发者快速解决问题。
发布时间: 2017-09-11 11:57

回答:

四、发送接收消息

发送图片消息

(1)web发送图片时,要传参数content和imageUri,其中content为图片的base64缩略图,imageUri 为大图的网络路径,七牛上传完图片后可得到。

(2)图片消息中,缩略图必须是 base64 码的 jpg 图,而且不带前缀,到晓不得超过 80 kb。

(3)可使用融云上传插件完成图片文件上传,参考文档:http://doc.rongcloud.cn/im/Web/4.X/guide/private/msgmanage/msgsend/web#ImgMsg

(4)发送图片消息的步骤:

(1)上传图片文件到服务器,获取网络路径(即 原图的 url )

(2)本地构造 base64 缩略图

(3)构造消息体(需要 base64 格式缩略图 和 原图的 url),发送消息。

(5)图片消息体:

 var conversation = im.Conversation.get({
         targetId: '接收方的 userId',
         type: RongIMLib.CONVERSATION_TYPE.PRIVATE});
 
 conversation.send({
      messageType: RongIMLib.MESSAGE_TYPE.IMAGE, // 'RC:ImgMsg'
      content: {
            content: '/9j/4AAQSBAAD/2wBDDBAYEBAQEB....', // // 压缩后的 base64 略缩图, 用来快速展示图片
            imageUri: 'https://www.rongcloud.cn/images/newVersion/log_wx.png' // 上传到服务器的 url. 用来展示高清图片
      }}).then(function(message){
          console.log('发送图片消息成功', message);
      });

(6)demo :https://rongcloud.github.io/web-imlib-v4-test/

Web 端聊天插件提示音

(1)WebIMWidget.init中配置 voiceUrl 路径

(2)在收到消息时,在插件中的消息监听 message 方法中执行 play 方法

Web 端聊天插件收不到客服消息

(1)消息接收 demo :https://rongcloud.github.io/websdk-demo/connect-check.html

(2)使用 demo 检测下能不能收到客服发过来的消息

(3)与客服对话需要先发起握手消息

(5)参考文档:http://doc.rongcloud.cn/im/Web/4.X/guide/setting/include/web

Web 端语音消息

(1)Web 端支持语音消息类型,但没有 发送语音消息 的方法,如果可以自行解决录音和转码问题,Web 端就可以发送语音消息

(2)转码需要转成 amr 格式的 base64 str

(3)demo :https://rongcloud.github.io/web-imlib-v4-test/

Emoji 表情

(1)融云表情库只支持 128 个 emoji 表情

(2)emoji 表情无法显示,先确认一下表情是否在融云支持范围内

(3)移动端支持原生 emoji 字符,Web 端不支持时使用 emoji 转 HTML 方法,转换成 HTML 用图片来呈现

(4)Android 端页面 emoji 表情不清晰,需要自行更换高清表情图,因为涉及版权问题,emoji表情只提供代码和示例图片,正式使用请自行解决版权问题

(5)接入emoji表情报错(RongEmoji-2.2.4.min.js:1 Uncaught TypeError: Cannot read property 'emojiImage' of undefined):在初始化 Web SDK ( RongIMClient.init(appkey) )之后再执行 初始化表情库 ( RongIMLib.RongIMEmoji.init() )操作

(6)有一端显示 emoji 表情为灰色,样式不对,确实一下是不是样式有冲突

(7)emoji 网络素材 http://emojipedia.org/

(8)emoji 参考文档:http://doc.rongcloud.cn/im/Web/4.X/guide/private/msgmanage/msgsend/web#emoji

群组管理禁言和拉入黑名单权限

(1)融云提供接口,谁有权限把谁禁言都需要自己在服务器实现

(2)参考文档:http://doc.rongcloud.cn/imserver/server/v1/group/memeberblock

服务端发送消息用户接收不到

(1)需要确认发送消息是否成功(注意消息类型,可以使用融云开发者后台的功能发送)

(2)在端上消息监听里看是否能收到消息

(3)如果还是收不到消息,请提供 appKey 和 token 以及发送消息的时间等,继续排查

确认发送消息成功的方法

(1)执行了发送消息成功 onSuccess 方法

(2)看 message 中是否包含 messageUId ,如果有 messageUId 说明成功了。

是否可以在 server 端获取聊天记录

(1)可以的,需要开通 服务端实时消息路由 服务,请参考:http://doc.rongcloud.cn/imserver/server/v1/message/sync

五、聊天室问题

创建聊天室问题

(1)聊天室服务端自动创建 joinChatRoom 填入聊天室 Id 即可。

(2)聊天室 1 个小时后无人说话就会自动销毁

进入聊天室拉取消息问题

(1)聊天室不支持通过 getHistoryMessage() 方法获取历史消息

(2)可以在 joinChatRoom 时拉取最近的消息,最多五十条

(3)参考文档:http://doc.rongcloud.cn/im/Web/4.X/guide/chatroom/msgmanage/storage/web

加入聊天室失败

(1)需要在init初始化以及连接融云服务器成功后,再调用加入聊天室方法

(2)demo :https://rongcloud.github.io/web-imlib-v4-test/

提示 xxx 进入聊天室 / 群组的方法

(1)在用户进入聊天室或者群组后自动发送一条消息,其他用户通过消息监听可以知道有用户进入

(2)消息类型和内容都可以由您自己决定,可以根据实际情况设计标识,并通过标识判断是否为新用户

(3)具体类型可以参考文档:http://doc.rongcloud.cn/imserver/server/v1/message/objectname

手机环境下,进入聊天室,然后手机待机一段时间,重新唤醒屏幕,消息不能发送,提示超时。

(1)手机待机后,系统会有一些节能的操作,浏览器的很多活动会被限制甚至被回收。

(2)建议在浏览器监听 window.onfous 时间来获取唤醒的时机,唤醒时刷新页面重新开始。

聊天室人数上限问题

(1)融云直播聊天室人数无上限

(2)参考文档:http://doc.rongcloud.cn/im/Web/4.X/guide/chatroom/intro/chatroom

游客进入融云聊天室问题

(1)融云要求用户必须根据id等获取token,并链接才能加入聊天室

(2)给游客分配一个id,获取token,链接融云,再调用方法加入聊天室

关闭网页,用户保活策略问题

(1)使用 session 保存用户信息,超时后自动销毁,在没有超时的一段时间里,就是保活期

(2)目前我们没有保护期,用户在线时直接关闭网页,再次打开网页需要重新登录

聊天室续活方法

(1)通过定时向聊天室发消息,例如:server端每隔不到1个小时发送一条cmdMsg。

Web 端发送聊天室消息,APP 接收不到问题

(1)需要确认 APP 端和 Web 端的 appkey 的是否一致

(2)确认 Web 端用户有没有加入对应聊天室(APP端发消息的和web端加入的是否是同一个聊天室id)

(3)反过来, APP 发消息,Web 端 是否可以收到消息

六、音视频问题

web 端音视频支持问题

参考文档:http://doc.rongcloud.cn/call/Web/5.X/compatibility

错误代码问题

(1)VOIPCLOSE = 24016 
(2)CLOSE_BEFORE_OPEN = 51001 
(3)ALREADY_IN_USE = 51002 
(4)INVALID_CHANNEL_NAME = 51003 
(5)VIDEU_CONTAINER_IS_NULL = 51004

设置视频的清晰度

参考文档:http://doc.rongcloud.cn/call/Web/5.X/control/caller

主叫呼叫后,被叫未接通,主叫挂断,被叫如何获取挂断消息?

(1)挂断时,主叫调用 session.hungup 方法挂断通话,SDK 内部会自动告知对方挂断、拒绝原因

视频聊天步骤

(1)A 向 B 发起音视频请求,发送 InviteMessage

(2)B 收到音视频请求 InviteMessage

(3)A 收到响铃消息 RingingMessage

(4)B 接受音视频请求

(5)A 收到 B 接受视频请求的消息 AcceptMessage

(6)成功建立视频通话

wss://localhost.agora.io:8921/ 服务器访问不到

(1)确认是否安装 agoraWebAgent 插件并启动

(2)两台电脑一对一视频通话

(3)windows 插件下载地址:http://cdn.ronghub.com/AgoraWebAgentSetup.exe

(4)mac 插件下载地址:http://cdn.ronghub.com/AgoraWebAgent.pkg

发起通话报错 18

(1)错误码参考文档:http://doc.rongcloud.cn/call/Web/3.X/intro/code/web

(2)VOIP 不可用,确认一下是否开启了音视频服务

(3)音视频开通方式说明:http://doc.rongcloud.cn/call/Android/5.X/rtc-service

将实时音视频和 Web 聊天插件结合

(1)在聊天界面中增加发起视频或语音通话按钮(通过修改模板加入新的 dom 节点,赋予相应的 css 做好样式,通过 AngularJS 的双向绑定方式添加相应的事件)

(2)用户点击按钮发起会话

(3)接收方点击接受,开始通讯

b._voipProvider is undefind

(1)根据错误提示应该是 音视频 SDK 未初始化

(2)参考文档: http://doc.rongcloud.cn/call/Web/3.X/index

通过 H5 写的 web 型 APP 集成音视频

(1)在 引入 SDK 之前设置 window["SCHEMETYPE"] = "http";

(2)参考文档;http://www.rongcloud.cn/docs/web_api_demo.html#other

消息体

{
    "content": {
        "messageName": "TextMessage",
        "content": "hello",  //消息内容
        "extra": "RongCloud"
    },
    "conversationType": 1,   // 会话类型(单聊、群聊、聊天室等)
    "objectName": "RC:TxtMsg",  
    "messageDirection": 1,
    "messageId": 36,
    "senderUserId": "user8",    //发送者id
    "sentStatus": 30,    //消息状态
    "sentTime": 1484621850284,   //发送时间,自己转化格式
    "targetId": "user9",    // 目标Id
    "messageType": "TextMessage",
    "messageUId": "5CQK-MT6L-G43A-D3EE"   // 消息唯一标示 ,消息Id
}

参考文档

(1)SDK 架构:http://doc.rongcloud.cn/rcloud/-/-/client-library/overview

(2)Web SDK 开发指南:http://doc.rongcloud.cn/im/Web/4.X/index

(3)Web SDK API 文件:http://www.rongcloud.cn/docs/api/js/RongIMClient.js.html

(4)Server 开发指南:http://doc.rongcloud.cn/imserver/server/v1/security/include

(5)聊天插件下载地址:https://github.com/rongcloud/rongcloud-web-im-widget

(6)聊天插件的开发文档:https://github.com/rongcloud/rongcloud-web-im-widget/blob/master/doc/%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3.md

(7)Web 端 H5 插件:https://github.com/rongcloud/rongcloud-web-im-widget-h5

(8)WebIM 集成引导:https://rongcloud.github.io/websdk-demo/integrate/guide.html

参考 demo

(1)demo:https://rongcloud.github.io/web-imlib-v4-test/

(2)消息接收 demo:https://rongcloud.github.io/websdk-demo/connect-check.html

(3)聊天插件在线 demo:http://rongcloud.github.io/rongcloud-web-im-widget/demo/

(4)RequireJS 加载 SDK demo: https://rongcloud.github.io/websdk-demo/require.html