はじめに
こんにちは。孔子の80代目子孫兼技術5課の孔です。コロナも落ち着くのかなと思いきや、第2波が待ち構えていてまた感染者が増えてきましたね。気を緩めず、安心安全に暮らすために気をつけないといけないですね。
そのコロナ対策としてリモートワークを推進する企業も増えてきたのではないかと思います。AWSで提供するサービスの中でリモートワークをサポートするサービスはWorkSpacesとAmazon Connectがあります。WorkSpacesはVDI環境を構築するサービスとなり、リモートデスクトップを使用することでセキュリティを強化することができます。また、Amazon Connectはクラウド型コールセンターを構築することにより、コールセンターのクラスター防止およびリモート対応をサポートすることができるようになります。本日はその両方に関する話を持ってきました。WorkSpacesのようなVDI環境でAmazon Connectを使用する時の注意点と、対処方法について共有します。
※Amazon Connectの基礎知識があることを前提とした内容となります。Amazon Connectに関する基礎知識はAWSが出しているblackbeltをご一読ください。blackbeltはこちらのリンクで確認できます。
ユースケース
Amazon Connectはクラウド型コールセンターを構築できるため、自宅でもお問い合わせの電話等を受けることができます。しかし自宅で電話をとるとやっぱりセキュリティが心配ですね。どのお客様と電話をしているのかの情報が盗まれる可能性もありますし、もしくは顧客情報が社内ネットワークにしかないため、社内ネットワークにアクセスする必要があるけど自宅からだとセキュリティ面が心配だったり、そもそもアクセスできなかったりする課題があります。そこでWorkSpaces環境を作り、そこからAmazon Connectを使えばこのような問題は一気に解決できるようになります。
しかしそこで問題が全て解決できるわけではなく、WorkSpaces環境でAmazon Connectを使うと新たな問題が発生します。通常ならオペレーターのローカルデバイスからお客様と音声(メディア)のやりとりが直接できるものの、WorkSpacesが途中で入ることによってホップ数が1個増えることになります。それによって音質の低下が生じてしまうことになります。
ホップ数増加による音質低下問題を解決する方法が2つあります。一つ目の方法はDeskphoneを使用すること、二つ目の方法はカスタムCCPを使用し、メディアを持たないCCPを作成する方法となります。それぞれの詳細をこれからみていきます。
※CCPに関する説明はこちらのリンクをご参考ください。
Deskphoneに転送
Deskphoneを使うとAmazon Connectの電話のメディア(音声)をCCPでなくE.164エンドポイント(例えば、+81-80-1111-2222のような番号形式)にルーティングし、そのエンドポイントを持ったデバイスで電話を受け取ることができます。つまり、電話番号を入力してCCPからでなくその電話番号を持ったデバイス(携帯や電話機)で電話を受け取る方法となります。お客様の情報にアクセスしたりするような操作およびシグナリングの制御(電話に出たり、切ったりする制御)はWorkSpaces環境で行い、メディア(音声のやりとり)はオペレーターの電話機を使うことで、メディアはお客様と直接繋がることで音質の低下なくセキュリティの担保もできます。
設定方法はAmazon Connectにユーザーを登録する際に、エージェントの電話タイプをDesk Phoneに指定して使用するデバイスの電話番号を入力するだけで設定完了です。
メディアを持たないCCP
もう一つの方法としてメディアを持たないCCPを作成する方法があります。カスタムCCPでメディアを持たないCCPを作成し、WorkSpaces環境ではこのメディアを持たないCCPを使ってセキュリティが必要な操作やシグナリングの制御を行い、メディアはローカルデバイスの標準CCPを使用してお客様とやりとりする方法です。構成図は以下のようになります。
カスタムCCPの話はこちらのリンクに詳細が乗ってます。こちらのリンクにindex.htmlファイルが「Amazon Connect Streams構築手順」項目の中に入ってます。そのファイルを以下のように設定してください。
<!DOCTYPE html> <meta charset="UTF-8"> <html> <head> <script type="text/javascript" src="amazon-connect-1.4.js"></script> </head> <!-- Add the call to init() as an onload so it will only run once the page is loaded --> <body onload="init()"> <div id=containerDiv style="width: 400px;height: 800px;"></div> <script type="text/javascript"> const instanceURL = "https://my-instance-domain.awsapps.com/connect/ccp-v2/"; // initialise the streams api function init(){ // initialize the ccp connect.core.initCCP(containerDiv, { ccpUrl: instanceURL, /*REQUIRED*/ loginPopup: true, /*optional, default TRUE*/ region: "ap-northeast-1", /*REQUIRED for chat, optional otherwise*/ softphone: { /*optional*/ allowFramedSoftphone: false, /*optional*/ disableRingtone: false, /*optional*/ ringtoneUrl: "./ringtone.mp3" /*optional*/ } }); } </script> </body> </html>
変わったのはscriptのinit()関数の中身です。初期化(connect.core.initCCP)する際に渡す引数で、softphoneのallowFramedSoftphone属性の値をfalseに設定しています。この値をfalseに設定すると、このカスタムCCPはメディアを持たないように設定され、音声のやりとりができないCCPを作成することができます。CCPの配信については上記のリンクに続きがありますので、ご参考ください。
最後に
WorkSpacesのようなVDI環境で音声の劣化なくAmazon Connectを使用する方法についてみてみました。Amazon ConnectにカスタムCCPを導入することでとても多くのことができるようになります。カスタムCCPを作成するために必要なAmazon Connect Streamsについてはこちらのリンクに詳細が載ってます(英語ですので私はgoogle翻訳機のお世話になってます)
またConnect関連でいいものがあればブログ作成しますので、その日までみなさんお元気で!