発信を自動化してみよう

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

はじめに

こんにちは。孔子の80代目子孫兼技術5課の孔です。雨の日が続いていて、なかなか洗濯ができないですね。部屋干しだとカビが生えたりして、結局乾燥機を求めて近所のコインランドリーまで足を運ぶここ最近です。和室はつらいぜ…アイスブレイクでいつも暗いことしか呟かないので、次はもっと明るい話ができたらなと思います。

今回はAmazon Connectに関するブログです。Amazon Connect = コールセンター  = かけてきた電話対応で、受信のイメージを持っている方がいらっしゃるのではないかと思います(オペレーターさんたちがたくさんいらっしゃって、かかってくる電話に対応する!的な)しかし、実はコールセンター の業務って受信だけでなく、発信もあったりしますね。例えばお客様に新しいキャンペーンやプラン見直しを紹介するなどで顧客リストから電話をかけたりすることがあります。Amazon Connectは発信においても使い道があり、このようなニーズに対応することもできます。今回はその一例として、発信自動化を持ってきました。

今回のケースは「Aというイベントがあったらこの人に電話する」などの使い方です。電話の強みはやっぱり一瞬で気づくことができることから、「なんかあったら電話する」は結構いろいろな場面で愛用される解決策ですね。今回はそのようなフローを自動化する方法を持ってきましたので、一緒にみていきましょう。

※ AWSのリソース構築に関する基礎知識があることを前提で話していきます。リソースの構築詳細はこれから同情するサービスのドキュメントなどを参考に構築してください。

構成図&やること

以下のような構成で今回は実装を行います。

何かイベントがあったらAPIGWにwebhookを投げます。するとlambdaが発火し、lambdaはAmazon Connectを使って指定された人に電話をかける仕組みです。今回話す内容はlambdaのコードと、Amazon Connectのフローについてです。

APIGWを他のに大体したり、lambdaと言ったら様々なAWSサービスとの親和性がいいのでうまく構成を作ってもっと使える構成にすることも可能だと思いますので、このブログを読み終わったら何ができるのかな、と考えてみるのもまた楽しいかもしれないですね。

実装

まず、こちらを進めておいてください。

  1. RestAPI(メソッドはPUT)のAPIGWを作成し、lambda(python3.8)に紐付けます。(こちらのリンク参照
  2. Amazon Connectインスタンスを構築する(こちらのリンク参照

準備ができましたら、Amazon Connectの画面に移動し、発信用の問い合わせフローを作成します。フローは以下のようになります(お好みのよって変更可能)

フローを公開して、インスタンスIDと問い合わせフローIDを取得します。両方上の画面で確認(赤い枠)できます。instance/以下がインスタンスID、contanct-flow/以下が問い合わせフローIDとなります。また、キューのIDが必要となりますが、こちらはキューの画面に移動し、特定のキューをクリックするとhttps://XXXX.awsapps.com/connect/queues/{省略}/queue/2917c8cf-XXXX-XXXX-XXXX-0b5bc372348cのようなURLになります。queue/の以下の部分がキューのIDになります。

lambdaの画面に移動し、Amazon Connectから発信ができるIAMロールを付与してください。付与が終わりましたら以下のコードを貼り付けます(boto3などSDKの説明も今回は割愛します。)

import json

import boto3

client = boto3.client('connect')

def lambda_handler(event, context):
    response = client.start_outbound_voice_contact(
        DestinationPhoneNumber='+81{先頭の0を抜いたご自身の電話番号}',
        ContactFlowId='23145a29-XXXX-XXXX-XXXX-ea97cce9593a',  # 先ほど控えた問い合わせフローID
        InstanceId='90a5f398-XXXX-XXXX-XXXX-234e94b136d9',  # 先ほど控えたインスタンスID
        QueueId='2917c8cf-XXXX-XXXX-XXXX-0b5bc372348c',  # デフォルトで実装されたqueueのID
    )

    return {
        'statusCode': 200,
        'body': json.dumps('It works!')
    }

使用するAPIはstart_outbound_voice_contactとなります。こちらは電話の発信を行うAPIとなります。指定した電話番号先に、指定したインスタンスの、指定した問い合わせフローで、指定したキューから電話の発信を行います。

終わりましたらAPIテストをしてみましょう。APIGWの画面に移動し、testからテストを行ってください(bodyは特に何も埋めなくても大丈夫です)

電話がかかってきて、Mizukiさんの声で「問題発生中」と言われたら成功です。

最後に

コールセンター といいますと、やっぱりこちらから電話をかけるような仕事も発生しますね。コールセンター の知識がまだまだ足りない私は、「コールセンター =電話をめっちゃとるもの」だという認識でしたが、こちらからお客様に電話をかけるような仕事もあるんだーと最近気付きました。

その電話ですが、もしもう決まったことを伝えるだけのことであればオペレーターさんたちが直接電話をかけなくても、自動化してMizukiさんに電話を代わりにしてもらうことも可能です。今回はとてもシンプルな構成で対応方法もwebhookに限定していますが、構成を変えたり、lambdaでもっといろいろな情報をAmazon Connectに渡したりするともっと動的なメッセージの編集といろいろな事態に対しての対応も可能になります。もちろんlambdaのパラメータ値も動的に変えるともっと幅広い対応ができるようになります。ぜひもっといろいろな自動化にチャレンジしてみましょう!それでは、雨にも負けず、風にも負けず、お元気で!