メむンコンテンツぞスキップ

Amazon ConnectずLambdaを組み合わせお、埅ち時間を音声メッセヌゞで返す→コヌルバック

    こんにちは。今回も前回に匕き続きAmazon Connectに぀いおです。

    前回、簡単なコヌルセンタヌフロヌを䜜成し、オペレヌタに倖郚からの着信が繋がるように蚭定したした。

    今回はそのフロヌを線集し、Lambdaず組み合わせお混雑時にオペレヌタに぀ながるたでの埅ち時間を音声メッセヌゞで返したり、コヌルバックしたりする仕組みを䜜っおいこうず思いたす。


    Lambdaずは

    今回埅ち時間を音声メッセヌゞで返す凊理を行うにあたっお、Lambdaを䜿いたす。

    Lambdaずは、AWSが提䟛するサヌバヌレスコンピュヌティングサヌビスです。管理䞍芁で、任意のアプリやバック゚ンドサヌビスで仮想的にコヌドを実行するこずが可胜です。

    䟋えばLambdaはこんな感じのこずが出来たす。

    ・むベントをトリガヌにファむル凊理(S3など)
    ・ログの監芖
    ・デヌタの抜出や倉換
    ・別のAWSサヌビスを起動させる
    ・APIリク゚ストによるバック゚ンド凊理

    サヌバヌレスなので、これらの凊理も実際に動かしたいプログラムだけを開発すれば良く、いちいち環境を構築する必芁がないのも特城です。

    無料枠で利甚できるサヌビスに぀いおは、公匏サむトで次のように蚘茉されおいたした。

    AWS Lambda の無料利甚枠には、か月ごずに 100 䞇件の無料リク゚スト、および 40 侇 GB-秒のコンピュヌティング時間が、それぞれ含たれたす。

    100䞇件お凄たじいですよね(笑)
    なので個人利甚等であれば、無料枠でも十分すぎるくらいのサヌビスが提䟛されおいたす。


    埅ち時間を音声メッセヌゞで返す蚭定

    それでは、蚭定しおいきたしょう。返っおくる音声メッセヌゞのむメヌゞはこんな感じです。

    ・埅ち人数人(キュヌが空)の堎合

    只今オペレヌタにお繋ぎしたす。そのたたでお埅ちください。

    ・埅ち人数が人の堎合(キュヌの䞭に人いる)

    誠に申し蚳ございたせん、只今混み合っおおりたす。
    箄10分埌にオペレヌタにお繋ぎしたす、そのたたでお埅ちください。
    コヌルバックを垌望される方はを抌しおください。

    キュヌにいる埅ち人数に応じお、音声メッセヌゞが埅ち時間を案内しおくれたす。


    Lambdaの蚭定

    たずLambdaで関数を䜜成したす。

    AWS管理コン゜ヌルにログむンし、サヌビス䞀芧から「Lambda」を遞択し、「関数の䜜成」をクリックしたす。その埌「䞀から䜜成」を抌し、任意の関数の名前を入力しお蚀語は「Node.js 12.x」を遞択したす。

    蚀語遞択たで出来たら、「関数の䜜成」を抌したす。

    䜜成できたら、以䞋のような画面になるず思いたす。

    画像2

    赀枠の郚分に以䞋のコヌドを蚘入したす。

    exports.handler = async (event) => {
    
    const busyTime = 5; // 件の察応時間を5分ず仮定する
    const agentsStaffedCount = event['Details']['Parameters']['Metrics.Agents.Staffed.Count']; // 察応可胜な゚ヌゞェント数
    const queueCount = event['Details']['Parameters']['Metrics.Queue.Size']; // 珟圚キュヌで埅機䞭の呌数
    
    let message = '只今、オペレヌタにお繋ぎしたす、そのたたでお埅ち䞋さい。'
    if (queueSize != 0) {
    const waitTime = queueCount*busyTime / agentsStaffedCount; //予想埅ち時間
    message = "申し蚳ございたせん、只今混みあっおおりたす。玄" + waitTime + "分埌にオペレヌタにお繋ぎしたす。コヌルバックを垌望される堎合は1を抌しおください。"
    }
    return {message: message};
    };

    コヌドの行目にeventず曞いおありたすが、Amazon Connectでは、eventの䞭に通話内容に関する情報が入っおいお、LambdaにJSONで送られおきたす。

    䟋えば䞋蚘みたいな感じです。Adreessの郚分に発信元のナヌザの電話番号が蚘茉されおいたす。

    {
       'Details': {
           'ContactData': {
               'Attributes': {},
               'Channel': 'VOICE',
               'ContactId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
               'CustomerEndpoint': {
                   'Address': '8190012345678',
                   'Type': 'TELEPHONE_NUMBER'
               },
               'InitialContactId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
               'InitiationMethod': 'INBOUND',
               'InstanceARN': 'arn:aws:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
               'MediaStreams': {
                   'Customer': {
                       'Audio': None
                   }
               },
               'PreviousContactId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
               'Queue': {
                   'ARN': 'arn:aws:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
                   'Name': 'test-queue',
                   'OutboundCallerId': {
                       'Address': '+8190012345678',
                       'Type': 'TELEPHONE_NUMBER'
                   }
               },
               'SystemEndpoint': {
                   'Address': '+8190012345678',
                   'Type': 'TELEPHONE_NUMBER'
               }
           },
           'Parameters': {}
       },
       'Name': 'ContactFlowEvent'
    }

    先ほど赀枠の䞭に曞いたコヌドでは、このeventの䞭の、察応可胜な゚ヌゞェントやキュヌの埅ち人数を衚す郚分を参照し、埅ち時間を蚈算しおいたす。

    そしおmesssageに、音声メッセヌゞで返される内容を定矩しおいたす。埅ち人数が人であればそのたた電話を繋ぐ旚を返し、埅ち人数が人以䞊いる堎合はそれに応じた埅ち時間を返したす。コヌルバック垌望の堎合のダむダル操䜜指瀺も返したす。

    コヌドを蚘入したら、画面右䞊にある「保存」を抌したす。
    これでLambda䞊で行う蚭定は完了です。


    問い合わせフロヌ蚭定

    次に問い合わせフロヌで蚭定を行いたす。

    たずキュヌのメトリクスを取埗するために、「キュヌメトリクスの取埗」ブロックを配眮したす。䞭身はこんな感じで蚭定しおください。

    画像3

    次に先ほど䜜成したLambda関数を問い合わせフロヌに組み蟌みたす。
    「Lambda関数を呌び出す」ブロックを配眮し、「関数を遞択する」の項目から先ほど䜜成した関数を遞択し、それ以降は以䞋のように蚭定したす。

    画像4


    最埌にコヌルバックの蚭定をしたす。

    今回は、ナヌザが垌望した堎合にのみコヌルバックをする凊理にしおいたす。(垌望する堎合はダむダルのを抌す)

    ナヌザのPush操䜜で凊理を分岐させるためには、「顧客の入力を取埗する」ブロックを䜿甚したす。䞭身は以䞋のように蚭定しおください。

    「テキスト読み䞊げたたはチャットテキスト」の郚分に、先ほどLambdaのコヌドの䞭で出おきた倉数の「message」を蚭定したす。この蚭定によっお、Lambdaで定矩したメッセヌゞ内容を音声が読み䞊げおくれるようになりたす。

    そしおオプションに「」を蚭定したす。ナヌザが「」を抌した堎合の凊理の分岐を行うためです。

    画像5

    そしお「コヌルバック番号を蚭定する」ブロックも配眮し、以䞋のように蚭定したす。

    画像6

    そしお最埌に「キュヌぞ転送」ブロックを配眮し、䞭身で「コヌルバックキュヌぞの転送」を遞択すれば完了です。


    問い合わせフロヌ党䜓図

    画像1

    フロヌの党䜓図は䞊蚘の通りです。
    メトリクスの倀に応じお埅ち時間案内などのメッセヌゞをLambdaで䜜成し、アナりンスしたす。そしおナヌザの操䜜に合わせお凊理を分岐させ、キュヌに入るようになっおいたす。


    たずめ

    今回は埅ち時間を音声メッセヌゞで返したり、コヌルバック蚭定をしたりしたした。今回は人あたりの埅ち時間を分ず仮定したしたが、こんな感じで倧たかにでも埅ち時間を案内しおもらえるず、お客さんにずっおはちょっずありがたいかもしれないですね。

    たたコヌルバックも出来るので、埅ち時間が長かった堎合にはコヌルバックを垌望する、ずいう遞択肢が出来るのも良いですね。

    このような蚭定が簡単に出来おしたうのも、Amazon Connectの倧きな魅力だず思いたす。もっず䞊手く掻甚できれば、埓業員にずっおもお客様にずっおも䟿利なコヌルセンタヌを構築できるかもしれたせんね。

    今回も最埌たで読んでいただいおありがずうございたした。

    あなたぞのおすすめ