val message = Message(
text = "You and Jane are now matched!",
user = systemUser,
silent = true,
)
channelClient.sendMessage(message).enqueue { /* ... */ }
Silent & System Messages
Sometimes you want to add system or transactional messages to channels such as: “your ride is waiting for you”, “James updated the information for the trip”, “You and Jane are now matched” and so on.
You may not want these messages to mark a channel as unread or increase the unread messages for users.
Silent messages are special messages that don’t increase the unread messages count nor mark a channel as unread. Creating a silent message is very simple, you only need to include the silent
field boolean field and set it to true
.
const text = 'You completed your trip';
const message = {
text,
user: systemUser,
silent: true,
attachments: [{type:'trip', ...tripData}]
};
await channel.sendMessage(message);
let channelController = client.channelController(for: .init(type: .messaging, id: "general"))
channelController.createNewMessage(text: "hello!", isSilent: true)
final text = 'You completed your trip';
const message = {
text: text,
user: systemUser,
silent: true,
attachments: tripAttachments,
};
await channel.sendMessage(message);
FMessage Message{TEXT("You completed your trip")};
Message.User = SystemUser;
Message.bIsSilent = true;
Channel->SendMessage(Message);
$message = $channel->sendMessage([
'text' => 'You completed your trip',
'silent' => true
],
'jenny');
message = {
"text": "You completed your trip",
"silent": True,
}
channel.send_message(message, user_id)
message = {
text: "You completed your trip",
silent: true,
}
channel.send_message(message, user_id)
msg := &Message{Text: "You completed your trip"}
channel.SendMessage(ctx, msg, user.ID, func(msg *messageRequest) {
msg.Message.Silent = true
})
await messageClient.SendMessageAsync(channel.Type, channel.Id, new MessageRequest
{
Text = "You completed your trip",
Silent = true,
}, user.Id);
// This message will not trigger events for channel members
var silentMessage = await channel.SendNewMessageAsync(new StreamSendMessageRequest
{
Text = "System message",
Silent = true
});
// Android SDK
Message message = new Message();
message.setText("You and Jane are now matched!");
message.setUser(systemUser);
message.setSilent(true);
channelClient.sendMessage(message).enqueue(result -> { /* ... */ });
// Backend SDK
Message.send(type, id)
.message(
MessageRequestObject.builder()
.text("You completed your trip")
.userId(systemUserId)
.silent(true)
.build())
.request();
Existing messages cannot be turned into a silent message or vice versa.
Silent replies will still increment a message’s reply_count
Silent messages do send push notifications by default. To skip our push notification service, mark the message with skip_push: true, as described here.
It is also possible to send system messages. System messages differ from normal messages in the way they are presented to the user. Like the name says, system messages are normally send from the system itself, but a user is able to send it as well by specifying type: 'system'
with the message. The user who sends a system message client-side should have the Create System Message
permission. Server-side system messages don’t need that permission.
const text = 'You completed your trip';
const message = {
text,
user: systemUser,
type: 'system'
};
await channel.sendMessage(message);
$message = $channel->sendMessage([
'text' => 'You completed your trip',
'type' => 'system'
],
'jenny');
message = {
"text": "You completed your trip",
"type": "system",
}
channel.send_message(message, user_id)
message = {
text: "You completed your trip",
type: "system",
}
channel.send_message(message, user_id)
msg := &Message{
Text: "You completed your trip",
Type: "system"
}
resp, err := ch.SendMessage(ctx, msg, systemUserID)
// Backend SDK
Message.send(type, id)
.message(
MessageRequestObject.builder()
.text(text)
.type(MessageType.SYSTEM)
.userId(systemUserId)
.build())
.request();