logo
In-app Chat
Powered Byspreading
On this page

Callback on message not sent yet


Description

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:

  • Recording chat messages and intercepting requests for inappropriate speech;
  • Implementing black and white list functions to determine which messages can be sent normally.
Warning
  • The supported message types for this callback are text messages, image messages, file messages, audio messages, video messages, and custom messages. command messages and barrage messages are not supported.
  • This callback only supports messages sent via the client SDK. If messages are sent through the server, your business backend will not receive this callback.

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:

ValueJudgmentWhether to send the messageResult returned to the message senderWhether the message recipient can receive the message
0Neutral (not judged whether to send)SendSentReceivable
1SendSendSentReceivable
2Silently sendSendSentNot receivable
3Do not sendDo not sendNot sentNot receivable

Callback request

  • Request method: POST/JSON
Note
  • The callback data needs to be decoded by UrlDecode.
  • When using the POST request method to pass parameters:
    • The parameters in the body can be directly passed in the JsonObject format, without the need to serialize them into a string format.
    • In the headers, set "Content-type" to "application/json".
  • Request endpoint: Contact ZEGOCLOUD Technical Support to configure the corresponding callback endpoint.

  • Transmission protocol: HTTPS/HTTP (HTTPS is recommended.)

Request parameters

Public parametersTypeDescription
appidStringA unique identifier for the App.
eventStringCallback event, the return value of this callback is before_send_msg.
nonceStringRandom number, used to calculate signature.
signatureStringThe verification string, see Authenticating server-to-server callbacks for details.
timestampIntThe current server time in Unix timestamp format, in seconds, used to calculate the signature.
request_idStringRequest ID.
Business parametersTypeDescription
from_user_idStringMessage sender ID.
conv_idStringTarget session ID.
conv_typeIntTarget session type:
  • 0: One-on-one chat.
  • 1: Room chat.
  • 2: Group chat.
msg_idStringMessage ID, which can be used to determine the uniqueness of the message.
payloadStringExtra field.
msg_typeIntMessage type:
  • 1: Text.
  • 11: Images.
  • 12: File.
  • 13: Audio.
  • 14: Video.
  • 200: Custom.
sub_msg_typeIntThe 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_bodyStringMessage content.
  • When msg_type is 1 (text type) or 200 (custom type), msg_body is the message content passed in when sending a message, and you can directly read the message content.
  • When msg_type is 11, 12, 13, 14, that is, when the message is a media type, msg_body is a JSON string. Please use URLDecode to decode this JSON string, and parse this JSON string according to the multimedia message structure, and then obtain each field data in the message.
Note

We recommend that you convert some parameters to Int for logical processing. The relevant fields include appid and nonce.

msg_body JSON string parsing result parameter description

ParametersTypeDescription
md5StringThe MD5 value of the file.
file_nameStringFile name.
file_sizeStringFile size in bytes.
download_urlStringDownload URL.
media_durationStringAudio and Video duration, in seconds.

Callback example

Untitled
{
    "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"
}
1
Copied!

Response parameters

ParametersTypeDescription
resultIntThe value of your business server response to determine whether to send the message.
  • 0: neutral (do not judge whether to send).
  • 1: Send.
  • 2: Push silently.
  • 3: Do not send.
  • Others: default to be neutral.

Sample response

Untitled
{
    "result": 0
}
1
Copied!

Return response

Returning an HTTP status code of 2XX (e.g., 200) indicates success, and other responses indicate failure.

Retry mechanism

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.

Note

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.

Previous

Call invitation timed out

Next

Message sent