
シェア:
ケリー・J・アンドリュースはネクスモの開発者支持者であり、5歳で初めてBASICを使い、30年以上コンピュータをいじってきた。
1997年に初めてウェブページを作り、初めてJavaScriptを試してみて初めて、彼は真の天職を見つけた。ケリーは今、JavaScript、テスト可能なコード、そして迅速なデリバリーのために戦っている。
カラオケを歌ったり、マジックを披露したり、カブスやファイティング・アイリッシュを応援したり。
IBM WatsonとVonageでSMSメッセージを翻訳する
所要時間:6 分
以前の記事で、Google翻訳APIを使ってテキストメッセージを翻訳する方法を紹介しました。 Google翻訳APIと AWS翻訳.
概要
この投稿では インバウンドVonage SMSwebhookを作成し、メッセージを英語に翻訳する方法を紹介します。 IBM Watson Language Translator.
始めるには、以下のアイテムをセットアップする必要がある:
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のパッケージがあれば始められる。
ibm-watson- これは公式のIBM Watson 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 LanguageTranslatorV3 = require('ibm-watson/language-translator/v3');
const { IamAuthenticator } = require('ibm-watson/auth');
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`);
});
これで、サンプルを実行するためのサーバーがセットアップされる。
ングロックのインストール
Webhookは、SMSメッセージを受信したときにVonageサービスがアプリケーションに到達できるように、一般に公開する必要があります。公開可能なサーバーにコードをプッシュするか、あるいは ngrokを使うこともできます。
インストール方法については ngrok詳しくは この記事.すべての準備ができたら、次のコマンドを使って ngrok を起動し、トンネルを作成します。
住所をメモしておいてください。 ngrok後のステップで必要になるので。
IBM Watson Language Translatorのセットアップ
初期項目を設定したら、IBM Watson Language Translator をアカウントに追加し、サンプルを実行するために必要な認証情報を取得します。以下のリンクを このリンクをクリックして、Language Translator API を有効にします。プロジェクトを選択し Enableボタンをクリックして、そのプロジェクトの API を有効にします。
Create Language Translator Service
チュートリアルが表示されます。左のナビで Manageをクリックして、次の画面を見つけます:
IBM Watson Language Translator Manage Screen
まず .envファイルを開き、以下をコピー&ペーストする:
TRANSLATE_IAM_APIKEY=
TRANSLATE_URL=を使用して API Keyと URLをコピーし、IBM Watson Translation Manage ページにある .envファイルの詳細を記入して保存し、Vonage 電話番号の作成に進みます。
VonageインバウンドSMSメッセージの設定
この例では、受信メッセージを受け取るためにVonageの電話番号が必要です。このためには Vonage CLIを使うことでできる。
バーチャル電話番号の購入
最初のステップは、番号を購入することです。 ISO 3166 アルファ2の国番号をご自由にお使いください)。
アプリケーションで実際に使用するルートは設定されていないが、その名前を /message.電話番号はこのルートにリンクさせる必要があるので、受信メッセージはどこに行けばいいかがわかります。ホスト名を ngrokホスト名を取得し、ここで使用します:
これで、受信SMSメッセージがルーティングされる場所としてWebhookがセットアップされました。
申し込み完了
このチュートリアルで残っているのは、受信データを処理する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.このステップでは、そのメソッドを作成する。
パッケージを使って ibm-watsonパッケージを使って、まず LanguageTranslatorV3クラスをインスタンス化します。 translateメソッドが得られる。これは translateTextメソッド内で呼び出され textフィールドを使用します。入力は modelId入力は に翻訳するための任意の2文字のコードです。.
const languageTranslator = new LanguageTranslatorV3({
version: '2017-09-21',
authenticator: new IamAuthenticator({
apikey: process.env.TRANSLATE_IAM_APIKEY,
}),
url: process.env.TRANSLATE_URL,
});
function translateText(params) {
const translateParams = {
text: params.text,
modelId: 'en-es',
};
languageTranslator.translate(translateParams)
.then(data => {
console.log(`Original Text ${params.text}`);
console.dir(`Translation ${data.result.translations[0].translation}`)
})
.catch(err => {
console.log('error:', err);
});
}
サーバーを起動し、先ほど購入した番号にテキストメッセージを送信して、機能を試すことができる。
IBM Watson Language Translatorのフル・レスポンス・オブジェクトには、詳細もたくさんあります。 console.dir(translationResult, {depth: null})に変更すると、完全なペイロードを見ることができます。
総括
上の例は、IBM Watson Translationサービスを使った翻訳のほんのさわりだ。ここから、インバウンドメッセージを翻訳し、アウトバウンドメッセージも正しい言語に翻訳することができます(今後のブログ記事でご紹介します)。
このチュートリアルの完成版は Vonage コミュニティ GitHub.
Extendプロジェクトの詳細については、以下をご覧ください。 https://developer.vonage.com/extend.
