(小ネタ)[Amazon Conect] キューの混み具合によって適切なメッセージを返す
1 はじめに
AIソリューション部の平内(SIN)です。
Amazon Connect (以下、Connect)では、キューのメトリックスを取得可能です。 今回は、このメトリックスを取得して、キューの状態に応じた適切なメッセージを返す仕組みを試してみました。
出来上がりは、以下のようなイメージです。
キューが空っぽの場合
お電話ありがとうございます。 只今、オペレータにお繋ぎします、そのままでお待ち下さい。
キューに既に3人が待ち状態の場合
お電話ありがとうございます。 誠に申し訳ございません、只今、大変混みあっております。 約15分後にオペレータにお繋ぎします、そのままでお待ち下さい。
2 メトリックスの取得
キューのメトリックスを取得するためには、メトリックスの取得ブロックを配置する必要があります。
このブロックでは、プロパティで取得対象を設定しますが、ここでは、キュー名を選択しています。
この状態で、取得できるメトリックスは、以下のとおりです。
属性 | 説明 | タイプ | JSONPath 参照 |
---|---|---|---|
キュー名 | メトリクスが取得されたキューの名前。 | システム | $.Metrics.Queue.Name |
キュー ARN | メトリクスが取得されたキューの ARN。 | システム | $.Metrics.Queue.ARN |
メトリクスのキューサイズ | 現在キュー内にある問い合わせの数。 | システム | $.Metrics.Queue.Size |
キューの最も古い問い合わせ | 最も長くキューに入っている問い合わせの場合は、問い合わせがキューに入っている時間の長さ (秒単位)。 | システム | $.Metrics.Queue.OldestContactAge |
オンラインエージェント | 現在オンライン、つまり、ログインしていて、オフライン以外の何らかの状態にあるエージェントの数。 | システム | $.Metrics.Agents.Online.Count |
使用可能なエージェント | 状態が [Available] に設定されているエージェントの数。 | システム | $.Metrics.Agents.Available.Count |
対応エージェント | 現在対応可能なエージェントの数。対応可能とは、ログインしていて、[Available]、[ACW] または [Busy] 状態にあるエージェントです。 | システム | $.Metrics.Agents.Staffed.Count |
連絡作業後のエージェント | 現在 ACW 状態にあるエージェントの数。 | システム | $.Metrics.Agents.AfterContactWork.Count |
ビジー状態のエージェント | 現在、問い合わせに対応中のエージェントの数。 | システム | $.Metrics.Agents.Busy.Count |
不在のエージェント数 | [Missed] 状態のエージェント数。エージェントは、不在着信の後、この状態に入ります。 | システム | $.Metrics.Agents.Missed.Count |
非生産的な状態にあるエージェント | 非生産的 (NPT) 状態にあるエージェントの数。 | システム | $.Metrics.Agents.NonProductive.Count |
3 Lambda
Lambdaのパラメータには、属性:キューメトリックスを選択して、先の属性を利用可能です。
今回は、下記の2つをパラメータにセットしました。
- キューに保存された問い合わせ
- 使用可能なエージェント
下記は、メッセージを生成しているコードです。
ざっくりで恐縮ですが、1件の電話対応が5分と仮定して、溜まっているキューの呼数を可動可能なエージェント数で割ることで待ち時間を概算しています。
exports.handler = async (event) => { console.log(JSON.stringify(event)) const busyTime = 5; // 1件の対応時間を5分と設定する(仮定) const agentsStaffedCount = event.Details.Parameters["Metrics.Agents.Staffed.Count"]; // 対応可能なエージェント数 const queueSize = event.Details.Parameters["Metrics.Queue.Size"]; // 現在キューで待機中の呼数 let message = '只今、オペレータにお繋ぎします、そのままでお待ち下さい。'; if (queueSize != 0) { const waitTime = queueSize * busyTime / agentsStaffedCount; //予想待ち時間 message = "誠に申し訳ございません、只今、大変混みあっております。約" + waitTime + "分後にオペレータにお繋ぎします、そのままでお待ち下さい。" } return {message: message}; };
4 問い合わせフロー
問い合わせフロ−は、次のようになっています。キュー・メトッリクスの値に応じて、Lambdaによって生成されたメッセージをアナウンスした後、キューの入るようになっています。
5 最後に
ざっくりでも、待ち時間をアナウンスするのは、ちょっと親切かも知れません。 待ち時間が計算しきれない場合は、キューで待ち状態となっている呼数をアナウンスするだけでも良いかも知れません。 そして、あまりに待ち時間が長くなるようだったら、コールバックへの希望確認を行うことも良いストーリになるかも知れません。
サービスの種類に応じて、適切な運用ができれば良いのですが。
弊社では、Amazon Connectに関するキャンペーンを行なっています。
【6/27(木)東京】「1時間でクラウド型コンタクトセンターを構築できるようになる!無料Amazon Connectハンズオンセミナー」を開催します
また、音声を中心とした各種ソリューションの開発支援を行なっております。