Alexaスキルの多言語対応
概要
本ページは、Alexaスキルの多言語がにあたって参考となる情報、および注意するべき事項を整理するものです。公式ドキュメントにだいたい書いてあるのですが、具体的な意味が分かりづらかったり、追加の参考情報があったほうが分かりやすいものなどある気がしました。
以下の環境を前提とします。
- SDK、ランタイム:ASK SDK v2 for Node.js
- バックエンド:AWS Lambda
参考情報
- 公式ドキュメント:多言語に対応するスキルを開発する
- 基本的な流れや注意事項はこちらに記載されています。
注意事項
1つのLambdaファンクションの対応するべき言語
公式ドキュメントに以下の記載があります。
”カスタムスキル用に作成したクラウドベースのサービスは、サポートされているすべての言語からのリクエストを処理できる必要があります”
バックエンドに何がくるかわからないので公式マニュアルでは抽象的な言い方になっていますが、Lambdaファンクションの場合は、 バックエンドのLambdaファンクション一つで対応したい言語の全てを正常に処理できるようにする(言語別にファンクションを分割できない) という意図になります。
下図のように、スキルには複数のエンドポイント(Lambdaファンクションの場合は複数のARN)を指定することができますが、あくまで性能面(レイテンシ)改善のための機能であり、言語別に呼び分けるものではありません。つまり、"北米から呼ばれるLambdaファンクションは英語だけ処理するロジック"、などではNGであり、"同一のコードで複数の言語の処理を行う"必要があります。
公式ドキュメントのヒントにも以下の記載があります。
ヒント: レイテンシーを低減するには、コードを複数のエンドポイントにデプロイすることをお勧めします。
フォーラムでも以下のやり取りがありました。参考まで。
Alexa Skills Kit (ASK) (日本語) Question: エンドポイントの同一コードの意味
#最初は”もしかして呼び分け可能?”と勘違いしそうになったので念の為記載。
Lambdaファンクションの複数言語対応
-
ユーザの言語の判別
- request オブジェクトのlocaleプロパティを利用します。
- localeプロパティの種別
-
サンプルコード(skill-sample-nodejs-howto)
その他
記載中。