Skip to main content

syncfusion-aspnetmvc-chat-ui

Implement a real-time Chat UI with Syncfusion ASP.NET MVC ChatUI component. Use when building chat interfaces, messaging apps, bot integrations, or interactive conversations. Covers messages, header/footer, templates, events, methods, file attachments, typing indicators, mentions, globalization, speech-to-text, and bot integrations.

소스 정보

저장소
syncfusion/aspnetmvc-ui-components-skills
최근 소스 활동
2026년 7월 17일 07:09
감지된 SKILL.md 언어
영어
스타
0
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
11 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
syncfusion-aspnetmvc-chat-ui
description
Implement a real-time Chat UI with Syncfusion ASP.NET MVC ChatUI component. Use when building chat interfaces, messaging apps, bot integrations, or interactive conversations. Covers messages, header/footer, templates, events, methods, file attachments, typing indicators, mentions, globalization, speech-to-text, and bot integrations.
metadata
{"author":"Syncfusion Inc","version":"34.1.29"}
# Syncfusion ASP.NET MVC Chat UI The Syncfusion ASP.NET MVC Chat UI (`Syncfusion.EJ2.InteractiveChat.ChatUI`) is a feature-rich conversational interface component for building real-time chat applications, AI assistants, and bot integrations. It supports structured messages, user avatars, typing indicators, file attachments, mention tagging, markdown rendering, and extensive template customization. ## Navigation Guide ### Getting Started 📄 **Read:** [references/getting-started.md](references/getting-started.md) - NuGet package installation (`Syncfusion.EJ2.MVC5`) - Namespace, stylesheet, and script references - Script manager registration - Basic Chat UI rendering with `@Html.EJS().ChatUI()` - Configuring initial messages and current user ### Messages 📄 **Read:** [references/messages.md](references/messages.md) - `ChatUIMessage` model: `Text`, `Id`, `Author`, `Timestamp`, `Status`, `AttachedFile` - Pinned messages, reply-to threading (`ChatUIReplyTo` with `Timestamp`, `TimestampFormat`, `MentionUsers`), forwarded messages - Compact mode, auto-scroll, quick reply suggestions - Message toolbar with `MessageToolbarItemClickedEventArgs` (`item`, `message`, `cancel`, `event`) - Message status: `IconCss`, `Text`, `Tooltip` usage - Markdown content rendering with `marked` + `DOMPurify` ### User Configuration 📄 **Read:** [references/user-configuration.md](references/user-configuration.md) - `ChatUIUser` model: `Id`, `User`, `AvatarUrl`, `AvatarBgColor`, `CssClass`, `StatusIconCss` - Defining the current user with the `User` property - Avatar images, fallback initials, background color - Presence status icons (online, offline, busy, away) ### Header and Toolbar 📄 **Read:** [references/header-and-toolbar.md](references/header-and-toolbar.md) - Show/hide header (`ShowHeader`), header text and icon - `ChatUIToolbarSettings` — header toolbar items - Toolbar item properties: `IconCss`, `Type`, `Text`, `Visible`, `Disabled`, `Tooltip`, `CssClass`, `Align`, `TabIndex`, `Template` - `ItemClicked` event handler ### Footer and Templates 📄 **Read:** [references/footer-and-templates.md](references/footer-and-templates.md) - Show/hide footer (`ShowFooter`), custom footer template - Empty chat template, message template, suggestion template - Typing users template, time break template - Template context variables (`message`, `index`, `users`, `messageDate`, `suggestion`) ### Events and Methods 📄 **Read:** [references/events-and-methods.md](references/events-and-methods.md) - `Created`, `MessageSend`, `UserTyping` events with full event args (`cancel`, `isTyping`, `message`, `user`, `itemData`) - `addMessage()` — add message as string or object - `updateMessage()` — edit an existing message by ID - `scrollToBottom()` — programmatic scroll to latest message - `scrollToMessage(messageId)` — scroll to a specific message by ID - `focus()` — programmatically focus the chat input textarea - Accessing the ChatUI instance via `ej.base.getInstance()` ### Appearance and Layout 📄 **Read:** [references/appearance-and-layout.md](references/appearance-and-layout.md) - Placeholder, `Width`, `Height`, `CssClass` - Timestamps (`ShowTimeStamp`, `TimeStampFormat`) - Time breaks (`ShowTimeBreak`, `TimeBreakTemplate`) - Typing indicator (`TypingUsers`) - Load on demand (`LoadOnDemand`) for long conversation histories - Persistence (`EnablePersistence`) — save and restore state across page reloads ### File Attachments 📄 **Read:** [references/file-attachments.md](references/file-attachments.md) - Enable file attachments (`EnableAttachments`) - `AttachmentSettings`: `SaveUrl`, `RemoveUrl`, `AllowedFileTypes`, `MaxFileSize`, `SaveFormat`, `Path` - Drag-and-drop, maximum file count - Custom attachment and preview templates - Pre-populating attachments on messages at initial render (`AttachedFile`) - Attachment lifecycle events and `ChatAttachmentClickEventArgs` (`file`, `cancel`, `event`) ### Mentions and Globalization 📄 **Read:** [references/mentions-and-globalization.md](references/mentions-and-globalization.md) - `MentionUsers` list, `@` mention trigger popup - Custom trigger character (`MentionTriggerChar`) - Predefined mentions in message text using `{0}`, `{1}` placeholders - `MentionSelect` event - Localization (`Locale`, `ej.base.L10n.load`) and RTL (`EnableRtl`) ### Bot Integrations and Speech-to-Text 📄 **Read:** [references/bot-integrations.md](references/bot-integrations.md) - Microsoft Bot Framework (Direct Line) integration - Google Dialogflow integration - Speech-to-Text via Web Speech API + `SpeechToText` component - Secure token server pattern - `MessageSend` + `addMessage()` integration pattern - Troubleshooting common bot connection issues --- ## Quick Start Example **Controller (`HomeController.cs`):** ```csharp using Syncfusion.EJ2.InteractiveChat; public ActionResult Index() { var currentUser = new ChatUIUser { Id = "user1", User = "Albert" }; var otherUser = new ChatUIUser { Id = "user2", User = "Michale Suyama" }; var messages = new List<ChatUIMessage> { new ChatUIMessage { Text = "Hi Michale, are we on track for the deadline?", Author = currentUser }, new ChatUIMessage { Text = "Yes, the design phase is complete.", Author = otherUser }, new ChatUIMessage { Text = "I'll review it and send feedback by today.", Author = currentUser } }; ViewBag.CurrentUser = currentUser; ViewBag.Messages = messages; return View(); } ``` **View (`Index.cshtml`):** ```razor @using Syncfusion.EJ2.InteractiveChat <div style="height:400px; width:450px;"> @Html.EJS().ChatUI("chatUI") .User(ViewBag.CurrentUser) .Messages(ViewBag.Messages) .HeaderText("Team Chat") .Render() </div> ``` **Required layout references (`_Layout.cshtml`):** ```html <head> <link rel="stylesheet" href="https://cdn.syncfusion.com/ej2/{{ site.ej2version }}/fluent.css" /> <script src="https://cdn.syncfusion.com/ej2/{{ site.ej2version }}/dist/ej2.min.js"></script> </head> <body> ... @Html.EJS().ScriptManager() </body> ``` --- ## Common Patterns ### Programmatically Add a Message (Bot Reply) ```javascript function onMessageSend(args) { var chatUI = ej.base.getInstance(document.getElementById('chatUI'), ejs.interactivechat.ChatUI); fetch('/api/bot/reply', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ text: args.message.text }) }) .then(r => r.json()) .then(data => chatUI.addMessage({ text: data.reply, author: botUser })); } ``` ### Enable File Attachments ```razor @Html.EJS().ChatUI("chatUI") .User(ViewBag.CurrentUser) .EnableAttachments(true) .AttachmentSettings(new ChatUIFileAttachmentSettings { SaveUrl = Url.Content("https://services.syncfusion.com/aspnet/production/api/FileUploader/Save"), RemoveUrl = Url.Content("https://services.syncfusion.com/aspnet/production/api/FileUploader/Remove") }) .Render() ``` ### Show Typing Indicator (Client-Side) ```javascript function onCreated() { var chatUI = ej.base.getInstance(document.getElementById('chatUI'), ejs.interactivechat.ChatUI); chatUI.typingUsers = [{ id: "user2", user: "Michale Suyama" }]; chatUI.dataBind(); } ``` --- ## Key Properties Reference | Property | Type | Default | Description | |----------|------|---------|-------------| | `User` | `ChatUIUser` | — | Current logged-in user | | `Messages` | `List<ChatUIMessage>` | `[]` | Initial message collection | | `HeaderText` | `string` | — | Text shown in header | | `HeaderIconCss` | `string` | — | CSS class for header icon | | `ShowHeader` | `bool` | `true` | Show or hide the header | | `ShowFooter` | `bool` | `true` | Show or hide the footer | | `Placeholder` | `string` | `"Type your message…"` | Textarea placeholder | | `Width` | `string` | `"100%"` | Component width | | `Height` | `string` | `"100%"` | Component height | | `CssClass` | `string` | — | Custom CSS class | | `AutoScrollToBottom` | `bool` | `false` | Auto-scroll on new message | | `ShowTimeStamp` | `bool` | `true` | Show message timestamps | | `TimeStampFormat` | `string` | `"dd/MM/yyyy hh:mm a"` | Global timestamp format | | `ShowTimeBreak` | `bool` | `false` | Show date separators | | `EnableCompactMode` | `bool` | `false` | Align all messages left | | `LoadOnDemand` | `bool` | `false` | Lazy-load messages on scroll | | `EnablePersistence` | `bool` | `false` | Persist state across page reloads via localStorage | | `EnableAttachments` | `bool` | `false` | Enable file attachments | | `MentionUsers` | `List<ChatUIUser>` | — | Users available for `@` mention | | `TypingUsers` | `List<ChatUIUser>` | — | Users currently typing | | `EnableRtl` | `bool` | `false` | Right-to-left layout | | `Locale` | `string` | `"en"` | Localization culture code |
GitHub에서 보기