跳至主要内容

Chatbot Props

以下列出 @asgard-js/react<Chatbot> 元件所有可用 props。

必填

Prop型別說明
configClientConfigClient 設定,至少要有 botProviderEndpoint。詳見下方
customChannelIdstring唯一識別對話頻道的 ID(通常用 user id / session id)

基本顯示

Prop型別預設說明
titlestringHeader 標題
avatarstringBot 頭像 URL
botTypingPlaceholderstring正在輸入訊息Bot 正在輸入時的 placeholder
inputPlaceholderstring輸入框 placeholder
fullScreenbooleanfalse是否以全螢幕模式渲染
classNamestring外層 className
styleCSSProperties外層 inline style
loadingComponentReactNode自訂載入中畫面

功能開關

Prop型別說明
enableUploadboolean啟用圖片上傳按鈕
enableDocumentUploadboolean啟用文件上傳按鈕
allowedImageMimeTypesstring[]限制 enableUpload 可上傳的圖片 MIME 類型;給值即完全覆蓋預設清單。見 檔案上傳
allowedDocumentMimeTypesstring[]限制 enableDocumentUpload 可上傳的文件 MIME 類型;給值即完全覆蓋預設清單。見 檔案上傳
enableExportboolean啟用對話匯出
enableLoadConfigFromServiceboolean從 bot provider 讀取遠端設定(例如 embedConfig
maintainConnectionWhenClosedboolean關閉視窗時保留 SSE 連線
keepConnectionOnUnmountboolean預設 false;元件 unmount 時保留進行中的 SSE run 讓它在後端跑完(與 maintainConnectionWhenClosed 的「關閉視窗」情境不同)
autoResetChannelboolean預設 true;設為 false 可保留 initMessages 歷史
userIdentityHintstring使用者身分識別提示。設定後所有請求(SSE、上傳)會帶上 X-ASGARD-USER-IDENTITY-HINT header

詳見 功能開關 Demo

初始訊息與事件

Prop型別說明
initMessagesConversationMessage[]初始化時就載入的對話紀錄
onSseMessage(response, { conversation }) => void每一個 SSE 事件的 callback
onSseError(error: unknown) => voidSSE 錯誤 callback
onBeforeSendMessage(params) => params送出前修改 message params。見 before-send-message
onMessageSent() => void訊息送出後 callback
onChannelReady() => voidChannel 就緒可收訊息時觸發(此時 ref 已更新,可在 callback 內用 ref 送開場訊息);resetChannel 後會再次觸發
onReset() => voidReset channel 時觸發
onClose() => voidChatbot 關閉時觸發

客製渲染

Prop型別說明
themePartial<AsgardThemeContextValue>主題設定,見 主題 Demo
renderHeader() => ReactNode完全取代預設 header,見 Custom Header
renderFooter() => ReactNode完全取代預設 footer(輸入框區),見 Custom Footer
renderMenu() => ReactNode在 body 和 footer 之間插入選單,見 Render Menu
renderMessageContent(props) => ReactNode完全取代訊息內容渲染,見 Custom Renderer
renderToolCallGroup(props) => ReactNode自訂或隱藏 Tool Call Group,見 工具呼叫
errorMessageRenderer(message) => ReactNode自訂錯誤訊息呈現
customActionsReactNode[]塞到 header 右側的自訂按鈕
footerEndActionsReactNode[]塞到 footer input row 最右邊(send / mic 之後)的自訂節點,見 Footer 尾巴按鈕
messageActions(message) => MessageActionConfig[]每一則 bot 訊息下方的 action 按鈕
onMessageAction(actionId, message) => void點擊 message action 時的 callback
onTemplateBtnClick(payload, eventName, raw) => voidButton template 的 emit action callback
onErrorClick(message) => void點擊錯誤訊息時的 callback
defaultLinkTarget'_blank' | '_self' | '_parent' | '_top'訊息中連結的預設 target

認證

Prop型別說明
authStateAuthState目前的驗證狀態,見下方說明與 Auth Demo
onApiKeySubmit(apiKey: string) => Promise<void>使用者送出 API key 時觸發
onAuthError(error: { isAuthError, isBotProviderError, errorDetail }) => void認證錯誤 callback

AuthState 的可能值:'loading' | 'needApiKey' | 'authenticated' | 'error' | 'invalidApiKey' | 'subscriptionExpired' | 'botNotFound'

ClientConfig 欄位

config prop 的型別是 ClientConfig

欄位型別說明
botProviderEndpointstring必填。Bot provider base URL
endpointstring@deprecated。改用 botProviderEndpoint
apiKeystring靜態 API key
customHeadersRecord<string, string>自訂 HTTP headers(例如 Authorization: Bearer ...
userIdentityHintstring使用者身分識別提示,自動帶上 X-ASGARD-USER-IDENTITY-HINT header(同頂層 prop)
transformSsePayload(payload) => payload送出前變更 SSE payload
debugModeboolean開啟 debug log
onRunInit / onMessage / onToolCall / onProcess / onRunDone / onRunErrorEventHandler對應各 SSE event 的 handler

botProviderEndpoint 設為字串 "skip" 可以進入 preview mode: 不會建立實際連線,只渲染 initMessages,本站許多 demo 都使用這個模式。

也看看

深入閱讀

SDK 的完整 API 參考,見 Asgard 開發者文件: