【レポート】 #AWSSummit セルフハンズオン クラウド型コンタクトセンター、Amazon Connect ~25分でコンタクトセンターを立ち上げてきた~

英語圏のコールセンターの待ち時間ってこんな文言が流れるって、皆さん知ってましたか・・・? "Thank you for calling. Your call is very important to us and will be answered in the order it was received."
2020.09.09

みなさんどうも、新卒エンジニアのたいがーです?

AWS Summit Online始まりましたね!今年のサミットはオンラインでの開催となり、2020/09/08~9/9に行われるライブセッションと9/30まで視聴可能なオンラインセッションで構成されています。今回は、AWS Summit Online 2020の[セルフペースハンズオン]クラウド型コンタクトセンター Amazon Connectに挑戦したので、その様子を書いていきます!

Amazon Connect、みなさんご利用になられていますでしょうか。Amazon Connectだけではなく、Contact Centerとは?というところから始めてくださったので、すごくわかりやすいハンズオンでした!

実際のセッション動画はこちらからご覧ください!

スピーカーはAWS シニアアドボケイトの亀田さんです!

Call Centerと何が違う?Contact Center

"従来の電話、ではなくチャットやメール等様々な手法でお客様をサポートするセンター"のことだそうです。

確かに、最近ホームページ上でのチャットのやり取りでサポートしてもらう、という方も増えたのではないでしょうか?

その中でもAmazon Connectとは?

上記のContact Centerの中でも、Amazonが提供しているAIサービスとの連携により、お客様とオペレータとの会話を保存しての文字起こしをしたり、文字起こしした内容の感情分析を自動で行ったりできるサービスです。

従来とのコールセンターとAmazon Connectの違い

従来、コールセンター、そしてコンタクトセンターの立ち上げにはお金と時間がかかっていました。

  • 物理的な工事
  • 機材を揃えるための費用
  • オペレータと繋がるまでの待ち時間

しかし、Amazon Connectはそんな悩みを解決してくれます!

  • 素早い構築
  • 電話番号1回線からでも作成できる手軽さ
  • 従量課金制

慣れた人であれば、ものの数分で構築が可能です。また、1回線からでもできる手軽さ、というのもとても魅力的ですよね!

また、従量課金制となっているので、使った分だけ料金が発生します。

それでは実際にAmazon Connectの実装方法を見ていきましょう!

Amazon Connectを使ってコンタクトセンターを作っていく

Amazon Connectは、他のクラウドサービスと同様にセルフサービスで設定できるようになっています。また、GUIで初期設定を行います。

それでは、やり方を見ていきましょう。

大きく分けて手順は二つ。

  1. 電話番号を選択
  2. 電話がかかった後のフローを選択する

詳しく見ていきましょう!

ランダムの電話番号から、選択

まず初めにAWSがAmazon Connect用に確保している電話番号の一覧の中から、使いたい番号を選択します。

  • 発行できる電話番号

大きく分けて、3つあります。

  • 0120
  • 0800
  • 050

このうち、料金無料(コールフリー)電話に関してはユーザー側に電話料金が発生しない代わりに、AWS利用料でその料金が発生します。

また、03の番号を使用することもできるのですが、その際は"AWSサポートに事前の問い合わせ"を行う必要があるのも注意点だそうです。

問い合わせフローを追加していく

上記で選択した番号に電話がかかってきたとき、どのような動作をするかを選択していきます。

左側の方に複数の機能が追加されているので、ドラッグアンドドロップで配置、追加することでフローを定義していきます。それではハンズオン動画内で出されていた一例を見ていきましょう。

初めは"mizuki"というAWSから配布されている音声エンジンを設定されています。その後プロンプトの再生として、実際読み上げる音声を設定します。この音声は少々"機械的なもの"になるため、事前に録音したものがある場合はそちらを使う場合はWAVファイルを作成し、アップロードすることで使用することもできます。

その後、IVRという機能をつけていきます。

IVRとは、"〇〇について知りたい方は1を、〇〇について知りたい方は2"を、というサポートに電話をかけたことがある人は馴染みのある音声のことです。そして、またその後の処理に関して定義していきます。

Amazon Connectと他のAWSサービスとの連携

AWS Lambdaの場合

AWSサービスとの連携として一例に挙げられていたのは、AWS Lambdaです。

着信した時点でスクリプトを実行し、電話番号をキーとし、過去の問い合わせ履歴を検索し、それをオペレータにリアルタイムに表示させる。ということも可能です。

ECサイトであれば、最近購入したものを表示したり、以前の問い合わせであった内容を見ることで、より良い顧客体験を作り出すことができます。

Amazon S3の場合

次の例では、Amazon S3との連携です。

通話を録音したものをS3に音声ファイルとして保存します。S3バケットに保存されたことをキーとして、音声を文字起こしする"Amazon Transcribe"というサービスに連携することで、その音声データをテキストデータとして保存することができます。また、そのテキストデータをAmazon Connectの管理者画面上で見ることができます。

さらに、オペレータの会話の最後を感情分析することで、最後どのように会話が終わったのかを知ることができます。それにより、全体のお客様の満足度を可視化することも可能です。

文字起こしだけでなく、感情分析まで行え、さらにそれによる満足度の可視化まで・・・なかなか満足度というのはわからないものですが、実際のデータに基づいて可視化されるというのはすごいですよね。今後、どのようにオペレータが対応していくかという面でも計画が立てやすくなりそうです。

実際のオペレータはどのように操作するのか

Amazon Connectでは、ユーザーのお客様の好みによって複数の選択肢を選択してもらうことが可能です。

  • ソフトフォンでの対応
  • チャットでの対応

オペレータが複数いる場合、オペレータの属性によってどちらで対応するのかを選択することもできます。

経験豊富なオペレータは電話での対応、新しく配属されたトレーニング中の人はチャットのみ対応という選択も可能です。

また、チャットは一人のオペレータが複数名を同時に対応することもできます。

ソフトフォンでの対応

Amazon Connectで提供されているソフトフォン(CCP)を使っていきます。Amazon Connect Streams APIが提供されているので、CRMと連携することも可能です。

チャットでの対応

Amazon ConnectはContact Centerであるため、チャットでの対応することも可能です。

先ほども書いた通り、複数名を同時に対応することもできますが、複数名対応する場合の上限人数も設定することができます。

それでは、動画視聴を終えたので、実際にハンズオンに取り組んでいきたいと思います!

実際のハンズオンに取り組んでみた

それでは実際に資料を見ながら、ハンズオンをやっていきましょう!

実際のハンズオンの流れは、こちらです。

  1. Amazon Connectによるコンタクトセンター構築
  2. IVRと通話録音機能の追加
  3. Transcribeを使った文字起こし機能の追加

Amazon Connectによるコンタクトセンター構築

  • 概要 Amazon Connectを使えば、電話番号の取得を管理画面からすぐに行うことができ、ビルトインのリソースを少し変更するだけでインバウンドのコンタクトセンターが簡単に構築できることを理解します

  • 作業ステップ

  • Amazon Connectインスタンスの作成

  • Amazon Connect電話番号取得
  • Amazon Connec問い合わせフロー変更
  • 動作確認

Amazon Connectインスタンスの作成

実際にインスタンスを作成していきます。

Amazon Connectの画面を開くとこのような画面が出てくるので"今すぐ始める"をクリックします。

次にID設定を行います。こちらの設定でインスタンスのエアリアス名を入力します。とりあえず、名前と入社日で設定してみました。こちらのURLはあとで出てくるソフトフォンのURLとも一致しています。

次に管理者の作成ですが、今回は設定者が管理者となるためスキップします。

次のテレフォニーオプションは初期設定のまま、次のステップに進みます。

データはデフォルトで通話記録とレポートがS3に保存されるので、次のステップに進みます。

最後、確認してから次に進みます。

1,2分後にインスタンスが作成できると、このような画面が表示されるので"今すぐ始める"をクリックします。すると、Amazon Connectの管理ページが表示されます。

ここまででインスタンスの作成は終了です。

Amazon Connect電話番号取得

次に、電話番号を設定していきます。ルーティングの設定の中から電話番号を設定しましょう。

電話番号の管理画面が出てくるので、電話番号の取得をクリックします。

電話番号の取得画面が出てくるので、DID(直通ダイヤル)を選択してから、国 / 地域で日本を選択し、そこから好きな番号を選びます。

今回は一番上の+81 50-3183-0964を選択しました。また下の問い合わせフローは、 Sample queue customerを選択してください。

"電話番号"も"問い合わせフロー/IVR"も追加できました。それでは、実際に問い合わせフローを変更していきましょう。

Amazon Connect問い合わせフロー変更

ルーティングの設定の中から、問い合わせフローを選択します。

問い合わせフローの中から、先ほど選択したSample queue customerを選択してください。こちらで電話にかかってからの動きを定義していきます。

すると、このようなフロー画面が表示されます。

初期段階で表示されているフローを右にずらしておきましょう。あとの設定がしやすくなります。左のバーの中から設定を開きます。

するとこのようにたくさん表示されますが、下のほうまでスクロールし、音声の設定が見つかります。そこからドラッグし、フロー画面にドロップするとこのようにブロックが表示されます。

ブロック上部(タイトル付近)をクリックすると、フローが変更できるようになっています。個人的に、この設定画面を出すのが一番てこずりました。笑

こちら、選択するときはコマンドボタンを押しながらクリック、機能自体はブロック上部をクリックすればいけるそうです…!!!

初めは英語音声になっているので、日本語に変更し、音声エンジンをMizuki, またはTakumiに変更します。今回はMizukiを選択しました。

設定が変更されると、このように音声ブロックの中の表示が変更されます。次のフローの設定をしていきます。再び、設定を開きます。

今回はプロンプトの再生を使います。先ほどと同様にドロップアンドドラッグし、フローの変更を行います。

テキスト読み上げまたはチャットテキストを選択し、実際に読み上げるテキストを入力します。今回は"お電話ありがとうございます。こちらサポートチームです。"という風に読み上げてもらいましょう。

最後にフローをつなげていきます。

矢印にカーソルを持ってくると赤いバツが表示されるので、初期段階で繋がれているエントリポイントとキューの設定の矢印を削除します。また、繋ぐボックスの丸から繋ぎたいボックスに対しドラッグアンドドロップすることで、実際のフローを作成します。

先ほど作った音声の設定、プロンプトの再生、そして初期段階に繋ぎましょう。出来たら保存し、公開します。

きちんと公開まで行わないと、実際の電話で対応されないので!皆さんは!きちんと公開しましょうね!

最後は、電話口のお客様が待っている間の動きを定義していきます。先ほどと同じく、問い合わせフローの中から選択していきます。今度はDefault customer queueを選択します。

こちらでは、プロンプトのループを変更していきます。

最初は英語で表記されているので、日本語に書き換えていきます。ちなみに余談ですが…

Thank you for calling. Your call is very important to us and will be answered in the order it was received.

お電話ありがとうございます。あなたの電話は私たちにとってとても重要であり、受け取られた順に返答されます。

英語のコールセンターの待ち時間はこの文言が流れるのか、と勉強になりました。

こちらも保存し、公開を忘れないようにしましょう。

さて、ここまで行けば"Part 1: Amazon Connectによるコンタクトセンター構築"での手順は終了です。

動作確認

最後に、動作確認をしていきましょう。先ほどの説明で出てきたソフトフォンを使用します。

右上の電話マークを押すとこのような別ウィンドウが表示されます。(通知、マイクデバイスへのアクセスは許可してください。)

赤丸をしてあるvを選択し、OfficeからAvallableに変更してください。vの横の電話マークのページが開かれていれば準備完了です。

実際に電話がかかってきた様子を撮影してみました!(画質、音質の面はご了承ください・・・)

これで"Part 1: Amazon Connectによるコンタクトセンター構築"は終了です!

今回試しに時間を測ってみたら、Part1は25分35秒で完走しました。(スクショを撮りながらだったので本来であればもっと早いはず)

これだけ早い時間でContact Centerを立ち上げられるのすごいですね・・・!!

続けて、Part2に進みます!

IVRと通話録音機能の追加

  • 概要

IVRや通話録音が問い合わせフローの変更だけで簡単に実現できることを理解します。また、通話録音が管理画面から簡単に再生できることを理解します。

  • 作業ステップ

  • 追加するブロックの配置および設定変更

  • 動作確認

追加するブロックの配置および設定変更

問い合わせフローを、IVRや通話録音ができるようにさらに変更していきます。再び、Sample queue customerを開きます。

先ほどの手順で作成した"プロンプトの再生"は、通話録音とIVRに対応するために複数のブロックに置き換えていきます。

そのため、まず初めにプロンプトの再生ブロックを削除します。次に、左のバーからこれらのカテゴリのブロックを追加していきます。(敢えて、表示順ではなく変更順で掲載しています)

  • 設定
    • Set recording and analytics behavior
  • 操作
    • 顧客の入力を取得する
  • 終了 / 転送
    • 電話番号への転送
  • 操作
    • プロンプトの再生(3個)

追加したら、一つずつ変更していきます。

まず初めはSet recording and analytics behaviorを変更します。

通話記録をオンにし、エージェント AND 顧客の通話を記録するように設定します。

次は、"顧客の入力を取得する"の設定を変更していきます。

"テキスト読み上げまたはチャットテキスト"を選択し、電話をかけた時に流れる文章を入力します。

上の文章でお客様が1番2番を選択したあとの動作の定義が必要なので、"別の条件の追加"で番号で選択できるようにオプションを追加していきます。

次に電話番号への転送を定義していきます。

国コードを日本に選択し、テストで使用する携帯以外に別の電話番号があればそちらを入力します。なければ同じ番号を入力します。

続いてプロンプトの再生を定義していきます。こちらは、入力エラーの際の文言、転送が終了した際の文言、転送エラーの際の文言を書いていきます。

それでは、問い合わせフローをつなげていきます。

この状態から線をつなげ、このようにします。お客様の電話につながり1番を選択すると電話が繋がり、2番を選択すると転送されるように設定していきます。

再び保存し、公開します。それでは、動作確認を行なっていきましょう。

動作確認

先ほど取得した電話番号に自身の携帯から電話をかけ、確認してみましょう!

"顧客の入力を取得する"のところで設定した文章が読まれ、1番を押すと先ほどと同様ソフトフォンに電話がかかってくるはずです!今回は録音機能の動作も確認するため、少し話してみましょう。

次に、録音できているかどうか確認します。

メニューの上から2つ目の中の問い合わせ検索をクリックします。

問い合わせ検索のページが表示されるので、タイムゾーンをJapan、顧客の電話番号の国コードで検索というチェックボックスからチェックを外し、下の検索ボタンを押し検索しましょう。

一覧が表示され、赤丸ボタンを押すと実際に会話の音声を聞くことができます。(動画内では8秒くらいから始まります。)

これで、Part2も終了です!

Transcribeを使った文字起こし機能の追加

  • 概要

Transcribeによる文字起こし結果をCall Trace Record(問い合わせの検索) に追加します。

  • 作業ステップ

  • Amazon Connect設定値確認

  • S3バケット作成(1つ目、2つ目)
  • Lambda作成
  • Lambda変更
    • 関数の変更
    • 環境変数設定
    • タイムアウト設定
  • IAMの変更
  • Lambda変更
    • 保存
    • トリガー設定
  • 動作確認

実際の通話録音の文字起こしの流れは、このような形です。

  1. 通話終了すると通話音声がS3に保存される。
  2. 保存されたイベントをトリガーにLambdaが呼び出される。
  3. LambdaからTranscribeが呼び出され音声データの文字起こしを実行。
  4. Transcribeの出力をいったんS3に保存する。
  5. 4から文字起こしの部分のみを抽出してS3に保存。
  6. 5を該当コールの属性情報としてAmazon Connectに書き込む。
  7. Amazon Connectのレポートから文字起こしの結果が見れるようになる。

それでは、やっていきましょう。

Amazon Connect設定値確認

Amazon ConnectのGUI画面を閉じ、再びマネジメントコンソールに戻り、Amazon Connectの画面を開きます。

先ほど作成したインスタンスをクリックし、概要ページからインスタンスARNから下32文字をコピーしておきます。(Lambdaの設定で使用するインスタンスIDです)

また、ストレージページからAmazon Connect通話記録のS3バケット名もメモしておきます。(Lambdaの設定で使用します)

S3バケット作成(1つ目、2つ目)

次にS3バケットを2つ作っていきます。マネジメントコンソールからS3を選択し、作成していきましょう。

設定等は特にせず、この画面の左下から作成を押してください。このバケットはどちらが1つ目、どちらが2つ目なのかを覚えておきましょう。

今回はバケット1つ目をtiger-20200401-01、バケット2つ目をtiger-20200401-02と名前をつけました。

Lambda関数作成

次にLambda関数を作っていきます。マネジメントコンソールでLambdaの画面を開き、関数を作成していきます。

関数名は任意のもの、ランタイムはPython3.8を選択します。

Lambda関数変更

関数コードには、ダウンロードしたファイルの中に、関数コードで使うコードがテキストファイルで格納されているので、そちらをコピーアンドペーストします。

次に環境変数です。

Key Value
1組目 BUCKETFORTRANSCRIPT 1つ目に追加したS3バケット名
2組目 BUCKETFOROUTPUT 2つ目に追加したS3バケット名
3組目 INSTANCEID Amazon ConnectインスタンスID

そして、基本設定を変更していきます。

タイムアウトは3秒から10分に変更します。また、IAMロールに関してはポリシーを新たにアタッチする必要があるため、"IAMコンソールで表示します"をクリックします。

IAMの変更

IAMコンソールが開いたらポリシーをアタッチしますをクリックし、AmazonS3FulAccessAmazonConnectFulAccessAmazonTranscribeFulAccessのポリシーをアタッチします。

Lambdaの変更

再びLambdaの画面に戻り、保存をします。

正常に更新されたら、デザイナーの画面で触っていきます。トリガーの追加をクリックし、設定していきます。

Amazon Connect通話記録のS3バケット名を指定し、サフィックスはwavファイルを指定します。

私はここで間違えてプレフィックスに.wavを入れていたため、保存はできるのに文字起こしされず、長い時間悩んでいたので皆さんはお気をつけを!

以上でLambdaの設定が終わりました。

動作確認

ついに、最後の動作確認に入ります!!

Part1で作成した電話番号に電話をかけ、10~20秒程度声を入れてみましょう。(ソフトフォンとハウリングしないよう、テスト端末は距離が離れたところから試す、滑舌よく、はっきり話すことがポイントのようです。)

ちなみに"今日のご飯はゴーヤチャンプルーです。おいしかったです。いえーい!"と話してみました。(なぜ適度に言いづらそうな単語を選んでしまったのかというと、リアルに我が家の今日の晩ご飯がゴーヤチャンプルーだからです。)

結果はいかに・・・?!先ほどと同様、問い合わせの検索から見てみましょう!

連絡先IDをクリックしコンタクト追跡レコードを見ると、下の方に先ほどまではなかった"属性"が表示され、その中に文字起こしが表示されていれば成功です!

いい感じではないでしょうか!

ちなみに電話を終えてからすぐS3バケットをみていると、JSONファイルが作成されていました。

上のバケットにあるJSONファイルがTranscribeのレスポンス、下のバケットにあるJSONファイルがそこから文字起こしの部分のみを抽出したものになっています。下のJSONファイルの中身は属性の中で表示されていたものと全く同じでした。

上のTranscribeのレスポンスデータはどのような形でしょうか?(整形されていなかったのですが、みやすいように整形してあります。)

{
  "jobName": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "accountId": "XXXXXXXXXXX",
  "results": {
    "transcripts": [
      {
        "transcript": "うん 今日 ご飯 は ゴーヤ チャンプル です 美味しかっ た です へえ"
      }
    ],
    "items": [
      {
        "start_time": "0.94",
        "end_time": "1.15",
        "alternatives": [
          {
            "confidence": "0.5674",
            "content": "うん"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "4.44",
        "end_time": "5.26",
        "alternatives": [
          {
            "confidence": "0.9804",
            "content": "今日"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "5.27",
        "end_time": "6.02",
        "alternatives": [
          {
            "confidence": "0.9932",
            "content": "ご飯"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "6.03",
        "end_time": "6.41",
        "alternatives": [
          {
            "confidence": "0.9923",
            "content": "は"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "8.04",
        "end_time": "8.84",
        "alternatives": [
          {
            "confidence": "1.0",
            "content": "ゴーヤ"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "8.85",
        "end_time": "10.04",
        "alternatives": [
          {
            "confidence": "1.0",
            "content": "チャンプル"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "10.04",
        "end_time": "10.55",
        "alternatives": [
          {
            "confidence": "0.9996",
            "content": "です"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "11.64",
        "end_time": "12.64",
        "alternatives": [
          {
            "confidence": "0.6712",
            "content": "美味しかっ"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "12.65",
        "end_time": "12.91",
        "alternatives": [
          {
            "confidence": "1.0",
            "content": "た"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "12.92",
        "end_time": "13.45",
        "alternatives": [
          {
            "confidence": "1.0",
            "content": "です"
          }
        ],
        "type": "pronunciation"
      },
      {
        "start_time": "14.84",
        "end_time": "16.35",
        "alternatives": [
          {
            "confidence": "0.6935",
            "content": "へえ"
          }
        ],
        "type": "pronunciation"
      }
    ]
  },
  "status": "COMPLETED"
}

このような形で細かく区切られたものが文字起こしされるのを、実際見てみると面白いですよね!!

感想

ハンズオンの中で、驚くほど早い速度でコンタクトセンターを立ち上げることができ驚きました。

また、実際に自分の携帯電話を使って実際に作ったものがすぐに形として見えるのもすごく面白かった点でした!

皆さんもぜひ取り組んでみてはいかがでしょうか!以上、たいがーでした?