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

Azure TranslatorテキストでSMSメッセージを翻訳する

最終更新日 May 21, 2021

所要時間:6 分

以前の記事で、Google翻訳APIを使ってテキストメッセージを翻訳する方法を紹介しました。 Google翻訳API, AWS翻訳そして IBM Watson言語翻訳.

概要

この投稿では VonageインバウンドSMSwebhookを作成し、メッセージを英語に翻訳する方法を紹介します。 Azure Translator Text.

始めるには、以下の項目を設定する必要がある:

  • アジュール

  • Vonage CLIのインストール

    Vonage API Account

    To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

プロジェクトの作成

必要なのは2、3個のパッケージだけだ。

  • @azure/ms-rest-js-これはAzure SDKであり、クレデンシャルをサポートする。

  • @azure/cognitiveservices-translatortext-これはAzure Translator Text SDKです。

  • express-ウェブフックを提供するウェブフレームワーク

  • dotenv-環境変数をロードするパッケージ

  • body-parser-受信したウェブフック・オブジェクトを処理するExpress用ミドルウェア

プロジェクトを初期化し、上記の要件をインストールするには npmまたは 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

インストールしたら index.jsそして .envファイルを作成する。

touch index.js .env

次に index.jsファイルを開き、その中に次のコードを書く:

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

これで、サンプルを実行するためのサーバーがセットアップされる。

ngrokのインストール

Vonageがアプリケーションと通信してSMSメッセージを受信できるように、一般に公開されているWebhookが必要です。あなたのコードを一般に公開されているサーバにプッシュすることもできます。 ngrokを使って、パブリック・トラフィックがローカル・アプリケーションに届くようにすることもできます。

インストール方法については ngrok詳しくは この記事.すべての準備ができたら、次のコマンドを使って ngrok を起動し、トンネルを作成します。

ngrok http 3000

住所をメモしておいてください。 ngrok後のステップで必要になるので。

Azure Translatorテキストの設定

次に、AzureポータルでAzure Translator Textサービスをセットアップします。ポータルを開いて Create New Resource.

Azure Portal Home PageAzure Portal Home Page

次の画面で Translator Textを検索し、結果をクリックすると、翻訳者テキスト情報ページに移動します。をクリックします。 Createをクリックして処理を開始します。

Translator Text Create Resource ScreenTranslator Text Create Resource Screen

名前を入力し Pay As You Goとリソース・グループを選択し、ページ下部の Createをクリックしてください。

Translator Text Create Resource DetailsTranslator Text Create Resource Details

作成には少し時間がかかるので、完了するまで少しくつろいでいてほしい。

まず .envファイルを開き、以下をコピー&ペーストする:

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

クイック・スタート・ページからキーとエンドポイントを取得し、その情報でファイルを更新する。 .envファイルを更新する。

私の試用期間中、ダッシュボードに表示されるサービス・エンドポイントを使おうとしましたが、正しく動作させることができませんでした。上記のURLは、同じ問題に遭遇した場合に動作するグローバル・エンドポイントです。

Translator Text Resource QuickstartTranslator Text Resource Quickstart

VonageインバウンドSMSメッセージの設定

この例では、受信メッセージを受け取るためにVonageの電話番号が必要です。このためには Vonage CLIを使います。

バーチャル電話番号の購入

まず、Vonageから直接番号を購入します。 ISO 3166 alpha-2の国番号を使用してください)。

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

アプリケーションで実際に使用するルートは設定されていないが、その名前を /message.電話番号はこのルートにリンクさせる必要があるので、受信メッセージはどこに行けばいいかがわかります。ホスト名を ngrokホスト名を取得し、ここで使用します:

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

これでVonage webhookは受信SMSメッセージをルーティングするように設定された。

申し込み完了

あとはExpressルートと、SMSメッセージの受信と翻訳を処理する関数を作成するだけです。

Webhookを構築する

まずルートハンドラを設定します。Vonageでは、デフォルトのSMSウェブフックの動作を設定することができます。 設定パネルでで、デフォルトの HTTPメソッドを変更できます。私のは POST-JSONこの設定を使用することをお勧めします。設定を変更できない場合は、ここで使用するコードで3つのオプションすべてを処理できます。

Default Vonage SMS HTTP MethodDefault Vonage SMS HTTP Method

ファイルを開き index.jsファイルを開き、一番下に以下のコードを貼り付ける:

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

};

このハンドラーは /messageルートに直接渡されます。受信メッセージのHTTPメソッドが POSTである場合、ハンドラは req.bodyを使用し req.queryを使います。 GETオプションを使います。そして、受信したペイロードが正しい情報であることを確認し、オブジェクトを translateTextメソッドにオブジェクトを送ります。

これで、ルートと適切な HTTPメソッドを追加できます。

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

上記のコードは GETPOSTメソッドを作成します。他のメソッドが使われた場合は 405 - Method Not Allowedレスポンスが返されます。

ウェブフックの準備は完了し、最後のピースは実際の翻訳である。

翻訳方法

前のステップでは translateText.このステップでは、そのメソッドを作成する。

最初に認証情報を取得するには CognitiveServicesCredentials.ApiKeyCredentials.コンストラクタの最初のパラメータとして渡す必要があります。 TranslatorTextClientコンストラクタに渡す必要があります。

を作成した後 clientを作成したら translateメソッドを使用します。最初の引数には、テキストを翻訳したい言語の配列を指定します。複数の言語に翻訳することができます。二番目の引数は、翻訳したいテキストのオブジェクトの配列です。

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

サーバーを起動し、先ほど購入した番号にテキストメッセージを送信して、機能を試すことができる。

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

Azure Translator Textのフルレスポンスオブジェクトには多くの詳細も含まれているので、レスポンスに以下を含めるように変更できます。 console.dir(translationResult, {depth: null})に変更すると、完全なペイロードを見ることができます。

総括

Azure Translator Textは、Vonageからの受信メッセージを翻訳するのに最適なツールです。この例は表面をなぞったに過ぎませんが、良いきっかけになるはずです。これをジャンプポイントとして、ここからいくつかの方向に冒険することができます。この2つのサービスを一緒に使うアイデアがあれば教えてください。

このチュートリアルの完成版は次のサイトでご覧いただけます。 https://github.com/nexmo-community/sms-azure-translate-js.

Extendプロジェクトの詳細については、以下をご覧ください。 https://developer.vonage.com/extendをご覧ください。

シェア:

https://a.storyblok.com/f/270183/384x384/444c073b5e/kellyjandrews.png
Kelly J Andrews元チームメンバー

ケリー・J・アンドリュースはネクスモの開発者支持者であり、5歳で初めてBASICを使い、30年以上コンピュータをいじってきた。

1997年に初めてウェブページを作り、初めてJavaScriptを試してみて初めて、彼は真の天職を見つけた。ケリーは今、JavaScript、テスト可能なコード、そして迅速なデリバリーのために戦っている。

カラオケを歌ったり、マジックを披露したり、カブスやファイティング・アイリッシュを応援したり。