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, see Sample requests below.https://xxxxxx/v4/openim/sendmsg?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/sendmsg | 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": "lumotuwe2","MsgSeq": 93847636,"MsgRandom": 1287657,"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hi, beauty"}}],"CloudCustomData": "your cloud custom data","SupportMessageExtension": 0}
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": "lumotuwe2","MsgSeq": 93847636,"MsgRandom": 1287657,"ForbidCallbackControl":["ForbidBeforeSendMsgCallback","ForbidAfterSendMsgCallback"], // Callback forbidding control option"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hi, beauty"}}],"CloudCustomData": "your cloud custom data"}
From_Account
.From_Account
, set SyncOtherMachine
to 2
.{"SyncOtherMachine": 2,"From_Account": "lumotuwe1","To_Account": "lumotuwe2","MsgSeq": 93847636,"MsgRandom": 1287657,"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}}}
From_Account
, set SyncOtherMachine
to 1
.{"SyncOtherMachine": 1, // Synchronize the message to the sender."From_Account": "lumotuwe1","To_Account": "lumotuwe2","OnlineOnlyFlag": 1,"MsgSeq": 93847636,"MsgRandom": 1287657,"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hi, beauty"}}],"CloudCustomData": "your cloud custom data"}
Field | Type | Required | Description |
SyncOtherMachine | Integer | No | 1 : synchronize the message to the From_Account online terminal and roaming server.2 : do not synchronize the message to From_Account .3 : do not synchronize the message to To_Account .If this field is not specified, the message will be synchronized to the From_Account roaming server. |
From_Account | String | No | UserID of the sender (used to specify the message sender) |
To_Account | String | Yes | UserID of the recipient |
OnlineOnlyFlag | Integer | No | If this field is set to 0 , the message will only be sent to the recipient online and not retained offline. 1 means that messages will not be stored in the historical chat records, meaning if the recipient is online, they will receive the message; if the recipient is not online, they will not receive the message. This is suitable for implementing some real-time status features, such as the "typing" feature. |
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 | Message random number (32-bit unsigned integer), used by the backend for deduplication of messages within the same second. Please ensure this field is filled with a random number. |
ForbidCallbackControl | Array | No | Message callback forbidding field, which is valid only for this message. ForbidBeforeSendMsgCallback forbids the callback before sending the message. ForbidAfterSendMsgCallback forbids the callback after sending the message. |
SendMsgControl | Array | No | Message sending control options is a String array, which is valid only for this message. "NoUnread" means this message is not counted as unread count. "NoLastMsg" means this message does not update the conversation List. "WithMuteNotifications" means for this message, the Do Not Disturb Option set by the recipient for the sender takes effect (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"] |
MsgBody | Array | Yes | Message body. For details on formats, please see Message Formats. (Note: a message can contain multiple message elements, in which case MsgBody is an array.) |
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 | Different message object types ( MsgType ) have different formats (MsgContent ). For details, see Message Formats. |
CloudCustomData | String | No | Custom message data. It is saved in the cloud and will be sent to the peer end. Such data can be pulled after the app is uninstalled and reinstalled. |
SupportMessageExtension | Integer | No | Whether the message supports message extension. 0 : No. 1 : Yes |
OfflinePushInfo | Object | No | |
IsNeedReadReceipt | Integer | No | Whether the message requires a read receipt. 0 : No. 1 : Yes. The default value is 0 . |
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"MsgTime": 1572870301,"MsgKey": "89541_2574206_1572870301"}
{"ActionStatus": "FAIL","ErrorInfo": "Fail to Parse json data of body, Please check it","ErrorCode": 90001}
Field | Type | Description |
ActionStatus | String | Request result. OK : Successful; FAIL : Failed |
ErrorCode | Integer | Error code. 0 : Successful; other values: Failed |
ErrorInfo | String | Error information |
MsgTime | Integer | Message timestamp in the UNIX format |
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 |
20001 | Invalid request. |
20002 | UserSig or A2 has expired. |
20003 | The UserID of the sender or recipient is invalid or does not exist. Make sure that the UserID has been imported into Chat. |
20004 | Network exception. Try again. |
20005 | Internal server error. Try again. |
20006 | The callback before sending a one-to-one message was triggered, and the app backend returned a response to forbid delivering the message. |
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. |
90003 | The JSON request does not contain the To_Account field or the To_Account field is not a string. |
90005 | The JSON request does not contain the MsgRandom field or the MsgRandom field is not an integer. |
90007 | The MsgBody field in the JSON request is not an array. Change it to an array. |
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. |
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. |
90031 | The SyncOtherMachine field in the JSON request is not an integer. |
90044 | The MsgLifeTime field in the JSON request is not an integer. |
91000 | Internal service error. Try again. |
90992 | Internal service error. Try again. If this error code is returned for all requests and third-party callback is enabled, make sure the app server returns the callback results to the Chat backend normally. |
93000 | The JSON packet exceeds the maximum size of 12 KB. |
90048 | The requested account does not exist. |
Was this page helpful?