[Amazon Connect] amazon-connect-streamsを使用して、CCPにLOGINボタンとユーザー表示を追加してみました。

1 はじめに

AIソリューション部の平内(SIN)です。

Amazon Connect(以下、Connect)では、デフォルトのエージェントとしてログインすると、CCPだけのウインドが表示されます。

今回は、amazon-connect-streams を使用したCCPの拡張で、エージェント専用のページを作成してLOGINボタンや、ログイン中のユーザー名を表示するようにしてみました。

下記は、LOGINボタンでログインしているよう様子です。

2 amazon-connect-streams

amazon-connect-streamsによる実装は、以下のとおりです。

agentの状態変化イベントで、ユーザー名を取得しています(①)。 ログインとログアウトのイベントは、connect.core.getEventBus()subscribe()することで取得できます(②)。

ログインボタンを押したときは、別ウインドウでログインURLを表示し、そのウインドウを取得しておきます(③)。そして、このウインドウは、Loginイベントで削除しています。

なお、ログアウトで location.reload(); していますが、これがないと、2回目以降のログインで、イベントが取得できなくなるようです(④)。

connect.core.initCCP()loginPopupパラメータがtrueだと、ログインしていないと、自動的にログイン画面がポップアップするので、今回は、falseに設定しています(⑤)。

const ccpUrl = "https://example.awsapps.com/connect/ccp#/";
connect.core.initCCP(containerDiv, {
    ccpUrl:        ccpUrl,
    loginPopup:    false, // ログイン画面をポップアップしない(⑤)
    softphone: {
        allowFramedSoftphone: true
    },
});
connect.agent(function(agent) {
    // ユーザ名の取得(①)
    const config = agent.getConfiguration();
    $("#user_name").text(config.username); 
});

// ログイン・ログアウトのイベント処理(②)
let bus = connect.core.getEventBus();
bus.subscribe(connect.EventType.TERMINATED, function () {
    $('#user_name').text('');
    $('#login_button').show();
    // 画面のリロード(④)
    location.reload();
});
bus.subscribe(connect.AgentEvents.INIT, function (){
    $('#login_button').hide();
    handleWin.close();
});

function login() {
    // ログイン画面の表示(③)
    handleWin = window.open('https://example.awsapps.com/connect/login?');
}

amazon-connect-streamsの基本的なセットアップ要領については、下記のページで纏めていますので、そちらをご参照下さい。

3 htmlとcss

上記と重複しますが、htmlとsccの全部を記載させて頂きます。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Extened CCP</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script type="text/javascript" src="//code.jquery.com/jquery-1.12.4.js"></script>
    <script type="text/javascript" src="amazon-connect-1.3.js"></script>
</head>

<body>
    <div id="header">
        <button id="login_button" onclick="login()">Login</button>
        <div id=user_name></div>
    </div>
    <center>
        <div id="containerDiv" style="width: 320px; height: 465px"></div>
    </center>
</body>

<script type="text/javascript">
    const ccpUrl = "https://example.awsapps.com/connect/ccp#/";
    connect.core.initCCP(containerDiv, {
        ccpUrl:        ccpUrl,
        loginPopup:    false, // ログイン画面をポップアップしない
        softphone: {
            allowFramedSoftphone: true
        },
    });
    connect.agent(function(agent) {
        const config = agent.getConfiguration();
        $("#user_name").text(config.username);
    });

    let bus = connect.core.getEventBus();
    bus.subscribe(connect.EventType.TERMINATED, function () {
        $('#user_name').text('');
        $('#login_button').show();
        location.reload();
    });
    bus.subscribe(connect.AgentEvents.INIT, function (){
        $('#login_button').hide();
        handleWin.close();
    });

    function login() {
        handleWin = window.open('https://example.awsapps.com/connect/login?');
    }
</script>
</html>
body {
    padding: 0px;
    margin:0;
}

#header {
    width:100%;
    color: white;
    background-color: seagreen;
    font-weight: bold; 
    padding:10px;
}

#user_name {
    display:inline;
}

#login_button {
    width:100px;
    height:25px;
    font-size: 15px;
}

#containerDiv {
    padding: 20px;
}

4 最後に

今回は、amazon-connect-streamsにより、エージェント専用のページを作成して、ログインやユーザー名表示を実装してみました。

今後、このページを利用して、エージェントの作業を支援できる更なる拡張につなげていければという想定です。

弊社では、「Amazon Connect」の導入を検討している方を対象とした無料相談会を毎週開催中です。

また、音声を利用した各種ソリューションの導入支援を行っております。お気軽にお問い合わせください。
チャットボット開発支援

コメントは受け付けていません。