Sending Messages in a Official Account
Feature Overview
App Administrators can use this api to send ordinary messages to all subscribers following the official account.
The maximum sending frequency for a single official account is 1 message/sec, with up to 2 broadcast messages per hour.
If the content of two messages is identical within 5 minutes, the latter will be discarded as a duplicate message.
API Calling Description
Sample request URL
https://xxxxxx/v4/official_account_open_http_svc/send_official_account_msg?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
Request parameters
The table below only lists the parameters modified when calling this API and their descriptions. For more details on the parameters, please refer to RESTful API Overview.
Parameter | Description |
xxxxxx | The dedicated domain for 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/official_account_open_http_svc/send_official_account_msg | 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 fixed value: json |
Maximum calling frequency
200 queries/sec.
Sample request packets
Basic Form
Sending Regular Official Account Messages.
{"Official_Account": "@TOA#_2C5SZEAEF","Random": 9875,"MsgBody": [ // Message body, consists of an element array, see field description for details, messages with the same content within five minutes are considered duplicates{"MsgType": "TIMTextElem", // Text"MsgContent": {"Text": "red packet"}},{"MsgType": "TIMFaceElem", // Expression"MsgContent": {"Index": 6,"Data": "abc\u0000\u0001"}}],"CloudCustomData": "your cloud custom data","OfflinePushInfo": {"PushFlag": 0, // Normal push,"Desc": "Offline Push Content","Ext": "This is the transmitted content","AndroidInfo": {"Sound": "android.mp3"},"ApnsInfo": {"Sound": "apns.mp3","BadgeMode": 1, // This field is omitted or 0 means counting is required, 1 means this message does not require counting, i.e., the number on the upper right corner icon does not increase"Title":"apns title", // apns title"SubTitle":"apns subtitle", // apns subtitle"Image":"www.image.com" // image url}}}
Specifies that the message does not update the recent contact session
If SendMsgControl is specified in the message, setting NoLastMsg means it does not update the recent contact session.
{"Official_Account": "@TOA#_2C5SZEAEF","Random": 9875,"SendMsgControl":["NoLastMsg"],// Specifies that the message does not trigger an update to the recent contact session."MsgBody": [ // Message body, consists of an element array, see field description for details, messages with the same content within five minutes are considered duplicates{"MsgType": "TIMTextElem", // Text"MsgContent": {"Text": "red packet"}},{"MsgType": "TIMFaceElem", // Expression"MsgContent": {"Index": 6,"Data": "abc\u0000\u0001"}}]}
Specifies that the message does not trigger a callback
With callback function enabled, users can control whether a single message triggers a callback through ForbidCallbackControl, by default, a callback is initiated.
{"Official_Account": "@TOA#_2C5SZEAEF","Random": 9875,"ForbidCallbackControl":["ForbidBeforeSendMsgCallback","ForbidAfterSendMsgCallback"], // Prohibit callback control option"MsgBody": [ // Message body, consists of an element array, see field description for details, messages with the same content within five minutes are considered duplicates{"MsgType": "TIMTextElem", // Text"MsgContent": {"Text": "red packet"}},{"MsgType": "TIMFaceElem", // Expression"MsgContent": {"Index": 6,"Data": "abc\u0000\u0001"}}]}
Specifies that the message will not be stored offline or for roaming
If OnlineOnlyFlag is specified in the message body, as long as its value is greater than 0, it indicates that the message will only be sent online and will not be stored for offline or roaming.
{"Official_Account": "@TOA#_2C5SZEAEF","Random": 9875,"OnlineOnlyFlag": 1, // Indicates that the message is only sent online (only online subscribers can receive it), and is not stored for offline or roaming"MsgBody": [ // Message body, consists of an element array, see field description for details, messages with the same content within five minutes are considered duplicates{"MsgType": "TIMTextElem", // Text"MsgContent": {"Text": "red packet"}},{"MsgType": "TIMFaceElem", // Expression"MsgContent": {"Index": 6,"Data": "abc\u0000\u0001"}}]}
Request packet fields
Field | Type | Attribute | Description |
Official_Account | String | Mandatory | Official Account Users sending messages. |
Random | Integer | Mandatory | Unsigned 32-bit integer (range: 0 to 4294967295). If the content and Random value of two messages are the same within 5 minutes, the latter message will be considered a duplicate and discarded. |
MsgBody | Array | Mandatory | |
OfflinePushInfo | Object | Optional | |
ForbidCallbackControl | Array | Optional | Message callback prohibition switch, applies only to individual messages, ForbidBeforeSendMsgCallback indicates prohibiting callback before sending a message, ForbidAfterSendMsgCallback indicates prohibiting callback after sending a message |
OnlineOnlyFlag | Integer | Optional | 1 indicates the message is sent only to online subscribers, default 0 indicates sending to all subscribers |
SendMsgControl | Array | Optional | Message sending permissions, NoLastMsg applies only to individual messages, indicates not updating the latest conversation (If the message's OnlineOnlyFlag is set to 1, then this field should not be used.) |
CloudCustomData | String | Optional | Custom message data (stored in the cloud, will be sent to the peer, and can be retrieved even after the app is uninstalled and reinstalled). |
Sample response packets
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"MsgTime": 1497249503,"MsgKey": "89541_1_1572870301"}
Response packet field description
Field | Type | Description |
ActionStatus | String | Processed Request Result: OK: Indicates successful processing FAIL: Indicates failure |
ErrorCode | Integer | Error Identifier: 0: Indicates success Non-zero: Indicates failure |
ErrorInfo | String | Error message |
MsgTime | Integer | Timestamp of when the message is sent, corresponding to the server time |
MsgKey | String | Unique Message Identifier, used for recall. Length must not exceed 50 characters |
Error codes
Unless a network error occurs (such as a 502 error), the HTTP return code for this interface is always 200. The real error code and error message are indicated by ErrorCode, ErrorInfo in the response body.
Common error codes (60000 to 79999) can be found in the Error Codes document.
The private error codes for this API are as follows:
Error code | Description |
10002 | Internal server error. Please try again. |
10004 | Invalid parameters. Please check the request based on the error description. |
10007 | Insufficient operational permissions. |
10010 | The official account user does not exist, or it may have existed but has now been disbanded. |
10015 | Official Account User ID is invalid, please check if the Official Account User ID is correctly filled. |
10016 | The App backend refuses this operation through Third-party Callback. |
10017 | Unable to send messages due to being muted, please check if the sender has been set to mute. |
10023 | The frequency of sending messages exceeds the limit, please extend the interval between two message sending times. |
80002 | The message content is too long, currently supporting up to 12K Bytes of messages, please adjust the length of the message. |
API Debugging Tool
Reference
Possible Trigger Callbacks