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);
}
}