Amazon Web Services ブログ

Amazon Lex での英数字 ID のキャプチャと検証



エンタープライズでは多くの場合、アカウントの情報や関連するイベントの確認を、固有の識別子により行っています。たとえば、航空会社は日程を照合するために確認コードを使います。また、保険会社ではポリシーの詳細を取得する際にポリシー ID を利用しています。カスタマーサポートの現場では、こういった識別子が、顧客からの要望に対応するための最初のレベルの情報ということになります。通常、識別子は文字と数字の組合せで構成され、そこには特定のパターンが存在します。文字や数字を、固定長で特定のポジションに配置することが多いでしょう。以前は、広範囲の値に対応するためのカスタムスロットタイプを、お客様が作成する必要がありました。この記事を執筆している現在では、お客様のボットが上記のようなデータをキャプチャするためのスロットタイプとして、AMAZON.AlphaNumericAmazon Lex 内に用意されています。このスロットタイプでは、文字と数字の組合せをキャプチャすることが可能です。検証チェック処理を適用しながら、このスロットタイプを拡張すれば、カスタムのスロットタイプを作成できます。こういった検証チェック処理は、AMAZON.AlphaNumeric スロットタイプにおいて定型的な表現 (regex) を指定することで、適用することが可能です。今回の記事では、AMAZON.AlphaNumeric スロットタイプにより、特定のパターンに制限した英数字の情報をキャプチャする方法をご紹介します。

ボットの構築

この記事では、ボットをモデリングするために、次のような会話を使用します。

ユーザー: 飛行機の変更をしたいのですが。
エージェント: 承知しました。確認コードをいただけますでしょうか?
ユーザー: ABC12D です。
エージェント: ありがとうございます。明日、午前 6 時のシアトル行きにご登場予定でいらっしゃいますね。どちらの便に変更をご希望ですか?
ユーザー: 次の月曜日に変更したいです。
エージェント: ご出発時刻はいかがいたしますか?
ユーザー: 午前 8 時でお願いします。
エージェント: 承知しました。ご変更を承りました。認証を完了するために、クレジットカード番号の下 4 桁をお教え願えますでしょうか
ユーザー: はい、1234 です。
エージェント: どうもありがとうございます。お客様の搭乗便を、2 月 10 日の午前 8 時出発に変更させていただきました。何か他にご要望はございますでしょうか?
ユーザー: ありません。
エージェント: ありがとうございます。本日は、どうもありがとうございました。

まず最初に、次のようなインテントで Amazon Lex ボット (FlightReservationBot) を構築します。

  • MakeReservation – 予約処理とブッキング確認コードを返答するために、旅行日、および出発と到着の都市名を聞き出します。
  • ModifyReservation – 予約変更を行うために、顧客から確認コードとクレジットカード番号の下 4 桁を聞き出します。
  • CancelReservation – 予約のキャンセルを行うために、確認コードを聞き出します。

スロットタイプ作成には、組み込みの AMAZON.AlphaNumeric が使えます。これは、英数字の情報をキャプチャする機能は与えられていますが、その検証は行いません。検証を行わせるためには、定型的な表現の指定が必要です。AMAZON.AlphaNumeric を拡張して、ConfirmationCode という新しいスロットタイプを作成します。今回の確認コードの形式は、6 文字 ([文字] [文字][文字][数字][数字][文字]) に固定されています。例を挙げると ABC12D は確認コードと認識されます。

確認コードのキャプチャと必要な検証チェックを実施するには、次の手順を実行します。

  1. Amazon Lex コンソールで、[FlightReservationBot] をクリックします。
  2. [Slot types] の横にあるプラスサインをクリックします。
  3. [Extend slot type] をクリックします。
  4. [Slot type name] には、ConfirmationCode と入力します。
  5. [Description] には、スロットタイプについての説明を入力します。
  6. [Regular expression] には、表現形式として [A-D]{1}[A-Z]{2}[0-9]{2}[A-Z]{1} を指定し、このスロットタイプが、先に書いた 6 文字固定長の形式だけを受け取るように設定します。
  7. [Save slot type] をクリックします。

これで、ConfirmationCode スロットタイプを使い、ボットにおいて ModifyReservationCancelReservation のインテントを設計できるようになりました。それにより、ユーザーからの入力に有効な確認コードが含まれることが検証できます。

ModifyReservation インテントに ConfirmationCode スロットタイプを追加するには、次の手順を実行します。

  1. Amazon Lex コンソールで、[FlightReservationBot] をクリックします。
  2. [Intents] の下で、をクリックします。
  3. [Slots] の下で、スロットタイプConfirmationCode に適切な表現を指定しながら、新しいスロット BookingConfirmationCode を追加します。
  4. ボットの残りの要素は、ユースケースに合わせて設計します。
  5. [Save Intent]、[Build]、[Publish] の順にクリックします。

これで、ボットが使用可能になりました。規定の表現として指定したパターンに一致しない、ABCDE などを確認コードとして与えることで、このボットのテストを行います。

まとめ

今回の記事では、AMAZON.AlphaNumeric スロットタイプを使い、英数文字の値をキャプチャする方法をご紹介しました。これは、定型的な表現を指定することで、キャプチャされる値を制限すことができます。詳細な情報については、Amazon Lex のドキュメントをご参照ください。お使いのボットで、AlphaNumeric スロットタイプを今すぐお試しください。


著者について

Anubhav Mishra は AWS のプロダクトマネージャーです。彼は、お客様を理解して製品エクスペリエンスを設計することに時間を惜しまず、ビジネスでの課題に取り組んでいます。