[アップデート] Amazon Lex で新機能「ネットワーク」が登場、複数の Lex ボットを統合したインターフェースを利用者に提供出来るようになりました

2023.02.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

本日のアップデートで Amazon Lex の「ネットワーク」という機能が使えるようになりました。

アップデート情報を見てみると複数のボットに統一した UX を提供出来るということで何か新しいことが出来そうだなという感じはわかったのですが、開発者がどういう形で利用することになるのか、あるいは具体的にどういう使い方が出来るのかまでは言及されていませんでした。

そこで本日は実際にこの機能を使ってみましたので、紹介したいと思います。

事前準備:ネットワークに追加する適当なボットを用意しておく

概念としてはネットワークという入れ物を作成し、その中にデプロイ済みのボットを追加していく形となります。
ネットワーク単体で何か動作出来るものではありません。

今回はサンプルボットを 2 つ用意しておき、使用したいと思います。

後述しますがネットワークにボットを追加する際にはエイリアスの指定が必要でドラフトエイリアスは使えません。
ですのでバージョン作成 → エイリアス作成も行っておきましょう。

なお本日時点で、ネットワーク機能でサポートされている言語は en-US のみとなっていますのでご注意ください。

ネットワークを作成しボットを追加するだけ

Amazon Lex のメニューに「Networks of bots」が新しく追加されていますので、そちらのメニューからネットワーク一覧を表示します。

新しいネットワークを作成します。
ネットワーク機能を使うと利用者からは複数のボットが統合されていることは意識せずに一つのボットのように動作します。

ここではネットワークを使った際のユーザーとの対話部分の基本情報を入力します。
本日時点で必要な情報はロールと COPPA、アイドルセッションタイムアウトと、言語および音声です。

ネットワークの基本情報を入力したら既存のボットを追加することが出来ますが、これは後からでも好きなタイミングで追加出来るのでここでは追加せずにそのまま保存しました。

ネットワークが作成出来ました。
作成したネットワークを選択し、詳細情報を確認してみましょう。

詳細画面からボットを追加することが出来ます。
また、上部にビルドとテストのボタンがありますね。
また、サイドメニューを見るとバージョンやエイリアスも存在しています。

先程作成したサンプルボットを追加しましょう。

ここで対象のボットとエイリアスを指定します。
一つのネットワークにボットは 5 つまで追加できます。
また、ボット自身は最大 25 の異なるネットワークに追加が可能となっています。

ボットを追加出来たらネットワークの設定は終わりです。
というよりボットを追加するくらいしかやることはないですね。

使ってみる

ボットを追加したらネットワークをビルドしてテストしてみましょう。
ボットの追加・削除を行う度にネットワークのビルドが必要なのでご注意ください。

ネットワークから統合したいくつかのインテントのうちの一つのインテント呼び出しの発話をしてみます。

インテントが呼び出されました。
応答内容やスロットなどは対象ボットのものが表示されていますね。

別のインテントを起動させることも出来ました。
なるほど。このように統合されたボットインターフェースから複数のボットを呼び出すことが出来る感じですね。良さそうです。

なお、インテント進行中に別のインテントを呼び出すことは出来ませんでした。
アップデートドキュメントによるとインテリジェントに制御しているような記述があったのでコントロールがどこまで出来るのか気になります。
本日時点で公式ドキュメントにはそれらの記述は見当たりませんでした。

ネットワークの基本設定が使われる

ネットワーク作成時にアイドルセッションタイムアウトや言語の音声を設定しました。
これらはボットにも個別に設定しているものですが、確認したところボットの個別設定は無視してネットワークで設定したものが使われるようです。

ここでは次のように OrderFlowers ボットで音声を Joanna を選択し、ネットワーク側では Joey を選択しました。

ネットワーク上でこのインテントを呼び出すと、Joey の音声が使われていました。
これはとても良いですね。

ボット毎にバラバラだったこのあたりの設定をネットワークが統一してくれるので、アップデートニュースに記述されていたとおりエンドユーザーとしては統一されたひとつのボットのような印象を受けますね。

制限事項

利用にあたっていくつか制限事項もあるので紹介します。

番号付きバージョンのボットが必要

前述しましたが、ドラフトバージョンは使えませんのでバージョン付きでデプロイ済みのエイリアスが必要です。

Amazon Connect からはネットワークは利用出来ない

Amazon Connect では Lex と統合することが出来るのですが、本日時点ではネットワークを Amazon Connect に統合することは残念ながら出来ません。
「現在のところ」という注意書きだったのでいずれアップデートされることを期待したいですね。

言語は en-US だけ

本日時点では en-US のみサポートされています。
試しに日本語のみのボットをネットワークに追加してみたところ、追加は出来たのですがネットワークのビルドに失敗しました。

Couldn't build network of bots.

CloudTrail では以下のエラーメッセージを確認することが出来ました。

{
:
    "requestParameters": {
        "botId": "DNL1KRI09Q",
        "localeId": "en_US",
        "botVersion": "DRAFT"
    },
    "responseElements": {
        "message": "Bot with locale: en_US not found. Please add bot member matching the bot network locale."
    },
:
}

ビルドまで使えるのかどうかわからないのでその点は覚えておいたほうが良いですね。

他のアカウントからの追加は出来ない

本日時点で追加できるボットは同一アカウントのみとなっています。
アップデートニュースの中で、ユースケースとしては「企業内の複数の部署で開発されたバラバラのボットを面倒な調整なしに統合可能」というのがポイントのようですので、クロスアカウントのボット追加もいずれアップデートで可能になるかもしれません。

さいごに

本日は Amazon Lex で新機能「ネットワーク」がリリースされたので使ってみました。

ネットワークということで最初は VPC エンドポイント系の何かか?と思ったのですが違いました。
雑にいうと「複数のボットをひとつにまとめたボットを作成して提供出来る機能」という感じですね。

ボットを追加するだけですぐに利用出来る反面、どのインテントにルーティングされるかの細かい制御もできなさそうなので利用にあたってはそのあたりのブラックボックスな部分をしっかり評価したいですね。