UdeskSDK-Android

お知らせ

SDKのネイティブロボット機能は 5.x ブランチにあります。

5.x リンク

androidQ、androidX への対応は 5.x_android_Q ブランチにあります。

5.x_android_Q リンク

SDKダウンロードアドレス

Udesk-Android ソースコードダウンロードアドレス

demo ダウンロードアドレス

目次

5.1.0 商品メッセージの背景、フォント設定APIが変更されました。ご注意ください。

SDKはAACフレームワークを採用しています

frescoバージョンに関する問題

もしあなたのプロジェクトでsoライブラリのロード設定を指定してパッケージングしている場合、
 ndk{
        abiFilters "armeabi"
 }

frescoのバージョン番号に特に注意する必要があります。fresco 1.9.0 以降の Application.mk では APP_ABI := armeabi-v7a armeabi arm64-v8a x86 x86_64 となっており、
armeabi は含まれていません。

UdeskSDKUIディレクトリのbuild.gradleファイルの dependencies で frescoのバージョン番号を変更してください。androidstudioの最新版への更新指示に従わないでください。

customer_token、 sdk_token は英数字とアンダースコアのみをサポートし、特殊文字は使用できません。

二、SDKの統合

1 リモート依存関係による統合

  1. ルートの build.gradle ファイルの repositories セクションの末尾に以下を追加します:

    allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 2. 依存関係を追加します

全機能

dependencies {
        implementation 'com.github.udesk:UdeskSDK-Android:バージョン番号'
}

部分機能

dependencies {
        implementation 'com.github.udesk.UdeskSDK-Android:モジュール名(UdeskSDKUI|udeskvideo|udeskasr):バージョン番号'
}

3.その他の依存ライブラリを追加します

implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.facebook.fresco:fresco:1.3.0'
implementation 'com.facebook.fresco:animated-gif:1.3.0'
implementation 'me.relex:photodraweeview:1.1.3'
implementation 'android.arch.lifecycle:extensions:1.1.1'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
implementation group: 'org.ccil.cowan.tagsoup', name: 'tagsoup', version: '1.2.1'
implementation 'org.greenrobot:eventbus:3.0.0'

2 ローカル統合

Demo内のファイル 説明
UdeskSDKUI Udeskオンライン相談SDK
udeskvideo UdeskビデオサポートSDK(オンライン相談SDKに依存)
udeskasr Udeskネイティブボット音声認識機能(オンライン相談SDKに依存)

注意:UdeskSDKUIはUdeskvideoとudeskasrに依存していません。不要な場合はこれらのSDKをインポートしないでください。

行うべきことは、UdeskSDKUIを独立したモジュールとしてインポートし、あなたのアプリのbuild.gradleファイルに以下を追加することです:

dependencies {
    api project(':UdeskSDKUI')
}

3 権限

SDKには以下の権限が必要です。すでにある場合は重複して追加する必要はありません。

<!-- ネットワーク状態権限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 電話状態権限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 電話発信権限 -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<!-- 外部ファイル読み書き権限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FLAG_GRANT_READ_URI_PERMISSION" />
<!-- 録音権限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- カメラ・アルバム権限 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<!-- 地理位置情報 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

4 Proguard

SDKはsmack、fresco、eventbus、okhttp、bugly、agoraなどのサードパーティライブラリを使用しています。具体的な難読化はそれぞれの公式ドキュメントを参照してください。重複する場合は追加する必要はありません。

//udesk
-keep class udesk.** {*;}
-keep class cn.udesk.**{*; }
//百度音声(百度音声認識を使用する場合は追加、使用しない場合は追加不要)
-keep class com.baidu.speech.**{*;}
//smack
-keep class org.jxmpp.** {*;}
-keep class de.measite.** {*;}
-keep class org.jivesoftware.** {*;}
-keep class org.xmlpull.** {*;}
-dontwarn org.xbill.**
-keep class org.xbill.** {*;}
 //agora
-keep class io.agora.**{*;}

以上の操作が完了したら、UdeskSDKの他の機能を使用できるようになります。幸運を祈ります!

三、SDKのクイックスタート

1. 管理画面でアプリケーション作成時に生成された対応するApp KeyとApp IDを初期化する

UdeskSDKManager.getInstance().initApiKey(context, "you domain","App Key","App Id");

注意:ドメインにはhttp://部分を含めないでください。登録時に生成されたドメインが"http://udesksdk.udesk.cn/"の場合、"udesksdk.udesk.cn"のみを渡してください。

2. UdeskConfigの設定情報を設定する。

説明:設定する機能は実際の必要に応じて選択してください。すべてデフォルトの動作があります。

2.1 ユーザーの基本情報を設定する

注意:sdktokenは必須入力です

デフォルトのシステムフィールドはUdeskが定義済みのフィールドです。開発者はこれらのユーザー情報を直接渡して、カスタマーサポートが確認できるようにすることができます。

String sdktoken = "ユーザーの一意の識別子";
Map<String, String> info = new HashMap<String, String>();
//sdktoken 必須
info.put(UdeskConst.UdeskUserInfo.USER_SDK_TOKEN, sdktoken);
//以下の情報はオプションです
info.put(UdeskConst.UdeskUserInfo.NICK_NAME,"ニックネーム");
info.put(UdeskConst.UdeskUserInfo.EMAIL,"0631@163.com");
info.put(UdeskConst.UdeskUserInfo.CELLPHONE,"15651818750");
info.put(UdeskConst.UdeskUserInfo.DESCRIPTION,"説明情報");
info.put(UdeskConst.UdeskUserInfo.CUSTOMER_TOKEN,custom_token);
//ユーザー基本情報のみを設定する構成
UdeskConfig.Builder builder = new UdeskConfig.Builder();
builder.setDefualtUserInfo(info)
UdeskSDKManager.getInstance().entryChat(getApplicationContext(), builder.build(), sdkToken);

ユーザー作成および更新ロジック:

1. 主キー [sdk_token customer_token email cellphone] (デフォルトprimary_keyはsdk_token)、または [customer_token sdk_token email cellphone] (primary_key が customer_takenの場合) を使用して順次ユーザーを検索

    1. primary_keyがデフォルトの場合、sdk_tokenで見つかったユーザーをcustomerAとする
        1.1 競合がない場合、ユーザーの主キー customer_token email cellphoneを更新し、1.4に進む
        1.2 競合が存在する場合、競合する主キー customer_token email cellphoneは無視される
    2. primary_key == 'customer_token' の場合、customer_tokenで見つかったユーザーをcustomerAとする
        2.1 他の顧客customerB.sdk_tokenがsdk_tokenと等しくない場合、sdk_tokenを更新
        2.2 他の顧客customerB.sdk_tokenがsdk_tokenと等しい場合、customerBのsdk_tokenは 元のsdk_token + '_' + customerA.id + '_' + タイムスタンプ に更新され、ニックネームは 新しく渡された nick_name + ' ' + 'sdk' に変更される。これにより、ユーザーcustomerBは主キー変更されたと見なされる
    3. email cellphone 主キー処理
        3.1 競合がない場合、email cellphoneを更新
        3.2 競合がある場合、email cellphoneを無視
    4. 顧客のその他の非主キー情報 customer_field nick_name qq description lang を更新

    5. deviceを更新

    6. ユーザーのipおよび都道府県情報を更新

2. ユーザーdeviceを作成

注意

現在、primary_keyの値を顧客の一意識別子として使用し、身元を識別します。

customer_tokenの値が空でない場合、primary_keyの値はcustomer_tokenとなり、customer_tokenの値を顧客の一意識別子として使用し、身元を識別します。

customer_tokenの値が空の場合、primary_keyの値はsdk_tokenとなり、sdk_tokenの値を顧客の一意識別子として使用し、身元を識別します。

customer_token sdk_token: 渡される文字には **英字/数字** 文字セットを使用してください。身分証のように、1つの身分証番号が複数の人に対応したり、1人が複数の身分証番号を持つことは許可されません。

次に、顧客にメールアドレスと携帯電話番号を設定する場合、異なる顧客が同じ携帯電話番号やメールアドレスに対応しないようにする必要があります。同じものが出現した場合、新しい顧客は作成されません。

2.2 UdeskConfig内部クラスBuilderの説明

属性 設定メソッド 機能説明
udeskTitlebarBgResId setUdeskTitlebarBgResId タイトルバーTitleBarの背景色、色で設定
udeskTitlebarMiddleTextResId setUdeskTitlebarMiddleTextResId タイトルバーTitleBar、中央上下の文字の色
udeskTitlebarRightTextResId setUdeskTitlebarRightTextResId タイトルバーTitleBar、右側の文字の色
udeskIMLeftTextColorResId setUdeskIMLeftTextColorResId IM画面、左側の文字のフォント色
udeskIMRightTextColorResId setUdeskIMRightTextColorResId IM画面、右側の文字のフォント色
udeskIMAgentNickNameColorResId setUdeskIMAgentNickNameColorResId IM画面、左側のカスタマーサポートニックネーム文字のフォント色
udeskIMCustomerNickNameColorResId setUdeskIMCustomerNickNameColorResId IM画面、右側の顧客ニックネーム文字のフォント色
udeskIMTimeTextColorResId setUdeskIMTimeTextColorResId IM画面、時間文字のフォント色
udeskIMTipTextColorResId setUdeskIMTipTextColorResId IM画面、ヒントテキストのフォント色、例えばカスタマーサポート転送
udeskbackArrowIconResId setUdeskbackArrowIconResId 戻る矢印アイコンのリソースid
udeskCommityBgResId setUdeskCommityBgResId 商品相談itemの背景色
udeskCommityTitleColorResId setUdeskCommityTitleColorResId 商品紹介Titleの文字色
udeskCommitysubtitleColorResId setUdeskCommitysubtitleColorResId 商品相談ページ内、商品紹介サブTitleの文字色
udeskCommityLinkColorResId setUdeskCommityLinkColorResId 商品相談ページ内、リンク送信の文字色
isUserSDkPush setUserSDkPush プッシュサービスを使用するかどうかを設定 true は使用 falseは不使用
UdeskQuenuMode setUdeskQuenuMode 待機行列放棄の戦略を設定
isUseVoice setUseVoice 録音機能を使用するかどうか trueは使用 falseは不使用
isUsephoto setUsephoto 画像送信機能を使用するかどうか trueは使用 falseは不使用
isUsecamera setUsecamera 写真撮影機能を使用するかどうか trueは使用 falseは不使用
isUsefile setUsefile ファイルアップロード機能を使用するかどうか trueは使用 falseは不使用
isUseMap setUseMap 位置情報送信機能を使用するかどうか trueは使用 falseは不使用
isUseEmotion setUseEmotion 絵文字を使用するかどうか trueは使用 falseは不使用
isUseMore setUseMore その他の機能オプションを表示するかどうか trueは使用 falseは不使用
isUseNavigationRootView setNavigations ナビゲーションUIを使用するかどうかを設定 trueは使用 falseは不使用
isUseRobotNavigationRootView setRobotNavigations ロボットナビゲーションUIを使用するかどうかを設定 trueは使用 falseは不使用
isUseNavigationSurvy setUseNavigationSurvy ナビゲーションUI内の満足度評価UIを使用するかどうかを設定 trueは使用 falseは不使用
isUseSmallVideo setUseSmallVideo 小動画機能が必要かどうかを設定 trueは使用 falseは不使用
isScaleImg setScaleMax 幅と高さの最大値を設定、超える場合は圧縮、それ以外は圧縮しない
ScaleMax setScaleImg 画像アップロードで原画像を使用するかサムネイルを使用するか
useMapType setUseMapSetting 使用する地図の種類を設定
Orientation setOrientation デフォルトの画面表示習慣を設定
isUserForm setUserForm ローカル設定でフォームメッセージが必要かどうか、trueは必要、 false は不要
defaultUserInfo setDefaultUserInfo ユーザー作成の基本情報
definedUserTextField setDefinedUserTextField カスタムテキスト情報を作成
definedUserRoplist setDefinedUserRoplist カスタムリスト情報を作成
firstMessage setFirstMessage メッセージを1つ設定 セッション割り当て時にカスタマーサポートに送信
robot_modelKey setRobot_modelKey udesk ロボットよくある質問 対応するId値
concatRobotUrlWithCustomerInfo setConcatRobotUrlWithCustomerInfo ロボットページで顧客情報を収集するために使用
customerUrl setCustomerUrl 顧客のアバターアドレスを設定
commodity setCommodity 商品リンク送信のmodeを設定
txtMessageClick setTxtMessageClick テキストメッセージ内のリンクメッセージのクリックイベントのインターセプトコールバック。 絵文字を含むものはインターセプトコールバックされません
formCallBack setFormCallBack オフラインメッセージフォームのコールバックインターフェース 、コールバックで独自の処理フローを使用
structMessageCallBack setStructMessageCallBack 構造化メッセージのクリックイベントコールバックインターフェースを設定
extreFunctions setExtreFunctions 追加の機能ボタンを設定
functionItemClickCallBack setExtreFunctions クリックイベントコールバック テキスト,画像,動画,ファイル,地理位置,商品情報を直接送信
navigationModes setNavigations 取り決められたカスタムボタンコレクションを渡す
robotnavigationModes setRobotNavigations 取り決められたカスタムボタンコレクションを渡す
navigationItemClickCallBack setNavigations 顧客がナビゲーションにカスタムボタンのクリックコールバックイベントを追加することをサポート
locationMessageClickCallBack setUseMapSetting 地理位置情報クリックのコールバックインターフェース
cls setUseMapSetting 地図メッセージ表示の詳細activityを開くために渡す
groupId setGroupId 指定グループを設定、毎回入室時に再指定が必要
isOnlyByGroupId setGroupId グループ指定のみで入室するかどうか
agentId setAgentId 指定カスタマーサポートidを設定、毎回入室時に再指定が必要
isOnlyByAgentId setAgentId カスタマーサポート指定のみで入室するかどうか
isOnlyUseRobot setOnlyUseRobot ロボットのみを使用し、他の機能を使用しないかどうかを設定、必須項目ではない
mProduct setProduct 商品メッセージを設定
channel setChannel SDKはカスタムチャネルをサポート(英数字のみサポート、特殊文字はサポートしません)
isShowCustomerNickname isShowCustomerNickname 顧客ニックネームを表示するかどうか
isShowCustomerHead isShowCustomerHead 顧客アバターを表示するかどうか
udeskProductLeftBgResId setUdeskProductLeftBgResId 商品メッセージ背景左側
udeskProductRightBgResId setUdeskProductRightBgResId 商品メッセージ背景右側
udeskProductRightNameLinkColorResId setUdeskProductRightNameLinkColorResId 商品メッセージの リンク付き時の 商品名表示の色 右側
udeskProductLeftNameLinkColorResId setUdeskProductLeftNameLinkColorResId 商品メッセージの リンク付き時の 商品名表示の色 左側
udeskProductMaxLines setUdeskProductMaxLines 商品メッセージ名の最大表示行数
preSendRobotMessages setPreSendRobotMessages メッセージを1つ設定 ロボット画面に入ると自動送信
productMessageClick setProductMessageClick 商品メッセージクリックコールバック
linkMessageWebonClick setLinkMessageWebonClick リンクメッセージクリックコールバック
replyProductMessageWebonClick setReplyProductMessageWebonClick 商品返信メッセージクリックコールバック
richMessageWebonClick setRichMessageWebonClick リッチテキストリンクメッセージクリックコールバック
imgTxtMessageWebonClick setImgTxtMessageWebonClick 画像テキストメッセージクリックコールバック
structMessageWebonClick setStructMessageWebonClick 構造化メッセージボタンリンクコールバック
maxHeightViewRatio setMaxHeightViewRatio インテリジェントヒントの最大高さを比率で設定
maxHeightViewDimen setMaxHeightViewDimen インテリジェントヒントの最大高さを設定
private UdeskConfig.Builder makeBuilder() {
    if (!TextUtils.isEmpty(edit_language.getText().toString())){
        // 言語設定を保存
        LocalManageUtil.saveSelectLanguage(getApplicationContext(),new Locale(edit_language.getText().toString()));
    }

    UdeskConfig.Builder builder = new UdeskConfig.Builder();
    builder.setUdeskTitlebarBgResId(R.color.udesk_titlebar_bg1) //タイトルバーTitleBarの背景色を設定
            .setUdeskTitlebarMiddleTextResId(R.color.udesk_color_middle_text) //タイトルバーTitleBar、左右両側の文字の色を設定
            .setUdeskTitlebarRightTextResId(R.color.udesk_color_right_text) //タイトルバーTitleBar、右側の文字の色を設定
            .setUdeskIMLeftTextColorResId(R.color.udesk_color_im_text_left1) //IM画面、左側の文字のフォント色を設定
            .setUdeskIMRightTextColorResId(R.color.udesk_color_im_text_right1) // IM画面、右側の文字のフォント色を設定
            .setUdeskIMAgentNickNameColorResId(R.color.udesk_color_im_left_nickname1) //IM画面、左側のカスタマーサポートニックネーム文字のフォント色を設定
            .setUdeskIMCustomerNickNameColorResId(R.color.udesk_color_im_right_nickname1) //IM画面、右側のユーザーニックネーム文字のフォント色を設定
            .setUdeskIMTimeTextColorResId(R.color.udesk_color_im_time_text1) // IM画面、時間文字のフォント色を設定
            .setUdeskIMTipTextColorResId(R.color.udesk_color_im_tip_text1) //IM画面、ヒントテキストのフォント色を設定、例えばカスタマーサポート転送
            .setUdeskbackArrowIconResId(R.drawable.udesk_titlebar_back) // 戻る矢印アイコンのリソースidを設定
            .setUdeskCommityBgResId(R.color.udesk_color_im_commondity_bg1) //商品相談itemの背景色
            .setUdeskCommityTitleColorResId(R.color.udesk_color_im_commondity_title1) // 商品紹介Titleの文字色
            .setUdeskCommitysubtitleColorResId(R.color.udesk_color_im_commondity_subtitle1)// 商品相談ページ内、商品紹介サブTitleの文字色
            .setUdeskCommityLinkColorResId(R.color.udesk_color_im_commondity_link1) //商品相談ページ内、リンク送信の文字色
            .setUdeskProductLeftBgResId(R.drawable.udesk_im_txt_left_default) //商品メッセージ背景
            .setUdeskProductRightBgResId(R.drawable.udesk_im_item_bg_right) //商品メッセージ背景
            .setUdeskProductMaxLines(2) //商品メッセージ名の最大表示行数
            .setUserSDkPush(set_sdkpush.isChecked()) // プッシュサービスを使用するかどうかを設定  true は使用  falseは不使用
            .setOnlyUseRobot(set_use_onlyrobot.isChecked())//ロボット機能のみを使用するかどうかを設定 ロボット機能のみを使用、ロボット機能のみを使用;  その他の機能は使用しない。
            .setUdeskQuenuMode(force_quit.isChecked() ? UdeskConfig.UdeskQueueFlag.FORCE_QUIT : UdeskConfig.UdeskQueueFlag.M

3 ページ遷移によるセッション割り当て

UdeskSDKManager.getInstance().entryChat(getApplicationContext(), makeBuilder().build(), sdkToken);

注意:この方法でセッションに入った場合のみ、管理者がバックエンドで設定したオプションが有効になります。他の方法でセッションに入ると、設定は有効になりません。

四、Udesk SDK カスタム設定

1 問い合わせ対象の設定が必要な場合、以下の設定を参照してください

  UdeskCommodityItem item = new UdeskCommodityItem();
    item.setTitle("木林森男鞋新款2016夏季透气网鞋男士休闲鞋网面韩版懒人蹬潮鞋子");// 商品メインタイトル
    item.setSubTitle("¥ 99.00");//商品サブタイトル
    item.setThumbHttpUrl("https://img.alicdn.com/imgextra/i1/1728293990/TB2ngm0qFXXXXcOXXXXXXXXXXXX_!!1728293990.jpg_430x430q90.jpg");// 左側画像
    item.setCommodityUrl("https://detail.tmall.com/item.htm?spm=a1z10.3746-b.w4946-14396547293.1.4PUcgZ&id=529634221064&sku_properties=-1:-1");// 商品ウェブリンク

    UdeskConfig.Builder builder = new UdeskConfig.Builder();
     .setCommodity(set_use_commodity.isChecked() ? createCommodity() : null)//商品リンク送信モードを設定
   **注意** セッション画面に入る前に呼び出してください

    問い合わせ対象情報の送信は、UdeskViewModeで呼び出します
    udeskViewMode.sendCommodityMessage(createCommodity());

2 多言語設定

LocalManageUtil.saveSelectLanguage

### 3 カスタム絵文字の設定説明

1. カスタム絵文字は、assetsフォルダ内にudeskemotionディレクトリを作成する必要があります。プログラム起動時に、assetsのudeskemotionディレクトリ内のすべてのスタンプが自動的にスタンプ保存場所にコピーされます。
2. udeskemotionディレクトリ内には、1つのタブアイコンと1つのスタンプフォルダが必要で、両者は同じ名前である必要があります。
詳細はdemoを参照してください。

4 IMチャット機能における位置情報送信の統合説明

 Androidでは、サードパーティの選択肢が多いなどの理由から、SDK内に直接地図SDKを組み込まず、お客様の実際のニーズに応じて位置情報送信機能を統合するかどうかを選択していただきます。
 地図統合のdemo例として提供しているもの:百度地図(baidumapdemo このmoduleを参照)、高德地図(gaodemapdemo)、腾讯地図(tenxunmapdemo)


 1.地図タイプの説明
 百度地図の設定
 UdeskConfig.useMapType = UdeskConfig.UdeskMapType.BaiDu; 
 高德地図の設定
 UdeskConfig.useMapType = UdeskConfig.UdeskMapType.GaoDe;
 腾讯地図の設定
 UdeskConfig.useMapType = UdeskConfig.UdeskMapType.Tencent;
 その他の地図の設定
 UdeskConfig.useMapType = UdeskConfig.UdeskMapType.Other;

UdeskChatActivityはstartActivityForResult方式でLocationActivityに入り、その後、選択した対応情報がUdeskChatActivityに戻されます。これはIntent方式で行われます。
        intent.putExtra内のnameについて取り決めがあり、これを遵守することで位置情報が有効に表示されます。

      具体的な取り決め: 
      public static class UdeskMapIntentName {
      //選択された位置
      public static final String Position = "udesk_position";

      //選択された位置周辺のスクリーンショットのローカル保存パス
      public static final String BitmapDIR = "udesk_bitmap_dir";

      //選択された位置の緯度
      public static final String Latitude = "udesk_latitude";

      //選択された位置の経度
      public static final String Longitude = "udesk_longitude";
   }

   具体的な例は、demoで提供されているコードスニペットを参照してください。


    .setUseMap(set_usemap.isChecked()) //位置送信機能を使用するかどうか  trueは使用、falseは不使用
            .setUseMapSetting(UdeskConfig.UdeskMapType.GaoDe, LocationActivity.class, new ILocationMessageClickCallBack() {
                @Override
                public void luanchMap(Context context, double latitude, double longitude, String selctLoactionValue) {
                    Intent intent = new Intent();
                    intent.putExtra(UdeskConfig.UdeskMapIntentName.Position, selctLoactionValue);
                    intent.putExtra(UdeskConfig.UdeskMapIntentName.Latitude, latitude);
                    intent.putExtra(UdeskConfig.UdeskMapIntentName.Longitude, longitude);
                    intent.setClass(context, ShowSelectLocationActivity.class);
                    context.startActivity(intent);
                }
            })

5 IMでのビデオ機能の使用

**注意**:ビデオ機能を使用するには、必ずUdeskSDKUI IMの機能を使用する必要がありますが、UdeskSDKUIの機能を単独で使用することも可能です。  
あなたのアプリで、udeskvideoモジュールに依存関係を追加してください。

6 カスタム機能ボタン設定のサポート 詳細はデモを参照してください

 .setExtreFunctions(getExtraFunctions(), new IFunctionItemClickCallBack() {
                @Override
                public void callBack(Context context, UdeskViewMode udeskViewMode, int id, String name) {
                    if (id == 22) {
                        udeskViewMode.sendCommodityMessage(createCommodity());
                    } else if (id == 23) {
                        UdeskSDKManager.getInstance().disConnectXmpp();
                    } else if (id == 24) {
                        udeskViewMode.sendProductMessage(createProduct());
                    }else if (id == 25) {
                        sendCustomerOrder();
                    }else if (id == 26) {
                        sendTrace();
                    }
                }
            }) // more展開パネルに追加の機能ボタンを設定

**説明**:各機能ボタンはFunctionModeとして設定され、以下の属性を含みます:
        // 表示内容
         private String name;
        // 選択後の対応する操作をマッピングするためのID値。最初の20はUdeskが予約済みです。カスタム追加されたものは、返された後にID値に基づいてマッピング関係を確立するために使用されます。
        private int id;
        // 例:R.drawable.udesk_001
        // 表示されるアイコン
        private int mIconSrc ;
インターフェースコールバックから返されたパラメータに基づいて、udeskViewMode内の対応するメソッドを呼び出して処理します。  
// メッセージ送信
// テキストメッセージ送信をカプセル化
public void sendTxtMessage(String msgString) {
    try {
        MessageInfo msg = UdeskUtil.buildSendMessage(
                UdeskConst.ChatMsgTypeString.TYPE_TEXT,
                System.currentTimeMillis(), msgString);

        postMessage(msg, UdeskConst.LiveDataType.AddMessage);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

  // 商品メッセージ送信
public void sendProductMessage(Product mProduct) {
    if (mProduct == null) {
        return;
    }
    try {
        MessageInfo msg = UdeskUtil.buildSendMessage(
                UdeskConst.ChatMsgTypeString.TYPE_PRODUCT,
                System.currentTimeMillis(), JsonUtils.getProduceJson(mProduct).toString());
        postMessage(msg, UdeskConst.LiveDataType.AddMessage);
    } catch (Exception e) {
        e.printStackTrace();
    }
}


/**
 * 位置情報メッセージを送信
 *
 * @param lat
 * @param longitude
 * @param localvalue
 * @param bitmapDir
 */
public void sendLocationMessage(double lat, double longitude, String localvalue, String bitmapDir) {
    try {
        StringBuilder builder = new StringBuilder();
        builder.append(lat).append(";").append(longitude).append(";").append("16;").append(localvalue);
        MessageInfo msg = UdeskUtil.buildSendMessage(
                UdeskConst.ChatMsgTypeString.TYPE_Location,
                System.currentTimeMillis(), builder.toString(), bitmapDir, "", "");
        postMessage(msg, UdeskConst.LiveDataType.AddMessage);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
 // ファイル類のメッセージ送信(ビデオ、ファイル、画像を含む)

/**
 * @param filepath
 * @param msgType  画像:UdeskConst.ChatMsgTypeString.TYPE_IMAGE
 *                 ファイル:UdeskConst.ChatMsgTypeString.TYPE_File
 *                 MP4ビデオ: UdeskConst.ChatMsgTypeString.TYPE_SHORT_VIDEO
 */
public synchronized void  sendFileMessage(String filepath, String msgType) {
    try {
        if (TextUtils.isEmpty(filepath)) {
            return;
        }
        String fileName = (UdeskUtils.getFileName(filepath, msgType));
        String fileSzie = UdeskUtils.getFileSizeByLoaclPath(filepath);
        MessageInfo msgInfo = UdeskUtil.buildSendMessage(msgType,
                System.currentTimeMillis(), "", filepath, fileName, fileSzie);
        postMessage(msgInfo, UdeskConst.LiveDataType.AddFileMessage);
    } catch (Exception e) {
        e.printStackTrace();
    } catch (OutOfMemoryError error) {
        error.printStackTrace();
    }
}

// 録音メッセージ送信
public void sendRecordAudioMsg(String audiopath, long duration) {
    try {
        String fileName = (UdeskUtils.getFileName(audiopath, UdeskConst.FileAduio));
        MessageInfo msgInfo = UdeskUtil.buildSendMessage(
                UdeskConst.ChatMsgTypeString.TYPE_AUDIO,
                System.currentTimeMillis(), "", audiopath, fileName, "");
        duration = duration / 1000 + 1;
        msgInfo.setDuration(duration);
        postMessage(msgInfo, UdeskConst.LiveDataType.AddFileMessage);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
// オリジナル画像メッセージ送信
public void sendBitmapMessage(Bitmap bitmap, Context context) {
    try {
        if (bitmap == null) {
            return;
        }
        File scaleImageFile = UdeskUtil.getScaleFile(bitmap, context);
        if (scaleImageFile != null) {
            MessageInfo msgInfo = UdeskUtil.buildSendMessage(
                    UdeskConst.ChatMsgTypeString.TYPE_IMAGE,
                    System.currentTimeMillis(), "", scaleImageFile.getPath(), "", "");
            postMessage(msgInfo, UdeskConst.LiveDataType.AddFileMessage);
        }
    }catch (Exception e){
        e.printStackTrace();
    }

}

7 カスタムナビゲーションバー設定のサポート 詳細はデモを参照してください

.setNavigations(set_use_navigation_view.isChecked(), getNavigations(), new INavigationItemClickCallBack() {
    @Override
    public void callBack(Context context, UdeskViewMode udeskViewMode, NavigationMode navigationMode, String currentView) {
        if (navigationMode.getId() == 1) {
            udeskViewMode.sendProductMessage(createProduct());
        } else if (navigationMode.getId() == 2) {
            udeskViewMode.sendTxtMessage("www.baidu.com");
        }
    }
}) // ナビゲーションUIを使用するかどうかを設定 true:使用する false:使用しない
.setRobotNavigations(set_use_navigation_view_robot.isChecked(), getRobotNavigations(), new INavigationItemClickCallBack() {
    @Override
    public void callBack(Context context, UdeskViewMode udeskViewMode, NavigationMode navigationMode, String currentView) {
        if (TextUtils.equals(currentView, UdeskConst.CurrentFragment.robot)) {
            if (navigationMode.getId() == 1) {
                udeskViewMode.sendTxtMessage("ロボットナビゲーション");
            } else if (navigationMode.getId() == 2) {
                udeskViewMode.getRobotApiData().onShowProductClick(createReplyProduct());
            }
        }
    }
}) // ロボットナビゲーションUIを使用するかどうかを設定 true:使用する false:使用しない

説明:ナビゲーションバーの各機能ボタンは1つのNavigationModeとして設定され、以下の属性を含みます。

// テキストの表示内容
private String name;
// 選択後の対応する操作をマッピングするために使用
private int id;

サポートされるカスタム機能は機能ボタンと同じです。

注意 ロボットチャットのカスタムナビゲーションは、テキストと商品返信タイプのみをサポートしており、他のタイプはサポートしていません。

8 商品返信メッセージの送信

private ProductListBean createReplyProduct(){
    ProductListBean productListBean=new ProductListBean();
    productListBean.setId(1);
    productListBean.setUrl("https://item.jd.com/7633415.html");
    productListBean.setImage("https://udeskzgh.oss-cn-beijing.aliyuncs.com/demo/sumsung.jpg");
    productListBean.setName("【SSDセット版】Samsung Galaxy S 軽量版(SM-G8750)4GB +64GB");
    List<InfoListBean> infoList = new ArrayList<>();

    InfoListBean bean0= new InfoListBean();
    bean0.setInfo("新商品");
    bean0.setColor("#00ff00");
    bean0.setBoldFlag(0);

    InfoListBean bean1= new InfoListBean();
    bean1.setInfo("分割払い金利無料");
    bean1.setColor("#ff0000");
    bean1.setBoldFlag(0);

    infoList.add(bean0);
    infoList.add(bean1);
    productListBean.setInfoList(infoList);
    return productListBean;
}

udeskViewMode.getRobotApiData().onShowProductClick(createReplyProduct());

9 商品メッセージの送信 (詳細はdemoを参照)

Productフィールド属性説明

key 必須かどうか 説明
name 必須 商品名
url 任意 商品ジャンプリンク(新規ページ表示)。値が空の場合はクリック不可
imgUrl 任意 商品表示画像のURL
params 任意 パラメータリスト
customParameters 任意 パラメータリスト(カスタム追加コンテンツ)
ParamsBean.text 任意 パラメータテキスト
ParamsBean.color 任意 パラメータの色値(16進数カラーコード)
ParamsBean.fold 任意 太字にするかどうか
ParamsBean.breakX 任意 改行するかどうか
ParamsBean.size 任意 フォントサイズ

使用シナリオ: 1. 毎回セッションに入る際に、UdeskConfig設定を通じて商品メッセージを1件設定できます。 2. ナビゲーションバーのカスタム機能ボタンを通じて商品メッセージを送信できます。

10 カスタムロボット満足度評価内容(人工カスタマーサポートの満足度調査内容はバックエンドで設定)

  case UdeskConst.LiveDataType.RobotSessionHasSurvey:
                        if ((boolean) mergeMode.getData()) {
                            UdeskUtils.showToast(getApplicationContext(), getResources()
                                    .getString(R.string.udesk_has_survey));
                        } else {
                            SurveyOptionsModel surveyOptionsModel1 = UdeskUtil.buildSurveyOptionsModel(getApplicationContext());
                            toLaunchSurveyView(surveyOptionsModel1);
                        }
                        break;

  public static SurveyOptionsModel buildSurveyOptionsModel(Context context){
    SurveyOptionsModel model=new SurveyOptionsModel();
    model.setEnabled(true);
    model.setName(context.getResources().getString(R.string.udesk_satisfy_evaluation));
    model.setTitle(context.getResources().getString(R.string.udesk_satisfy_evaluation_title));
    model.setRemark_enabled(true);
    model.setRemark(context.getResources().getString(R.string.udesk_satisfy_evaluation_remark));
    model.setType("text");
    model.setDefault_option_id(0);
    model.setRobot(true);
    List<OptionsModel> options=new ArrayList<>();
    int id=0;
    options.add(new OptionsModel(++id,true,context.getResources().getString(R.string.udesk_statify),context.getResources().getString(R.string.udesk_statify),UdeskConst.REMARK_OPTION_HIDE));
    options.add(new OptionsModel(++id,true,context.getResources().getString(R.string.udesk_common),context.getResources().getString(R.string.udesk_common),UdeskConst.REMARK_OPTION_OPTIONAL));
    options.add(new OptionsModel(++id,true,context.getResources().getString(R.string.udesk_unstatify),context.getResources().getString(R.string.udesk_unstatify),UdeskConst.REMARK_OPTION_REQUIRED));
    model.setOptions(options);
    return model;
}

11 ユーザーアバターの表示設定

UdeskConfig.Builder builder = new UdeskConfig.Builder();
builder.isShowCustomerHead(true|false);

12 ユーザーニックネームの表示設定

UdeskConfig.Builder builder = new UdeskConfig.Builder();
builder.isShowCustomerNickname(true|false);

五、Udesk API説明

1.未読メッセージの取得

会話画面を終了した後、Udeskサーバーとの接続を切断せず、未読メッセージイベント取得メソッドを登録すると、そのメソッド内で未読メッセージを受信できます。

     /**
     * 未読メッセージ通知イベントの登録と処理
     */
    UdeskSDKManager.getInstance().setNewMessage(new IUdeskNewMessage() {
        @Override
        public void onNewMessage(MsgNotice msgNotice) {
            if (msgNotice != null) {
                Log.i("xxx","UdeskCaseActivity でmsgNoticeを受信しました");
                NotificationUtils.getInstance().notifyMsg(getApplicationContext(), msgNotice.getContent());
            }
        }
    });

未読メッセージの受信

 if (UdeskBaseInfo.isNeedMsgNotice && UdeskSDKManager.getInstance().getNewMessage() != null) {
   MsgNotice msgNotice = new MsgNotice(msgId, type, content);
   UdeskSDKManager.getInstance().getNewMessage().onNewMessage(msgNotice);
   }

未読メッセージの取得

//未読メッセージを取得
List<MessageInfo> unReadMsgs = UdeskSDKManager.getInstance().getUnReadMessages(getApplicationContext(), PreferenceHelper.readString(getApplicationContext(), "init_base_name", "sdktoken"));

2 未読メッセージ数の取得

会話画面を終了した後、Udeskサーバーとの接続を切断せず、このセッションの未読メッセージ数を取得できます。会話画面を開くと未読メッセージ数はクリアされます。

UdeskSDKManager.getInstance().getCurrentConnectUnReadMsgCount();

3 コンソールログの切り替え

開発中に、コンソールで現在の顧客とUdeskサーバー間の接続(xmpp)のやり取りパケットを確認したい場合は、以下のインターフェースを呼び出して実現できます。

//true はコンソールログを有効化、false はコンソールログを無効化
UdeskSDKManager.getInstance().isShowLog(true);

4 Udeskサーバーとの接続を切断

アプリ実行中にカスタマーサポートをオフラインにする必要がある場合、またはカスタマーサポートからのメッセージを受信しない場合、このインターフェースを呼び出してUdeskサーバーとの接続を能動的に切断できます。

UdeskSDKManager.getInstance().disConnectXmpp();

5 キュー退出モードの設定

quitmode: mark (デフォルト、放棄をマーク)/ force_quit(強制的に即時放棄)

build.setUdeskQuenuMode(quitmode);

6 商品注文を送信

      **OrderBeanフィールド属性説明**
key 必須かどうか 説明
name 必須 注文名
url オプション 注文ジャンプリンク
order_no 必須 注文番号
price 必須 注文価格
order_at 必須 注文時間
pay_at オプション 支払い時間
status 必須 注文ステータス(支払い待ち: 'wait_pay'、支払い済み: 'paid'、クローズ済み: 'closed')
remark オプション 備考
 /**
 * 商品注文を送信
 */
private void sendCustomerOrder() {
    //注文情報を送信
    OrderBean orderBean =new OrderBean();
    orderBean.setName("Apple iPhone X (A1903) 64GB");
    orderBean.setOrder_at(UdeskUtil.getCurrentDate());
    orderBean.setUrl("www.baidu.com");
    orderBean.setPrice(1200.33);
    orderBean.setOrder_no("123");
    orderBean.setPay_at(UdeskUtil.getCurrentDate());
    orderBean.setStatus(UdeskConst.OrderStatus.paid);
    orderBean.setRemark("私はテストです");
    String sdkToken = getSDKToken();
    UdeskSDKManager.getInstance().sendCustomerOrder(UdeskSDKManager.getInstance().getDomain(this),UdeskSDKManager.getInstance().getAppkey(this),
            sdkToken,UdeskSDKManager.getInstance().getAppId(this),JsonUtils.getOrderJson(orderBean));
}

7 商品トラッキングの送信

      **TraceBeanフィールド属性の説明**
key 必須かどうか 説明
type 必須 トラッキングタイプ
data.name 必須 商品名
data.url オプション 商品ジャンプリンク
data.imgUrl オプション 画像URL
data.date オプション アクセス時間
data.params オプション パラメータリスト
data.params.text オプション パラメータテキスト
data.params.color オプション パラメータカラー値
data.params.fold オプション 太字かどうか
data.params.breakX オプション 改行するかどうか
data.params.size オプション フォントサイズ
    /**
 * 商品トラッキングを送信する
 */
private void sendTrace() {
    //商品トラッキングを送信
    TraceBean traceBean =new TraceBean();
    traceBean.setType("product");
    TraceBean.DataBean dataBean =new TraceBean.DataBean();
    dataBean.setName("traceBean");
    dataBean.setUrl("http://item.jd.com/6748052.html");
    dataBean.setDate(UdeskUtil.getCurrentDate());
    dataBean.setImgUrl("http://img12.360buyimg.com/n1/s450x450_jfs/t10675/253/1344769770/66891/92d54ca4/59df2e7fN86c99a27.jpg");
    List<TraceBean.DataBean.ParamsBean> paramsBeanList =new ArrayList<>();

    TraceBean.DataBean.ParamsBean paramsBean1 = new TraceBean.DataBean.ParamsBean();
    paramsBean1.setBreakX(false);
    paramsBean1.setColor("#ff0000");
    paramsBean1.setFold(false);
    paramsBean1.setSize("14");
    paramsBean1.setText("999999999.00");

    paramsBeanList.add(paramsBean1);
    dataBean.setParams(paramsBeanList);

    traceBean.setData(dataBean);
    String sdkToken = getSDKToken();
    UdeskSDKManager.getInstance().sendBehaviorTraces(UdeskSDKManager.getInstance().getDomain(this),UdeskSDKManager.getInstance().getAppkey(this),
            sdkToken,UdeskSDKManager.getInstance().getAppId(this),JsonUtils.getTraceJson(traceBean));
}

8 リソース UI

チャット画面 UdeskChatActivity

ロボット UdeskRobotFragment

オペレーター UdeskAgentFragment

メッセージアダプター MessageAdatper

左側レイアウト udesk_item_left.xml 内部に複数のメッセージタイプのレイアウトを含む

左側viewHolder LeftViewHolder  左側メッセージを処理

右側レイアウト udesk_item_right.xml 内部に複数のデータタイプのレイアウトを含む

右側viewHolder RightViewHolder  右側メッセージを処理

xmppメッセージ処理 UdeskXmppManager

データ処理 
    UdeskViewMode 
    APILiveData オペレーターAPI処理 
    DBLiveData  データベース処理
    FileLiveData  ファイルアップロード・ダウンロード処理
    ReceiveLiveData 受信メッセージ処理
    RobotApiData ロボットAPI処理
    SendMessageLiveData  送信メッセージ処理

    MergeMode livedataで処理されるメッセージ
    questionMergeMode MergeModeのサブクラス拡張 質問クリック処理
    MergeModeManager  mergedata管理クラス

9 キャッシュされたagentIdのクリア

UdeskSDKManager.getInstance().cleanCacheAgentId(getApplicationContext());

10 キャッシュされたgroupIdのクリア

UdeskSDKManager.getInstance().cleanCacheGroupId(getApplicationContext());

11 キャッシュされたmenuIdのクリア

UdeskSDKManager.getInstance().cleanCacheMenuId(getApplicationContext());

12 ヘルプセンター画面の起動

Udeskシステムのヘルプセンターでは、バックエンドでヘルプドキュメントを作成でき、顧客はヘルプセンターを通じて関連ドキュメントを閲覧できます。以下のインターフェースを呼び出してヘルプセンター画面を起動します。

UdeskSDKManager.getInstance().toLaunchHelperAcitivty(getApplicationContext(), UdeskSDKManager.getInstance().getUdeskConfig());

六、メッセージプッシュ

現在、1つのプッシュ方式のみサポートしています。すなわち、Udeskサーバーが開発者のサーバーにメッセージを送信し、開発者がAppにメッセージをプッシュします。

1 プッシュ受信サーバーアドレスの設定

プッシュメッセージは開発者のサーバーに送信されます。

サーバーアドレスを設定するには、Udesk管理者アカウントでUdeskにログインし、設定 -> モバイルSDK で設定してください。

udesk

2 Udeskプッシュ機能の使用設定

設定 プッシュサービスを使用するかどうか  true は使用する  falseは使用しない
public  static  boolean isUserSDkPush = false;

3 ユーザーのデバイス一意識別子の設定

UdeskSDKManager.getInstance().setRegisterId(context,"xxxxregisterId")
 //プッシュ登録のデバイスIDを保存
public void setRegisterId(Context context, String registerId) {
    UdeskConfig.registerId = registerId;
    PreferenceHelper.write(context, UdeskConst.SharePreParams.RegisterIdName,
            UdeskConst.SharePreParams.Udesk_Push_RegisterId, registerId);
}

Udeskプッシュサービスの停止と開始について、Udeskが開発者サーバーにプッシュするメッセージデータ形式には、device_tokenフィールドが含まれます。

4 Udeskプッシュサービスの有効化/無効化

/**
 * @param domain    会社登録時に生成されたドメイン
 * @param key       アプリ作成時に生成されたアプリキー
 * @param sdkToken  ユーザー一意識別子
 * @param status        SDKプッシュ状態 ["on" | "off"]  onはUdeskプッシュサービス有効化、offはUdeskプッシュサービス無効化を表します
 * @param registrationID プッシュデバイス登録ID
 * @param appid  アプリ作成時に生成されたアプリID
 */

public void setSdkPushStatus(String domain, String key, String sdkToken, String status, String registrationID, String appid, UdeskCallBack callBack) {
    try {
        UdeskHttpFacade.getInstance().sdkPushStatus(domain, key, sdkToken, status, registrationID, appid, callBack);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

5 Udeskから開発者サーバーへのプッシュインターフェース説明

基本要件

パラメータ

メッセージまたはイベントが発生した場合、以下のデータがプッシュインターフェースに送信されます

パラメータ名 タイプ 説明
message_id string メッセージID
platform string プラットフォーム、'ios' または 'android'
device_token string デバイス識別子
app_id string SDKアプリID
content string メッセージ内容、typeが'message'の場合のみ有効
sent_at datetime メッセージプッシュ時間、iso8601形式
from_id integer 送信者ID(カスタマーサポート)
from_name string 送信者名
to_id integer 受信者ID(顧客)
to_token string 受信者sdk_token(一意識別子)
type string メッセージタイプ、'event'はイベント、'message'はメッセージ
event string イベントタイプ、'redirect'はカスタマーサポート転送、'close'は会話終了、'survey'は満足度調査送信

七、よくある質問

1. 特定のカスタマーサポートグループまたはカスタマーサポートの割り当てで、指定したカスタマーサポートグループのカスタマーサポートと一致しない場合がありますか?

 まず、カスタマーサポートが会話を終了していないことを確認してください。
 当製品のロジック: 顧客AがカスタマーサポートグループBのカスタマーサポートB1を選択して会話したとします。その後、顧客Aが会話画面を終了し、別の画面に移動し、その後カスタマーサポートグループCのカスタマーサポートC1を通じて会話が割り当てられた場合:  この時、バックエンドは、B1との会話がまだ存在するかどうかを判断し、存在する場合はC1ではなく直接B1に割り当てます。 B1の会話が終了して初めて、C1に割り当てられます。
  1. 異なる顧客に割り当てられた会話が1つの会話内に表示される場合がありますか?

    この状況は、カスタマーサポートが渡したsdktokenの値が同じ場合に発生します。 sdktokenは身分証明書のように、ユーザーの一意識別子です。顧客が接続時に渡すsdktokenの値を確認してください。 emailまたはcellphoneを設定している場合、同じ値があると1人のカスタマーサポートの会話内に表示されることもあります。

  2. 特定の携帯電話でロボットページが開かない場合がありますか?

    この問題の可能性の1つ: 携帯電話の時間設定と現在時刻が一致していないことが原因です。時間の誤差が1時間を超えると、ロボットインターフェースに接続できない問題が必ず発生します。

    5.xではネイティブロボットチャットを採用しているため、この問題は発生しません。   4. SDKを統合後、クラスが見つからないエラーが発生しますか?

マルチデックス戦略を追加したか確認してください:

  AndroidのGradleプラグインはAndroid Build Tool 21.1からmultidexの使用をサポートしているため、Android Build Tools 21.1以降のバージョンを使用する必要があります。appディレクトリ下のbuild.gradleファイルを修正し、2点修正が必要です。
 (1)defaultConfigにmultiDexEnabled trueという設定を追加します。
 (2)dependenciesにmultidexの依存関係を追加します: compile ‘com.android.support:multidex:1.0.0’
 (3)Applicationを継承し、attachBaseContextメソッドをオーバーライドし、AndroidManifest.xmlのapplicationタグで登録します。

      @Override
 protected void attachBaseContext(Context base) {
         super.attachBaseContext(base);
         MultiDex.install(this);
  }

5.H5接続参考例

https://github.com/udesk/udesk_android_sdk_h5
  1. 一部のメッセージが完全に表示されない

    5.1.0でデータベースがアップグレードされ、いくつかの新しいフィールドが追加されましたが、以前のバージョンのデータベースにはありません。カバーインストール時にローカルデータベースの履歴メッセージを読み取ると、メッセージの一部のフィールドが読み取られず、完全に表示されないことがあります。 アンインストールして再インストールすれば解決します。

八、更新履歴

更新履歴

5.2.6(5.x)、5.2.7(5.x_android_Q ブランチ)バージョン更新:

  1. 推奨ガイド文を追加
  2. 人工対応への転送失敗をサポート
  3. インテリジェントヒントの高さを最適化
  4. メッセージクリックコールバックを追加

5.2.4(5.x)、5.2.5(5.x_android_Q ブランチ)バージョン更新:

  1. 回答リンクFAQをサポート
  2. チャット履歴での評価をサポート
  3. ファイルアップロードの問題を最適化

5.2.2(5.x)、5.2.3(5.x_android_Q ブランチ)バージョン更新:

  1. 入力フィールドの問題を修正

5.2.0(5.x)、5.2.1(5.x_android_Q ブランチ)バージョン更新:

  1. メッセージなしダイアログから待機行列入力フィールドへの問題を修正
  2. 新規セッションがロボットを経由せず、メッセージなしダイアログフィルタリングの問題を修正
  3. リッチテキストのフォントカラー表示問題を修正
  4. ダイアログメッセージ保留状態の切り替え問題を修正
  5. リッチテキスト画像圧縮問題を修正

5.1.7(5.x)、5.1.8(5.x_android_Q ブランチ)バージョン更新:

  1. 画像OOM問題を修正
  2. ビデオ通話問題を修正
  3. ファイル読み取り問題を修正
  4. ブラックリスト無効化問題を修正
  5. ロボット推奨問題を修正
  6. WebView表示問題を修正
  7. 待機行列入力フィールド問題を修正
  8. HTML解析問題を修正

5.1.5(5.x,5.x_androidX)、5.1.6(5.x_android_Q ブランチ)バージョン更新:

  1. ロボット自動メッセージを追加
  2. フロー問題を修正
  3. WebViewマーケット公開問題を修正

5.1.4 バージョン更新(5.x_android_Q ブランチ):

  1. Android Qに適応
  2. 満足度受信問題を修正
  3. ビデオ通話問題を修正
  4. 下部表示問題を修正

5.1.3 バージョン更新:

  1. ダイアログメッセージ保留にパラメータを追加
  2. 「もっと見る」と絵文字の表示/非表示問題を修正
  3. ファイルアップロードキャンセル問題を修正
  4. ウェルカムメッセージ非表示問題を修正
  5. HTMLタグ解析を修正
  6. ビデオ通話問題を修正
  7. GIFクエリ問題を修正

5.1.2 バージョン更新:

  1. 商品リンク送信によるメッセージ保留問題を修正

5.1.1 バージョン更新:

  1. emojiフォルダ名を修正
  2. WebViewコンテキストを修正
  3. メッセージ保留問題を修正
  4. 満足度評価問題を修正
  5. キーボード高さ問題を修正
  6. アルバム問題を修正
  7. 撮影問題を修正
  8. 七牛ダウンロード問題を修正

5.1.0 バージョン更新:

  1. ダイアログメッセージ保留をサポート
  2. テンプレートメッセージをサポート
  3. 商品注文と商品軌跡の送信をサポート
  4. カスタマーサポート側での商品メッセージタイプ追加をサポート
  5. データ保存ロジックとデータベースを修正
  6. ロボットウェルカムメッセージロジックを修正
  7. アップロードポリシー問題を修正
  8. WebViewでhttp/https以外で始まるリンクに適応
  9. 人工ナビゲーションクリック問題を修正
  10. メッセージなしダイアログフィルタリング状態でのメッセージ送信問題を修正
  11. 商品メッセージの背景、フォントカラー、行数設定APIを追加・修正
  12. 4.xバージョンから5.xへの上書きインストール時のカスタマーサポートリクエスト問題を修正
  13. ファイルアップロード進捗表示ポリシーを修正

5.0.0バージョン更新:

  1. ネイティブロボットをサポート
  2. サードパーティセッションをサポート
  3. UIインタラクションを改訂
  4. AACフレームワークを採用
  5. 音声認識機能を追加

4.1.1 修正内容

  1. SDK待機行列中にメッセージ保留をクリックしても待機行列中のままになる問題を修正;
  2. 待機行列中にテキストメッセージを送信後、「もっと」ボタンが非表示になる問題を修正;
  3. 商品メッセージ送信時にカスタマーサポート側に表示されない問題を修正;
  4. メッセージの送信到達を最適化;(セッション画面を離れ、受領確認未受信メッセージがある場合、シングルトンに格納して送信)

4.1.0+

  1. 待機行列中にメッセージ送信をサポート
  2. 絵文字を置き換え
  3. ロボット管理者設定名をサポート
  4. カスタムチャネルをサポート
  5. グローバル顧客一意性customer_tokenの設定をサポート
  6. オフラインメッセージに実際の送信時間を表示するようサポート
  7. 録音ファイル形式をwavに変更し、カスタマーサポート音声テキスト変換の精度を向上
  8. メッセージなしダイアログフィルタリングメッセージの保存を最適化

4.0.5+

  1. メッセージ送信の最適化;
  2. ボットキーのサポート;
  3. ボットSDKの自動人間接続イベント

4.0.4+

  1. メッセージID生成の最適化

4.0.3+

  1. RTL(右から左)表示の最適化

4.0.1+

  1. 商品メッセージのサポート

4.0.0+

  1. SDKの画像アップロードコンポーネントの最適化;

  2. SDKでのショートビデオのサポート;

  3. カスタムスタンプのサポート;

  4. メッセージなし会話のフィルタリングサポート;

  5. 入力エリアの最適化;

  6. 満足度調査の最適化;

  7. SDKのメッセージ案内テキスト表示の最適化;

  8. SDKの横画面互換性の最適化;

  9. SDKがボットから人間接続ボタンをX件のメッセージ後に表示することをサポート;

  10. SDKがボットにmodelKey値を渡すことをサポート;

  11. IM画像表示でのタップ戻り機能のサポート;

  12. SDKの多言語サポートの最適化;

  13. SDK内の各種設定のリファクタリング;

  14. ボットへの顧客情報の受け渡し;

  15. 8.0 方向設定と透明属性設定の適応;

  16. SDK(Android)の一部問題の最適化;

  17. SDKがメッセージ人間接続ボタンをサポート;

  18. SDKでの画像送信に画像拡張子を追加;

3.9+

  1. メッセージ到達率の最適化
  2. ビデオチャットのサポート

3.8.0+

  1. 地理位置情報送信のサポート

3.7.1+

  1. ウェルカムメッセージ表示の最適化

3.7.0+

  1. オフラインでの直接メッセージ送信をサポート;
  2. SDKが満足度調査の返却とオン/オフ設定をサポート;
  3. SDKがGIFの受信と送信をサポート;
  4. SDKがビデオの受信と送信をサポート;
  5. SDKがカスタマーサポートメッセージの取り消しをサポート

3.6.0+

  1. SDKに構造化メッセージ表示を追加
  2. ブラックリスト通知メッセージを追加

3.5.0 +

  1. SDK初期化メソッドを initApiKey(Context context, String domain, String appkey, String appid) に変更
  2. セッション開始方法を変更し、entryChat(Context context) を統一して呼び出し、内部で管理者のバックエンド設定に基づく対応する業務フロー遷移を処理
  3. 以前提供されていた一部のセッション開始方法インターフェースを削除し、entryChat(Context context) を統一して使用

3.4.0 +

  1. プッシュ通知のサポート、
  2. マルチアプリケーションのサポート

3.3.2+

  1. HTTPプロトコルをHTTPSに変更

  2. SDK側での顧客による満足度調査の自主的放棄を追加

3.3.1+

  1. Android 7.0への適応

3.3+

  1. 英語と中国語への適応、
  2. UI設定の追加、
  3. セッション接続ロジックの修正、
  4. アバター設定の追加、
  5. インターフェースUIの修正

3.2.1+

  1. ブラックリスト設定のサポート;
  2. カスタマーサポートのオンライン状態の最適化;
  3. オフラインの顧客がモバイル端末でオンラインと表示される問題を修正;
  4. カスタマーサポートのアバターをサポート、各メッセージ送信者のカスタマーサポートニックネーム表示をサポート;
  5. ユーザー情報更新のサポート;

3.2.0 +

  1. 商品リンク送信の追加、
  2. メッセージ通知の追加
  3. 未読メッセージインターフェースの追加
  4. Android 6.0 実行権限の追加

3.1+

  1. ウェルカムメッセージでのリンク設定のサポート
  2. バックエンドでのカスタムリンク設定のサポート
  3. 指定されたカスタマーサポートIDによる割り当てのサポート
  4. 指定されたカスタマーサポートグループIDによる割り当てのサポート

3.0+

  1. カスタマーサポート転送と評価依頼機能の新規追加

九、一部機能スクリーンショット

1.ネイティブボット

udesk

バックエンド設定

udesk

2.入力連想

udesk

3.音声認識

udesk

4.第三者セッション

udesk

5.商品リンク カスタムナビゲーション及びサービス評価 カスタム絵文字

udesk

6.カスタムボタン

udesk

7.オペレーター転送ナビゲーション設定

udesk

管理画面設定

管理画面設定

8.フォームメッセージ

udesk

9.ダイレクトメッセージ

udesk

管理画面設定

管理画面設定

10.満足度評価

udesk

11.メッセージなし会話フィルタリング

udesk

管理画面設定

管理画面設定

12.メッセージタイプ表示

商品メッセージ 地図 ファイル ショートビデオタイプ

udesk

リッチテキスト 画像付きテキスト及び推薦メッセージ

udesk

プレーンテキスト フローメッセージ

udesk

商品選択 商品返信

udesk

質問付き推薦 カテゴリ付き推薦

udesk

画像 リンク 音声メッセージ オペレーター転送通知 回答評価

udesk

転送 構造化メッセージ

udesk

オペレーター転送 メッセージイベント

udesk

ビデオライブストリーミング

udesk