• UIKit
  • SDK
  • サーバー API
Chat/
サーバー API/
RESTful インターフェース/
メッセージ関連/
メッセージ送信/
サーバー API
  • UserSig の生成
  • RESTful インターフェース
    • RESTful インターフェースの概要
    • RESTful インターフェースリスト
    • メッセージ関連
      • メッセージ送信
        • 単一ユーザーへのシングルチャットメッセージの送信
        • 複数のユーザーへのシングルチャットメッセージの送信
        • グループ内で一般的なメッセージを送信
        • グループでシステムメッセージを送信
        • ライブブロードキャストグループのブロードキャストメッセージ
        • シングルメッセージのインポート
        • グループメッセージのインポート
      • 過去のメッセージ
        • 過去のシングルチャットメッセージの変更
        • 過去のグルップチャットメッセージの変更
        • 過去のシングルチャットメッセージの取得
        • 過去のグルップチャットメッセージの取得
      • メッセージ削除
        • 指定されたユーザーが送信したメッセージを削除
      • メッセージの取り消し
        • シングルチャットメッセージの取り消し
        • グループメッセージの取り消し
      • 既読レシート
        • シングルチャットメッセージを既読に設定
        • グループメッセージの既読レシート詳細の取得
        • グループメッセージの既読レシートの取得
      • メッセージ拡張
        • シングルチャットメッセージ拡張の取得
        • シングルチャットメッセージ拡張の設定
        • グループメッセージ拡張の取得
        • グループメッセージ拡張の設定
      • すべてのユーザーにプッシュします
        • 全員プッシュインタフェース
        • すべてのユーザーにプッシュします
        • アプリケーションプロパティ名の設定
        • アプリケーションプロパティ名の取得
        • ユーザープロパティの取得
        • ユーザープロパティの設定
        • ユーザープロパティの削除
        • ユーザーフラグの取得
        • ユーザーフラグの追加
        • ユーザーフラグの削除
        • ユーザーのすべてのフラグを削除
    • セッション関連
      • セッションリスト
        • セッションリストの取得
      • 未読セッション数
        • メンバーの未読メッセージ数の設定
        • 未読シングルチャットメッセージ数を照会
      • セッションの削除
        • セッションの削除
      • セッショングループフラグ
        • セッショングループデータの作成
        • セッショングループデータの更新
        • セッショングループデータの削除
        • セッションフラグデータの作成・更新
        • セッショングループフラグの検索
        • セッショングループマークデータの取得
    • グループ関連
      • グループ管理
        • アプリケーション内のすべてのグループを取得
        • グループの作成
        • グループの解散
        • ユーザーが参加しているグループを取得します
      • グループプロファイル
        • グループプロファイルの取得
        • グループプロファイルの変更
        • グループプロファイルのインポート
      • グループメンバーの管理
        • グループメンバーの追加
        • グループメンバーの削除
        • グループメンバーのブロック
        • グループメンバーのブロック解除
        • 一括発言禁止と発言禁止の解除
        • 発言を禁止されているグループメンバーのリストを取得
        • グループオーナーの変更
        • グループ内のユーザーの身分を照会
        • グループメンバーのインポート
      • グループメンバーの情報
        • グループメンバープロファイルの取得
        • グループメンバープロファイルの変更
      • グループのカスタムプロパティ
        • グループのカスタムプロパティの取得
        • グループのカスタムプロパティの変更
        • グループのカスタムプロパティをクリアします
        • グループのカスタムプロパティをリセットします
        • グループのカスタムプロパティを削除します
      • ライブブロードキャストグループ管理
        • ライブブロードキャストグループのオンライン人数の取得
        • ライブブロードキャストグループメンバーのリストを取得
        • ライブブロードキャストグループメンバーのフラグ設定
        • ブロックされているグループメンバーのリストを取得
      • コミュニティ管理
        • トピックの作成
        • トピックの削除
        • トピックプロファイルの取得
        • トピックプロファイルの変更
        • トピック資料のインポート
      • グループカウンター
        • グループカウンターの取得
        • グループカウンターの更新
        • グループカウンターの削除
    • ユーザー管理
      • アカウント管理
        • シングルアカウントのインポート
        • 複数アカウントのインポート
        • アカウント削除
        • アカウントの検索
      • ユーザー情報
        • プロファイルの設定
        • プロファイルの取得
      • ユーザー状態
        • アカウントのログイン状態が無効になりました。
        • アカウントのオンライン状態の確認
      • 友達管理
        • 友達の追加
        • 友達のインポート
        • 友達の更新
        • 友達の削除
        • すべての友達を削除
        • 友達の検証
        • 友達の取得
        • 指定友達の取得
      • 友達リスト
        • リストを追加
        • リストの削除
        • リストの取得
      • ブラックリスト
        • ユーザーをブラックリストに追加します
        • ユーザーをブラックリストから削除
        • ブラックリストの取得
        • ブラックリスト内のユーザーの検証
    • 全員発言禁止の管理
      • 全員発言禁止の設定
      • 全員発言禁止の照会
    • メンテナンス管理
      • メンテナンスデータの取得
      • 最新メッセージのダウンロード
      • サーバー IP アドレスの取得
    • スマートロボット
      • スマートロボットのアカウントを取得
      • スマートロボットのアカウントを作成
      • スマートロボットのアカウントを削除
  • トリガー
    • コールバックの概要
    • コールバックコマンドリスト
    • メンテナンス管理コールバック
      • インターフェースオーバークロックアラームコールバック
    • オンライン状態のコールバック
      • 状態変更コールバック
    • リレーションシップチェーンコールバック
      • プロファイル更新後
      • 友達を追加する前
      • 友達追加に応答する前
      • 友達を追加した後
      • 友達を削除した後
      • ユーザーをブラックリストに追加した後
      • ユーザーをブラックリストから削除した後
    • シングルメッセージのコールバック
      • シングルチャットメッセージを送信する前
      • シングルチャットメッセージを送信した後
      • シングルチャットメッセージを既読に設定した後
      • シングルチャットメッセージを取り消した後
    • グループコールバック
      • グループを作成する前
      • グループ作成後
      • グループ加入を申し込む前
      • グループに追加する前
      • ユーザーがグループに参加した後
      • メンバーがグループから退出した後
      • グループメッセージを送信する前
      • グループメッセージを送信した後
      • グループが満員になった後
      • グループ解散後
      • グループプロファイル変更後
      • グループメッセージ取り消し後のコールバック
      • ライブブロードキャストグループメンバーのオンライン・オフライン状態のコールバック
      • グループメッセージ送信異常のコールバック
      • トピックを作成する前
      • トピックを作成した後
      • トピック削除後
      • トピック情報変更コールバック
      • グループメンバープロファイル変更後のコールバック
      • グループプロパティ変更後のコールバック
      • 既読レシートの後のコールバック
      • グループオーナー変更後のコールバック
    • コールバック相互認証設定ガイド
      • Apache 相互認証の設定
      • Nginx 相互認証の設定
    • スマートロボットのコールバック
      • スマートロボットのシングルチャットメッセージのカスタムコールバック
このページは現在英語版のみで提供されており、日本語版も近日中に提供される予定です。ご利用いただきありがとうございます。

単一ユーザーへのシングルチャットメッセージの送信

Feature Overview

When the admin sends a message to an account, the sender displayed to the recipient is the admin.
When the admin specifies an account to send a message to another account, the sender displayed to the recipient is not the admin, but the account specified by the admin.
This API does not check whether the sender and the recipients are friends or blocklisted by either party or whether the senders are muted.
This API does not check whether the recipient has muted notifications for messages from the sender by default. If needed, enter WithMuteNotifications in the SendMsgControl parameter.
For one-to-one messages, the 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.
Caution
When calling this API to send a one-to-one message, you must specify whether to synchronize the message to the sender, which is the admin account or the account specified by the admin. Synchronization can be implemented via online terminals and roaming servers. This API provides the SyncOtherMachine parameter to determine whether to synchronize the message. For more information, see Sample requests below.

Sample request URL

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

Request parameters

The following table describes the modified parameters when this API is called. For other parameters, see RESTful API Overview.
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
App admin account. For more information, see the App Admin section in Login Authentication.
usersig
Signature generated by the app admin account. For details, see Generating UserSig.
random
A random 32-bit unsigned integer ranging from 0 to 4294967295.
contenttype
Request format, which should always be json.

Maximum call frequency

200 calls per second

Sample request

Here, we use sending a text message as an example. To send messages of other types, set MsgBody to the corresponding message type. For more information, see Message Formats.

The admin sends a message to another account.

Caution
If you do not want to synchronize the message to 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
}

The admin sends a message to another account and forbids callbacks for the message.

Caution
If you do not want to synchronize the message to 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"
}

The admin specifies an account to send a message to another account and set the information of offline push, without synchronizing the message to From_Account.

Caution
If you do not want to synchronize the message to 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
}
}
}

The admin specifies an account to send a message to another account, and specifies that the message will only be sent to online users, and no historical chat records will be stored (set OnlineOnlyFlag as 1).

Caution
To synchronize the message to 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"
}

Request fields

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.
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
The information to be pushed offline. For more information, see Message Formats.
IsNeedReadReceipt
Integer
No
Whether the message requires a read receipt. 0: No. 1: Yes. The default value is 0.

Sample response

Response to a successful request
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0,
"MsgTime": 1572870301,
"MsgKey": "89541_2574206_1572870301"
}
Response to a failed request
{
"ActionStatus": "FAIL",
"ErrorInfo": "Fail to Parse json data of body, Please check it",
"ErrorCode": 90001
}

Response fields

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.

Error Codes

The returned HTTP status code for this API is always 200 unless a network error (such as error 502) occurs. The specific error code and details can be found in the response fields 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.

API Debugging Tool

Use the RESTful API online debugging tool to debug this API.

Reference

Sending One-to-One Messages to Multiple Users (v4/openim/batchsendmsg) Querying One-to-One messages (v4/openim/admin_getroammsg) Recalling One-to-One Messages (v4/openim/admin_msgwithdraw)

Possible Webhooks