https://d226lax1qjow5r.cloudfront.net/blog/blogposts/translating-sms-messages-with-azure-translator-text-dr/TW_Translate-SMS_1200x675.png

Übersetzen von SMS-Nachrichten mit Azure Translator Text

Zuletzt aktualisiert am May 21, 2021

Lesedauer: 10 Minuten

In meinen früheren Beiträgen habe ich gezeigt, wie Sie Textnachrichten mit der Google Translation API, AWS Translate. und IBM Watson Sprachübersetzer.

Übersicht

In diesem Beitrag zeige ich Ihnen, wie Sie eine Vonage eingehende SMS Webhook erstellt und die Nachricht ins Englische übersetzt, indem man den Azure Übersetzer Text.

Um mit der Arbeit beginnen zu können, müssen Sie die folgenden Elemente einrichten:

  • Azurblau

  • Vonage CLI installiert

    Vonage API-Konto

    Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.

Ihr Projekt erstellen

Sie brauchen nur ein paar Pakete, um die Sache in Gang zu bringen.

Initialisieren Sie das Projekt und installieren Sie dann die oben genannten Anforderungen mit npm oder yarn.

npm init && npm install @azure/ms-rest-js @azure/cognitiveservices-translatortext express dotenv body-parser # or yarn init && yarn add @azure/ms-rest-js @azure/cognitiveservices-translatortext express dotenv body-parser

Nach der Installation erstellen Sie ein index.js und .env Datei.

touch index.js .env

Als nächstes öffnen Sie die Datei index.js Datei und fügen Sie den folgenden Code ein:

'use strict';
require('dotenv').config();

const express = require('express');
const bodyParser = require('body-parser');
const CognitiveServicesCredentials = require("@azure/ms-rest-js");
const { TranslatorTextClient } = require("@azure/cognitiveservices-translatortext");

const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

const server = app.listen(3000, () => {
  console.log(`Express server listening on port ${server.address().port} in ${app.settings.env} mode`);
});

Damit wird der Server für die Ausführung des Beispiels eingerichtet.

Installation von ngrok

Öffentlich verfügbare Webhooks sind erforderlich, damit Vonage mit der Anwendung kommunizieren kann, um eingehende SMS-Nachrichten zu empfangen. Sie können Ihren Code auf einen öffentlich zugänglichen Server schieben, oder Sie können mit ngrok verwenden, damit der öffentliche Datenverkehr Ihre lokale Anwendung erreichen kann.

Sie können mehr über die Installation erfahren ngrok mit diesem Beitrag. Nachdem Sie alles vorbereitet haben, können Sie ngrok mit dem folgenden Befehl starten, um Ihren Tunnel zu erstellen.

ngrok http 3000

Notieren Sie sich die ngrok Adresse, da Sie diese in einem späteren Schritt benötigen werden.

Azure Translator Text einrichten

Als Nächstes können Sie den Azure Translator Text-Dienst im Azure-Portal einrichten. Beginnen Sie, indem Sie das Portal öffnen und auf Create New Resource.

Azure Portal Home PageAzure Portal Home Page

Auf dem nächsten Bildschirm suchen Sie nach Translator Text und klicken Sie auf das Ergebnis, um zur Informationsseite für den Übersetzertext zu gelangen. Klicken Sie auf Create um den Vorgang zu starten.

Translator Text Create Resource ScreenTranslator Text Create Resource Screen

Füllen Sie den Namen aus, wählen Sie Pay As You Go und die Ressourcengruppe aus, und klicken Sie dann Create unten auf der Seite.

Translator Text Create Resource DetailsTranslator Text Create Resource Details

Der Erstellungsprozess dauert ein paar Augenblicke, also entspannen Sie sich ein wenig, bis er abgeschlossen ist.

Öffnen Sie die .env und kopieren Sie den folgenden Text und fügen Sie ihn ein:

TEXT_TRANSLATION_SUBSCRIPTION_KEY=
TEXT_TRANSLATION_ENDPOINT=https://api.cognitive.microsofttranslator.com/translate

Übernehmen Sie den Schlüssel und den Endpunkt von der Schnellstartseite und aktualisieren Sie die .env Datei mit diesen Informationen.

Bei meinen Versuchen habe ich versucht, den im Dashboard angezeigten Endpunkt für Dienste zu verwenden, aber ich hatte kein Glück, dass er korrekt funktionierte. Die obige URL ist der globale Endpunkt, der funktioniert, wenn Sie die gleichen Probleme haben.

Translator Text Resource QuickstartTranslator Text Resource Quickstart

Vonage eingehende SMS-Nachrichten einrichten

In diesem Beispiel wird eine Telefonnummer von Vonage benötigt, um eingehende Nachrichten zu empfangen. Dies können wir mit Hilfe der Vonage CLI direkt von Ihrem Terminal aus.

Virtuelle Rufnummer kaufen

Kaufen Sie zunächst eine Nummer direkt bei Vonage (Sie können auch eine andere ISO 3166 Alpha-2 Ländervorwahl verwenden).

vonage numbers:search US Country Number Type Cost Features ─────── ─────────── ────────── ──── ───────── US 12017621343 mobile-lvn 0.90 VOICE,SMS US 12017782770 mobile-lvn 0.90 VOICE,SMS US 12018011956 mobile-lvn 0.90 VOICE,SMS US 12018099074 mobile-lvn 0.90 VOICE,SMS US 12018099756 mobile-lvn 0.90 VOICE,SMS vonage numbers:buy 12017621343 US

Obwohl die eigentliche Route, die in der Anwendung verwendet werden soll, noch nicht eingerichtet ist, werden Sie ihr einen Namen geben /message. Die Telefonnummer muss mit dieser Route verknüpft werden, damit eingehende Nachrichten wissen, wohin sie gehen sollen. Holen Sie sich den ngrok Hostnamen aus der vorherigen Einrichtung und verwenden Sie ihn hier:

vonage number:update 12017621343 US --url=https://my-ngrok-hostname/message

Jetzt ist der Vonage-Webhook so eingerichtet, dass er eingehende SMS-Nachrichten weiterleitet.

Beenden Sie die Anwendung

Jetzt müssen nur noch die Express-Route und die Funktionen zur Bearbeitung der eingehenden SMS und der Übersetzungen erstellt werden.

Erstellen Sie den Webhook

Wir können zunächst den Routing-Handler einrichten. Vonage erlaubt die Einstellung eines Standard-SMS-Webhook-Verhaltens. Im Einstellungsfenster können Sie die Standard HTTP Methode ändern. Bei mir ist sie eingestellt auf POST-JSONeingestellt, und ich empfehle, diese Einstellung zu verwenden. Wenn Sie Ihre Einstellung nicht ändern können, wird der hier verwendete Code alle drei Optionen behandeln.

Default Vonage SMS HTTP MethodDefault Vonage SMS HTTP Method

Öffnen Sie die index.js Datei, und fügen Sie unten den folgenden Code ein:

// Reading the inbound SMS messages
const handleRoute = (req, res) => {

  let params = req.body;

  if (req.method === "GET") {
    params = req.query
  }

  if (!params.to || !params.msisdn) {
    res.status(400).send({'error': 'This is not a valid inbound SMS message!'});
  } else {
    translateText(params);
    res.status(200).end();
  }

};

Dieser Handler wird direkt an die /message Route weitergeleitet. Wenn die HTTP-Methode der eingehenden Nachricht POSTist, verwendet der Handler req.bodyund verwendet req.query für die GET Option. Er prüft dann die eingehende Nutzlast, um sicherzustellen, dass sie die richtigen Informationen enthält, und sendet dann das Objekt an die translateText Methode, um die Übersetzung anzuzeigen.

Jetzt können Sie die Route und die entsprechenden HTTP Methoden zur Anwendung hinzufügen.

app.route('/message')
  .get(handleRoute)
  .post(handleRoute)
  .all((req, res) => res.status(405).send());

Der obige Code erzeugt die GET und POST Methoden, um entweder die eingehende SMS-Webhook-Nachricht zu verarbeiten. Wenn eine andere Methode verwendet wird, wird eine 405 - Method Not Allowed Antwort zurückgegeben werden.

Der Webhook ist einsatzbereit und das letzte Stück sind die eigentlichen Übersetzungen.

Methode der Übersetzung

Im vorherigen Schritt rufen wir translateText. In diesem Schritt wird diese Methode erstellt.

Sie erhalten Ihre Anmeldedaten zunächst durch die Verwendung von CognitiveServicesCredentials.ApiKeyCredentials. Diese müssen Sie als ersten Parameter an den TranslatorTextClient Konstruktor übergeben werden.

Nach der Erstellung des clientverwenden Sie die translate Methode, um den Text zu übersetzen. Das erste Argument ist ein Array von Sprachen, in die Sie den Text übersetzen möchten - so können Sie in mehrere Sprachen übersetzen. Der Dienst wird die eingehende Sprache automatisch erkennen, wenn er kann. Das zweite Argument ist ein Array von Objekten für den Text, den Sie übersetzen möchten.

function translateText(params) {
  const creds = new CognitiveServicesCredentials.ApiKeyCredentials({ inHeader: { 'Ocp-Apim-Subscription-Key': process.env.TEXT_TRANSLATION_SUBSCRIPTION_KEY } });
  const client = new TranslatorTextClient(creds, process.env.TEXT_TRANSLATION_ENDPOINT);

  client.translator
    .translate(["en"], [{text:params.text}])
    .then(result => {
      console.log(`Original Text: ${params.text}`);
      console.log(`Translation: ${result[0].translations[0].text}`)
    })
    .catch(err => {
      console.error("error:", err);
    });
}

Jetzt können Sie die Funktionalität testen, indem Sie den Server starten und eine Textnachricht an die zuvor erworbene Nummer senden.

node index.js # Text "Hola" to your phone number # expected response Original Text: Hola Translation: Hello

Das vollständige Antwortobjekt von Azure Translator Text enthält ebenfalls viele Details, so dass Sie die Antwort ändern können, um die console.dir(translationResult, {depth: null}) ändern, um die vollständige Nutzlast zu sehen.

Rekapitulation

Azure Translator Text ist ein hervorragendes Tool zur Übersetzung Ihrer eingehenden Nachrichten von Vonage. Dieses Beispiel kratzt nur an der Oberfläche, sollte aber ein guter Anfang sein. Sie können von hier aus in verschiedene Richtungen gehen, indem Sie dieses Beispiel als Ausgangspunkt nehmen. Lassen Sie mich wissen, welche Ideen Sie für die gemeinsame Nutzung dieser beiden Dienste haben.

Eine vollständige Version dieses Tutorials finden Sie unter https://github.com/nexmo-community/sms-azure-translate-js.

Wenn Sie mehr über unsere Extend-Projekte erfahren möchten, besuchen Sie https://developer.vonage.com/extend um mehr zu erfahren.

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/444c073b5e/kellyjandrews.png
Kelly J AndrewsEhemaliges Teammitglied

Kelly J. Andrews ist eine Entwicklerin, die sich für Nexmo einsetzt. Sie bastelt seit über 30 Jahren an Computern und verwendete BASIC zum ersten Mal im Alter von 5 Jahren.

Erst als er 1997 seine erste Webseite erstellte und JavaScript zum ersten Mal ausprobierte, fand er seine wahre Berufung. Kelly kämpft jetzt für JavaScript, testbaren Code und schnelle Lieferung.

Er singt Karaoke, zaubert oder feuert die Cubs und die Fighting Irish an.