tencent cloud

文档反馈

在群组中发送普通消息

最后更新时间:2023-12-12 16:27:20

    功能说明

    App 管理员可以通过该接口在群组中发送普通消息。

    接口调用说明

    适用的群组类型

    群组类型 ID
    是否支持此 REST API
    Private
    支持,同新版本中的 Work(好友工作群)
    Public
    支持
    ChatRoom
    支持,同新版本中的 Meeting(临时会议群)
    AVChatRoom
    支持
    Community(社群)
    支持
    即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统

    请求 URL 示例

    https://xxxxxx/v4/group_open_http_svc/send_group_msg?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json

    请求参数说明

    下表仅列出调用本接口时涉及修改的参数及其说明,更多参数详情请参考 REST API 简介
    参数
    说明
    xxxxxx
    SDKAppID 所在国家/地区对应的专属域名:
    中国:console.tim.qq.com
    新加坡:adminapisgp.im.qcloud.com
    首尔: adminapikr.im.qcloud.com
    法兰克福:adminapiger.im.qcloud.com
    孟买:adminapiind.im.qcloud.com
    硅谷:adminapiusa.im.qcloud.com
    雅加达:adminapiidn.im.qcloud.com
    v4/group_open_http_svc/send_group_msg
    请求接口
    sdkappid
    创建应用时即时通信 IM 控制台分配的 SDKAppID
    identifier
    必须为 App 管理员账号,更多详情请参见 App 管理员
    usersig
    App 管理员账号生成的签名,具体操作请参见 生成 UserSig
    random
    请输入随机的32位无符号整数,取值范围0 - 4294967295
    contenttype
    请求格式固定值为json

    最高调用频率

    200次/秒。

    请求包示例

    基础形式 发送普通群消息,消息的发送者为 App 管理员。
    {
    "GroupId": "@TGS#2C5SZEAEF",
    "Random": 8912345, // 随机数字,五分钟数字相同认为是重复消息
    "MsgBody": [ // 消息体,由一个 element 数组组成,详见字段说明
    {
    "MsgType": "TIMTextElem", // 文本
    "MsgContent": {
    "Text": "red packet"
    }
    },
    {
    "MsgType": "TIMFaceElem", // 表情
    "MsgContent": {
    "Index": 6,
    "Data": "abc\\u0000\\u0001"
    }
    }
    ],
    "CloudCustomData": "your cloud custom data",
    "SupportMessageExtension": 0,
    "OfflinePushInfo": {
    "PushFlag": 0, // 正常推送,
    "Desc": "离线推送内容",
    "Ext": "这是透传的内容",
    "AndroidInfo": {
    "Sound": "android.mp3"
    },
    "ApnsInfo": {
    "Sound": "apns.mp3",
    "BadgeMode": 1, // 这个字段缺省或者为0表示需要计数,为1表示本条消息不需要计数,即右上角图标数字不增加
    "Title":"apns title", // apns title
    "SubTitle":"apns subtitle", // apns subtitle
    "Image":"www.image.com" // image url
    }
    }
    }
    指定消息发送者 可以指定某一位群成员作为消息发送者,在 From_Account 中设置。 其他用户收到群消息后,显示的消息来自 App 管理员指定的那一位群成员。
    {
    "GroupId": "@TGS#2C5SZEAEF",
    "From_Account": "leckie", // 指定消息发送者(选填)
    "Random": 8912345, // 随机数字,五分钟数字相同认为是重复消息
    "MsgBody": [ // 消息体,由一个element数组组成,详见字段说明
    {
    "MsgType": "TIMTextElem", // 文本
    "MsgContent": {
    "Text": "red packet"
    }
    },
    {
    "MsgType": "TIMFaceElem", // 表情
    "MsgContent": {
    "Index": 6,
    "Data": "abc\\u0000\\u0001"
    }
    }
    ]
    }
    指定消息接收者 如果消息体中增加了 To_Account,里面指定消息接收者的信息,那么消息只会发送给消息接收者,且该消息不计未读。(支持群类型 Private、Public、ChatRoom)。
    说明
    仅进阶版支持此功能。
    {
    "GroupId":"@TGS#12DEVUDHQ",
    "Random":2784275388,
    "MsgBody":[
    {
    "MsgType":"TIMCustomElem",
    "MsgContent":{
    "Data":"1cddddddddq1"
    }
    }
    ],
    "To_Account":["brennanli2", "brennanli3"] //指定消息接收者(接收者成员上限50个),如果此字段被使用,消息则不计未读
    }
    指定消息不更新最近联系人会话 如果消息中指定 SendMsgControl,设置 NoLastMsg 的情况下,表示不更新最近联系人会话;NoUnread 不计未读,只对单条消息有效。(AVChatRoom 不允许使用,Meeting 默认不计未读数,需要配置开通,未开通时设置 NoUnread 会报错)。
    {
    "GroupId": "@TGS#2C5SZEAEF",
    "Random": 8912345, // 随机数字,五分钟数字相同认为是重复消息
    "SendMsgControl":["NoLastMsg"],//指定消息不触发更新最近联系人会话。
    "MsgBody": [ // 消息体,由一个 element 数组组成,详见字段说明
    {
    "MsgType": "TIMTextElem", // 文本
    "MsgContent": {
    "Text": "red packet"
    }
    },
    {
    "MsgType": "TIMFaceElem", // 表情
    "MsgContent": {
    "Index": 6,
    "Data": "abc\\u0000\\u0001"
    }
    }
    ]
    }
    指定消息优先级 可以指定消息的优先级,默认优先级 Normal。 可以指定3种优先级,从高到低依次为 High、Normal 和 Low,区分大小写。
    {
    "GroupId": "@TGS#2C5SZEAEF",
    "Random": 8912345, // 随机数字,五分钟数字相同认为是重复消息
    "MsgPriority": "High", // 消息优先级
    "MsgBody": [ // 消息体,由一个element数组组成,详见字段说明
    {
    "MsgType": "TIMTextElem", // 文本
    "MsgContent": {
    "Text": "red packet"
    }
    },
    {
    "MsgType": "TIMFaceElem", // 表情
    "MsgContent": {
    "Index": 6,
    "Data": "abc\\u0000\\u0001"
    }
    }
    ]
    }
    指定消息不回调 在回调开关打开的情况下,用户通过 ForbidCallbackControl 控制单条消息是否发起回调,默认情况发起回调。
    {
    "GroupId": "@TGS#2C5SZEAEF",
    "Random": 8912345, // 随机数字,五分钟数字相同认为是重复消息
    "ForbidCallbackControl":[
    "ForbidBeforeSendMsgCallback",
    "ForbidAfterSendMsgCallback"], // 禁止回调控制选项
    "MsgBody": [ // 消息体,由一个element数组组成,详见字段说明
    {
    "MsgType": "TIMTextElem", // 文本
    "MsgContent": {
    "Text": "red packet"
    }
    },
    {
    "MsgType": "TIMFaceElem", // 表情
    "MsgContent": {
    "Index": 6,
    "Data": "abc\\u0000\\u0001"
    }
    }
    ]
    }
    发送群@消息 GroupAtInfo字段里面设置@的用户,跟消息体里面@的用户按顺序逐一对应。
    注意
    直播群(AVChatroom)不支持@all。
    {
    "GroupId": "@TGS#2C5SZEAEF",
    "Random": 8912345, // 随机数字,五分钟数字相同认为是重复消息
    "MsgBody": [ // 消息体,由一个 element 数组组成,详见字段说明
    {
    "MsgType": "TIMTextElem", // 文本
    "MsgContent": {
    "Text": "red @all @tommy @brennanli packet"
    }
    }
    ],
    //对应文本信息里的@all @tommy @brennanli
    "GroupAtInfo":[
    {
    "GroupAtAllFlag":1 //为1表示@all,为0表示@某个群成员
    },
    {
    "GroupAtAllFlag":0,
    "GroupAt_Account":"tommy" //@的具体的群成员
    },
    {
    "GroupAtAllFlag":0,
    "GroupAt_Account":"brennanli"
    }
    ]
    }
    指定消息不存离线及漫游 如果消息体中指定 OnlineOnlyFlag,只要值大于0,则消息表示只在线下发,不存离线和漫游(AVChatRoom 和 BChatRoom 不允许使用)。
    {
    "GroupId": "@TGS#2C5SZEAEF",
    "Random": 8912345, // 随机数字,五分钟数字相同认为是重复消息
    "OnlineOnlyFlag": 1, // 表示只在线下发(只有在线群成员才能收到),不存离线及漫游
    "MsgBody": [ // 消息体,由一个 element 数组组成,详见字段说明
    {
    "MsgType": "TIMTextElem", // 文本
    "MsgContent": {
    "Text": "red packet"
    }
    },
    {
    "MsgType": "TIMFaceElem", // 表情
    "MsgContent": {
    "Index": 6,
    "Data": "abc\\u0000\\u0001"
    }
    }
    ]
    }

    请求包字段说明

    字段
    类型
    属性
    说明
    GroupId
    String
    必填
    向哪个群组发送消息
    Random
    Integer
    必填
    无符号32位整数。如果5分钟内两条消息的内容和 Random 随机值都相同的情况下,后一条消息将被当做重复消息而丢弃
    MsgPriority
    String
    选填
    消息的优先级
    MsgBody
    Array
    必填
    消息体,详细可参阅 消息格式描述
    From_Account
    String
    选填
    消息来源账号,选填。如果不填写该字段,则默认消息的发送者为调用该接口时使用的 App 管理员账号。除此之外,App 亦可通过该字段“伪造”消息的发送者,从而实现一些特殊的功能需求。需要注意的是,如果指定该字段,必须要确保字段中的账号是存在的
    OfflinePushInfo
    Object
    选填
    离线推送信息配置,详细可参阅 消息格式描述
    ForbidCallbackControl
    Array
    选填
    消息回调禁止开关,只对单条消息有效,ForbidBeforeSendMsgCallback 表示禁止发消息前回调,ForbidAfterSendMsgCallback 表示禁止发消息后回调
    OnlineOnlyFlag
    Integer
    选填
    1表示消息仅发送在线成员,默认0表示发送所有成员,AVChatRoom(直播群)不支持该参数
    SendMsgControl
    Array
    选填
    消息发送权限,NoLastMsg 只对单条消息有效,表示不更新最近联系人会话;NoUnread 不计未读,只对单条消息有效。(如果该消息 OnlineOnlyFlag 设置为1,则不允许使用该字段。)
    CloudCustomData
    String
    选填
    消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
    SupportMessageExtension
    Integer
    选填
    该条消息是否支持消息扩展,0为不支持,1为支持。
    To_Account
    Array
    选填
    指定消息接收者(接收者成员上限50个),如果此字段被使用,消息则不计未读,仅进阶版支持此功能,支持好友工作群(Work)、陌生人社交群(Public)、临时会议群(Meeting)
    TopicId
    String
    选填
    话题的 ID,若具有此选项表示在对应的话题中发送普通消息,仅支持话题的社群适用此选项

    应答包体示例

    {
    "ActionStatus": "OK",
    "ErrorInfo": "",
    "ErrorCode": 0,
    "MsgTime": 1497249503,
    "MsgSeq": 1,
    "MsgDropReason" : "MsgFreqCtrl"
    }

    应答包字段说明

    字段
    类型
    说明
    ActionStatus
    String
    请求处理的结果,OK 表示处理成功,FAIL 表示失败
    ErrorCode
    Integer
    错误码,0表示成功,非0表示失败
    ErrorInfo
    String
    错误信息
    MsgTime
    Integer
    消息发送的时间戳,对应后台 server 时间
    MsgSeq
    Integer
    消息序列号,唯一标示一条消息
    MsgDropReason
    String
    消息丢弃原因;默认为空,否则表明消息被丢弃原因,当前只支持消息频控丢弃

    错误码说明

    除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。 公共错误码(60000到79999)参见 错误码 文档。 本 API 私有错误码如下:
    错误码
    含义说明
    10002
    服务器内部错误,请重试
    10004
    参数非法,请根据错误描述检查请求是否正确
    10007
    操作权限不足,例如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限
    10010
    群组不存在,或者曾经存在过,但是目前已经被解散
    10015
    群组 ID 非法,请检查群组 ID 是否填写正确
    10016
    App 后台通过第三方回调拒绝本次操作
    10017
    因被禁言而不能发送消息,请检查发送者是否被设置禁言
    10023
    发消息的频率超限,请延长两次发消息时间的间隔
    80002
    消息内容过长,目前最大支持12K字节的消息,请调整消息长度

    接口调试工具

    通过 REST API 在线调试工具 调试本接口。

    参考

    在群组中发送系统通知(v4/group_open_http_svc/send_group_system_notification
    单发单聊消息(v4/openim/sendmsg
    批量发单聊消息(v4/openim/batchsendmsg

    可能触发的回调

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持