IMエージェントクライアント SDK

このSDKを使用すると、簡単な設定でIMエージェントクライアントのワークベンチを実現できます。

SDKアドレス

https://{公司客服系统域名}/lib/udesk-im/agent-client.js

使用方法

まずこのJSを読み込む

<script src='https://{会社のカスタマーサポートシステムドメイン}/lib/udesk-im/agent-client.js'></script>

インスタンスを作成する

<script>
//トークンを取得する
function fetchToken(){
    if(fetchToken.cache){ //キャッシュされたトークンがあれば、直接返す
        return Promise.resolve(fetchToken.cache);
    }
    return fetch('/token').then((t)=>{
        setTimeout(()=>fetchToken.cache = null,60*60*1000); //1時間後にトークンを再取得し、トークンの失効を防ぐ
        fetchToken.cache=t;   //トークンをキャッシュする
        return t;
    });
}
const udeskAgentClient = new UdeskAgentClient({
    host: 'xxxx.udesk.cn' //Udeskカスタマーサポートシステムドメイン
    getToken: ()=> fetchToken(), //バックエンドにリクエストしてトークンを取得する
    lang?:'zh-cn'//SDK言語、中国語、英語、日本語をサポート

})
</script>

コンテナを作成し、コンテナにレンダリングする

<!-- コンテナに幅と高さを指定する必要があります。指定しないとレンダリング結果のスタイルが乱れます -->
<style>
#udesk-agent-client {
    width: 100%;
    height: 100%;
}
</style>
<div id='udesk-agent-client'></div>
<script>
udeskAgentClient.renderTo(document.getElementById('udesk-agent-client'));
</script>

パラメータ説明

パラメータ 必須かどうか 説明
getToken 必須 ()=>Promise,認証に使用
host 必須 Udeskカスタマーサポートシステムのホスト
onNewChat 任意 新しいセッションが発生したときにトリガーされる
lang 任意 SDK言語、指定しない場合はデフォルトで中国語、有効な値は 'zh-cn'|'en-us'|'ja'
onSelectChat 任意 セッションを選択したときにトリガーされる、(chat:{im_sub_session_id:number,session_key:string,customer:{id:number,nick_name:string}})=>void
onCloseChat 任意 セッションを閉じたときにトリガーされる、(chat:{im_sub_session_id:number,session_key:string})=>void
## Token生成方法

TokenはJWT形式です。
JWTの秘密鍵の取得: Udeskシステムの管理センター - シングルサインオン - 共有の秘密鍵から取得します。
JWTのデータには以下を含める必要があります。

{
  "email": "agent@udesk.cn", // サポート担当者のメールアドレス
  "iat": 1605768993, // グリニッジ標準時での整数、Token生成時刻
}

注意:

JWT_TOKENの有効期限は10時間です。開発者はJWT_TOKENを更新する機能を提供する必要があります。

JavaでJWTを生成する例

1. 依存関係のインストール

<dependency>
    <groupId>org.bitbucket.b_c</groupId>
    <artifactId>jose4j</artifactId>
    <version>0.9.6</version>
</dependency>

2. コード実装

import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.keys.HmacKey;
import org.jose4j.lang.JoseException;

import java.io.UnsupportedEncodingException;
import java.security.Key;

public class UdeskAgentClient {
    public static void main(String[] args) throws JoseException, UnsupportedEncodingException {
        //
        // JSON Web Token(JWT)は、コンパクトでURLセーフなクレーム/属性転送方法であり、2点間でデータを転送するために使用されます。
        // これはJWTを生成する例です。
        //

        // JWTのペイロードを構築します。これらのペイロードはJWT内の情報またはデータになります。
        JwtClaims claims = new JwtClaims();
        claims.setIssuedAtToNow();  // JWT作成時刻(現在時刻)。
        claims.setClaim("email", "agent@example.com"); // サポート担当者のメールアドレスに置き換えてください

        // udeskサポートシステムの管理センター->シングルサインオンページの「共有の秘密鍵」をコピーしてください
        String secret = "あなたの秘密鍵に置き換えてください";
        Key key = new HmacKey(secret.getBytes("UTF-8"));

        // JWTは、JSON形式のデータを運ぶJWS(JSON Web Signature)またはJWE(JSON Web Encryption)です。
        // この例では、JWS(JSON Web Signature)を使用するため、署名操作に使用するJsonWebSignatureインスタンスを作成する必要があります。
        JsonWebSignature jws = new JsonWebSignature();

        // ペイロードを設定します。ペイロードはJSON形式に変換する必要があります。
        jws.setPayload(claims.toJson());

        // 署名に使用するキーを設定します。
        jws.setKey(key);

        // 署名アルゴリズムを設定します。ペイロードが正しいかどうかを検証するために使用されます。
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256);

        // JWSに署名処理を施し、そのコンパクトなシリアライズ形式を生成します。
        // これは3つの部分(ヘッダー、ペイロード、署名)からなる文字列で、
        // 各部分はbase64エンコードされています。
        String jwt = jws.getCompactSerialization();

        System.out.println("JWT: " + jwt);
    }
}