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 はグリーティングの中に書かれたコードブロックからしか呼び出せず、かつそのグリーティングに切り替え可能なバージョンが 2 つ以上必要です。他のメッセージ(AI の返信など)内のコードブロックにはこの関数が存在せず、機能チェックでは window.setChatMessages が undefined になります。
swipe_id はグリーティングのバージョン番号で、0 から始まります。成功すると指定バージョンのグリーティングに切り替わり、チャットが最上部までスクロールして、ユーザーは新しいグリーティングを最初から読めます。
意図的に非対応の呼び出し
以下の呼び出しはすべて拒否されます:
updates配列に複数の要素を渡す(一度に複数メッセージを更新しようとする)message_idが0以外のメッセージを更新する- メッセージ本文やその他のフィールドを更新する
- 余分なオプションを渡す
- 存在しない・範囲外の
swipe_idを使う
setChatMessages は汎用のチャット履歴書き込み API ではなく、チャット履歴の読み取りにも対応していません。
ヒント
- 利用条件を満たさない場合(グリーティングのバージョンが 1 つだけ、など)、コードブロック内にこの関数は存在しません——呼び出す前に機能チェックを:
typeof window.setChatMessages === 'function' - 切り替えに確認ダイアログはありません。タップしたら何が起きるか、ボタンのラベルで分かるようにしてください
- 複数バージョンのグリーティングの作り方は グリーティングとは? を参照