发送消息

更新时间: 2022/10/31 07:43:09

本文主要介绍如何通过 NERoom SDK 在房间内实现聊天室消息的发送。

功能介绍

消息类型

类型
描述
文本消息 文本消息的内容是文本,可以包含超链接、emoji 表情符号等。表情消息是基于文本消息实现的。 文本消息大小限制为 5 KB。
多媒体消息 多媒体消息包括文件消息和图片消息。
自定义消息 开发者自定义的消息类型,例如红包消息、石头剪子布等形式的消息。目前仅支持 RESTful API 发送自定义消息。

功能原理

消息收发.png

消息收发流程如下

  1. 房间内的用户 A 发送一条消息到云信的 NERoom IM 服务器。
  2. IM服务器投递给房间内聊天室内的其他成员。如果消息为广播消息,则全员投递,如果为定向消息,则仅投递指定的成员。
  3. 目标用户收到消息。

注意事项

  • 用户只有加入聊天室后,才能发送消息。
  • 最新版本可支持文本消息、自定义消息、图片消息以及文件消息,暂不支持语音消息、视频消息等其他类型的消息。

给单人发送消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 调用 sendDirectTextMessage 接口,定向给某个人发送文本消息。参数说明如下表所示。

NEsendBroadcastTextMessageParams 相关参数说明如下表所示。

名称 类型 描述
userUuid string 消息接收方的用户 ID
message string 文本消息的内容

示例代码

实现给单人发送消息的示例代码如下:

    auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context){
        std::string message = "testmessage";
        std::string userUuid = "123456";
        context->getChatController()->sendDirectTextMessage(userUuid, message, [this](int code, const std::string& msg){
        });
    } 

给多人发送消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 调用 sendGroupTextMessage 接口,给多人发送文本消息。

    NEsendBroadcastTextMessageParams 相关参数说明如下表所示。

    名称 类型 描述
    userUuids string[] 消息接收方的用户 ID。示例:['userid01', 'userid02']
    message string 文本消息内容

示例代码

实现给多人发送消息的示例代码如下:

    auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context){
        std::string message = "testmessage";
        std::list<std::string> userUuids;
        context->getChatController()->sendGroupTextMessage(userUuids, message, [this](int code, const std::string& msg){
        });
    }

发送广播消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 调用 sendBroadcastTextMessage 接口,向全员发送广播消息。

    NEsendBroadcastTextMessageParams 相关参数说明如下表所示。

    名称 描述
    message 文本消息内容

示例代码

实现发送广播消息的示例代码如下:

    auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context){
        std::string message = "testmessage";
        context->getChatController()->sendBroadcastTextMessage(message, [this](int code, const std::string& msg){

        });
    }

发送图片消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 监听消息附件上传进度。

  3. 调用 sendImageMessage 接口,发送图片消息。相关参数说明如下表所示。

    名称 描述
    messageUuid 消息标识,可用于监听该消息附件上传的进度。
    imagePath 图片路径。
    width 图片宽度。
    height 图片高度。
    userUuids 用户 ID 列表。
    如果 userUuids 为空,表示发送全员消息。
    如果 userUuids 不为空,表示给单人或多人发送消息。
    callback 回调。

示例代码

实现发送图片消息的示例代码如下:

    auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context){
        std::string messageUuid = "messageUuid";
        std::string imagePath = "imagePath";
        int width = 50;
        int height = 50;
        context->getChatController()->sendImageMessage(messageUuid, imagePath, width, height, userUuids, [this](int code, const std::string& msg){
        });
    }

发送文件消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 监听消息附件上传进度。

  3. 调用 sendFileMessage 接口,发送图片消息。相关参数说明如下表所示。

    名称 描述
    messageUuid 消息标识,可用于监听该消息附件上传的进度。
    filePath 文件路径。
    userUuids 用户 ID 列表。
    如果 userUuids 为空,表示发送全员消息。
    如果 userUuids 不为空,表示给单人或多人发送消息。
    callback 回调。

示例代码

实现发送文件消息的示例代码如下:

  auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context){
        std::string messageUuid = "messageUuid";
        std::string filePath = "filePath";
        context->getChatController()->sendFileMessage(messageUuid, filePath, userUuids, [this](int code, const std::string& msg){
        });
    }

API 参考

方法 功能描述
sendBroadcastTextMessage 发送广播消息。
sendDirectTextMessage 发送定向消息。
sendGroupTextMessage 发送多人消息。
sendImageMessage 发送图片消息
sendFileMessage 发送文件消息
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 消息类型
  • 功能原理
  • 注意事项
  • 给单人发送消息
  • 配置步骤
  • 示例代码
  • 给多人发送消息
  • 配置步骤
  • 示例代码
  • 发送广播消息
  • 配置步骤
  • 示例代码
  • 发送图片消息
  • 配置步骤
  • 示例代码
  • 发送文件消息
  • 配置步骤
  • 示例代码
  • API 参考