Einen bestehenden Konversations-Thread laden

In dieser Anleitung wird erklärt, wie man eine frühere Unterhaltung im eingebetteten Chat mithilfe einer Thread-ID fortsetzen kann. So können Nutzer ihre Unterhaltungen dort fortsetzen, wo sie zuvor aufgehört haben, anstatt jedes Mal einen neuen Chat zu beginnen.

Standardmäßig erstellt der eingebettete Chat bei jedem Öffnen oder Aktualisieren einen neuen Konversations-Thread. Mit dieser loadThreadById() Methode können Sie den Chat-Verlauf wiederherstellen und die Kontinuität der Unterhaltung gewährleisten.

So funktioniert das Laden von Threads

Der Ladevorgang des Threads erfolgt in folgenden Schritten:

  1. Der Chat wird gestartet.
  2. Die loadThreadById() Methode wird mit einer Thread-ID aufgerufen.
  3. Der eingebettete Chat lädt den entsprechenden Chatverlauf.
  4. Der Benutzer kann weiterhin innerhalb desselben Threads interagieren.

Wenn keine Thread-ID angegeben wird, wird der Chat in einem neuen Konversations-Thread geladen, sobald der Benutzer seine erste Nachricht sendet.

Schritt 1: Erfassen Sie die Thread-ID

Thread-IDs sind über das Chat-Ereignissystem verfügbar. Sie können sie aus den send oder pre:send Ereignissen erfassen und für die spätere Verwendung speichern.

Der folgende Codeausschnitt erfasst die Thread-ID beim Senden einer Nachricht und speichert sie im lokalen Speicher:

// 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);
});

Schritt 2: Einen vorhandenen Thread laden

Verwenden Sie die loadThreadById() Methode, um eine zuvor gespeicherte Konversation zu laden. Der folgende Codeausschnitt ruft eine gespeicherte Thread-ID ab und lädt die zugehörige Konversation:



  // Retrieve stored thread ID
  const savedThreadId = localStorage.getItem('chatThreadId');

  if (savedThreadId) {
    chatInstance.loadThreadById(savedThreadId);
  }
 

Vollständiges Skript

Verwende das folgende Skript, um den Code aus diesem Tutorial auf dein Chat-Widget anzuwenden:


      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);
        });
      };