New to Telerik UI for BlazorStart a free 30-day trial

Chat Events

Updated on Sep 18, 2025

The Telerik UI for Blazor Chat component exposes various events that allow you to implement custom functionality and handle user interactions. This article lists the available events and provides examples for the most common use cases.

OnSendMessage

The OnSendMessage event fires when a user sends a new message. Use this event to handle message processing, validation, and persistence.

Handle the OnSendMessage event

<TelerikChat Data="@ChatData"
             OnSendMessage="@OnChatSendMessage">
</TelerikChat>

@code {    
    private List<ChatMessage> ChatData { get; set; } = new List<ChatMessage>();

    private string CurrentUserId { get; set; } = "user1";

    private void OnChatSendMessage(ChatSendMessageEventArgs args)
    {
        var newMessage = new ChatMessage
        {
            Id = Guid.NewGuid().ToString(),
            Content = args.Message,
            AuthorId = CurrentUserId,
            Timestamp = DateTime.Now
        };

        ChatData.Add(newMessage);
    }

    public class ChatMessage
    {
        public string Id { get; set; }
        public string AuthorId { get; set; }
        public string AuthorName { get; set; }
        public string AuthorImageUrl { get; set; }
        public string Content { get; set; }
        public string MessageToReplyId { get; set; }
        public string Status { get; set; }
        public bool IsDeleted { get; set; }
        public bool IsPinned { get; set; }
        public DateTime Timestamp { get; set; }
        public List<string> SuggestedActions { get; set; }
        public IEnumerable<FileSelectFileInfo> Attachments { get; set; } = new List<FileSelectFileInfo>();
    }
}

OnSuggestionClick

The OnSuggestionClick event fires when a user clicks on a quick reply suggestion. You can use this event to customize suggestion handling.

Handle suggestion clicks

<TelerikChat Data="@ChatData"
             @ref="@ChatRef"
             Suggestions="@ChatSuggestions"
             OnSuggestionClick="@OnChatSuggestionClick">
</TelerikChat>

@code {    
    private TelerikChat<ChatMessage>? ChatRef { get; set; }
    
    private List<ChatMessage> ChatData { get; set; } = new();
    
    private List<string> ChatSuggestions { get; set; }
    
    protected override void OnInitialized()
    {
        ChatData = new List<ChatMessage>();
        
        ChatSuggestions = new List<string>
        {
            "Request project status update"
        };
    }

    private void OnChatSuggestionClick(ChatSuggestionClickEventArgs args)
    {
        string responseMessage = string.Empty;

        if (args.Suggestion == "Request project status update")
        {
            responseMessage = "Could you please provide the current status of all ongoing projects?";
        }

        ChatData.Add(new ChatMessage
        {
            Id = Guid.NewGuid().ToString(),
            AuthorId = "user2",
            AuthorName = "Jane Doe",
            Content = responseMessage,
            Status = "Sent",
            Timestamp = DateTime.Now
        });

        ChatRef?.Refresh();
    }
}

OnDownload

The OnDownload event fires when a user downloads files from a message. Use this event to handle file access, logging, or custom download logic.

Handle file downloads

RAZOR
<TelerikChat Data="@ChatData"
             OnDownload="@OnChatDownload">
</TelerikChat>

@code {  
    private async Task OnChatDownload(ChatDownloadEventArgs args)
    {
        foreach (var file in args.Files)
        {
            // Log download activity
            await LogFileDownload(file.Name, args.MessageId);
            
            // Implement custom download logic
            await ProcessFileDownload(file);
        }
    }
}

OnMessageUnpin

The OnMessageUnpin event fires when a user unpins a message. Handle this event to update your data model and persist the change.

Handle message unpinning

RAZOR
<TelerikChat Data="@ChatData"
             OnMessageUnpin="@OnChatMessageUnpin">
</TelerikChat>

@code {    
    private void OnChatMessageUnpin(ChatMessageUnpinEventArgs args)
    {
        var message = ChatData.FirstOrDefault(m => m.Id == args.MessageId);
        if (message != null)
        {
            message.IsPinned = false;
        }
    }
}

OnInputValueChanged

The OnInputValueChanged event fires when the input value changes. Use this for real-time validation, auto-save drafts, or typing indicators.

Handle input value changes

RAZOR
<TelerikChat Data="@ChatData"
             InputValue="@ChatInputValue"
             OnInputValueChanged="@OnChatInputValueChanged">
</TelerikChat>

@code {
    private string ChatInputValue { get; set; } = string.Empty;

    private void OnChatInputValueChanged(string newValue)
    {
        ChatInputValue = newValue;
    }
}

Event Arguments

The Chat events provide specific argument types with relevant data:

EventArguments TypeKey Properties
OnSendMessageChatSendMessageEventArgsMessage, Files, ReplyMessageId
OnSuggestionClickChatSuggestionClickEventArgsSuggestion, IsCancelled
OnDownloadChatDownloadEventArgsFiles, MessageId
OnMessageUnpinChatMessageUnpinEventArgsMessageId
OnInputValueChangedstringThe current input value

See Also