Skip to main content

<Chatbot> Props Reference

Every prop supported by the <Chatbot> component from @asgard-js/react.

Required

PropTypeDescription
configClientConfigClient config; must include botProviderEndpoint
customChannelIdstringUnique channel id on your side (user id / session id)

Display

PropTypeDefaultDescription
titlestringHeader title
avatarstringBot avatar URL
botTypingPlaceholderstring正在輸入訊息Placeholder shown while bot is typing
inputPlaceholderstringInput box placeholder
fullScreenbooleanfalseRender in full-screen mode
classNamestringOuter className
styleCSSPropertiesOuter inline style
loadingComponentReactNodeCustom loading UI

Feature Toggles

PropTypeDescription
enableUploadbooleanEnable the image upload button
enableDocumentUploadbooleanEnable the document upload button
enableExportbooleanEnable conversation export
enableLoadConfigFromServicebooleanLoad remote config (e.g. embedConfig) from bot provider
maintainConnectionWhenClosedbooleanKeep the SSE connection alive when the window is closed
autoResetChannelbooleanDefault true. Set to false to preserve initMessages

See the Feature Toggles demo.

Init Messages & Events

PropTypeDescription
initMessagesConversationMessage[]Initial messages loaded on mount
onSseMessage(response, { conversation }) => voidCallback fired on every SSE event
onSseError(error: unknown) => voidSSE error callback
onBeforeSendMessage(params) => paramsModify params before sending. See before-send-message
onMessageSent() => voidFired after a message has been sent
onReset() => voidFired when the channel is reset
onClose() => voidFired when the chatbot is closed

Custom Rendering

PropTypeDescription
themePartial<AsgardThemeContextValue>Theme overrides — see Theme demo
renderHeader() => ReactNodeReplace the default header — see Custom Header
renderMenu() => ReactNodeInsert a menu between body and footer — see Render Menu
renderMessageContent(props) => ReactNodeReplace message content rendering — see Custom Renderer
errorMessageRenderer(message) => ReactNodeCustom error message renderer
customActionsReactNode[]Custom buttons rendered on the right of the header
messageActions(message) => MessageActionConfig[]Action buttons under each bot message
onMessageAction(actionId, message) => voidCallback when a message action is clicked
onTemplateBtnClick(payload, eventName, raw) => voidCallback for button-template emit actions
onErrorClick(message) => voidCallback when an error message is clicked
defaultLinkTarget'_blank' | '_self' | '_parent' | '_top'Default target for links in messages

Auth

PropTypeDescription
authState'authenticated' | 'requireAuth' | 'requireApiKey' | ...Current auth state — see Auth demo
onApiKeySubmit(apiKey: string) => Promise<void>Fired when the user submits an API key
onAuthError(error: { isAuthError, isBotProviderError, errorDetail }) => voidAuth error callback

ClientConfig Fields

The config prop is of type ClientConfig:

FieldTypeDescription
botProviderEndpointstringRequired. Bot provider base URL
endpointstring@deprecated — use botProviderEndpoint
apiKeystringStatic API key
customHeadersRecord<string, string>Custom HTTP headers (e.g. Authorization: Bearer ...)
transformSsePayload(payload) => payloadMutate the SSE payload before sending
debugModebooleanEnable debug logs
onRunInit / onMessage / onToolCall / onProcess / onRunDone / onRunErrorEventHandlerPer-SSE-event handlers

Setting botProviderEndpoint to the literal string "skip" enables preview mode: no connection is established, only initMessages are rendered. Many demos on this site use preview mode.

See Also