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' - 切换没有确认弹窗,按钮文案要让用户明白点击后会发生什么
- 多版本开场白的编写方式参见 什么是开场白?