Amazon Connectを使ったPINコード伝達機能を作ってみる

2019.02.13

はじめに

こんにちは、中村です。 電話やSMSを利用してPINコード認証をしたいケースがあるかと思います。 今回は、Amazon ConnectでPINコードを聞く機能を作成します。

やってみた

想定しているケースは下記のような形です。

  1. ユーザーがアプリ等で電話番号を入力
  2. アプリから電話番号をAPIへPOST
  3. Amazon Connectからアウトバウンドコール
  4. アウトバウンドコール内で、PINコードを伝達
  5. アプリにPINコードを入力

今回は、3~5を実装します。テストでは、AWS CLIを利用して、2と同等の機能を実現します。

Lambdaを作成し、Amazon Connectでのパーミッションを許可します。 Amazon Connectインスタンス側の設定は、インスタンスダッシュボードの問い合わせフロー > AWS Lambdaで、関数を選択し、+ Lambda関数の追加をクリックしてください。インスタンスダッシュボードからインスタンスIDをメモしておいてください。

exports.handler = async(event) => {
    console.log(JSON.stringify(event));

    let pin = '';
    //PINコード生成の実装(今回はテストとして簡単な実装をしておきます)
    for (let i=0; i<5; i++) {
        pin += Math.floor(Math.random() * 11); 
    }
    
    console.log(pin);
    return { Message: '<speak>あなたのピンコードは、<prosody rate="x-slow"><say-as interpret-as="digits">' + pin + '</say-as></prosody>です。</speak>'};
};

次にフローを作成します、今回は下記のような形になります。先ほど作成したLambdaのArnをAWS Lambda 関数を呼び出すに追加します。

Lambda上でレスポンスメッセージを作成しますのでLambdaと接続するプロンプトの再生は、テキスト読み上げ機能で動的に入力するを選択します。

フローが完成したら、保存して発行をクリックして終了です。 追加フロー情報にある、Arnをメモしておいてください。

またAWS CLIで利用するためには、

  • 作成されているキューのID
  • Amazon Connectの電話番号

の2点もメモしておいてください。

テスト

AWS CLIにてAmazon ConnectでStartOutboundVoiceContactを実行します。

$ aws connect start-outbound-voice-contact --destination-phone-number 'ユーザーの電話番号' --contact-flow-id '作成したContactFlowId' --instance-id 'メモしたInstanceId' --queue-id 'QueueId' --source-phone-number 'Amazon Connectの電話番号'

電話着信し、PINコードが伝達されます。

まとめ

いかがでしたでしょうか。 SSMLの体験は修正する必要がありますが簡単に構築できました。LambdaでSMSの送信機能の追加等も併せて利用できるといいかもしれません。

弊社では、「Amazon Connect」の導入を検討している方を対象とした無料相談会を毎週開催中です。

また音声を中心とした各種ソリューションの開発支援も行なっております。