blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2022.03.30 技術記事

DeNA 流 Amazon Connect カスタマイズ [DeNA インフラ SRE]

by Yuya Nakamura

#infrastructure #sre #amazon-connect #lambda #production-costs-optimization #IaC #paas #saas #infosys-infrastructure #infra-quality

はじめに

はじめまして。2021年4月に新卒入社しました IT 基盤部第三グループの中村です。

本記事では、 DeNA がカスタマーサービスで利用している Amazon Connect の紹介と、 DeNA 流のカスタマイズをお伝えします。

Amazon Connect とは

Amazon Connect は、クラウド型のコンタクトセンターを構築できる AWS のサービスです。 クラウド型のサービスですので、物理的な回線を設置する必要がありません。 また、オペレータの勤務場所の地理的制限もないので、オペレータは自宅からでもコンタクトセンターの業務が可能になります。

Amazon Connect

Amazon Connect には、 GUI で問い合わせフローを編集できる「問い合わせフローエディタ」が提供されているので、非エンジニアの担当者でも容易にフローの変更が可能です。

そして、より高度で複雑な処理も Lambda と組み合わせることで実現することができます。

問い合わせフローエディタ

ルーティング変更アプリ

今回は、 DeNA のカスタマーサービスが利用している Amazon Connect に施している工夫の一つ、「ルーティング変更アプリ」をご紹介します。

着信時のフローについて

ルーティング変更とは何なのかを説明するためには、先に Amazon Connect の着信フローについて説明する必要があります。説明にあたって必要となる用語を以下にまとめました。

用語 説明
問い合わせフロー 着信した際の処理の定義
キュー 順番待ちの列のようなもの
ルーティングプロファイル オペレータがどのキューを担当するかの定義
セキュリティプロファイル オペレータの権限のようなもの

カスタマーからの電話を受けるためには、電話番号を登録する必要があります。 そして、登録された電話番号にはそれぞれ 問い合わせフロー を紐づけます。

問い合わせフロー の中では様々な処理を行い、最終的にどの キュー にカスタマーからの問い合わせを入れるかを決定します。

キュールーティングプロファイル で管理されています。 そして、 ルーティングプロファイル はオペレータに紐づいています。 オペレータは、それぞれの ルーティングプロファイル で定義された担当 キュー 、つまりカスタマーからの電話に対応します。

着信時のフロー

ルーティング変更とは

DeNA のカスタマーサービス部では、オペレータが複数のサービス窓口(担当 キュー)の電話対応を担当しています。 以下の表のように、オペレータ毎に時間帯によって担当 キュー が決まっているので、日常的に担当 キュー の切り替えが発生します。

時間帯 サービス窓口(担当 キュー)
10:00 ~ 12:00 ゲーム窓口
12:00 ~ 17:00 カーシェア窓口

オペレータの担当 キュー を変更するためには、オペレータに紐づいた ルーティングプロファイル を変更する必要があります。 しかし、一般オペレータには ルーティングプロファイル の変更をする権限はありません。

そこで、 DeNA では、ルーティング変更アプリを開発して、このアプリの操作権限を持つオペレータであれば ルーティングプロファイル を変更できるようにしています。

ルーティング変更アプリの使い方

ルーティング変更アプリでは、非エンジニアのオペレータが操作しやすい Slack のスラッシュコマンドを採用しました。 以下の三種類のコマンドを提供しています。

スラッシュコマンド 内容 引数
/list_users ユーザ一覧を取得する なし
/list_routing_profiles ルーティングプロファイル一覧を取得する なし
/update_user_routing_profile ユーザのルーティングプロファイルを更新する ユーザ ID と ルーティングプロファイル ID

これらのコマンドは、特定のプライベートチャンネルでのみ実行することができるようになっていて、定期的にこのプライベートチャンネルのメンバーを確認することで、権限の棚卸しを実施しています。

ユーザの ルーティングプロファイル を変更する際は、 /list_users/list_routing_profiles の結果からユーザとプロファイルの ID を取得してから、 /update_user_routing_profile ユーザID プロファイルID を実行します。

では、実際に変更する手順を見てみましょう。

  1. /list_users を実行してユーザID を取得します。

    /list_users の実行結果

  2. /list_routing_profiles を実行して、プロファイルID を取得します。

    /list_routing_profiles の実行結果

  3. 取得した情報をもとに、 /update_user_routing_profile でルーティングプロファイルを変更します。

    /update_user_routing_profile の実行結果

ルーティング変更アプリの構成

ルーティング変更アプリは Lambda で動作しており、 Slack からのコマンドを受け取るために API Gateway を利用しています。構成図は以下の通りです。

構成図

Lambda は JavaScript で実装しており、 aws-sdk の Connect クラスを利用しています。

この Connect クラスを利用することで、以下の例のように簡単に Amazon Connect 関連の操作を行うことができるようになります。

import AWS from 'aws-sdk';

const connect = new AWS.Connect();

// ユーザ一覧取得の例
connect.listUsers({ InstanceId: 'インスタンスID' }, (err, data) => {
  if (err) {
    // エラー
  } else {
    // 正常終了
  }
});

// ルーティングプロファイル一覧取得の例
connect.listRoutingProfiles({ InstanceId: 'インスタンスID' }, (err, data) => {
  if (err) {
    // エラー
  } else {
    // 正常終了
  }
});

// ルーティングプロファイル変更の例
const params = {
  InstanceId: 'インスタンスID',
  RoutingProfileId: 'ルーティングプロファイルID',
  UserId: 'ユーザID',
};
connect.updateUserRoutingProfile(params, (err, data) => {
  if (err) {
    // エラー
  } else {
    // 正常終了
  }
});

おわりに

Amazon Connect は、ツールを使って機能を拡張することができるので、とても便利に利用することができます。

今回は Amazon Connect を便利に使うために作った ルーティング変更アプリ をご紹介しました。 DeNA では、より便利にサービスを利用するために、このようなちょっとしたツールを他にも色々と作っています。

本記事で DeNA に興味を持っていただけたら幸いです。

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。