既存の会話スレッドを読み込む
このチュートリアルでは、スレッドIDを使用して、埋め込みチャットで以前の会話を再開する方法について説明します。 これにより、ユーザーは毎回新しいチャットを始めるのではなく、前回中断した箇所から会話を続けることができます。
デフォルトでは、埋め込みチャットは開くか更新するたびに新しい会話スレッドが作成されます。 この loadThreadById() 方法を使えば、チャット履歴を復元し、会話の流れを維持することができます。
スレッドの読み込みの仕組み
スレッドの読み込みプロセスは、以下の手順に従います:
- チャットが開始されます。
- この
loadThreadById()メソッドはスレッドIDを引数として呼び出されます。 - 組み込みチャットでは、該当する会話履歴が表示されます。
- ユーザーは同じスレッド内で引き続きやり取りを続けることができます。
スレッドIDが指定されていない場合、ユーザーが最初のメッセージを送信すると、チャットは新しい会話スレッドとして読み込まれます。
手順 1:スレッド ID を取得する
スレッドIDは、チャットイベントシステムを通じて確認できます。 これらのデータを send または pre:send イベントから取得し、後で使用するために保存することができます。
次のコードスニペットは、メッセージが送信された際にスレッドIDを取得し、それをローカルストレージに保存します:
// Capture thread ID from send event
instance.on('send', (event) => {
const threadId = event.message.thread_id;
console.log('Current thread:', threadId);
// Store thread ID for later use (e.g., in localStorage)
localStorage.setItem('chatThreadId', threadId);
});
ステップ 2:既存のスレッドを読み込む
以前に保存した会話を読み込むには、この loadThreadById() メソッドを使用します。 次のコードスニペットは、保存されているスレッドIDを取得し、それに関連する会話を読み込みます:
// Retrieve stored thread ID
const savedThreadId = localStorage.getItem('chatThreadId');
if (savedThreadId) {
chatInstance.loadThreadById(savedThreadId);
}
完全な台本
このチュートリアルのコードをチャットウィジェットに適用するには、以下のスクリプトを使用してください:
window.wxOConfiguration = {
orchestrationID: "your-orgID_orchestrationID",
hostURL: "https://dl.watson-orchestrate.ibm.com",
rootElementID: "root",
showLauncher: false,
deploymentPlatform: "ibmcloud", // Required for IBM Cloud
crn: "your-org-crn", // Required for IBM Cloud. Learn how to get the CRN in https://cloud.ibm.com/docs/key-protect?topic=key-protect-retrieve-instance-ID&interface=ui
chatOptions: {
agentId: "your-agent-id",
agentEnvironmentId: "your-agent-env-id"
onLoad: onChatLoad
}
};
setTimeout(function () {
const script = document.createElement('script');
script.src = `${window.wxOConfiguration.hostURL}/wxochat/wxoLoader.js?embed=true`;
script.addEventListener('load', function () {
wxoLoader.init();
});
document.head.appendChild(script);
}, 0);
function onChatLoad(instance) {
const chatInstance = instance;
// Retrieve stored thread ID
const savedThreadId = localStorage.getItem('chatThreadId');
if (savedThreadId) {
chatInstance.loadThreadById(savedThreadId);
}
// Capture and store thread ID when messages are sent
chatInstance.on("send", (event) => {
const threadId = event.message.thread_id;
console.log("Current thread:", threadId);
});
};