BETA

Amazon Connect で IVR を作ってみる(その3)

投稿日:2019-07-27
最終更新:2019-07-29

これなに?

https://takahashino1.qrunch.io/entries/mL1et2yXLcBNry7b のつづき

このページの目標

  • IVRで入力された情報をE-Mailで送信する

やること

  • Lambdaの修正

Lambdaの修正

最終的にはこんな感じになります
https://gist.github.com/takahashino1/efae103e30dae94de99986f4e343f443

いくつかハマりポイントがあったので記録しておきます。

Lambdaには、レスポンス設定が必要

前回の状態でIVRに電話を掛けると、メールは送信できるけど、エラー応答が帰ってきている状態でした。
そこで原因を調査しました。

公式ドキュメントによると、例として、

    var resultMap = {  
        Name:'CustomerName',  
        Address:'1234 Main Road',  
        CallerType:'Patient'  
    }  

    callback(null, resultMap);  

をレスポンスに設定する必要があるようでした。

また、おまじない的に
context.callbackWaitsForEmptyEventLoop = true;
を設定することで、callbackがうまく渡らなかったとき用の設定をしています。
(これは本番運用では false にすべきです)

パラメーターの渡し方

Amazon Connectの問い合わせフローの方では、以下のように設定してみます。

Lambdaの方への渡り方は、公式ドキュメントによると、

{  
    "Details": {  
        "ContactData": {  
            "Attributes": {},  
            "Channel": "VOICE",  
            "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",  
            "CustomerEndpoint": {  
                "Address": "+1234567890",  
                "Type": "TELEPHONE_NUMBER"  
            },  
            "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",  
            "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",  
            "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",  
            "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXX",  
            "Queue": "QueueName",  
            "SystemEndpoint": {  
                "Address": "+1234567890",  
                "Type": "TELEPHONE_NUMBER"  
            }  
        },  
        "Parameters": {  
            "sentAttributeKey": "sentAttributeValue"  
        }  
    },  
    "Name": "ContactFlowEvent"  
}  

のような形式で渡されるということなので、これを参考にLambdaのテストに設定します。

テストイベントを設定をクリックして、

適当にイベント名を付けて、保存をします。
テンプレートは、何でも構いません。

内容は、前述の公式ドキュメントを参考に、以下のような内容を設定します。

{  
  "Details": {  
    "ContactData": {  
      "Attributes": {},  
      "Channel": "VOICE",  
      "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",  
      "CustomerEndpoint": {  
        "Address": "+1234567890",  
        "Type": "TELEPHONE_NUMBER"  
      },  
      "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",  
      "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",  
      "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",  
      "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXX",  
      "Queue": "QueueName",  
      "SystemEndpoint": {  
        "Address": "+1234567890",  
        "Type": "TELEPHONE_NUMBER"  
      }  
    },  
    "Parameters": {  
      "customerInput": "0701",  
      "customerPhoneNumber": "08012345678"  
    }  
  },  
  "Name": "ContactFlowEvent"  
}  

下記の部分がAmazon Connectで設定したパラメーターです。

    "Parameters": {    
      "customerInput": "0701",    
      "customerPhoneNumber": "08012345678"    
    }    

このパラメーターを、Lambdaの方で、うまく処理してあげましょう。

これを設定することにより、Lambda側から簡単にAmaxon Connectからのリクエストを再現できます。
下記のテストボタンをクリックすることで、再現可能になります。

実際にテストをしてみると、下記のようなメールが届くことになります。

ここまでできたら保存して、実際に電話をかけてみて試してみましょう。
Amazon SNSで設定したメールアドレスへ、メールが届くはずです。

続き

https://takahashino1.qrunch.io/entries/J6qtMBZglIrrly9L

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@takahashino1の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!