setChatMessages:切換開場白
setChatMessages 用於在開場白的 程式碼區塊 中切換開場白版本。典型用法:開場白裡放一組「選擇開局」按鈕,使用者點擊後直接切到對應版本的開場白。
函式簽名
ts
declare function setChatMessages(
updates: [{ message_id: 0; swipe_id: number }],
option?: Record<string, never>,
): Promise<void>範例
markdown
```html
<!doctype html>
<html>
<body>
<button id="opening-0">開場一</button>
<button id="opening-1">開場二</button>
<script>
document.querySelector('#opening-0').onclick = () =>
setChatMessages([{ message_id: 0, swipe_id: 0 }]);
document.querySelector('#opening-1').onclick = async () => {
try {
await setChatMessages([{ message_id: 0, swipe_id: 1 }]);
} catch (error) {
console.error(error.message);
}
};
</script>
</body>
</html>
```可用條件
setChatMessages 只有寫在開場白裡的程式碼區塊才能呼叫,並且該開場白至少要有兩個可切換的版本。寫在其他訊息(如 AI 回覆)裡的程式碼區塊中不存在這個函式,能力檢測時 window.setChatMessages 會是 undefined。
swipe_id 是開場白版本的序號,從 0 開始。呼叫成功後會切換到指定版本的開場白,並把聊天捲動到頂部,讓使用者從頭開始閱讀。
有意不支援的寫法
以下呼叫都會被拒絕:
updates陣列傳入多個元素(試圖一次更新多條訊息)- 更新
message_id不為0的訊息 - 更新訊息文字或其他欄位
- 傳入額外選項
- 使用不存在或越界的
swipe_id
setChatMessages 不是通用的聊天記錄寫入 API,也不支援讀取聊天記錄。
小提示
- 不滿足可用條件時(例如只有一個開場白版本),程式碼區塊裡不存在這個函式——呼叫前先做能力檢測:
typeof window.setChatMessages === 'function' - 切換沒有確認彈窗,按鈕文案要讓使用者明白點擊後會發生什麼
- 多版本開場白的編寫方式參見 什麼是開場白?