After setting this callback, when a user sends a message to a one-on-one chat, group chat or room chat, In-app Chat will initiate a request to your business server, and you can perform real-time operations on the message through the response, such as:
Based on the value of the response from your business server, you can make one of the following four judgments on whether to send the message:
Value | Judgment | Whether to send the message | Result returned to the message sender | Whether the message recipient can receive the message |
---|---|---|---|---|
0 | Neutral (not judged whether to send) | Send | Sent | Receivable |
1 | Send | Send | Sent | Receivable |
2 | Silently send | Send | Sent | Not receivable |
3 | Do not send | Do not send | Not sent | Not receivable |
Request method: POST/JSON
The callback data format is JSON, and you need to perform UrlDecode decoding on it.
Request endpoint: Contact ZEGOCLOUD Technical Support to configure the corresponding callback endpoint.
Transmission protocol: HTTPS/HTTP (HTTPS is recommended.)
Public parameters | Type | Description |
---|---|---|
appid |
String |
A unique identifier for the App. |
event |
String |
Callback event, the return value of this callback is before_send_msg . |
nonce |
String |
Random number, used to calculate signature. |
signature |
String |
The verification string, see Authenticating server-to-server callbacks for details. |
timestamp |
Int |
The current server time in Unix timestamp format, in seconds, used to calculate the signature. |
request_id |
String |
Request ID. |
Business parameters | Type | Description |
from_user_id |
String |
Message sender ID. |
conv_id |
String |
Target session ID. |
conv_type |
Int |
Target session type:
|
msg_id |
String |
Message ID, which can be used to determine the uniqueness of the message. |
payload |
String |
Extra field. |
msg_type |
Int |
Message type:
|
sub_msg_type |
Int |
The specific custom type. The value is filled in when the user sends a custom message, and the value range is [0,200]. This parameter is meaningful only when msg_type is 200 (custom type). |
msg_body |
String |
Message content.
|
We recommend that you convert some parameters to Int for logical processing. The relevant fields include appid
and nonce
.
Parameters | Type | Description |
---|---|---|
md5 | String | The MD5 value of the file. |
file_name | String | File name. |
file_size | String | File size in bytes. |
download_url | String | Download URL. |
media_duration | String | Audio and Video duration, in seconds. |
{
"appid": "1",
"event": "before_send_msg",
"from_user_id": "sender",
"conv_id": "receiver",
"request_id": "3501907290370176",
"msg_id": "1234232421343",
"conv_type": 0,
"timestamp": 1499676968,
"msg_body": "msg_body",
"msg_type": 1,
"signature": "abc",
"nonce": "321",
"sub_msg_type": 0,
"payload": "payload"
}
Parameters | Type | Description |
---|---|---|
result | Int | The value of your business server response to determine whether to send the message.
|
{
"result": 0
}
Returning an HTTP status code of 2XX (e.g., 200) indicates success, and other responses indicate failure.
If the ZEGOCLOUD server does not receive a response, it will retry after 3 seconds. If the callback fails after the second retry, it will no longer be retried and an exception is judged.
When the ZEGOCLOUD client initiates a request to you, if an exception occurs on your business server, no message will be sent by default. If you want to send messages by default, contact ZEGOCLOUD Technical Support.