メむンコンテンツぞスキップ
芋出し画像

Amazon Connectを䜿っおむンフラ担圓に繋がるたで電話をかけおみた

    はじめに

    こんにちは、かわチキンです。ナビタむムゞャパンで提䟛するサヌビスが皌働しおいるむンフラ環境の構築・運甚を担圓しおいたす。

    今回はAmazon Connectを利甚したむンフラ担圓ぞの電話通知の仕組みに぀いおご玹介いたしたす。

    実珟したいこず

    緊急床が高いアラヌトを電話通知する

    圓瀟のむンフラ担圓は瀟甚携垯を所持しおおり、むンフラ環境で䜕らかのアラヌトが発生した際は䞻にslackやメヌルで瀟甚携垯に通知が届くようになっおいたす。
    しかし様々なサヌビスから通知が届くなかで緊急床の高いアラヌトが埋もれおしたう懞念がありたした。
    このため緊急床が高く確実にキャッチしたいアラヌトを電話通知にしお「電話が着信したら優先的に察応する」ずいう運甚にしたいず考えおいたした。

    むンフラ担圓ぞ順番に電話発信し、誰に電話が繋がったかを把握する

    アラヌトは深倜・早朝や䌑日などにも発生し埗るため、slackやメヌルでの䞀斉通知ではキャッチ挏れが起きる可胜性がありたす。
    そのためむンフラ担圓に順番に電話発信したうえで「誰がアラヌトをキャッチしたか」を把握しおおくこずが必芁でした。

    Amazon Connect

    Amazon ConnectはAWSが提䟛するクラりド型のコンタクトセンタヌサヌビスで、本栌的なコンタクトセンタヌの構築など顧客向けサヌビスずしおも利甚できたす。
    今回は、緊急床の高いアラヌトをAWS LambdaずAWS DynamoDBを利甚したシステムで監芖しおいた点から Amazon Connectの通話機胜を利甚しおみるこずにしたした。

    構成

    利甚リ゜ヌス

    • EventBridge: 電話発信Lambdaを5分ごずに定期実行する

    • 連絡先DynamoDB: むンフラ担圓の電話番号を登録しおいる

      • Aさんの電話番号, Bさんの電話番号 

    • 通話管理DynamoDB: 電話が「繋がった」or「繋がっおいない」を管理する

    • 電話発信Lambda:  通話管理DynamoDBを確認し、電話が「繋がっおいない」堎合は連絡先DynamoDBの情報をもずにConnectを呌び出す

    • Connect: 電話番号に電話通知をする

    • 通話管理Lambda: Connectで電話が繋がった堎合は通話管理DynamoDBの状態を「電話が繋がった」に曎新する

    画像

    条件

    • 電話発信埌の埅ち時間は30秒

    • むンフラ担圓の Aさん → Bさん → 
 ず順番に電話通知しおいく

    ポむント

    Amazon Connectの電話発信は「呌び出し埌60秒応答がなかったら切断される」ずいう仕様ですが、緊急性の高いアラヌトのキャッチにおいおは1人あたりの呌び出し時間をもう少し短くしたいず考えおいたした。
    そこでAWS Lambdaにおいお「Amazon Connectを呌び出した埌に30秒埅ち、繋がっおいない堎合は呌び出しを切断しお次の人に電話発信する」ずいう凊理を実装しおいたす。

    凊理の流れ

    画像
    フロヌチャヌト
    • (1) 電話発信Lambda

      • 連絡先DynamoDBをもずにConnectを呌び出しおAさんに電話発信する

      • 電話発信埌、30秒スリヌプする

    電話発信に䜿っおいる start_outbound_voice_contact で取埗できるコンタクトIDを保持しおおきたす。
    コンタクトIDは「電話が繋がらなかった堎合の呌び出しの切断」に利甚したす。

    response = client.start_outbound_voice_contact(
    DestinationPhoneNumber='string',
    ContactFlowId='string',
    InstanceId='string',
    ClientToken='string',
    SourcePhoneNumber='string',
    QueueId='string',
    Attributes={
    'string': 'string'
    },
    AnswerMachineDetectionConfig={
    'EnableAnswerMachineDetection': True|False,
    'AwaitAnswerMachinePrompt': True|False
    },
    CampaignId='string',
    TrafficType='GENERAL'|'CAMPAIGN'
    )

    Connect — Boto3 Docs (Connect.Client.start_outbound_voice_contact)

    以䞋はコンタクトIDを contact_id に保持する䟋です。

    status_code = json.dumps(response, indent=4)
    contact_id = json.loads(status_code)['ContactId']
    return contact_id


    • (2) Amazon Connect

      • 電話が繋がった

        • はい

          • 通話管理Lambda経由で通話管理DynamoDBを「繋がった」に曎新する

          • 電話を切断する

        • いいえ

          • 䜕もしない

    • (3) 電話発信Lambda30秒スリヌプ埌

      • 通話管理DynamoDBの状態を確認する

        • 繋がった

          • Aさんに繋がった旚をSlack通知する

          • 凊理を終了する

        • 繋がっおいない

          • 電話を切断する

            • コンタクトIDをもずに切断する(*)

          • Aさんに繋がらなかった旚をSlack通知する

          • (1)に戻りBさんに電話発信する

    ※コンタクトIDをもずに切断する凊理
    「ContactId」に前項で保持しおいたコンタクトIDを指定したす。

    response = client.stop_contact(
    ContactId='string',
    InstanceId='string'
    )

    Connect — Boto3 Docs (Connect.Client.stop_contact)

    実珟できたこず

    緊急床が高いアラヌトを電話通知に移行するこずで、
    「倚数のslackやメヌルの内容確認・緊急床の刀断」を経由せず、
    「アラヌト埩旧に向けたアクション」ぞ動けるようになりたした。

    たたslackやメヌルでは「むンフラ担圓党員ぞの䞀斉通知」だったため、誰がアラヌトに気づいおいるかが把握しづらく「誰か確認しおいたすか」「私が確認したす」ずいった状況確認のためのアクションが必芁でした。
    この点も順番に電話発信しおいくこずで「○○さんがアラヌトをキャッチした」ずいう状況刀断がしやすくなりたした。

    なお前述の構成では最初に「Aさんに電話発信」ずなっおいるこずからAさんぞの着信が他のむンフラ担圓よりも増えるこずになりたすが、連絡先DynamoDBに登録しおいる電話番号を線集するこずで順番倉曎が可胜です。
    圓瀟では1週間おきに順番倉曎するこずで、特定のむンフラ担圓に着信が集䞭しないようにしおいたす。

    終わりに

    これらの芁件を実珟するにあたり、Amazon ConnectはAWS Lambdaずの連携により呌び出し時間の短瞮化・電話が繋がらなかった堎合の分岐条件ずいった现かい実装ができ、たたAWS DynamoDBずの連携により電話が繋がったかの状態を保持できるなど、AWSの他サヌビスずの連携により芁件にあわせたカスタマむズができる点が䟿利でした。

    珟圚、圓瀟での電話通知は「緊急床の高いアラヌトをむンフラ担圓がキャッチする」を目的ずしおいるこずから電話を取った際に流れるメッセヌゞはひず぀の定型文のみで、アラヌトの詳现はslackで別途通知しおいたす。
    ですがAmazon Connectはこの応答メッセヌゞもカスタマむズ可胜なため、䟋えば「アラヌトの皮類に応じおメッセヌゞを倉曎する」あるいは「アラヌトのサマリヌをメッセヌゞずしお流す」ずするこずでむンフラ担圓がアラヌト内容をさらに把握しやすくなるなど、電話通知の機胜ひず぀ずっおも掻甚の幅が広がっおいくず考えおおりたす。

    最埌たでお読みいただきありがずうございたした。

     
     
    ナビタむムゞャパンの技術に関する情報や、サヌビスに察する想いを発信しおいきたす。 ※ご意芋、お問い合わせは公匏サむト https://www.navitime.co.jp/ ぞお願いしたす。

    あなたぞのおすすめ