Amazon Connect Bootcampで躓いたポイントまとめてみた

Amazon Connect Bootcampで躓いたポイントまとめてみた
この記事をシェアする

この記事は株式会社ギークフィードのアドベントカレンダーに参加させていただいています。7日目の記事になります。

はじめに

はじめまして!スカイアーチHRソリューションズのkuramochiです。

今後Amazon Connectのプロジェクトに参画することになったので、それに備えてハンズオンをやってみました!ボリュームのあるハンズオンなので、今回は躓きポイントに絞ってアウトプットしていきます。

私はIT業界未経験で2023年5月に今の職場に転職したばかり人間ですので、超初心者向けの内容になります。

Amazon Connectってどんなもの?

そもそもAmazon Connectって何?というところですが、クラウド上でコンタクトセンター(電話だけでなくメールやチャットにも対応した問い合わせ窓口)を構築できるサービスです。

特徴として、ドラッグ&ドロップでブロックを組み合わせることで、受電からオペレーター接続までの流れを簡単に構築できます。オペレーター10人から数万人の体制まで対応可能で、働き方も在宅でも出勤でも利用できます。個人で使う人はほぼいないと思いますが、問い合わせ窓口が必要な企業にはメリットの多いサービスです。

Amazon Connect Bootcampはどんなハンズオン?

Amazon Connect Bootcampでは、Amazon Connectの他、AWS Lambda、Amazon DynamoDB、Amazon Lex等を使って、コンタクトセンターに必要な以下の機能を実装していきます。

  • 営業時間判定:営業時間を判定し、営業時間外の場合は自動メッセージを流す
  • 分岐:顧客の入力に応じて担当オペレーターへ振り分ける
  • 顧客認証:発信者番号からIDを識別、顧客が入力した誕生日による本人確認を行う
  • 顧客管理:データベースに登録された顧客情報を顧客IDで照会し、顧客にあったメッセージを流す
  • コールバック:顧客がコールバックを希望した場合、コールバックをキューで管理し自動で折り返す
  • 対応履歴:直近の問い合わせについて、対応状況を音声メッセージで聞くことができる。前回のオペレーターと再度会話することができる
  • Amazon Lexによる音声認識:顧客の要件を音声で認識し、担当オペレーターへ割り振る

これらの機能を、AWSBootCamp1から8のコンポーネントに分けて構築します。図にすると以下のような形です。

長いですね!

この他、このハンズオンの特徴として、「AWS Hands-on for Beginners Amazon Connectによる基本的なコンタクトセンター構築」の実施を前提としており、Amazon Connectの基本機能の説明はありません。加えて、操作に関してもコンソールのスクリーンショットのみで説明無しの場合が多いです。

スクリーンショットの通りなんとなく操作してもできなくはないですが、随時不明点を調べながら進めないと、自分が何をやっているのかわからなくなってしまいます。よくわからないことはググりながら進めましょう!

ここからが本題で、私が躓いた3つのポイントについて書いていきます。

躓いたポイント①電話番号の取得

このハンズオンを始める前の段階として、Amazon Connectのインスタンスを準備し、電話番号を取得しておく必要があります。私はここから躓きました。

下の画像はAmazon Connectのクォータに関するものです。新しく立てたインスタンスで最初の番号取得でしたが、まさに画像の文言で「上限に達しました」と表示されました。

AWSのサポートにクォータの引き上げをリクエストし、インスタンスのARN、エラー画面のスクリーンショット、利用目的(自己学習)を伝えました。4営業日ほどで制限が解除され、無事番号を取得できました。

躓いたポイント②本人確認

ハンズオン内で、簡単な本人確認機能の実装を経験できます。流れとしては以下の通りです。

  1. 顧客から電話があった段階でLambdaが起動し、DynamoDBから顧客情報を取得する
  2. 取得した顧客情報をAmazon Connectに保持する
  3. 顧客情報に応じて自動音声(「こんにちは〇〇様~」)を流し、顧客に生年月日を入力してもらう
  4. 顧客の入力と顧客情報内のデータを照合する。照合結果に応じた自動音声を流す

私の場合、正しい生年月日を入力しても「入力に誤りがあります」という案内が流れてしまい中々本人確認できませんでした。原因究明のためCloudWatchでログを確認していきます。

照合に関するログを見ると、顧客の入力(Value)はきちんと入ってますが、顧客情報(SecondValue)が空欄になっています。

{
    "Results": "false",
    "ContactId": "AAAAABBBBBCCCCC",
    "ContactFlowId": "arn:aws:connect:ap-northeast-1:AAAAAAAAABBBBBBBBBBBBCCCCCCC",
    "ContactFlowName": "AWSBootcamp4",
    "ContactFlowModuleType": "CheckAttribute",
    "Identifier": "AAAAABBBBBCCCCC",
    "Timestamp": "2023-11-17T01:23:01.634Z",
    "Parameters": {
        "Value": "111111",
        "SecondValue": "",
        "ComparisonMethod": "Equals"
    }
}

SecondValueが空欄ということは、1の情報取得か、2の情報保持に問題がありそうです。さらにログをさかのぼると、Lambdaを使ったデータの取得は問題なくできています。生年月日(DOB)もきちんと取れていますね。

{
    "ContactId": "AAAAABBBBBCCCCC",
    "ContactFlowId": "arn:aws:connect:ap-northeast-1:AAAAABBBBBCCCCC",
    "ContactFlowName": "AWSBootcamp3",
    "ContactFlowModuleType": "InvokeExternalResource",
    "Identifier": "AAAAABBBBBCCCCC",
    "Timestamp": "2023-11-17T01:22:43.017Z",
    "ExternalResults": {
        "lName": "Jiro",
        "fName": "Tanaka",
        "caseNumber": "1030",
        "DOB": "111111",
        "message": "Success",
        "lastAgent": "kuramochi",
        "status": "Silver",
        "caseNotes": "プライオリティ、high。ステータス、エスカレーション中。コメント、ケースは調査中です。次回の更新は午後三時です。"
    },
    "Parameters": {
        "FunctionArn": "arn:aws:lambda:ap-northeast-1:00000000:function:AWSBootcamp",
        "ResponseValidation": "ResponseType=STRING_MAP",
        "TimeLimit": "8000"
    }
}

ということは、Connectの情報保持がうまくいっていないのでは…コンソールで設定を確認すると生年月日だけ保持設定が抜けていました!追加し再度テストすると、きちんと照合できました。

躓いたポイント③プロンプトの再生

プロンプトの再生をいくつも組み込むのですが、終盤のプロンプトの再生がうまくいきませんでした。ここまでは単純なコピペだけでうまくいっていたのに、なぜ…

結論としては、SSML設定の見落としが原因でした。

そもそもSSMLという単語自体知らず、注意していませんでした。調べてみると、SSMLは合成音声を制御するマークアップ言語で、声の種類・大きさ・高さ・速さ・区切りなどを指定できるようです。

プロンプトの中身ですが、最初の<speak>と最後の</speak>でSSML拡張テキストであることを示しています。<say-as interpret-as=”digits”>~</say-as>は数字を個別に読み上げる指示です(100を「ひゃく」ではなく「いちれいれい」と読む)。ちなみに、$.Attributes.caseNumberはSSMLではなく、Lambdaで取得した顧客情報の1つを指す変数です。

最後に

上記の他にも小さな躓きがいくつかあり、結構大変でした…躓くと多少イラっとはしますが、解決の過程はとても勉強になりました。全体として、とてもいいハンズオンだったと思います。

Amazon Connectに触れる機会のある方、ぜひAmazon Connect Bootcampをやってみてください!

この記事をシェアする
著者:kuramochi
2023年にAWSエンジニアに転職。Amazon Connect、CDK、TypeScriptなどなど勉強中です。