REFERENCE
SDK 範例
@asgard-js/core 與 @asgard-js/react 的用法與可以直接操作的範例。
HTTP 錯誤處理
訂閱 onSseError 來處理 bot provider 回傳的 HTTP 錯誤。搭配
@asgard-js/core 的 isHttpError helper,可以安全地檢查 status code。
程式範例
import { isHttpError } from "@asgard-js/core";
<Chatbot
onSseError={(error) => {
if (isHttpError(error) && error.status === 429) {
toast.warning("用量已達上限,請稍後再試");
}
}}
{...rest}
/>;HttpError屬性 型別 說明 statusnumberHTTP 狀態碼(如 401、403、429、500) statusTextstring狀態文字 bodyunknown回應 body isHttpError(error)是 type guard,確認 error 是HttpError後才安全存取上述屬性。常見錯誤碼
狀態碼 場景 401API key 無效或過期 403無權限存取此 bot provider 429請求頻率超過限制 500Bot provider 內部錯誤 錯誤泡泡與 details 展開
asgard.run.error會在對話串裡留下一顆錯誤泡泡。它原樣顯示後端給的message——sandbox 被 配額或訂閱狀態擋下時,理由就只寫在那裡,換成固定字串等於把使用者唯一的線索丟掉。事件沒帶 message 時才退回「發生未預期的錯誤」。其餘屬於診斷而非指示的欄位(
code、traceId、上游的inner)收在「顯示更多/顯示較少」 的展開區裡,整包{ traceId, ...error }直接JSON.stringify印出來:- 整包印是刻意的。這個 payload 的形狀還在變(後端仍在補
code/inner),手挑欄位會在 它下次新增時安靜地漏掉;整包印也讓工程師有一塊可以直接貼進 ticket 的東西。 - 除了
message以外真的有東西時才會出現切換鈕——否則展開後看到的就是上面那行摘要。 - 後端錯誤可以任意長,所以摘要夾到兩行、展開區各自有高度上限並在裡面捲動;泡泡的佔位始終有界。
errorMessageRenderer仍然優先:有回傳值就整顆換成你的,回傳null/undefined則落回上述 預設 UI,不會把泡泡清空。展開區的顏色可以覆寫,見主題的 JSON 與錯誤細節變數。
- 整包印是刻意的。這個 payload 的形狀還在變(後端仍在補