DTMF 入力で終了キーのカスタマイズができるようになりました

記事タイトルとURLをコピーする

はじめに

こんにちは、技術 1 課の山中です。 どうぶつの森みなさんやってますか?今作から私はやり始めました。 なかなか理想の島を作るのはむずかしいですね、みんなで一緒にがんばりましょう。

ということで、今回は Amazon Connect に関するアップデートです。 今まで Amazon Connect の問い合わせフローで DTMF の入力を行う場合、終了キーとして # (シャープ) がデフォルトで設定されていました。 今回のアップデートで * (アスタリスク)## (シャープ2個)0000 など終了キーのカスタマイズができるようになりました。

Amazon Connect adds custom terminating keypress for DTMF

終了キーとしては # (シャープ), * (アスタリスク), 0から9の数字 のうち 最大 5 文字までの組み合わせ が指定可能です。

DTMF とは

そもそも DTMF とはなんでしょう?

DTMF(英: Dual-Tone Multi-Frequency)は、0から9までの数字と、*、#、A、B、C、Dの記号の計16種類の符号を、低群・高群の2つの音声周波数帯域の合成信号音で送信する方法である。別名「トーン信号」「プッシュ信号」「PB信号[1]」(PBは push button の略)とも呼ばれ、その信号音は人間の可聴域にあるため日本語では「ピ、ポ、パ」とも擬音語表記される。

DTMF -Wikipedia-

なるほど、DTMF はプッシュ式の電話でボタンを押した際になる ピ、ポ、パ という音の信号のことのようですね。 DTMF は電話をかける時以外にも、通話中に情報の入力として使用されることがあります。 例えば飛行機の予約照会などを DTMF を利用して行うことができます。 今回のアップデートの肝は、この通話中の情報入力が柔軟にできるようになった、というところのようですね。

ためしてみる

これまでのフロー

例えば飛行機の予約照会をこれまでのフローでやろうとするとどうなるのか。 前提として予約の照会には 日付と予約番号 が必要と仮定すると、Amazon Connect のコールフローは以下のように組み立てることができます。

1 の部分で日付を取得し date に格納、 2 の部分で予約番号を取得し reservation_number に格納しています。 それぞれのパラメタに格納後、 Lambda 関数に渡します。 今回用意した、 Lambda 関数はコールフローから渡された内容をログに出力するだけのシンプルなものです。

def lambda_handler(event, context):
    print(event['Details']['ContactData']['Attributes'])
    return {}

このフローを電話番号にセットし電話をかけてみましょう。

私: (電話をかける)
電話口: ご利用予定日を入力してください。入力が終わったらシャープを入力してください。
私: (0501# を入力)
電話口: 予約番号を入力してください。入力が終わったらシャープを入力してください。
私: (1234567# を入力)

切れる

この場合 Lambda 関数のログには以下が出力されました。

{'date': '0501', 'reservation_number': '1234567'}

# (シャープ) がデフォルトの終了キーとなっているので、例えば以下のように利用予定日として 0501#0502# を入力しても1つ目の # (シャープ) で入力が分割されてしまいます。 (今回だと 1 つ目の # (シャープ) 以降の入力は次の DTMF 入力として扱われている)

私: (電話をかける)
電話口: ご利用予定日を入力してください。入力が終わったらシャープを入力してください。
私: (0501#0502# を入力)

切れる

Lambda 関数のログには以下が出力されます。

{'date': '0501', 'reservation_number': '0502'}

また、 (アスタリスク) はデフォルトでは入力キャンセルのためのキーなので、途中で (アスタリスク) を入力すると先に入力した内容がキャンセルされます。

私: (電話をかける)
電話口: ご利用予定日を入力してください。入力が終わったらシャープを入力してください。
私: (0501* を入力)
電話口: 予約番号を入力してください。入力が終わったらシャープを入力してください。
私: (1234567* を入力)

切れる

Lambda 関数のログには以下が出力されます。

{'date': '*', 'reservation_number': '*'}

終了キーのカスタマイズ

終了キーをカスタマイズして、必要な情報を 1 つずつではなく一度に入力できるようにしてみましょう。 検証用に新しくコールフローを以下のように作成しました。 必要な情報を一度に受け付けるため、はじめに作成したコールフローの 2 の部分を削除し、受け付けた情報を input パラメタに格納するようにしました。

顧客の入力を保存する カードを開くと 終了するキープレスを指定 という項目が増えています。 今回は ## (シャープを2個) を終了キーとして設定しました。 必要な日付と予約番号は # (シャープ) で区切って入力してもらいます。

電話番号に紐付け、早速電話をかけてみます。

私: (電話をかける)
電話口: ご利用予定日と予約番号をシャープで区切って入力してください。入力が終わったらシャープを2回入力してください。
私: (0501#1234567## を入力)

切れる

Lambda 関数のログには以下が出力されました。

{'input': '0501#1234567'}

きちんと入力した内容が取得できています!

キャンセルキーのカスタマイズ

今回のアップデートで終了キーのカスタマイズだけでなく、 キャンセルキー * (アスタリスク) の無効化 もできるようになりました。 顧客の入力を保持する カードに キャンセルキーを無効化 チェックボックスが用意されていますので、チェックをつけて無効化してみましょう。

早速電話をかけ、入力時に * (アスタリスク) を入れてみます。

私: (電話をかける)
電話口: ご利用予定日と予約番号をシャープで区切って入力してください。入力が終わったらシャープを2回入力してください。
私: (05*01#1234*567## を入力)

切れる

Lambda 関数のログには以下が出力されました。

{'input': '05*01#1234*567'}

* (アスタリスク) を入力してもキャンセルされることなく、きちんと入力値として認識されています。

おわりに

システムの用途によると思いますが、ユーザに連続して情報を入力してもらうようなケースでは使いどころがありそうですね。

また、本ブログの内容は 2020/4/8(水) 12:00より YouTube Liveで配信される「30分でわかる AWS UPDATE!」でも取り上げる予定ですので、ぜひご覧ください! もしリアルタイムで見逃しても、アーカイブ動画から内容を確認できます。 https://youtu.be/N3RmpPGfYO8

参考