
シェア:
ケリー・J・アンドリュースはネクスモの開発者支持者であり、5歳で初めてBASICを使い、30年以上コンピュータをいじってきた。
1997年に初めてウェブページを作り、初めてJavaScriptを試してみて初めて、彼は真の天職を見つけた。ケリーは今、JavaScript、テスト可能なコード、そして迅速なデリバリーのために戦っている。
カラオケを歌ったり、マジックを披露したり、カブスやファイティング・アイリッシュを応援したり。
Amazon Translateを使ってSMSメッセージを翻訳する
前回の投稿では、テキストメッセージの翻訳に Google翻訳API.この投稿では、AWS Translateを使って同じアイデアを続けたいと思います。
概要
この投稿では インバウンドVonage SMSwebhook を作成し、そのメッセージを AWS Translate.
始めるには、以下のアイテムをセットアップする必要がある:
プロジェクトの作成
この例のセットアップは最小限で、2、3のパッケージがあれば始められる。
aws-sdk- これは公式のAWS Translate SDKです。express- ウェブフックを提供するウェブフレームワークdotenv- 環境変数をロードするパッケージbody-parser- 受信したウェブフック・オブジェクトを処理するExpress用ミドルウェア
プロジェクトを初期化し、上記の要件をインストールするには npmまたは yarn.
インストールしたら index.jsそして .envファイルを作成する。
次に index.jsファイルを開き、その中に次のコードを書く:
'use strict';
require('dotenv').config();
const express = require('express');
const bodyParser = require('body-parser');
const AWS = require("aws-sdk");
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のインストール
Webhookは、SMSメッセージを受信したときにVonageサービスがアプリケーションに到達できるように、一般に公開する必要があります。公開可能なサーバーにコードをプッシュするか、あるいは ngrokを使うこともできます。
インストール方法については ngrok詳しくは この記事.すべての準備ができたら、次のコマンドを使って ngrok を起動し、トンネルを作成します。
住所をメモしておいてください。 ngrok後のステップで必要になるので。
AWS翻訳のセットアップ
初期項目の設定が完了したら、AWS Translateロールを付与したIAMユーザーを作成します。
Create New IAM User
新しいユーザーに名前を付け、以下のボックスにチェックを入れます。 Programmable Access.
Set User Details
次に、IAMユーザーは TranslateFullAccessポリシーが必要です。これにより、IAMユーザーはTranslate機能にアクセスできるようになります。
Set User Permissions
ユーザー設定を確認し Create.
Review and Create User
作成プロセスが完了したら Access Key IDと Secret Access Key.
Get the Access Key ID and Secret
新しい .envファイルを作成し、以下をコピー&ペーストする:
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=先ほど作成したIAMユーザーの認証情報を使って、ファイルに詳細を記入する。 .envファイルに詳細を記入して保存し、Vonage 電話番号の作成に進みます。
VonageインバウンドSMSメッセージの設定
この例では、着信メッセージを受け取るためにvonageの電話番号が必要です。このためには Vonage CLIを使うことでできる。
バーチャル電話番号の購入
最初のステップは、番号を購入することです。 ISO 3166 アルファ2の国番号をご自由にお使いください)。
アプリケーションで実際に使用するルートは設定されていないが、その名前を /message.電話番号はこのルートにリンクさせる必要があるので、受信メッセージはどこに行けばいいかがわかります。ホスト名を ngrokホスト名を取得し、ここで使用します:
これでVonage webhookがSMSメッセージの受信ルーティング先として設定されました。
申し込み完了
このチュートリアルで残っているのは、受信データを処理するExpressルートを作成することと、実際に翻訳を実行する小さな関数をいくつか作成することだけです。
Webhookを構築する
まず、ウェブフックのコードを作成する必要があります。VonageにはデフォルトのSMS動作を設定する機能が組み込まれている。 設定パネルでで、デフォルトの HTTPメソッドを変更できる。私のは POST-JSON.可能であればこの設定を使用することをお勧めしますが、この設定を変更できない場合に備えて、この例で使用しているコードは3つのオプションすべてを処理します。
Default 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();
}
};
上記のスニペットは、ルーティングに渡すメソッドです。受信メッセージのウェブフックが POSTを使っている場合は req.bodyを使います。 req.queryを使います。 GETオプションを使います。受信ペイロードが適切に設定されている限り、オブジェクトは翻訳を表示するために translateTextメソッドに送られます。
これで、ルートと適切な HTTPメソッドを追加できます。
app.route('/message')
.get(handleRoute)
.post(handleRoute)
.all((req, res) => res.status(405).send());
上記のコードは GETと POSTメソッドを作成します。他のメソッドが使われた場合は 405 - Method Not Allowedレスポンスが返されます。
ウェブフックの準備は完了し、最後のピースは実際の翻訳である。
翻訳方法
前のステップでは translateText.このステップでは、そのメソッドを作成する。
この aws-sdkパッケージの使い方は実に簡単だ。まず AWS.Translateクラスをインスタンス化します。 translate.translateTextメソッドができる。これは translateTextメソッド内で呼び出され textフィールドを使用します。フィールドは SourceLanguageCode言語が autoに設定され TargetLanguageCode入力は に変換するための任意の2文字のコードです。.
function translateText(params) {
var translate = new AWS.Translate({region: process.env.AWS_REGION})
var opts = {
SourceLanguageCode: 'auto',
TargetLanguageCode: 'en',
Text: params.text
};
translate.translateText(opts, function(err, data) {
if (err) {
console.log('error', err);
}
else{
console.log(`Original Text: ${params.text}`);
console.dir(`Translation: ${data.TranslatedText}`);
}
});
}サーバーを起動し、先ほど購入した番号にテキストメッセージを送信して、機能を試すことができる。
AWS Translateは、入力された言語を検出し、翻訳を素早く処理するという素晴らしい仕事をしてくれます。楽しんで試してみてください。
総括
上記の例は翻訳のほんの入門編ですが、翻訳を始めるには良いきっかけになるはずです。ここから、インバウンドメッセージを翻訳し、アウトバウンドメッセージを正しい言語に翻訳することができます。
このチュートリアルの完成版は次のサイトでご覧いただけます。 https://github.com/nexmo-community/sms-translate-aws-js.
Extendプロジェクトの詳細については、以下をご覧ください。 インテグレーションをご覧ください。