ちょっと話題の記事

(小ネタ)[Amazon Conect] キューの混み具合によって適切なメッセージを返す

2019.06.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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ハンズオンセミナー」を開催します

また、音声を中心とした各種ソリューションの開発支援を行なっております。