[Amazon Connect] 顧客の入力を取得する 〜予定外の数字が選択されたり、タイムアウトになった時の処理について〜

Amazon Connect(以下、Connect)で、問い合わせフローを作成する場合、ユーザーの入力を処理する最も基本的なブロックは、「顧客の入力を取得する」でしょう。 今回は、この 「顧客の入力を取得する」 の使用方法について整理してみたいと思います。
2018.08.21

1 はじめに

Amazon Connect(以下、Connect)で、問い合わせフローを作成する場合、ユーザーの入力を処理する最も基本的なブロックは、「顧客の入力を取得する」 でしょう。

ブロックは、操作の中にあります。

今回は、この 「顧客の入力を取得する」 の使用方法について整理してみたいと思います。

2 基本的な使用方法

例として、2種類の選択をユーザーに求めるブロックを作成してみました。プロンプトは「行きたいところを選択して下さい。山の場合は1を、海の場合は2を」って感じです。

ユーザーに対するプロンプトは、テキストの入力で設定し、DTMFのオプションで 1、と2を追加しました。

これにより、ユーザの押したボタンによって、処理を分岐できるようになります。

簡単にフローをつなぐと以下のようになると思います。1を選択すると「山が選択されました」、2を選択すると「海が選択されました」と発話して、終了するようになってます。

「顧客の入力を取得する」 では、オプション以外に、タイムアウトやデフォルトもありますが、全部の出力を繋がないと 「保存して発行」 が出来ないので、とりあえず「終了」に繋いでます。

3 予定外の入力

先の例では、「山は1、海は2」ということで、1と2の入力は処理しましたが、ユーザーが誤って3とか#とかを押してしまった場合の制御は考慮されていません。

実は、「顧客の入力を取得する」 では、オプションで設定した以外の入力があった場合、デフォルトに流れます。

以下の例は、デフォルトになった場合、「1若しくは2を選択して下さい」とエラーメッセージを流して、再び最初の入力に戻しているものです。

これによって、フローの流れは、以下のようになります。

C:行きたいところを選択して下さい。山の場合は1を、海の場合は2を
U:3(のボタンを押してしまう)
C:1若しくは2を選択して下さい。行きたいところを選択して下さい。山の場合は1を、海の場合は2を
U:1
C:山が選択されました

決して、上記の例が、「デフォルト」 の処理のベストプラクティスであると言う訳ではありません。あくまでフローの流れ上、自然にユーザーを誘導できる処理を検討するべきでしょう。

4 タイムアウト

「顧客の入力を取得する」 では、タイムアウト値を設定する所があります。

タイムアウトでは、催促して、入力待ちにしたいので、同じ 「顧客の入力を取得する」 の入力につなぎたい衝動にも駆られるのですが、残念ながら出力をそのまま入力につなぐことは出来ません。そこで、何も設定していない「プロンプトの再生」を挟むことにしました。

しかし、これは、「保存して発行」 で、エラーとなります。プロンプトに全く何も設定がないことは許されないようです。

今回は、発話内容のないSSMLを設定することで、このエラーを回避しました。

ということで、出来上がったフローは以下のようなものです。

フローの流れは次のようになります。

C:行きたいところを選択して下さい。山の場合は1を、海の場合は2を
U:・・・・(何も入力しないで5秒経過)
C:行きたいところを選択して下さい。山の場合は1を、海の場合は2を
U:1
C:山が選択されました

5 入力値の保存

「顧客の入力を取得する」 では、ユーザの入力した値を保存することはできません。後で入力値を使いたいような場合は、「問い合わせ属性の設定」 を使用して、ユーザー属性として保存しておく方法があります。

問い合わせ属性の設定では、自由に値を保存できますが、一例として、選択したボタンの値をそのまま保存してみました。

上記のように保存された値は、フロー上でいつでも $.Attributes.place で参照できます。

フローの流れは次のようになります。

C:行きたいところを選択して下さい。山の場合は1を、海の場合は2を
U:1
C:1が選択されました

6 最後に

Connectで、問い合わせフローを作成する場合、ユーザーの入力を処理する最も基本的なブロック言えそうな、「顧客の入力を取得する」 について、まとめてみました。

うまく使いこなして行きたいと思います。