MsgLifeTime
to 1
. This will make message delivery faster.WithMuteNotifications
in the SendMsgControl
parameter.MsgSeq
field is specified by the user when the message is sent. Its value can be repeated. It is not generated by the backend and not globally unique. For group chat messages, the value of the MsgSeq
field is generated by the backend, and each group maintains its respective MsgSeq
which increases strictly from 1. For one-to-one messages, the historical messages of the same conversation are sorted by timestamp first, and then the historical messages of the same second are sorted by MsgSeq
.SyncOtherMachine
parameter to determine whether to synchronize the message. For more information, please see Sample request below.https://xxxxxx/v4/openim/batchsendmsg?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
Parameter | Description |
xxxxxx | Domain name corresponding to the country/region where your SDKAppID is located. China: console.tim.qq.com Singapore: adminapisgp.im.qcloud.com Seoul: adminapikr.im.qcloud.com Frankfurt: adminapiger.im.qcloud.com Silicon Valley: adminapiusa.im.qcloud.com Jakarta: adminapiidn.im.qcloud.com |
v4/openim/batchsendmsg | Request API |
sdkappid | SDKAppID assigned by the Chat console when an app is created |
identifier | |
usersig | |
random | A random 32-bit unsigned integer ranging from 0 to 4294967295. |
contenttype | Request format, which should always be json . |
MsgBody
to the corresponding message type. For more information, see Message Formats.From_Account
, set SyncOtherMachine
to 2
.
To synchronize the message to From_Account
, set SyncOtherMachine
to 1
.{"SyncOtherMachine": 2, // Do not synchronize the message to the sender."To_Account": [ // A list of target accounts"bonnie","rong"],"MsgSeq": 28360, // Sequence number of the message."MsgRandom": 19901224, // Random number of the message"MsgBody": [ // Message body{"MsgType": "TIMTextElem", // Message type. `TIMTextElem` indicates text messages."MsgContent": {"Text": "hi, beauty" // Message text}}],"CloudCustomData": "your cloud custom data"}
From_Account
is the sender specified by the admin. The sender displayed to the recipients is not the admin, but the account specified by the admin. In the following JSON request, dave sends a message to bonnie and rong. When bonnie and rong receive the message, the message sender displayed to them is dave.From_Account
, set SyncOtherMachine
to 2
.
To synchronize the message to From_Account
, set SyncOtherMachine
to 1
.{"SyncOtherMachine": 1, // Synchronize the message to the sender."From_Account": "dave","To_Account": ["bonnie","rong"],"MsgSeq": 28360, // Sequence number of the message."MsgRandom": 19901224, // Random number of the message"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hi, beauty"}}],"CloudCustomData": "your cloud custom data","OfflinePushInfo": {"PushFlag": 0,"Desc": "Content to push offline","Ext": "Passthrough content","AndroidInfo": {"Sound": "android.mp3"},"ApnsInfo": {"Sound": "apns.mp3","BadgeMode": 1, // If this field is left as default or is set to `0`, the message is counted. If this field is set to `1`, the message is not counted, that is, the badge counter in the upper-right corner does not increase."Title":"apns title", // APNs title"SubTitle":"apns subtitle", // APNs subtitle"Image":"www.image.com" // Image URL}}}
Field | Type | Required | Description |
SyncOtherMachine | Integer | No | 1 : synchronize the message to the online terminal and roaming server of From_Account . 2 : do not synchronize the message to From_Account . If this field is not specified, the message is synchronized to the roaming server of From_Account . |
From_Account | String | No | Sender account specified by the admin. To set the information of From_Account , the value of this field cannot be left empty. |
To_Account | Array | Yes | UserID of the message recipient |
MsgSeq | Integer | No | Sequence number (32-bit unsigned integer) of the message. The backend will use this field to remove duplicate messages and sort messages in the same second. For details, see Feature Description. If this field is left empty, the backend will enter a random number. |
MsgRandom | Integer | Yes | Random number (32-bit unsigned integer) of the message. It is used by the backend for removing duplicate message within a second. Make sure a random number is entered. |
MsgBody | Array | Yes | |
OnlineOnlyFlag | Integer | No | If this field is set to 0 , the message will be stored in the historical chat records.1 means that messages will not be stored in the historical chat records, meaning if the recipient is online, they will receive this message; if offline, they won't. Suitable for implementing some real-time status features. |
MsgType | String | Yes | TIM message object type.Valid values: TIMTextElem (text message) TIMLocationElem (location message) TIMFaceElem (emoji message) TIMCustomElem (custom message)TIMSoundElem (voice message) TIMImageElem (image message) TIMFileElem (file message) TIMVideoFileElem (video message) |
MsgContent | Object | Yes | |
CloudCustomData | String | No | Custom message data. It is saved in the cloud and will be sent to the receiver. Such data can be pulled after the app is uninstalled and reinstalled. |
SendMsgControl | Array | No | Message sending control options is an array of strings, which is valid only for this request. "NoUnread" means this message is not counted as unread messages. "NoLastMsg" indicates that this message does not update the conversation list. "WithMuteNotifications" means that the recipient's Do Not Disturb settings for the sender are effective for this message (it does not take effect by default). "NoMsgCheck" means that, when cloud-based review is enabled, this message will not be submitted for review.
Example:
"SendMsgControl": ["NoUnread","NoLastMsg","WithMuteNotifications","NoMsgCheck"] |
OfflinePushInfo | Object | No | |
IsNeedReadReceipt | Integer | No | Whether the message requires a read receipt. 0 : No. 1 : Yes. The default value is 0 . |
{"ErrorInfo": "","ActionStatus": "OK","ErrorCode": 0,"MsgKey": "128493_903762_1572870301"}
{"ActionStatus": "SomeError","ErrorCode": 0,"ErrorInfo": "","MsgKey": "4852_28135_1579678877","ErrorList": [ // List of the accounts to which the message was not sent{"To_Account": "rong", // Account to which the message was not sent"ErrorCode": 70107 // Error code. `70107` indicates that the account does not exist.}]}
{"ActionStatus": "FAIL","ErrorInfo": "invalid To_Account","ErrorCode": 90012}
Field | Type | Description |
ActionStatus | String | Request result. OK : successful; FAIL : failed |
ErrorCode | Integer | Error code returned for the request. If the message was sent to any account, the value is 0 . If the message was sent to none of the target accounts, the value is not 0 . |
ErrorInfo | String | Error information |
ErrorList | Array | List of the target accounts to which the message was not sent or that do not exist. If the message was sent to all the target accounts, the value of this field is empty. |
ErrorList.To_Account | String | Target account to which the message was not sent. |
ErrorList.ErrorCode | Integer | Error code indicating that the message was not sent. If the error code is 70107, the account does not exist. |
MsgKey | String | Unique identifier of the message. This field is required to recall a message. The value is a string of no more than 50 characters. |
ErrorCode
and ErrorInfo
respectively.
For public error codes (60000 to 79999), see Error Codes.
The following table describes the error codes specific to this API:Error Code | Description |
70107 | The requested account does not exist. |
70169 | Server timeout. Try again later. |
90001 | Failed to parse the JSON request. Make sure the format is valid. |
90002 | The MsgBody in the JSON request does not meet message format requirements or MsgBody is not an array. For more information, see the Message Element TIMMsgElement section in Message Formats. |
90004 | Invalid MsgSeq field in the JSON request. |
90007 | The MsgBody field in the JSON request is not an array. Change it to an array. |
90008 | The JSON request does not contain the From_Account field or the account specified in From_Account does not exist. |
90009 | The request requires app admin permissions. |
90010 | The JSON request does not meet message format requirements. For more information, see the Message Element TIMMsgElement section in Message Formats. |
90011 | The number of target accounts exceeds 500. Delete some To_Account . |
90012 | The account specified in To_Account does not exist or is not registered. Make sure the account has been imported to Chat and is correct. |
90026 | The offline retention time of the message is incorrect. Messages cannot be retained offline for more than 7 days. |
90048 | The requested account does not exist. |
90992 | Internal service error. Try again. If this error code is returned for all requests and webhook is enabled, make sure the app server returns the results to the Chat backend normally. |
91000 | Internal service error. Try again. |
93000 | The JSON packet exceeds the maximum size of 12 KB. |
Was this page helpful?