JAWS-UG 4支部合同 オンラインハンズオンで コンタクトセンター + デスクトップライブ配信 に入門しました! #jawsug

JAWS-UG 横浜・千葉・埼玉・初心者支部合同開催 HANDS-ON(オンライン)で、Amazon ConnectとAWS MediaServicesについて学びました。

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

コンバンハ、千葉(幸)です。

先日開催されたJAWS-UG 横浜・千葉・埼玉・初心者支部合同開催 HANDS-ON(オンライン)に参加しましたので、そのレポートとなります。

ハンズオン概要

公式ページからの引用となりますが、以下2本立ての入門編のハンズオンです。

  • Amazon Connect
    • Amazon Connectを用いて、コンタクトセンターを作ります。IVRを設定し、ダイアルトーンの入力(1番や2番)で処理を分岐させます。時間が余れば、録音した音声の文字起こしを自動で行うLambdaを作成します。
  • OBSを使ったデスクトップのライブ配信(AWS Media Services連携)
    • OBSを用いて、AWS Media Servicesと連携して、PCのデスクトップをライブ配信します。

目次

オンラインでの実施

配信はZoomによって行われました。テーマごとに簡単なイントロダクションがあったのち、資料を元に各自もくもくで作業する、というのを基本に進行されました。Zoomのチャット機能やGoogleドキュメントで質問を受け付けたり、適宜進捗の確認が行われながら進んでいきました。

Zoomのイメージはこちら。

Googleドキュメントのイメージはこちら。Googleアカウントへのログインなしで利用できました。

タイムテーブル

Timeline Title Speaker
18:00 - 18:30 Registration & Social
18:30 - 18:35 開会
18:35 - 20:05 OBSを使ったデスクトップのライブ配信(AWS Media Services連携) AWSJ 亀田 治伸
20:05 - 20:10 休憩
20:10 - 21:40 Amazon Connect AWSJ 亀田 治伸
21:40 - 撤収 → オンライン飲み会【入退室自由】

当日はAmazon Connectに関するハンズオンが先行して行われました。

Amazon Connect コンタクトセンター構築ハンズオン

使用された資料はこちら。

ハンズオンの構成としては以下のようになっています。

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

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

構成イメージは以下です。(ハンズオン資料より抜粋)

Amazon Connectの一番上位のコンポーネントとして、Amazon Connect 仮想サポートセンターインスタンス(以下Amazon Connect インスタンス)というものがあります。そこでソフトフォン用の電話番号を取得し、自分の電話からかけてみて着信を確認するところまでがこのパートです。

ハンズオンの詳細の手順はここでは割愛して、作成されたリソースを確認していきます。

Amazon Connect インスタンス

マネジメントコンソールからAmazon Connectのサービス画面に遷移すると、Amazon Connectインスタンスが表示されています。

Amazon ConnectインスタンスではアクセスURLが発行され、ここからAmazon Connectのコンソール画面にサインインすることができます。

サインインした場合にどうなるかは後にして、インスタンスがどのようなパラメータを持つか各ページを確認してみます。

概要 ページです。サービスリンクドロールが作成されていることが分かります。コンソールのパスワードを設定していない時は「緊急アクセス」のリンクからサインインすることができます。

テレファニー ページです。Amazon Connectでは取得した番号を用いて着信、発信を実施することができますが、 それぞれの有効/無効を定義することができます。

データストレージ ページです。通話記録などのデータを、S3バケットに出力することができます。(ライブメディアストリーミングはKinesis Video Streams 宛。)これらの出力は、Amazon Connectのサービスリンクドロールに付与された権限を元に実行されます。

データストリーミング ページです。こちらは各種レコードやイベントをAmazon Kinesis Stream または Amazon Kinesis Firehose を用いてエクスポートできます。

アプリケーション統合 ページです。他の製品と統合することが可能なようです。

問い合わせフロー ページです。Amazon Connectインスタンス内で「問い合わせフロー」というリソースが定義できますが、そこに関するオプションが設定できます。

Amazon Connect コンソール

Amazon Connectによって発行されたアクセスURLよりAmazon Connectコンソールにサインインします。ダッシュボードはこのような感じです。

左側のメニューから様々なページに遷移が可能です。

ダッシュボード

メトリクスおよび品質。

ルーティング。

ユーザー。

問い合わせフロー

Amazon Connectのコンソールから[ ルーティング ] → [ 問い合わせフロー ]に遷移すると、以下のように定義済みの問い合わせフローが確認できます。

その中でも、このパートでは以下の問い合わせフローを編集しました。

  • Sample queue customer
  • Default customer queue

問い合わせフローの編集はこのようにGUIベースで実施できます。ブロックを配置し、ブロック内のオプションを設定し、ブロック同士を矢印でつないでフローを作成するイメージです。

ここでは、どういった音声で応答するかをテキストで入力する、といった設定をしました。

Contact Control Panel (CCP)

Amazon Connectコンソールの[ ルーティング ] → [ 電話番号 ]ページより、電話番号が取得できます。

コンソールの画面右上のアイコンをクリックすると、Contact Control Panel (CCP)がポップアップされます。以下、これをソフトフォンと呼びます。

この状態で手元の電話から取得した番号に向けて発信すると、ソフトフォンで受け取ることができます。事前に設定した問い合わせフローに則り、音声が再生されました。

Part 2: IVRと通話録音機能の追加

IVRとは自動音声応答システムのことで、キーの入力によってレスポンスを変えるものです。

コーラーが入力した数字または認識された声に対して、従来型のコンピューターがキーボードによる入力またマウスクリックに反応するのとほとんど同じ様に応答するもの。
Weblio辞書より

ここでは、「1」を押すと音声を録音する「2」を押すと別の番号へ転送するという設定を行いました。Part 1で作成したインスタンスおよび問い合わせフローを編集する形で、実現していきます。

最終的にフローはこのようになりました。

録音した音声はAmazon Connectコンソールの[ メトリクスおよび品質 ] → [ 問い合わせの検索 ]から確認可能です。 時間帯等の検索条件でフィルタリングすると、問い合わせ履歴が確認できます。

問い合わせ履歴の詳細画面(問い合わせ追跡レコード)画面のうち、[ 記録 ]セクションから音声が再生できるようになっています。

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

さらに発展して、録音した内容の文字起こしまで行います。イメージは以下です。(ハンズオン資料より抜粋)

録音データはAmazon Connectインスタンスでデータストレージとして指定しているS3バケットに出力されるため、そこへのPutをトリガーにLambdaを実行させます。

LambdaはAmazon Transcribeを用いて文字起こしを行い、そこから該当テキストのみを抽出し、Amazon Connectに対して連携します。

連携は、boto3のupdate_contact_attributes()を利用して問い合わせ履歴の属性をアップデートすることで実現しています。

セットアップが終わったのち、改めてソフトフォン宛に発信を行い、録音を行います。先ほどと同じように問い合わせ追跡レコードから確認すると、このように[ 属性 ]セクションに文字起こし結果が出力されています。

Amazon Connect コンタクトセンター構築ハンズオン はこれにて完了です!

AWS MediaServices と OBS(Open Broadcaster Software) で動画配信をはじめよう

こちらのハンズオン資料を元に行われました。

ハンズオンの構成としては以下になっています。

  • Part 1: シンプルなHLSライブ配信
  • Part 2: ライブ配信と並行してアーカイブ化

Part 1: シンプルなHLSライブ配信

イメージは以下です。

OBS(Open Broadcaster Software)と呼ばれるツールを用いて配信を行い、それを視聴するという流れです。

  • OBSからAWS Elemental MediaLiveに対してRTMPで配信
  • AWS Elemental MediaLiveで変換を行い、HLS形式でAWS Elemental MediaStoreに出力
  • AWS Elemental MediaStoreに格納されたコンテンツオブジェクトをSafariなどのHLSブラウザで視聴

AWS MediaStore

AWS MediaStoreはメディアストレージとシンプルな HTTP オリジンを提供するサービスです。最上位のコンポーネントとして、コンテナが存在します。

コンテナの詳細画面はこのような感じ。コンテナはエンドポイントを持ち、各種オブジェクトの格納場所となります。

また、各種ポリシーも設定可能です。

  • Container policy(コンテナのリソースベースポリシー)
  • Container CORS policy(CORS関連のポリシー)
  • Object lifecycle policy(オブジェクトのライフサイクルポリシー)
  • Metric policy(CloudWatchのメトリック発行に関するポリシー)

コンテナに格納されたオブジェクトはこのような形で確認可能です。

AWS Elemental MediaLive

AWS Elemental MediaLiveはライブビデオコンテンツの変換を提供するサービスです。

メインのコンポーネントとしてチャネルがあります。チャネルは停止/起動が可能です。

チャネルにはInput(入力)というコンポーネントを関連づけることができます。InputはVPC上かパブリックな環境に作成が可能で、エンドポイントを持ちます。RTP、RTMP、HLS、MP4といった形式と、形式によってはプッシュかプルかを選択することができます。Inputに対する送信元を制限するためのInputセキュリティグループを定義できます。

チャネルにおいてはOutput(出力)も定義できます。ここでは、HLSの出力先として、AWS MediaStoreのコンテナのエンドポイントを指定します。

送信先に対しては、チャネルが持つEgress エンドポイントから送信が行われます。

OBS(Open Broadcaster Software)

OBS(Open Broadcaster Software)はビデオ録画と生放送用に使えるオープンソースのソフトウェアです。

以下公式サイトからダウンロードします。

https://obsproject.com/ja

もろもろレート制御やビットレートなどの出力設定を行います。

配信の設定で、配信先としてAWS Elemental MediaLiveのInputを指定します。

ソースとして配信したいものを指定します。今回は映像キャプチャデバイスを指定し、Mac内蔵のFaceTime HDカメラの映像を配信することにしました。

OBS → AWS Elemental MediaLiveを経由して、AWS MediaStoreコンテナにオブジェクトが生成されます。オブジェクトはURLを持つため、そこに対してHLS対応のブラウザでアクセスすることで、配信内容を確認できます。

数秒(数十秒?)前の、リアルタイムでない自分の映像を見ると精神がぞわぞわしました。

Part 2: ライブ配信と並行してアーカイブ化

Part 1の構成に加えて、OBSから配信された内容をS3バケットにアーカイブします。

AWS Elemental MediaLiveのチャネルにおいて新たなOutputを定義し、S3バケットを指定します。

URLはs3ssl://<S3バケット名>/<プレフィックス>のような形式で指定します。

S3バケットへのオブジェクトのPutは、チャネルにアタッチされたIAMロールの権限によって行われます。

配信が行われる裏で、S3バケットにアーカイブファイルがPutされていきます。

AWS MediaServices と OBS(Open Broadcaster Software) で動画配信をはじめよう ハンズオンはここまでで終了です!

終わりに

当日はなかなか密度が濃く、必死に手を動かしていると終わりの時間を迎える、という状態でした。作成されるリソースの全体像が自分の中で落とし込めていなかったので、おさらいの意味を込めてこのエントリを書きました。

普段触ったことのないサービスでも、手順に従って進めていくだけで一通りの構成を作成できる、というのはとてもありがたい経験です。当日の資料はとても細かいレベルで作成されていたので、迷うことなく進めることができました。作成にはかなりの手間がかけられていることが感じ取れたので、感謝しかありません。

ライブ配信ハンズオンについては、別の機会のオンラインセミナーでさらに深堀りされるようなので、興味がある方がチェックしてみてはいかがでしょうか。

知っ得ハンズオン はじめてのライブ配信ハンズオン

Amazon ConnectのハンズオンについてもJAWS-UG初心者支部で再演が予定されているとのことなので、こちらもぜひウォッチしてみてください。

以上、千葉(幸)がお送りしました。