Unterstützung mehrerer Sprachen mit Google Übersetzer

Mit den für Business Messages verfügbaren Sprachen und den intelligenten, automatisierten Übersetzungsfunktionen können Sie die Reichweite Ihres Agents vergrößern, indem Sie mit Nutzern in in ihrer bevorzugten Sprache. Diese Anleitung führt Sie durch einen Proof of Concept Integration von Google Übersetzer in einen Business Messages-Webhook.

Voraussetzungen

Zunächst sollten Sie Folgendes vorbereiten:

Code abrufen

In dieser Anleitung wird ein Beispiel für einen Webhook-Code beschrieben, der in Google Übersetzen. Klonen Sie das Repository aus GitHub, um den Code abzurufen:

git clone https://github.com/google-business-communications/bm-nodejs-translation-tutorial

Rufen Sie das geklonte Verzeichnis auf und speichern Sie Ihren Dienstkontoschlüssel im Ressourcenverzeichnis:

cp credentials.json bm-nodejs-translation-sample/resources/bm-agent-service-account-credentials.json

TIPP: Informationen zum Einrichten oder Herunterladen des Dienstschlüssels finden Sie in der Google Cloud-Leitfaden zum Verwalten von Dienstkonten

Danach können Sie den Code bereitstellen:

gcloud app deploy

Senden Sie über Ihr Mobilgerät einige Nachrichten an den Agent. Versuchen Sie, Ihr Nachrichten in verschiedenen Sprachen senden und sehen, was passiert.

Translate API einrichten

Der Beispielcode ist bereits im Node-Paket für die Translate API enthalten installiert haben. Wenn Sie wissen möchten, wie Sie das Node-Paket installieren oder die Translate API in einer anderen Programmiersprache zu installieren, Cloud Translate API-Dokumentation

Wenn Sie die Translate API verwenden möchten, müssen Sie die Bibliothek importieren und eine Übersetzer-API erstellen. API-Client. Öffnen Sie die Datei routes/index.js. Die relevanten Zeilen sind:

// Import the Translate API library.
const { Translate } = require("@google-cloud/translate").v2;
// Create a new Translate API client.
const translate = new Translate();

Ab sofort können Sie auf die Translate API-Methoden für das Übersetzer-Objekt zugreifen.

Sehen Sie sich die Variablen an, die oben in der Datei erstellt wurden:

const SERVER_LANGUAGE = "en";
let currentLanguage = SERVER_LANGUAGE;

Im Beispielcode wird die Serversprache als Konstante gespeichert, da sie behoben. Die aktuelle Sprache der Unterhaltung kann sich jedoch ändern und wird deshalb erfasst in der Variablen currentLanguage.

Eingehende Sprache erkennen

Der Beispielcode erkennt, ob sich die eingehende Sprache geändert hat. Wenn ja, fordert den Nutzer auf, die Sprache auszuwählen, die er in der Unterhaltung verwenden möchte. Probieren Sie diese Funktion auf Ihrem Mobilgerät aus, indem Sie eine Nachricht an den Kundenservicemitarbeiter in einem in einer anderen Sprache als Englisch. Wenn du keine anderen Sprachen beherrschst, gib etwas ein „Hola“ Das ist Spanisch für „Hello“!

Der Kundenservicemitarbeiter antwortet mit einer Aufforderung, in der der Nutzer gefragt wird, ob er zu einem anderen Anbieter wechseln möchte. Sprachen. Der Prompt enthält Antwortvorschläge, die der Nutzer anklicken kann um zu dieser Sprache zu wechseln.

Sehen wir uns zuerst die Spracherkennungsfunktion an.

/**
 * Detects input text language.
 *
 * @param {string} text The text received from the consumer.
 * @param {Context} context The user message request context.
 * @return A Promise with the detected language code.
 */
async function detectLanguage(text, context) {
  return new Promise(function (resolve, reject) {
    translate
      .detect(text)
      .then((result) => {
        if (result && result.length > 0) {
          if (result[0].confidence > CONFIDENCE_THRESHOLD) {
            resolve(result[0].language);
          }
          resolve(bcp47.parse(context.resolvedLocale).language);
        } else {
          reject("No language detected");
        }
      })
      .catch((err) => {
        console.error("ERROR:", err);
        reject(err);
      });
  });
}

Bei dieser Methode wird die Methode "Erkennung" verwendet. im Übersetzer-Client. Da die Translate API unter Umständen mehrere Sprachen mit unterschiedlichen Konfidenzniveaus (und weil es mehrere Eingaben), gibt diese Methode ein Array von Ergebnissen zurück. Die Stichprobe nimmt die erste Ergebnis, d. h. dem Ergebnis mit der höchsten Konfidenz.

Geklärte Sprache wird verwendet

Manchmal kann die Translate API die Nachrichtensprache mit hoher Selbstvertrauen. Wenn Ihre Katze z. B. über die Tastatur läuft und ein verwendet, versucht die Translate API zwar, die Sprache zu erkennen, die erkannte Sprache ist wahrscheinlich falsch. Schließlich ist Google Übersetzer unterstützt jedoch keine Katzensprachen!) Die Translate API gibt dies durch Ein niedriger Konfidenzwert für das Ergebnis von translate.detect wird festgelegt.

In diesem Szenario wird der Beispielcode auf die Sprache in der Sprache für Business Messages aufgelöst, Dies ist die beste Vermutung der Business Messages API für die Sprache basierend auf dem Kontext der Nachricht. Da die aufgelöste Sprache im BCP-47-Format vorliegt, können Sie das entsprechende Node.js-Paket, den Sprachcode aus der Sprache zu parsen.

Sie können dieses Verhalten testen, indem Sie eine lange Zeichenfolge mit unsinnigem Inhalt in den Agent eingeben. In In den meisten Fällen werden Sie nicht aufgefordert, die Sprache zu ändern (es sei denn, die aufgelöste Sprache von der aktuellen Sprache abweicht). Der Kundenservicemitarbeiter sagt versteht sie Ihre Anfrage nicht.

Aufforderung zum Ändern der Sprache

Nachdem erkannt wurde, dass sich die Sprache geändert hat, sendet der Kundenservicemitarbeiter eine Aufforderung zurück an die Sprache zu ändern.

if (detectedLanguage != currentLanguage) {
        translateText(
          "Which language would you like to use?",
          SERVER_LANGUAGE,
          currentLanguage
        ).then((normalizedTranslationNotice) => {
          sendResponse(
            normalizedTranslationNotice,
            conversationId,
            [
              ...new Set([detectedLanguage, currentLanguage, SERVER_LANGUAGE]),
            ].map((x) => createSuggestedReply(x))
          );
        });
      }

Der Code erstellt einen Prompt, der in die aktuelle Sprache übersetzt wird (mehr dazu im Abschnitt „Übersetzung ausgehender Nachrichten“ und sendet dann eine Antwort mit Antwortvorschläge. Der Nutzer möchte in einer der folgenden Sprachen sprechen: Sprachen:

  • Die erkannte eingehende Sprache.
  • Die aktuelle Unterhaltungssprache.
  • In der im Server integrierten Sprache.

Da es in diesen drei Sprachen Überschneidungen geben kann (z. B. wenn die aktuellen Sprache bereits der Serversprache entspricht, verwendet der Server ein set -Objekt zum Entfernen Duplikate. Dann wird für jede Sprache ein Antwortvorschlag erstellt:

/**
 * Create a suggested reply for a language code.
 * @param {string} languageCode A ISO 6391 language code.
 * @return {Suggestion} The suggestion object for switching to the language.
 */
function createSuggestedReply(languageCode) {
  return {
    reply: {
      text: ISO6391.getNativeName(languageCode),
      postbackData: SWITCH_LANGUAGE_POSTBACK + languageCode,
    },
  };
}

Der Antwortvorschlag zeigt den Namen der Sprache in der jeweiligen Sprache an. Beispiel: Spanisch erscheint als „Español“. Um Informationen zu einer Sprache aus der zweistelligen Sprachcode verwenden, können Sie die ISO-639-1-Bibliothek für Node.js verwenden.

Beachten Sie die Postback-Daten, die an den Server gesendet werden, wenn der Nutzer diesen Vorschlag. Die Postback-Daten teilen dem Server mit, wie er antworten soll, und geben Kontext für den Vorschlag.

Mit der Methode sendResponse werden diese Vorschlagsobjekte auf die Antwort:

let messageObject = {
    …
    suggestions: suggestedReplies,
  };

Sprache der Unterhaltung ändern

Klicken Sie nun auf Ihrem Mobilgerät auf eine neue Sprachoption in der die Sie zuvor erhalten haben. Wenn Sie zum Beispiel „Hola“ eingegeben haben, klicken Sie auf „Español“ in die vorgeschlagenen Antworten.

Der Agent antwortet in der neuen Sprache. Wir zeigen Ihnen, wie Sie erhalten Sie in einem späteren Schritt. Sehen wir uns zunächst den Code an, der die vorgeschlagene Antwort, auf die du geklickt hast.

if (requestBody.suggestionResponse !== undefined) {
    let postbackData = requestBody.suggestionResponse.postbackData;
    if (postbackData.startsWith(SWITCH_LANGUAGE_POSTBACK)) {
      let languageCode = postbackData.substr(SWITCH_LANGUAGE_POSTBACK.length);
      currentLanguage = languageCode;
      translateText(
        "The language was set to " +
          ISO6391.getName(languageCode) +
          ". Please repeat your request.",
        SERVER_LANGUAGE,
        languageCode
      ).then((translationNotice) => {
        sendResponse(translationNotice, conversationId, []);
      });
    }
  }

Wenn die Anfrage eine Antwort auf einen Vorschlag enthält, verwendet der Server das Postback um zu entscheiden, was zu tun ist. In diesem einfachen Fall unterstützt der Server SWITCH_LANGUAGE_POSTBACK, der angibt, dass die Die Konversation sollte zur Sprache in der unmittelbar folgenden Sprache geändert werden. Code. Nach der Analyse dieses Sprachcodes sendet der Server eine Nachricht, um den dass sich die Sprache geändert hat.

Übersetzung eingehender Nachrichten

Nachdem die Sprache geändert wurde, können Sie eine Anfrage in dieser Sprache an den Agent senden. Sprache auf deinem Mobilgerät. Sende zum Beispiel das Wort für „Hilfe“ in der neuen Sprache. Wenn du die Sprache zu Spanisch geändert hast, gib „ayuda“ ein. und senden Sie die angezeigt.

Der Server versteht deine Hilfeanfrage und antwortet mit dem Menü von Optionen. Probieren Sie einen dieser Schritte aus, um eine hartcodierte Beispielantwort zu erhalten.

Im Beispielcode wird die Methode translateText verwendet, um eingehende und oder ausgehende Nachrichten. Werfen Sie einen Blick darauf:

/**
 * Translates text to a given target language. No translation if source and
 * target language match.
 *
 * @param {string} text the text to translate
 * @param {string} sourceLanguage The language of the source text.
 * @param {string} targetLanguage The target language.
 * @return A Promise with the translated text.
 */
async function translateText(text, sourceLanguage, targetLanguage) {
  if (sourceLanguage === targetLanguage) {
    return new Promise(function (resolve, reject) {
      resolve(text);
    });
  }
  return new Promise(function (resolve, reject) {
    translate
      .translate(text, targetLanguage)
      .then((result) => {
        if (result && result.length > 0) {
          resolve(result[0]);
        } else {
          reject("Could not translate message");
        }
      })
      .catch((err) => {
        console.error("ERROR:", err);
        reject(err);
      });
  });
}

Wenn die Ausgangssprache mit der Zielsprache übereinstimmt, müssen Sie nichts weiter tun. was Sie tun können. Andernfalls ruft der Server die Übersetzungsmethode im Translate API-Client. Wie die Erkennungsmethode kann auch die Übersetzungsmethode mehrere Eingaben erfordern. Da der Server nur eine Eingabe bereitstellt, nimmt er für das erste Ergebnis der Translate API.

Sieh dir den Abschnitt der Callback-Methode an, der auf eingehende Nachrichten reagiert, der aktuellen Sprache:

translateText(incomingMessage, currentLanguage, SERVER_LANGUAGE).then(
          (normalizedMessage) => {
            let serverResponse = chooseResponseMessage(normalizedMessage);
            …
          }
        );

Der Server verwendet die Ausgabe von translateText, um eine Antwortnachricht auszuwählen. Im nächsten Abschnitt erfahren Sie, wie Sie die Antwortnachricht auswählen beim Übersetzen.

Übersetzung ausgehender Nachrichten

Nachdem der Server Ihre eingehende Nachricht ins Englische übersetzt hat, um eine passende Antwort auszuwählen, zu übersetzen und auf die Anfrage des Nutzers zu senden. Der Beispielcode verwendet ein sehr einfaches Schema, das Keywords den Antworten zuordnet. Haben sehen Sie sich die Methode chooseResponseMessage an.

/**
 * Select a topically appropriate response based on the message
 * content that the user sent to the agent.
 *
 * @param {string} incomingMessage The content of the message that the user typed in.
 * @param {string} conversationId The unique id for this user and agent.
 * @return {string} A response message.
 */
function chooseResponseMessage(incomingMessage) {
  let responseMapping = {
    balance: "Your current balance is $500.",
    deposit: "Please enter your deposit amount.",
    transfer:
      "Please enter the account number where you wish to transfer the funds.",
    withdraw: "Please enter the amount you wish to withdraw.",
    help: "Please choose what you'd like to do: balance, deposit, transfer, or withdraw.",
  };

  for (const [key, value] of Object.entries(responseMapping)) {
    if (incomingMessage.toLowerCase().includes(key)) {
      return value;
    }
  }

  return "I didn't understand your request. Please try again.";
}

Dieses Schema unterstützt nur Englisch auf dem Server, alle ein- und ausgehenden Nachrichten übersetzen lassen. Ein komplexeres System könnte unterstützen mehrere Sprachen und antworten nativ auf Anfragen in anderen Sprachen. Wenn Ihr Agent beispielsweise Spanisch unterstützt, hat er möglicherweise bereits einen Schlüssel für „Ayuda“ in der Response-Map. Komplexere Systeme sind möglicherweise auch Methoden zur Auswahl einer geeigneten Antwort wie ML oder Bewertung Algorithmen. Eine Möglichkeit, mit Business Messages intelligentere Antworten zu erstellen ist die Einbindung in Dialogflow.

Sehen Sie sich nun den Code an, mit dem die ausgewählte Nachricht an den Nutzer zurückgesendet wird.

let serverResponse = chooseResponseMessage(normalizedMessage);
            translateText(
              serverResponse,
              SERVER_LANGUAGE,
              currentLanguage
            ).then((normalizedResponse) => {
              sendResponse(normalizedResponse, conversationId, []);
            });

Im Beispielcode wird die Methode translateText wiederverwendet, um die ausgewählten Antwort in die aktuelle Unterhaltungssprache. Die Methode sendResponse gibt dann muss das neue Nachrichtenobjekt erstellen und an den Nutzer senden.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, einfache Einbindung in die Cloud Translate API und die Sprachfunktionen von Business Messages nutzen, um mehr Nutzer zu erreichen. Wenn Sie können Sie den Beispielcode in dieser Anleitung als Ausgangspunkt für Ihre eigene Integration oder Sie können etwas Neues ausprobieren! Hier einige Vorschläge:

  • Zweisprachige Nachrichten senden, die sowohl den ursprünglichen Nachrichteninhalt als auch den automatisch übersetzte Inhalte.
  • Dem Nutzer wird beim Start einer App ein vollständiges Menü mit den unterstützten Sprachen angezeigt. Gespräch.
  • Die erweiterten Funktionen der Translate API nutzen wie z. B. Glossare, um unternehmensspezifische Wörter zuverlässig zu übersetzen.

Durch die Einbindung der Translate APIs können Sie hochwertige Maschinen nutzen Übersetzungen, um mit mehr Nutzern in ihrer am besten geeigneten Sprache zu kommunizieren. Ihr Agent kann produktivere und effizientere Unterhaltungen führen, die Kundenzufriedenheit und die Erledigung der Aufgaben.