Android向けASAP SDKの操作

Android向けASAP SDKの操作

SDK バージョン2.0

はじめに

Android向けのASAP SDK(ソフトウェア開発キット)を活用すると、Androidアプリのエンドユーザーが手軽に利用できるヘルプ機能を提供することができます。SDKを使用することで、アプリ内のアドオンを作成したり、カスタマイズしたりできます。また、エンドユーザーが以下の機能に簡単にアクセスできるようになります:
  • カスタマーサポートチームへの問い合わせ(問い合わせの送信、サポート担当者とのチャット)
  • ナレッジベース(ヘルプ記事へのアクセス)
  • ユーザーコミュニティ(アプリを通じた他の顧客とやりとり)
この機能を活用すれば、エンドユーザーはアプリを終了してWebサイトにアクセスし直したり、サポートを受けるためにメールを送信したりする必要はありません。ユーザーはアプリ内でヘルプ記事を検索することができます。顧客満足度の向上につなげることができます。
現在、バージョン1.2.7以前のASAP SDKを利用している場合、バージョン2.0を利用するには既存のコードを移行する必要があります。コードの移行手順については、この記事の 「バージョン1.xから2.0への移行」 セクションをご参照ください。

Zoho DeskでのSDKの設定

利用中のAndroidアプリにASAPアドオンを追加する最初の手順として、Zoho Deskにアドオンを作成し、登録します。以下の手順で、アドオンを作成できます:
Zoho Deskで、 [設定] > [チャネル] > [ASAP] の順に移動します。
  1. 左側の 設定 メニューの ASAP にて、 モバイル の隣にある [+] ボタンをクリックします。 モバイルアドオンの作成 画面が表示されます。
               


  2. [アドオンの詳細] で、以下の内容を設定します:
    1. 名前: ASAPアドオンの名前です。この名前は参照用です。アプリの操作画面上には表示されません。
    2. 有効: ASAPアドオンを有効にする部門を選択します。
    3. バンドルID: Android の項目に、AndroidアプリのバンドルIDを入力します。(バンドルIDは、Androidアプリの「applicationId」です。アプリ内の「build.gradle」ファイルからこのデータを取得できます。)
      メモ: チャット機能を有効にしたり、プッシュ通知を送信したりするには、バンドルIDが必須です。
    4. チャット: 切り替えボタンを操作することで、チャット機能を有効または無効にできます。
      メモ: チャットの項目には、ポータルのチャットチャネルにて設定された内容が反映されます。そのため、設定を変更するには、Zoho Deskの設定画面で行う必要があります。
    5. プッシュ通知: 切り替えボタンを操作することで、プッシュ通知を有効または無効にできます。プッシュ通知を有効にするには、「 Enter GCM/FCM 」キーの項目にGCM/FCMサーバーキーを入力します。(このキーを取得するには、Firebaseコンソールで次の順に移動します: プロジェクトの設定 > クラウドメッセージング > サーバーキー
      メモ: 通知を有効にするには、JWT方式でのユーザー認証が必須となります。匿名ユーザーに対して、問い合わせに関するプッシュ通知を送信することはできません。
    6. 認証方法: このアドオンにおけるユーザーの認証方法を設定します。
      1. 匿名 - この方法では、エンドユーザーはゲストユーザーとみなされます。ゲストユーザーが行える操作は、問い合わせの送信、ユーザーコミュニティでの投稿内容の表示、サポート担当者とのチャット、に限定されます。自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることはできません。
      2. JWT - この方法では、エンドユーザーは認証済みユーザーとみなされます。ゲストユーザーが行える操作に加えて、認証済みユーザーは、自分が送信した問い合わせのステータスを表示したり、問い合わせに返信やコメントしたり、ユーザーコミュニティに参加したりすることもできます。コミュニティでは、トピックのフォロー、トピックの追加、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
  3. [保存] をクリックします
コード のセクションが新しく表示されます。このセクションには組織のID、アプリID、配置の種類(データセンター)といったアプリの詳細が表示されます。これらの詳細データは、アプリでASAP SDKの初期設定を行う際に必要です。


SDKとアプリとの連携

次の手順では、Mavenを使用してASAP SDKとAndroidアプリを連携します。
SDKとアプリを連携するには、以下のコードをルートフォルダーの「build.gradle」ファイルに追加します。
      
         
            repositories {
            jcenter()
            google()
            maven { url '
         
      
      
         http://maven.zohodl.com/
      
      
         
            ' } 
            }
         
      
      
   
メモ: ASAP SDKは、Android アーキテクチャ コンポーネントを使用して開発が行われました。そのため、アプリのコード内に「 maven.google.com/google() 」を追加する必要があります。
次に、SDKに必要な依存関係を追加します。
アプリ内の「build.gradle」ファイルの依存関係のセクションに、必要な依存関係のコードを追加します。
「com.zoho.desk:asapsdk:2.0.2」 - 初期設定の操作画面を持つASAP SDKです(チャットを含む)
「com.zoho.desk:asap:2.0.2」 - 初期設定の操作画面を持つASAP SDKです(チャットを含まない)
「com.zoho.desk:asap-api:2.0.2」 - 操作画面を持たないASAP SDKです。APIを提供するサーバーです。
      
         
            dependencies {
            implementation 'com.zoho.desk:asapsdk:2.0.2' 
            }
         
      
      
   
以上で、SDKとアプリとの連携が完了しました。ASAP SDKの設定に関する詳細データは、以下のとおりです:
  • compileSdkVersion - 30
  • supportLibVersion - 27.1.1
  • minSdkVersion - 16
  • targetSdkVersion - 30
ProGuardの設定
ProGuardやMinifyが有効になっている場合、「  proguard-rules  」のセットに以下のルールを追加する必要があります。 
            
               
                  
                     
                        -dontwarn com.squareup.okhttp.**
                        -keep class android.support.v7.widget.SearchView { *; }
                        -dontwarn okhttp3.**
                        -dontwarn okio.**
                        -dontwarn retrofit2.**
                        -dontwarn com.zoho.desk.**
                     
                  
               
            
            
         

アプリ内のSDKの初期設定

次に、アプリ内のSDKの初期設定を行います。
この手順では、以下の3つのキーが必須です:
  • 組織ID(Org ID)
  • アプリID(App ID)
  • データセンター(Datacenter)
これらのキーの値は、Zoho DeskのASAPアドオンの設定画面にある コード セクションに表示されます。
アプリのSDKの初期設定を行うには、以下のコードをアプリケーションのクラスのサブクラスに追加します。
      
         
            import android.app.Application; 
            import com.zoho.desk.asap.api.ZohoDeskPortalSDK; 
            public class MyApplication extends Application {
            public static ZohoDeskPortalSDK apiProvider;
            @Override
            public void onCreate() {
            super.onCreate();
            ZohoDeskPortalSDK.Logger.enableLogs();
            apiProvider = ZohoDeskPortalSDK.getInstance(getApplicationContext());
            apiProvider.initDesk(orgId, appId, datacenterValue);
            }
            }
         
      
      
   
メモ
配置の種類の応じたデータセンターの値は、以下のとおりです:
CN - DataCenter.CN
EU - DataCenter.EU
US - DataCenter.US
IN - DataCenter.IN
AU - DataCenter.AU

ヘルプ項目の表示

SDKダッシュボード
エンドユーザーは、SDKダッシュボードの画面を通じてヘルプセンターにアクセスすることができます。このダッシュボードにはボタンやアイコンが表示されます。このボタンやアイコンから、ナレッジベース、ユーザーコミュニティ、問い合わせ送信フォーム、問い合わせリスト(ログインしたユーザーから送信された問い合わせの一覧)、チャット(リアルタイムでカスタマーサポート担当者とやりとり)にアクセスすることができます。
メモ: 初期設定では、SDKの操作画面にてチャットタブは無効になっています。利用するには、はじめにZoho Deskのポータルでチャットタブを有効にする必要があります。
以下のメソッドにより、SDKダッシュボードが表示されます。
      
         
            ZDPortalHome.show(MainActivity.this);
         
      
      
   

設定を上書きしたSDKダッシュボード
以下のメソッドにより、設定を上書きしたSDKダッシュボードが表示されます。
      
         
            ZDPHomeConfiguration homeConfiguration = new ZDPHomeConfiguration.Builder() 
            .showKB(true) 
            .showMyTickets(true) 
            .showCommunity(true) 
            .showLiveChat(true) 
            .showNavDrawer(true).build(); 
            ZDPortalHome.show(MainActivity.this, homeConfiguration);
         
      
      
   
チャット
エンドユーザーは、チャットを通じてリアルタイムでカスタマーサポート担当者とやりとりを行うことができます。
以下のメソッドにより、チャットタブが表示されます。
      
         
            ZDPortalChat.show(activity);
         
      
      
   
「activity」は、チャットタブを表示させるためのインスタンスです。
担当者に対する匿名ユーザーの詳細データの表示
通常、匿名ユーザーからチャットを通じてカスタマーサポートに連絡が行われる際、担当者の画面にはユーザーの詳細データは表示されません。ただし、SAPアドオンを設定することで、匿名ユーザーから連絡を受け取った際に詳細データを表示することができます。
設定するには、次のメソッドを追加します。
      
         
            ZDPortalChatUser chatUser = new ZDPortalChatUser(); 
            chatUser.setName(name); 
            chatUser.setEmail(email); 
            chatUser.setPhone(phone); 
            ZDPortalChat.setGuestUserDetails(chatUser); 
         
      
      
   
ヘルプセンター(ナレッジベース)
エンドユーザーは、ヘルプセンタータブからナレッジベース内のヘルプ記事にアクセスできます。
以下のメソッドにより、ヘルプセンター(ナレッジベース)が表示されます。
      
         
            ZDPortalKB.show(activity);
         
      
      
   
「activity」は、ナレッジベースタブを表示させるためのインスタンスです。
問い合わせの送信
エンドユーザーは、問い合わせの送信画面から質問や要望を問い合わせとして送信することができます。
以下のメソッドにより、問い合わせの送信画面が表示されます。
      
         
            ZDPortalSubmitTicket.show(activity);
         
      
      
   
Activity 」は、問い合わせの送信画面を表示させるためのインスタンスです。
アプリに対して問い合わせの送信に関するイベントを記録させる場合、以下のメソッドを使用します。このメソッドには、イベントのコールバック処理が含まれています。
      
         
            ZDPortalSubmitTicket.show(activity, new ZDPortalCallback.CreateTicketCallback() {
            @Override
            public void onTicketCreated(Ticket ticket) {
            //Ticket created
            } 
            @Override
            public void onException(ZDPortalException e) {
            //Exception
            }
            } : null);
         
      
      
   
Activity 」は、問い合わせの送信画面を表示させるためのインスタンスです。
問い合わせの送信画面を通じて問い合わせが送信されると、コールバックオブジェクト「 CreateTicketCallback 」によって、問い合わせに関する情報が送信されます。
メモ: 認証済みユーザーによって問い合わせが送信されると、問い合わせのすべての詳細情報がアプリに送信されます。ゲストユーザーによって問い合わせが送信されると、問い合わせ番号のみが送信されます。
自分の問い合わせ
エンドユーザーは、自分の問い合わせ画面から自身が送信した問い合わせにアクセスしたり、問い合わせを確認、編集したりすることができます。
以下のメソッドにより、自分の問い合わせ画面が表示されます。
      
         
            ZDPortalTickets.show(activity);
         
      
      
   
Activity 」は、自分の問い合わせ画面を表示させるためのインスタンスです。
ユーザーコミュニティ
エンドユーザーは、ユーザーコミュニティタブを通じて、フォーラム(掲示板)にアクセスしたり、他のユーザーとやりとりしたりすることができます。
以下のメソッドにより、ユーザーコミュニティが表示されます。
      
         
            ZDPortalCommunity.show(activity);
         
      
      
   
activity 」は、コミュニティタブを表示させるためのインスタンスです。

SDKでのユーザー認証

アプリのエンドユーザーが自身の送信した問い合わせにアクセスするには、IDが必要です。これにより、ユーザーはZoho Deskのポータルユーザーとして自身を認証することができます。Zoho Deskでは、この認証方式を取り入れるためにJSON Web Token(JWT)を利用しています。
Zoho Deskでは2種類の認証方法に対応しています。匿名とJWTです。
  • 匿名 - この方法では、エンドユーザーはゲストユーザーとみなされます。ゲストユーザーが行える操作は、問い合わせの送信、ユーザーコミュニティでの投稿内容の表示、サポート担当者とのチャット、に限定されます。自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることはできません。
  • JWT - この方法では、エンドユーザーは認証済みユーザーとみなされます。ゲストユーザーが行える操作に加えて、認証済みユーザーは、自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることもできます。コミュニティでは、トピックのフォロー、トピックの追加、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
ASAP SDKでのJWTによるユーザー認証の設定方法については、該当のタイトルをご参照ください。
以下のコードにより、SDKでユーザーを認証することができます。
      
         
            if(!MyApplication.deskInstance.isUserSignedIn()) {
            MyApplication.deskInstance.setUserToken(userToken, new ZDPortalCallback.SetUserCallback() {
            @Override
            public voidonUserSetSuccess() {
            //User set success
            }
            @Override
            public voidonException(ZDPortalException e) {
            //Exception
            }
            }); 
            }
         
      
      
   
上記のコード内の各パラメーターの説明は以下のとおりです:
  • userToken 」は、ユーザー(メールアドレスなど)を識別するための重複しない情報です。この情報は暗号化されています。
  • setUserToken 」は、ユーザーのトークンを入力する関数です。
  • callback 」は、「 ZDPortalCallback.SetUserCallback 」のインスタンスです。「 userFetch 」が実行された後に呼び出されます。
関数「 setUserToken 」は、ユーザーがSDKにサインインしていない場合にのみ実行される必要があります。そのため、ユーザーがサインインしているかどうかをはじめに確認するようにASAPアドオンを設定する必要があります。こちらを行うには、以下のコードを使用します。
      
         
            boolean isUserLoggedIn = MyApplication.deskInstance.isUserSignedIn();
         
      
      
   
ユーザーをSDKからログアウト
ユーザーをSDKからログアウトさせるには、以下のメソッドを使用します。
      
         
            MyApplication.deskPortalSDK.logout(new ZDPortalCallback.LogoutCallback() {
            @Override
            public void onLogoutSuccess() {
            //User logged out
            }
            @Override
            public void onException(ZDPortalException e) { 
            }
            });
         
      
      
   
このメソッドを呼び出した後、対象の認証済みユーザーは匿名ユーザーとして識別されます。

ローカルデータのクリア

認証済みユーザーがASAPアドオンからログアウトすると、デバイスに保存されているすべてのデータは自動的にクリアされます。
匿名ユーザーのローカルデータもクリアする必要がある場合は、以下のメソッドを使用します。
      
         
            MyApplication.deskInstance.clearDeskPortalData();
         
      
      
   

アドオンの操作画面のカスタマイズ

ASAP SDKには、必要に応じてアドオンの操作画面をカスタマイズできるオプションが用意されています。
標準のテーマ
SDKの操作画面には、ライトとダークの2種類の標準のテーマが用意されています。これらのテーマを適用するには、以下のメソッドを使用します。

ライトテーマを適用するメソッド(初期設定)
      
         
            ZDPortalConfiguration.setThemeResource(R.style.deskTheme_Light);
         
      
      
   
ダークテーマを適用するメソッド
      
         
            ZDPortalConfiguration.setThemeResource(R.style.deskTheme_Dark);
         
      
      
   
テーマのカスタマイズ
以下のコードを使用することで、全体的なSDKのテーマをカスタマイズすることができます。
      
         
            ZDPortalConfiguration.setThemeResource(R.style.deskTheme);
         
      
      
   
「ThemeResource」には、「 deskTheme_Light 」、「 deskTheme_Dark 」のいずれかを指定する必要があります。
以下の画像は、カスタマイズ可能なテーマの項目を表しています。

カスタムフォントの活用
アドオンの操作画面での標準のフォントはRobotoです。必要に応じて、別のフォントにカスタマイズすることもできます。
操作画面のフォントをカスタマイズするには、以下のコードを使用します。
      
         
            <style name="deskTheme" parent="deskTheme_Light">
            <!-- Customize your theme here.--><item name="colorPrimary">@color/colorPrimary </item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark </item>
            <item name="colorAccent">@color/colorAccent </item>
            <item name="android:fontFamily">@font/dosis_regular </item>
            </style>
         
      
      
   
メモ: カスタムフォントを使用しない場合、初期設定ではシステムのフォントが表示されます。

言語設定の変更

ASAP SDKは、12種類の言語に対応しています。アプリを利用するエンドユーザーの地域に応じた言語を選択することができます。
ASAPアドオンの言語を設定するには、以下のコードを使用します。
      
         
            ZDPortalConfiguration.setLanguage("en");
         
      
      
   
以下の表は、対応しているすべての言語の一覧です。
言語
ロケールコード
英語(UK)
en-GB
英語(US)
en-US
ドイツ語
de
スペイン語
es
カタロニア語
ca
フランス語
fr
フランス語(カナダ)
fr-ca
イタリア語
it
ロシア語
ru
中国語
zh
中国語(台湾)
zh-tw
トルコ語
tr
オランダ語
nl
デンマーク語
da
ポルトガル語
pt
日本語
ja
スウェーデン語
sv
ポーランド語
pl
アラビア語
ar
ヘブライ語
he
アフリカーンス語
af
チェコ語
cs
ブルガリア語
bg
フィンランド語
fi
ギリシャ語
el
ハンガリー語
hu
インドネシア語
id
ノルウェー語(ブークモール)
nb
ルーマニア語
ro
タイ語
th
ウクライナ語
uk
ベトナム語
vi
ウルドゥー語
ur
ヒンディー語
hi
テルグ語
te
カンナダ語
kn
タミル語
ta
マラーティー語
mr
韓国語
ko
ペルシャ語
fa
ベンガル語
bn
グジャラート語
gu
マレー語
ms
マラヤーラム語
ml
スロバキア語
sk
クロアチア語
hr
スロベニア語
sl

アプリが上記の表の全47言語に対応していない場合、アプリが対応する言語に応じてASAPアドオンの言語を設定することができます。

ASAPアドオンの言語を設定するには、build.gradleファイルに以下のコードを挿入します。
      
         
            android {
            defaultConfig {
            ...
            resConfigs "en", "ta", "fi"
            }
            }
         
      
      
   
たとえば、上記のコードには、アドオン内に英語、タミル語、フィンランド語のみ含め、その他の言語は除外します。
resConfigs キーについての詳細は、 こちら をクリックしてご参照ください。

操作画面上の文字列のカスタマイズ

ASAP SDKでは、アドオンのそれぞれの画面に表示されるテキストをカスタマイズすることができます。カスタマイズ可能なテキストには、ヘルプタブの操作画面のラベル、エラーメッセージ、一般情報などが含まれます。テキストを変更するには、以下の手順を実施します:
  1. アプリの「 strings.xml 」ファイル内に、SDKの操作画面に関連するキーを追加します。(対応しているキーの一覧については、以下の表をご参照ください。)
  2. コードをコンパイルして、検証します。
以下の表は、初期設定の「ASAPLocalizable.strings」ファイル内のそれぞれのキーの一覧です。
キー
初期設定のテキスト
説明
DeskPortal.Dashboard.Heading
「Customer Support」
ヘルプセンターのダッシュボードに表示されるテキストです
DeskPortal.Dashboard.helpcenter.title
「Knowledge Base」
ダッシュボード上に表示されるナレッジベースタブのアイコンのタイトルです
DeskPortal.Dashboard.helpcenter.description
「Browse our extensive repository of help articles」
ナレッジベースの説明文です
DeskPortal.Dashboard.community.title
「Community」
ダッシュボード上に表示されるユーザーコミュニティタブのアイコンのタイトルです
DeskPortal.Dashboard.community.description
「Find and share solutions with the user community」
ユーザーコミュニティの説明文です
DeskPortal.Dashboard.addticket.title
「Submit Ticket」
ダッシュボード上に表示される問い合わせの送信タブのアイコンのタイトルです
DeskPortal.Dashboard.addticket.description
「Seek help from our agents」
問い合わせの送信画面の説明文です
DeskPortal.Dashboard.myticket.title
「My Tickets」
ダッシュボード上に表示される自分の問い合わせのアイコンのタイトルです
DeskPortal.Dashboard.myticket.description
「View and manage tickets that you submitted」
自分の問い合わせ画面の説明文です
DeskPortal.Helpcenter.article.detail.relatedtitle
「Related Articles」
ナレッジベース内のヘルプ記事の下部に表示されるテキストです
DeskPortal.Helpcenter.article.detail.vote.description
「Was this article helpful?」
ユーザーのフィードバックを促すテキストです
DeskPortal.Helpcenter.feedback.title
「Feedback」
フィードバックフォームのタイトルです
DeskPortal.Helpcenter.feedback.description
「We're sorry the article wasn't helpful.」
ユーザーが記事に対して低い評価を行った際に表示されるテキストです
DeskPortal.Myticket.option.closeticket
「Close Ticket」
ユーザーが送信した問い合わせを自身で完了できるようにするためのオプションのテキストです
DeskPortal.Error.message.reload
「Retry」
問い合わせを送信できなかった際に表示されるエラーメッセージです
DeskPortal.Network.failed.error.message
「No Internet connection」
接続が切断された際に表示されるエラーメッセージです
DeskPortal.Dashboard.livechat.title
「Live Chat」
ヘルプセンターのダッシュボード上に表示されるチャットタブのタイトルです
DeskPortal.Addticket.title
「Add Ticket」
問い合わせの送信フォームのタイトルです

通知の有効化

担当者がチャットを通じて返信した際にエンドユーザーに通知が送信されるように、ASAPアドオンを設定することができます 。
メモ: プッシュ通知を設定する際は、Zoho DeskのASAPアドオンの設定画面にて行う必要があります。
チャット、問い合わせに関するプッシュ通知を有効にするには、SDKの初期設定の後に以下のコードを追加します。
      
         
            MyApplication.deskInstance.enablePush("fcmId");
         
      
      
   
「fcmId」は、デバイスの登録に使用されるクライアントトークンです。メソッド「 FirebaseInstanceId.getInstance().getToken(); 」を使用すると、このトークンを取得できます。
プッシュ通知を無効にするには、以下のコードを追加します。
      
         
            MyApplication.deskInstance.disablePush("fcmId");
         
      
      
   
通知の操作画面を設定するには、クラス「 NotificationReceiver 」のメソッド「 onReceived() 」に以下のコードを追加します。
      
         
            ZDPortalConfiguration.handleNotification(Context context, Map data, int icon);
         
      
      
   
context 」は、「appContext」です。「 Map 」は、取得した通知データを表します。「 icon 」は、通知に表示されるアプリケーションのアイコンです。

プログラムによる問い合わせの追加

ASAPアドオンを通じて、エンドユーザーに対して手動での問い合わせの送信を許可できますが、アプリ内で特定のイベントが発生した際に自動的に問い合わせを記録するようにアプリを設定することもできます。たとえば、衣料品ビジネスを経営しており、ユーザーがアプリにアクセスした際に「 レディース 」画面を読み込めなかった場合、この読み込みに失敗したデータが自動的に問い合わせとしてヘルプデスクに記録されるようにすることができます。ユーザーは、ヘルプセンターにアクセスして手動で問い合わせを送信する必要がありません。
この問い合わせの自動送信を有効にするには、以下のメソッドをアプリのコードに追加します。
      
         
            ZDPortalTicketsAPI.createTicket(new CreateTicketCallback() {
               @Override
               public void onTicketCreated(Ticket ticket) {
               }
               @Override
               public void onException(ZDPortalException exception) {
               }
            }, ticketData, params);
         
      
      
   
ticketData - インスタンス「 HashMap<String, Object> 」のキー値「 EmailAddress 」、「 Subject 」「 DepartmentID 」は、「 ticketData 」の必須パラメーターです。
ポータルにて部門のIDを取得するには、以下のメソッドを追加します。
      
         
            ZDPortalAPI.getDepartments(new ZDPortalCallback.DepartmensCallback() {
               @Override
               public void onDepartmentsDownloaded(DepartmentsList response) {
               }
               @Override
               public void onException(ZDPortalException exception) {
               }
            });
         
      
      
   
部門で設定した商品に関する情報を取得するには、以下のメソッドを追加します。
      
         
            HashMap<String, String> options = new HashMap<>();
            options.put("from", String.valueOf(1)); 
            options.put("limit", String.valueOf(100)); 
            options.put("departmentId", departmentId); 
            ZDPortalAPI.getProductsList(new ZDPortalCallback.ProductsCallback() {
               @Override
               public void onProductsDownloaded(ProductsList productsList) {
                 productsMap.put(departmentId, productsList.getData()); 
                 responseLiveData.setValue(productsList.getData());
               }
               @Override
               public void onException(ZDPortalException exception) {
               }
            }, options);
         
      
      
   
部門の問い合わせのレイアウトで項目に関する情報を取得するには、以下のメソッドを追加します。
      
         
            ZDPortalTicketsAPI.getTicketFields(new TicketFieldsCallback() {
               @Override
               public void onTicketFieldsDownloaded(TicketFieldsList ticketFieldsList) {
               }
               @Override public void onException(ZDPortalException exception) {
               }
            }, fieldsParams, "apiName");
         
      
      
   
問い合わせに添付されたファイルを含めるには、以下のメソッドを追加します。
      
         
            ZDPortalTicketsAPI.uploadAttachment(new UploadAttachmentCallback() {
               @Override
               public void onAttachmentUploaded(ASAPAttachmentUploadResponse response) {
               }
               @Override
               public void onException(ZDPortalException exception) {
               }
            }, fileTobeUploaded, null);
         
      
      
   

ナレッジベース

これらのメソッドを使用すると、ナレッジベースタブや関連するコンテンツをASAPアドオンに表示することができます。
カテゴリーのディープリンク
以下のメソッドを使用すると、各カテゴリー内にナレッジベース、ヘルプ記事のカテゴリーやサブカテゴリーの一覧を表示することができます。
      
         
            ZDPortalKB.showCategoryWithPermalink(activity, permaLink);
         
      
      
   
  1. activity 」は、活動のインスタンスです。
  2. permalink 」は、対象のナレッジベースのカテゴリーのURLです。

たとえば、上記の画像のURLでは、「/kb/」に続く部分は対象のカテゴリーのパーマリンクです。カテゴリー、またはサブカテゴリーのパスとして、この部分を指定することができます。
記事のディープリンク
以下のメソッドを使用すると、ASAPアドオン内に直接ヘルプ記事の内容を表示することができます。
      
         
            ZDPortalKB.showArticleWithPermalink(activity, permalink);
         
      
      
   
  1. activity 」は、活動のインスタンスです。
  2. permalink 」は、ヘルプ記事のURLです。

たとえば、上記の画像のURLでは、「/articles/」に続く部分は対象の記事のパーマリンクです。

コミュニティ

これらのメソッドを使用すると、コミュニティタブや関連するコンテンツをASAPアドオンに表示することができます。
コミュニティ操作のカスタマイズ設定
ユーザーはコミュニティタブでさまざまな操作を行うことができます。操作には、トピックの編集/削除、コメントの追加/編集/削除が含まれます。
以下のメソッドでは、ユーザーがASAPアドオンを通じてコミュニティにアクセスした際に許可する操作や許可しない操作を定義できます。
      
         
            ZDPCommunityConfiguration communityConfiguration = new ZDPCommunityConfiguration(); 
            communityConfiguration.setTopicEditAllowed(false); 
            communityConfiguration.setTopicDeleteAllowed(false); 
            communityConfiguration.setReplyAllowed(true); 
            communityConfiguration.setReplyEditAllowed(true); 
            communityConfiguration.setReplyDeleteAllowed(false); 
            ZDPortalCommunity.setConfiguration(communityConfiguration);
         
      
      
   
最も人気のあるトピックの取得
以下のAPIを使用すると、最も評価の高いフォーラムのトピックを取得することができます。
      
         
            HashMap<String, String> params = new HashMap<>(); 
            params.put("from", "1"); 
            params.put("limit", "5"); 
            ZDPortalCommunityAPI.getMostPopularTopics(new ZDPortalCallback.CommunityTopicsCallback() {
                  @Override
                  public void onCommunityTopicsDownloaded(DeskTopicsList deskTopicsList) {
                  }
                 @Override
                  public void onException(ZDPortalException e) {
                  }
            }, params);
         
      
      
   
使用可能なパラメーター
  1. categoryId - string - トピックを取得するコミュニティのカテゴリーのIDです。すべてのカテゴリーを追加する場合、値に「null」を指定します。
  2. filterType - string - フォーラムのトピックの種類です。指定可能な値は次のとおりです: QUESTION IDEA ANNOUNCEMENT PROBLEM DISCUSSION
  3. from - int -  インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  4. limit - int - 取得するトピックの件数です。
  5. includeCount - Boolean - 取得したトピックの件数を表示するかどうかを指定するパラメーターです。
最も議論されたトピックの取得
以下のAPIを使用すると、最もコメントが多かったフォーラムのトピックを取得することができます。
      
         
            HashMap<String, String> params = new HashMap<>(); 
            params.put("from", "1"); 
            params.put("limit", "5"); 
            ZDPortalCommunityAPI.getMostDiscussedTopics(new ZDPortalCallback.CommunityTopicsCallback() {
               @Override
               public void onCommunityTopicsDownloaded(DeskTopicsList deskTopicsList) {
               }
               @Override
               public void onException(ZDPortalException e) {
               }
            }, params);
         
      
      
   
使用可能なパラメーター
  1. categoryId - string - トピックを取得するコミュニティのカテゴリーのIDです。すべてのカテゴリーを追加する場合、値に「null」を指定します。
  2. filterType - string - フォーラムのトピックの種類です。指定可能な値は次のとおりです: QUESTION IDEA ANNOUNCEMENT PROBLEM DISCUSSION
  3. from - int -  インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  4. limit - int - 取得するトピックの件数です。
  5. includeCount - Boolean - 取得したトピックの件数を表示するかどうかを指定するパラメーターです。

問い合わせ

これらのメソッドを利用すると、ASAPアドオンの問い合わせ送信フォームを要件に合わせて設定することができます。
問い合わせの送信フォームの項目を非表示にする
ASAPアドオンの問い合わせの送信フォームには、Zoho Deskのポータルの問い合わせのレイアウトで設定した項目が表示されます。フォーム内の任意の項目を非表示にするには、「 setTicketsFieldsListTobeShown() 」メソッドを使用します。
項目の一覧(apiNames)を文字列としてこのメソッドで指定する必要があります。また、アドオンに関連付けられている部門に応じて、 departmentId キーを指定する必要があります。たとえば、特定の単一の部門にてアドオンが設定されている場合、 departmentId キーを指定する必要はありません。複数の部門にてアドオンが設定されている場合、 departmentId キーを指定して、問い合わせの送信フォームで部門と問い合わせの項目を関連付ける必要があります。
このメソッドを追加した後、フォームにはこのメソッドで指定した項目のみが表示されます。ただし、必須項目に関しては、項目名をメソッド内に指定しない場合でも表示されますのでご注意ください。
      
         
            ZDPortalSubmitTicket.setTicketsFieldsListTobeShown(ticketListTobeShown, deptId);
         
      
      
   
  1. ticketListTobeShown - 文字列の一覧です(問い合わせ項目のapiNameです)
  2. deptId - 問い合わせ項目の一覧を設定する部門のIDです。
問い合わせの送信フォームの必須項目を非表示にする
フォームの必須項目を非表示にする必要がある場合は、必須項目を事前入力にすることで、非表示にすることができます。事前入力にするには、「 preFillTicketFields() 」メソッドを使用します。
「preFillTicketFields()」メソッドは、自動作成されたIDやデバイスのOSのバージョンといった値を項目に事前入力させたい場合に役立ちます。このメソッドを使用するには、「PreFillTicketField」オブジェクトの一覧を指定する必要があります。また、アドオンに関連付けられている部門に応じて、「 departmentId 」キーを指定する必要があります。「setTicketsFieldsListTobeShown()」メソッドと同様に、特定の単一の部門にてアドオンが設定されている場合、「 departmentId 」キーを指定する必要はありません。複数の部門にてアドオンが設定されている場合、「 departmentId 」キーを指定して、部門と項目を関連付ける必要があります。
      
         
            ZDPortalSubmitTicket.preFillTicketFields(preFillTicketFields, deptId);
         
      
      
   
  1. preFillTicketFields - 「 PreFillTicketField 」オブジェクトの一覧です
  2. deptId - 問い合わせ項目の一覧を設定する部門のIDです。
PreFillTicketField 」オブジェクトには、主に3種類のプロパティが含まれています:
  1. fieldApiName - string - 問い合わせ項目の「apiName」です。それぞれの項目の「apiName」を取得するには、「 getTicketFields() 」メソッドを使用します。
  2. fieldValue - object
    1. 複数選択項目の場合、選択可能な文字列の値を指定します。
    2. 選択リスト項目の場合、選択可能な文字列の値のいずれかを指定します。
    3. 日付項目の場合、文字列の値を「 dd-MM-yyyy 」形式で指定します。
    4. 日時項目の場合、文字列の値を「 dd-MM-yyyy HH:mm a 」形式で指定します。
    5. 真偽値の項目の場合、真偽値を指定します。
    6. 他の項目の場合、文字列の値を指定します。
    7. こちらで指定した値が、項目で設定されている文字数や小数点の上限内になるようにしてください。
  3. isEditable - Boolean - 対象の項目が編集可能かどうかを指定するキーです。
メモ: コードの詳細については、 こちら をご参照ください。
問い合わせの操作のカスタマイズ設定
ユーザーは問い合わせに対して、返信、コメント、完了など、さまざまな操作を行うことができます。
以下のメソッドでは、ユーザーがASAPアドオンの問い合わせの送信画面を通じてコミュニティにアクセスした際に許可する操作や許可しない操作を定義できます。
      
         
            ZDPTicketConfiguration ticketConfiguration = new ZDPTicketConfiguration(); 
            ticketConfiguration.setReplyAllowed(false); 
            ticketConfiguration.setCommentAllowed(true); 
            ticketConfiguration.setTicketUpdateAllowed(true); 
            ticketConfiguration.setCommentEditAllowed(false); 
            ticketConfiguration.setCommentDeleteAllowed(false); 
            ZDPortalTickets.setConfiguration(ticketConfiguration);
         
      
      
   

その他

以下のメソッドを使用すると、ASAPアドオンにてさまざまな他の操作を行うことができます。
ユーザーの詳細データの更新
以下のAPIを使用すると、ポータルに追加されたユーザーの詳細データを更新することができます。
      
         
            HashMap<String, String> params = new HashMap<>(); 
            params.put("timeZone", "asia/kolkatta"); 
            ZDPortalAPI.updateProfileDetails(new ZDPortalCallback.UserDetailsCallback() {
               @Override
               public void onUserDetailsSuccess(DeskUserProfile userProfile) {
               }
               @Override
               public void onException(ZDPortalException exception) {
               }
            }, params);
         
      
      
   
パラメーター
HashMap <String, String> - キーと値のペアです。キーには次の値が含まれます: twitter phone facebook name displayName mobile countryLocale timeZone

SDKのログ

ASAP SDKには、アドオンの利用中に発生したエラーを解決するオプションも用意されています。解決するには、SDKのログを活用します。
SDKのログを有効にするには、以下のコードを追加します。
      
         
            ZohoDeskPortalSDK.Logger.enableLogs();
         
      
      
   
SDKのログを有効にした後、エラーについてコンソールログを確認し、必要に応じた処理を行うことができます。
メモ: SDKに関するデバッグの情報は、「logcat」に保存されます。そのため、リリースビルド内に「 enableLogs() 」が存在しないようにしてください。

リリースノート

バージョン2.0.2
  1. Webアプリのヘルプセンター内の検索設定が可能になりました。
  2. コミュニティのフォーラムのトピックに対してソーシャルメディアへの共有機能を利用できるようになりました。

バージョン2.0.1
  1. [コミュニティ]タブ内のフォーラムのトピックに対して直接リンクできるようになりました。

バージョン2.0
  • 複数言語のナレッジベースの設定に対応しました。
  • 問い合わせの追加タブにて、条件付きレイアウトと問い合わせテンプレートが利用できるようになりました。
  • 利用可能なすべてのAPIを含む別のフレームワークとして、APIプロバイダーを追加しました。操作画面をカスタマイズして、APIを組み込めるようになりました。

SDKバージョン1.0

はじめに

Android向けのASAP SDK(ソフトウェア開発キット)を活用すると、Androidアプリのエンドユーザーが手軽に利用できるヘルプ機能を提供することができます。SDKを使用することで、アプリ内のアドオンを作成したり、カスタマイズしたりできます。また、エンドユーザーが以下の機能に簡単にアクセスできるようになります:
  • カスタマーサポートチームへの問い合わせ(問い合わせの送信、サポート担当者とのチャット)
  • ナレッジベース(ヘルプ記事へのアクセス)
  • ユーザーコミュニティ(アプリを通じた他の顧客とやりとり)
この機能を活用すれば、エンドユーザーはアプリを終了してWebサイトにアクセスし直したり、サポートを受けるためにメールを送信したりする必要はありません。アプリ内でヘルプを検索でき、時間を節約できます。

Zoho DeskでのSDKの設定

利用中のAndroidアプリにASAPアドオンを追加する最初の手順として、Zoho Deskにアドオンを作成し、登録します。
以下の手順で、アドオンを作成できます:
  1. Zoho Deskで、 [設定] > [チャネル] > [ASAP]の順に移動します。
  2. 左側の 設定 メニューの ASAP にて、 モバイル の隣にある [+] ボタンをクリックします。 モバイルアドオンの作成 画面が表示されます。 


  3. [アドオンの詳細] で、以下の内容を設定します:
    • 名前: ASAPアドオンの名前です。この名前は参照用です。アプリの操作画面上には表示されません。
    • 有効: ASAPアドオンを有効にする部門を選択します。
    • バンドルID: Android の項目に、AndroidアプリのバンドルIDを入力します。(バンドルIDは、Androidアプリの「applicationId」です。アプリ内の「build.gradle」ファイルからこのデータを取得できます。)
      メモ: チャット機能を有効にしたり、プッシュ通知を送信したりするには、バンドルIDが必須です。
    • チャット: 切り替えボタンを操作することで、チャット機能を有効または無効にできます。
      メモ: チャットの項目には、ポータルのチャットチャネルにて設定された内容が反映されます。そのため、設定を変更するには、Zoho Deskの設定画面で行う必要があります。
    • プッシュ通知: 切り替えボタンを操作することで、プッシュ通知を有効または無効にできます。プッシュ通知を有効にするには、「 Enter GCM/FCM 」キーの項目にGCM/FCMサーバーキーを入力します。(このキーを取得するには、Firebaseコンソールで次の順に移動します: プロジェクトの設定 > クラウドメッセージング > サーバーキー
      メモ: 通知を有効にするには、JWT方式でのユーザー認証が必須となります。匿名ユーザーに対して、問い合わせに関するプッシュ通知を送信することはできません。
    • 認証方法: このアドオンにおけるユーザーの認証方法を設定します。
      • 匿名 - この方法では、エンドユーザーはゲストユーザーとみなされます。ゲストユーザーが行える操作は、問い合わせの送信、ユーザーコミュニティでの投稿内容の表示、サポート担当者とのチャット、に限定されます。自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることはできません。
      • JWT - この方法では、エンドユーザーは認証済みユーザーとみなされます。ゲストユーザーが行える操作に加えて、認証済みユーザーは、自分が送信した問い合わせのステータスを表示したり、問い合わせに返信やコメントしたり、ユーザーコミュニティに参加したりすることもできます。コミュニティでは、トピックのフォロー、トピックの追加、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。 
  4. [保存] をクリックします。
コード のセクションが新しく表示されます。このセクションには組織のID、アプリID、配置の種類(データセンター)といったアプリの詳細が表示されます。これらの詳細データは、アプリでASAP SDKの初期設定を行う際に必要です。 

SDKとアプリとの連携

次の手順では、Mavenを使用してASAP SDKとAndroidアプリを連携します。
SDKとアプリを連携するには、以下のコードをルートフォルダーの「build.gradle」ファイルに追加します。
      
         
            repositories {
               jcenter()
               maven { url '
            
               https://maven.google.com/
            
            ' }
               maven { url '
            
               http://maven.zohodl.com/
            
            ' }
            }
         
      
      
   
メモ: ASAP SDKは、Android アーキテクチャ コンポーネントを使用して開発が行われました。そのため、アプリのコード内に「 maven.google.com 」を追加する必要があります。
次に、SDKに必要な依存関係を追加します。
アプリ内の「build.gradle」ファイルの依存関係のセクションに、以下のコードを追加します。
      
         
            dependencies {
               compile 'com.zoho.desk:asapsdk:1.2.7' 
            }
         
      
      
   
以上で、SDKとアプリとの連携が完了しました。
ASAP SDKの設定に関する詳細データは、以下のとおりです:
  • compileSdkVersion - 30 
  • supportLibVersion - 26.1.0
  • minSdkVersion - 16
  • targetSdkVersion - 30 
ProGuardの設定
ProGuardやMinifyが有効になっている場合、「 proguard-rules 」のセットに以下のルールを追加する必要があります。
      
         
            
               -keep 
            
            class com.zoho.**{*;} 
            
               -keep 
            
            interface android.support.v7.**{ *; } 
            
               -keep
            
            class android.support.v7.**{ *; } 
            
               -keep
            
            interface android.support.v4.**{ *; } 
            
               -keep
            
            class android.support.v4.**{ *; } 
            
               -keepattributes
            
            Signature 
            
               -keepattributes 
            
            Annotation 
            
               -keep
            
            class okhttp3.*{ *; } 
            
               -keep
            
            interface okhttp3.*{ *; } 
            
               -dontwarn
            
            okhttp3.**
            
               -dontwarn 
            
            okio.**
            
               -dontwarn
            
            com.zoho.accounts.**
            
               -dontwarn
            
            com.squareup.okhttp.**
            
               -dontwarn
            
            okio.**
            
               -dontwarn
            
            retrofit2.**
         
      
      
   

アプリ内のSDKの初期設定

次に、アプリ内のSDKの初期設定を行います。
この手順では、以下の3つのキーが必須です。
  • 組織ID(Org ID)
  • アプリID(App ID)
  • データセンター(Datacenter)
これらのキーの値は、Zoho DeskのASAPアドオンの設定画面にある コード セクションに表示されます。
アプリのSDKの初期設定を行うには、以下のコードをアプリケーションのクラスのサブクラスに追加します。
      
         
            import android.app.Application; 
            import com.zoho.deskportalsdk.DeskConfig; 
            import com.zoho.deskportalsdk.ZohoDeskPortalSDK; 
            public class MyApplication extends Application {
            public static ZohoDeskPortalSDK deskInstance;
            @Override
            public void onCreate() {
            super.onCreate();
            ZohoDeskPortalSDK.Logger.enableLogs(); 
            DeskConfig config = new DeskConfig.Builder().build();
            deskInstance = ZohoDeskPortalSDK.getInstance(this);
            deskInstance.initDesk(orgId, appId, dataCenterValue, config);
            } 
            }
         
      
      
   
配置の種類の応じたデータセンターの値は、以下のとおりです:
CN - DataCenter.CN
EU - DataCenter.EU
US - DataCenter.US
IN - DataCenter.IN

ヘルプ項目の表示

このセクションでは、アドオンの操作画面にて各ヘルプ項目を表示する方法を説明します。これにより、初期設定、またはZoho Deskのポータルで行われた設定に基づいた各項目を表示することができます。初期設定の項目は、利用中のZoho Deskのプランによって異なります。
SDKダッシュボード
エンドユーザーは、SDKダッシュボードの画面を通じてヘルプセンターにアクセスすることができます。このダッシュボードにはボタンやアイコンが表示されます。このボタンやアイコンから、ナレッジベース、ユーザーコミュニティ、問い合わせ送信フォーム、問い合わせリスト(ログインしたユーザーから送信された問い合わせの一覧)、チャット(リアルタイムでカスタマーサポート担当者とやりとり)にアクセスすることができます。
メモ: 初期設定では、SDKの操作画面にてチャット機能は無効になっています。利用するには、はじめにZoho Deskのポータルでチャット機能を有効にする必要があります。
以下のメソッドにより、SDKダッシュボードが表示されます。
      
         
            MyApplication.deskInstance.startDeskHomeScreen(activity.this);
         
      
      
   
Activity 」は、SDKダッシュボードを表示させるためのインスタンスです。

設定を上書きしたSDKダッシュボード
以下のメソッドにより、設定を上書きしたSDKダッシュボードが表示されます。
      
         
            DeskConfig deskConfig = new DeskConfig.Builder().showCommunity(false).build(); 
            MyApplication.deskInstance.startDeskHomeScreen(activity.this, deskConfig);
         
      
      
   
Activity 」は、SDKダッシュボードを表示させるためのインスタンスです。
このコードは、コミュニティの項目が表示されないように設定されているダッシュボードの例です。
アプリ内にSDKダッシュボードを表示せずに、それぞれのヘルプ項目にアクセスできるようにするオプションも用意されています。以下では、初期設定の各項目を表示する方法を説明します。
チャット
エンドユーザーは、チャットを通じてリアルタイムでカスタマーサポート担当者とやりとりを行うことができます。
以下のメソッドにより、チャットの項目が表示されます。
      
         
            MyApplication.deskInstance.startLiveChat();
         
      
      
   
ヘルプセンター(ナレッジベース)
エンドユーザーは、ヘルプセンターの項目からナレッジベース内のヘルプ記事にアクセスすることができます。
以下のメソッドにより、ヘルプセンター(ナレッジベース)が表示されます。
      
         
            MyApplication.deskInstance.startHelpCenter(activity.this);
         
      
      
   
activity 」は、ナレッジベースを表示させるためのインスタンスです。
問い合わせの送信
エンドユーザーは、問い合わせの送信画面から質問や要望を問い合わせとして送信することができます。
以下のメソッドにより、問い合わせの送信画面が表示されます。
      
         
            MyApplication.deskInstance.startNewTicket(activity.this);
         
      
      
   
Activity 」は、問い合わせの送信画面を表示させるためのインスタンスです。
アプリに対して問い合わせの送信に関するイベントを記録させる場合 、以下のメソッドを使用します。このメソッドには、イベントのコールバック処理が含まれています。
      
         
            MyApplication.deskInstance.startNewTicket(activity.this, new DeskCallback.DeskAddTicketCallback() {
            @Override
            public void onTicketAdded(DeskTicketResponse deskTicketResponse) {
            Toast.makeText(MainActivity.this, "onTicketAdded", Toast.LENGTH_SHORT).show(); 
            }
            @Override
            public void onException(DeskException e) {
            Toast.makeText(MainActivity.this, "onException", Toast.LENGTH_SHORT).show();
            } 
            });
         
      
      
   
Activity 」は、問い合わせの送信画面を表示させるためのインスタンスです。
問い合わせの送信画面を通じて問い合わせが送信されると、コールバックオブジェクト「 DeskAddTicketCallback 」によって、問い合わせに関する情報が送信されます。
メモ: 認証済みユーザーによって問い合わせが送信されると、問い合わせのすべての詳細情報がアプリに送信されます。ゲストユーザーによって問い合わせが送信されると、問い合わせ番号のみが送信されます。
自分の問い合わせ
エンドユーザーは、自分の問い合わせ画面から自身が送信した問い合わせにアクセスしたり、問い合わせを確認、編集したりすることができます。
以下のメソッドにより、自分の問い合わせ画面が表示されます。
      
         
            MyApplication.deskInstance.startTickets(activity.this);
         
      
      
   
Activity 」は、自分の問い合わせ画面を表示させるためのインスタンスです。
ユーザーコミュニティ
エンドユーザーは、ユーザーコミュニティの項目通じて、ディスカッションフォーラムにアクセスしたり、共有した情報について他のユーザーとやりとりしたりすることができます。
以下のメソッドにより、ユーザーコミュニティが表示されます。
      
         
            MyApplication.deskInstance.startCommunity(activity.this);
         
      
      
   
activity - 以下のメソッドにより、ユーザーコミュニティが表示されます。

SDKでのユーザー認証

アプリのエンドユーザーが自身の送信した問い合わせにアクセスするには、IDが必要です。これにより、ユーザーはZoho Deskのポータルユーザーとして自身を認証することができます。Zoho Deskでは、この認証方式を取り入れるためにJSON Web Token(JWT)を利用しています。
Zoho Deskでは2種類の認証方法に対応しています。匿名とJWTです。
  • 匿名 - この方法では、エンドユーザーはゲストユーザーとみなされます。ゲストユーザーが行える操作は、問い合わせの送信、ユーザーコミュニティでの投稿内容の表示、サポート担当者とのチャット、に限定されます。自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることはできません。
  • JWT - この方法では、エンドユーザーは認証済みユーザーとみなされます。ゲストユーザーが行える操作に加えて、認証済みユーザーは、自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることもできます。コミュニティでは、トピックのフォロー、トピックの追加、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
ASAP SDKでのJWTによるユーザー認証の設定方法については、 こちらのドキュメント をご参照ください。 
以下のコードにより、SDKでユーザーを認証することができます。
      
         
            if(!isUserLoggedIn) {
            MyApplication.deskInstance.setUserToken("userToken", new DeskCallback.DeskSetUserCallback() {
            @Override
            public void onUserSetSuccess() {
            }
            @Override
            public void onException(DeskException exception) {
            }
            });
            } else{
            //User already signed into SDK 
            }
         
      
      
   
上記のコード内の各パラメーターの説明は以下のとおりです:
  • userToken 」は、ユーザー(メールアドレスなど)を識別するための重複しない情報です。この情報は暗号化されています。
  • setUserToken 」は、ユーザーのトークンを入力する関数です。 
  • callback 」は、「 DeskCallback.DeskSetUserCallback 」のインスタンスです。「 userFetch 」が実行された後に呼び出されます。
関数「 setUserToken 」は、ユーザーがSDKにサインインしていない場合にのみ実行される必要があります。そのため、ユーザーがサインインしているかどうかをはじめに確認するようにASAPアドオンを設定する必要があります。こちらを行うには、以下のコードを使用します。 
      
         
            boolean isUserLoggedIn = MyApplication.deskInstance.isUserSignedIn();
         
      
      
   
「true」の値が返される場合、すでにユーザーがSDKにサインインしていることを表します。そのため、関数「 setUserToken 」を実行する必要はありません。 
ユーザーをSDKからログアウト
ユーザーをSDKからログアウトさせるには、以下のメソッドを使用します。
      
         
            MyApplication.deskInstance.removeUser(new DeskCallback.DeskRemoveUserCallback() {
            @Override
            public void onUserRemoveSuccess() {
            //user removed from SDK.
            }
            @Override
            public void onException(DeskException exception) {
            }
            });
         
      
      
   
このメソッドを呼び出した後、対象の認証済みユーザーは匿名ユーザーとして識別されます。

ローカルデータのクリア

認証済みユーザーがASAPアドオンからログアウトすると、デバイスに保存されているすべてのデータは自動的にクリアされます。
匿名ユーザーのローカルデータもクリアする必要がある場合は、以下のメソッドを使用します。
      
         
            MyApplication.deskInstance.clearDeskPortalData();
         
      
      
   

ヘルプ項目の非表示

初期設定では、ASAP SDKにすべてのヘルプ項目を表示することができます。表示できる項目は、利用中のZoho DeskのプランやZoho Deskのポータルでの設定に基づきます。また、必要に応じて、アプリ内の各ヘルプ項目を非表示にすることもできます。
アドオンの各ヘルプ項目を無効にするには、以下のメソッドを使用します。
ヘルプセンター(ナレッジベース)を非表示にするメソッド
      
         
            DeskConfig config = new DeskConfig.Builder().showHelpCenter(false).build();
         
      
      
   
問い合わせの送信画面を非表示にするメソッド
      
         
            DeskConfig config = new DeskConfig.Builder().showCreateTicket(false).build();
         
      
      
   
自分の問い合わせ画面を非表示にするメソッド
      
         
            DeskConfig config = new DeskConfig.Builder().showMyTickets(false).build();
         
      
      
   
ユーザーコミュニティを非表示にするメソッド
      
         
            DeskConfig config = new DeskConfig.Builder().showCommunity(false).build();
         
      
      
   
ナビゲーションメニューを非表示にするメソッド
      
         
            DeskConfig config = new DeskConfig.Builder().showNavDrawer(false).build();
         
      
      
   
メモ: 関数「 deskInstance.initDesk 」に設定したオブジェクトを送信する必要があります。詳細については、このドキュメントの「 アプリ内のSDKの初期設定 」セクションをご参照ください。 

アドオンの操作画面のカスタマイズ

ASAP SDKには、必要に応じてアドオンの操作画面をカスタマイズできるオプションが用意されています。
標準のテーマ
SDKの操作画面には、ライトとダークの2種類の標準のテーマが用意されています。これらのテーマを適用するには、以下のメソッドを使用します。

ライトテーマ(標準)を適用するメソッド
      
         
            deskInstance.setThemeResource(R.style.deskTheme_Light);
         
      
      
   
ダークテーマを適用するメソッド
      
         
            deskInstance.setThemeResource(R.style.deskTheme_Dark);
         
      
      
   
テーマのカスタマイズ
以下のコードを使用することで、全体的なSDKのテーマをカスタマイズすることができます。
      
         
            MyApplication.deskInstance.setThemeResource(R.style.deskTheme);
         
      
      
   
「ThemeResource」には、「 deskTheme_Light 」、「 deskTheme_Dark 」のいずれかを指定する必要があります。
以下の画像は、カスタマイズ可能なテーマの項目を表しています。

カスタムフォントの活用
アドオンの操作画面での標準のフォントはRobotoです。必要に応じて、別のフォントにカスタマイズすることもできます。
操作画面のフォントをカスタマイズするには、以下のコードを使用します。
      
         
            <style name="deskTheme" parent="deskTheme_Light">
            <!-- Customize your theme here.-->
            <item name="colorPrimary">@color/colorPrimary </item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark </item>
            <item name="colorAccent">@color/colorAccent </item>
            <item name="android:fontFamily">@font/dosis_regular </item>
            </style>
         
      
      
   

メモ: カスタムフォントを使用しない場合、初期設定ではシステムのフォントが表示されます。

言語設定の変更

ASAP SDKは、12種類の言語に対応しています。アプリを利用するエンドユーザーの地域に応じた言語を選択することができます。
ASAPアドオンの言語を設定するには、以下のコードを使用します。
      
         
            DeskConfig config = new DeskConfig.Builder().setLanguage("de").build();
         
      
      
   
以下の表は、対応しているすべての言語の一覧です。
言語
ロケールコード
英語
en
ドイツ語
de
スペイン語
es
フランス語
fr
イタリア語
it
ロシア語
ru
中国語
zh
トルコ語
tr
オランダ語
nl
デンマーク語
da
ポルトガル語
pt
日本語
ja

操作画面上のテキストのカスタマイズ

ASAP SDKでは、アドオンのそれぞれの画面に表示されるテキストをカスタマイズすることができます。カスタマイズ可能なテキストには、ヘルプ項目の操作画面のラベル、エラーメッセージ、一般情報などが含まれます。テキストを変更するには、以下の手順を実施します:
  1. アプリの「 strings.xml 」ファイル内に、SDKの操作画面に関連するキーを追加します。(対応しているキーの一覧については、以下の表をご参照ください。)
  2. コードをコンパイルして、検証します。
キー
初期設定のテキスト
説明
DeskPortal.Dashboard.Heading
「Customer Support」
ヘルプセンターのダッシュボードに表示されるテキストです
DeskPortal.Dashboard.helpcenter.title
「Knowledge Base」
ダッシュボード上に表示されるナレッジベースタブのアイコンのタイトルです
DeskPortal.Dashboard.helpcenter.description
「Browse our extensive repository of help articles」
ナレッジベースの説明文です
DeskPortal.Dashboard.community.title
「Community」
ダッシュボード上に表示されるユーザーコミュニティタブのアイコンのタイトルです
DeskPortal.Dashboard.community.description
「Find and share solutions with the user community」
ユーザーコミュニティの説明文です
DeskPortal.Dashboard.addticket.title
「Submit Ticket」
ダッシュボード上に表示される問い合わせの送信タブのアイコンのタイトルです
DeskPortal.Dashboard.addticket.description
「Seek help from our agents」
問い合わせの送信画面の説明文です
DeskPortal.Dashboard.myticket.title
「My Tickets」
ダッシュボード上に表示される自分の問い合わせのアイコンのタイトルです
DeskPortal.Dashboard.myticket.description
「View and manage tickets that you submitted」
自分の問い合わせ画面の説明文です
DeskPortal.Helpcenter.article.detail.relatedtitle
「Related Articles」
ナレッジベース内のヘルプ記事の下部に表示されるテキストです
DeskPortal.Helpcenter.article.detail.vote.description
「Was this article helpful?」
ユーザーのフィードバックを促すテキストです
DeskPortal.Helpcenter.feedback.title
「Feedback」
フィードバックフォームのタイトルです
DeskPortal.Helpcenter.feedback.description
「We're sorry the article wasn't helpful.」
ユーザーが記事に対して低い評価を行った際に表示されるテキストです
DeskPortal.Myticket.option.closeticket
「Close」
ユーザーが送信した問い合わせを自身で完了できるようにするためのオプションのテキストです
DeskPortal.Error.message.reload
「Retry」
問い合わせを送信できなかった際に表示されるエラーメッセージです
DeskPortal.Error.message.noInternet
「No Internet connection」
接続が切断された際に表示されるエラーメッセージです
DeskPortal.Dashboard.livechat.title
「Live Chat」
ヘルプセンターのダッシュボード上に表示されるチャットタブのタイトルです
DeskPortal.Addticket.title
「Add Ticket」
問い合わせの送信フォームのタイトルです

通知の有効化

担当者がチャットを通じて返信した際にエンドユーザーに通知が送信されるように、ASAPアドオンを設定することができます。
メモ: プッシュ通知を設定する際は、Zoho DeskのASAPアドオンの設定画面にて行う必要があります。
チャットに関するプッシュ通知を有効にするには、SDKの初期設定の後に以下のコードを追加します。
      
         
            MyApplication.deskInstance.enablePush("fcmId");
         
      
      
   
fcmId 」は、デバイスの登録に使用されるクライアントトークンです。メソッド「 FirebaseInstanceId.getInstance().getToken(); 」を使用すると、このトークンを取得できます。 
プッシュ通知を無効にするには、以下のコードを追加します。
      
         
            MyApplication.deskInstance.disablePush("fcmId");
         
      
      
   
また、通知の操作画面を設定することもできます。設定するには、クラス「 NotificationReceiver 」のメソッド「 onReceived() 」に以下のコードを追加します。 
      
         
            MyApplication.deskInstance.handleNotification(Context context, Map data, int icon);
         
      
      
   
context 」は、「appContext」です。「 Map 」は、取得した通知データを表します。「 icon 」は、通知に表示されるアプリケーションのアイコンです。

担当者に対する匿名ユーザーの詳細データの表示

通常、匿名ユーザーからチャットを通じてカスタマーサポートに連絡が行われる際、担当者の画面にはユーザーの詳細データは表示されません。ただし、ASAPアドオンを設定することで、匿名ユーザーから連絡を受け取った際に詳細データを表示することができます。
設定するには、次のメソッドを追加します。
      
         
            DeskUser user = new DeskUser();
            user.setEmail(email);
            user.setPhone(phone);
            user.setName(name);
            MyApplication.deskInstance.setGuestUserDetails(user);
         
      
      
   
また、ユーザーとのやりとりが引き続き必要な場合、担当者はチャットのやりとりを問い合わせに変換することができます。やりとりを行うには、メールアドレスが必須です。

プログラムによる問い合わせの追加

ASAPアドオンを通じて、エンドユーザーに対して手動での問い合わせの送信を許可できますが、アプリ内で特定のイベントが発生した際に自動的に問い合わせを記録するようにアプリを設定することもできます。
たとえば、衣料品ビジネスを経営しており、ユーザーがアプリにアクセスした際に「 レディース 」画面を読み込めなかった場合、この読み込みに失敗したデータが自動的に問い合わせとしてヘルプデスクに記録されるようにすることができます。ユーザーは、ヘルプセンターにアクセスして手動で問い合わせを送信する必要がありません。 
この問い合わせの自動送信を有効にするには、以下のメソッドをアプリのコードに追加します。
      
         
            DeskNewTicketData ticketData = new DeskNewTicketData(); 
            ticketData.setEmail("
            
               emailAddress@test.com
            
            "); 
            ticketData.setContactName("ContactName"); 
            ticketData.setDepartmentId(departmentId); 
            ticketData.setSubject("Subject of the Ticket"); 
            ticketData.setDescription("Description of the ticket"); 
            MyApplication.deskInstance.addGuestTicket(ticketData, new DeskCallback.DeskAddGuestTicketCallback() {
            @Override
            public void onTicketAdded() {
            Log.i("APITEST", "addGuestTicket success "); 
            }
            @Override
            public void onException(DeskException exception) {
            Log.i("APITEST", "addGuestTicket exception "+exception.getErrorMsg());
            }
            });
         
      
      
   
メソッドを呼び出すにあたって、 EmailAddress Subject DepartmentID は必須パラメーターです。 
ポータルにて部門のIDを取得するには、以下のメソッドを追加します。
      
         
            MyApplication.deskInstance.getDepartmentsList(new DeskCallback.DeskDepartmentsCallback() {
            @Override
            public void onDepartmentsLoaded(DeskDepartmentsList response) {
            Log.i("APITEST", "getDepartmentsList success "); 
            }
            @Override
            public void onException(DeskException exception) {
            Log.i("APITEST", "getDepartments exception "+exception.getErrorMsg());
            } 
            });
         
      
      
   
部門で設定した商品に関する情報を取得するには、以下のメソッドを追加します。
      
         
            public void getProducts(View view) {
            MyApplication.deskInstance.getProductsList(new DeskCallback.DeskProductsCallback() {
            @Override
            public void onProductsCompleted(DeskProductsList response) {
            Log.i("APITEST", "getProducts success");
            }
            @Override
            public void onException(DeskException exception) {
            Log.i("APITEST", "getProducts exception "+exception.getErrorMsg());
            }
            }, departmentId,1,10); 
            }
         
      
      
   
部門の問い合わせのレイアウトで項目に関する情報を取得するには、以下のメソッドを追加します。
      
         
            public void getTicketsFields(View view) {
            MyApplication.deskInstance.getTicketsFieldsList(new DeskCallback.DeskTicketsFieldsCallback() {
            @Override
            public void onTicketsFieldsLoaded(DeskTicketFieldList response) {
            Log.i("APITEST", "getTicketsFieldsList success");
            }
            @Override
            public void onException(DeskException exception) {
            Log.i("APITEST", "getTicketsFieldsList exception "+exception.getErrorMsg()); 
            }
            }, departmentId); 
            }
         
      
      
   
問い合わせに添付されたファイルを含めるには、以下のメソッドを追加します。
      
         
            MyApplication.deskInstance.uploadAttachment(new DeskCallback.DeskUploadAttachmentCallback() {
            @Override
            public void onUploadSuccess(DeskUploadAttachmentResponse response) {
            Log.i("APITEST", "uploadAttachment success ");
              }
            @Override
            public void onException(DeskException exception) {
            Log.i("APITEST", "uploadAttachment exception "+exception.getErrorMsg());
            }
            }, fileTobeuploaded);
         
      
      
   

ナレッジベース

これらのメソッドを使用すると、ナレッジベースや関連するコンテンツをASAPアドオンに表示することができます。
カテゴリーのディープリンク
以下のメソッドを使用すると、各カテゴリー内にナレッジベース、ヘルプ記事のカテゴリーやサブカテゴリーの一覧を表示することができます。
      
         
            MyApplication.deskInstance.startKBCategory(activity, permalink);
         
      
      
   
  • activity」は、活動のインスタンスです。
  • パーマリンクが対象のナレッジベースのカテゴリーのURLを指すようになります。


たとえば、上記の画像のURLでは、「/kb/」に続く部分は対象のカテゴリーのパーマリンクです。カテゴリー、またはサブカテゴリーのパスとして、この部分を指定することができます。
記事のディープリンク
以下のメソッドを使用すると、ASAPアドオン内に直接ヘルプ記事の内容を表示することができます。
      
         
            MyApplication.deskInstance.startKBArticle(activity, permalink);
         
      
      
   
  1. activity」は、活動のインスタンスです。
  2. パーマリンクが対象のヘルプ記事のURLを指すようになります。


たとえば、上記の画像のURLでは、「/articles/」に続く部分は対象の記事のパーマリンクです。

コミュニティ

これらのメソッドを使用すると、ユーザーコミュニティや関連するコンテンツをASAPアドオンに表示することができます。
コミュニティ操作のカスタマイズ設定
ユーザーはコミュニティタブでさまざまな操作を行うことができます。操作には、トピックの編集/削除、コメントの追加/編集/削除が含まれます。
以下のメソッドでは、ユーザーがASAPアドオンを通じてコミュニティにアクセスした際に許可する操作や許可しない操作を定義できます。
      
         
            ZDeskCommunityConfiguration communityConfiguration = new ZDeskCommunityConfiguration(); 
            communityConfiguration.setTopicEditAllowed(false); 
            communityConfiguration.setTopicDeleteAllowed(false); 
            communityConfiguration.setReplyEditAllowed(false); 
            MyApplication.deskInstance.setCommunityConfiguration(communityConfiguration);
         
      
      
   
最も人気のあるトピックの取得
以下のAPIを使用すると、最も評価の高いフォーラムのトピックを取得することができます。
      
         
            MyApplication.zohoDeskPortalSDKInstnace.getMostPopularTopics(new DeskCallback.DeskCommunityTopicsListCallback() {
            @Override
            public void onTopicsListCompleted(DeskTopicsList response) {
            Log.i("APITEST", "success");
            }
            @Override
            public void onException(DeskException exception) {
            Log.i("APITEST", "exception");
            }
            }, categoryId, type, from, limit, includeCount);
         
      
      
   
パラメーター
  1. DeskCallback.DeskCommunityTopicsListCallback 」は、コールバックオブジェクトです。
  2. categoryId - long - トピックを取得するコミュニティのカテゴリーのIDです。すべてのカテゴリーを追加する場合、値に「-1」を指定します。 
  3. type - string - フォーラムのトピックの種類です。指定可能な値は次のとおりです: QUESTION IDEA ANNOUNCEMENT PROBLEM DISCUSSION
  4. from - int -  インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  5. limit - int - 取得するトピックの件数です。
  6. includeCount - Boolean - 取得したトピックの件数を表示するかどうかを指定するパラメーターです。
最も議論されたトピックの取得
以下のAPIを使用すると、最もコメントが多かったフォーラムのトピックを取得することができます。
      
         
            MyApplication.zohoDeskPortalSDKInstnace.getMostDiscussedTopics(new DeskCallback.DeskCommunityTopicsListCallback() {
            @Override
            public void onTopicsListCompleted(DeskTopicsList response) {
            Log.i("APITEST", "success");
            }
            @Override
            public void onException(DeskException exception) {
            Log.i("APITEST", "exception");
            }
            }, categoryId, type, from, limit, includeCount);
         
      
      
   
パラメーター
  1. DeskCallback.DeskCommunityTopicsListCallback 」は、コールバックオブジェクトです。
  2. categoryId - long - トピックを取得するコミュニティのカテゴリーのIDです。すべてのカテゴリーを追加する場合、値に「-1」を指定します。 
  3. type - string - フォーラムのトピックの種類です。指定可能な値は次のとおりです: QUESTION IDEA ANNOUNCEMENT PROBLEM DISCUSSION
  4. from - int -  インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  5. limit - int - 取得するトピックの件数です。
  6. includeCount - Boolean - 取得したトピックの件数を表示するかどうかを指定するパラメーターです。

問い合わせ

これらのメソッドを利用すると、ASAPアドオンの問い合わせ送信フォームを要件に合わせて設定することができます。
問い合わせの送信フォームの項目を非表示にする
ASAPアドオンの問い合わせの送信フォームには、Zoho Deskのポータルの問い合わせのレイアウトで設定した項目が表示されます。フォーム内の任意の項目を非表示にするには、「 setTicketsFieldsListTobeShown() 」メソッドを使用します。 
項目の一覧(apiNames)を文字列としてこのメソッドで指定する必要があります。また、アドオンに関連付けられている部門に応じて、 departmentId キーを指定する必要があります。たとえば、特定の単一の部門にてアドオンが設定されている場合、 departmentId キーを指定する必要はありません。複数の部門にてアドオンが設定されている場合、 departmentId キーを指定して、問い合わせの送信フォームで部門と問い合わせの項目を関連付ける必要があります。 
このメソッドを追加した後、フォームにはこのメソッドで指定した項目のみが表示されます。ただし、必須項目に関しては、項目名をメソッド内に指定しない場合でも表示されますのでご注意ください。
問い合わせの送信フォームの必須項目を非表示にする
フォームの必須項目を非表示にする必要がある場合は、必須項目を事前入力にすることで、非表示にすることができます。事前入力にするには、「 preFillTicketFields() 」メソッドを使用します。
preFillTicketFields() 」メソッドは、自動作成されたIDやデバイスのOSのバージョンといった値を項目に事前入力させたい場合に役立ちます。
このメソッドを使用するには、「 PreFillTicketField 」オブジェクトの一覧を指定する必要があります。また、アドオンに関連付けられている部門に応じて、「 departmentId 」キーを指定する必要があります。
setTicketsFieldsListTobeShown() 」メソッドと同様に、特定の単一の部門にてアドオンが設定されている場合、「 departmentId 」キーを指定する必要はありません。複数の部門にてアドオンが設定されている場合、「 departmentId 」キーを指定して、部門と項目を関連付ける必要があります。 
PreFillTicketField 」オブジェクトには、主に3種類のプロパティが含まれています:
  1. fieldApiName - string - 問い合わせ項目の「apiName」です。それぞれの項目の「apiName」を取得するには、「 getTicketFields() 」メソッドを使用します。
  2. fieldValue - object
    • 複数選択項目の場合、選択可能な文字列の値を指定します。
    • 選択リスト項目の場合、選択可能な文字列の値のいずれかを指定します。
    • 日付項目の場合、文字列の値を「 dd-MM-yyyy 」形式で指定します。
    • 日時項目の場合、文字列の値を「 dd-MM-yyyy HH:mm a 」形式で指定します。
    • 真偽値の項目の場合、真偽値を指定します。
    • 他の項目の場合、文字列の値を指定します。
    • こちらで指定した値が、項目で設定されている文字数や小数点の上限内になるようにしてください。
  3. isEditable - Boolean - 対象の項目が編集可能かどうかを指定するキーです。
メモ: コードの詳細については、 こちら をご参照ください。
問い合わせの操作のカスタマイズ設定
ユーザーは問い合わせに対して、返信、コメント、完了など、さまざまな操作を行うことができます。
以下のメソッドでは、ユーザーがASAPアドオンの問い合わせの送信画面を通じてコミュニティにアクセスした際に許可する操作や許可しない操作を定義できます。
      
         
            ZDeskTicketConfiguration ticketConfiguration = new ZDeskTicketConfiguration(); 
            ticketConfiguration.setReplyAllowed(false); 
            ticketConfiguration.setTicketUpdateAllowed(false); //Ticket update will affect for Ticket close and Priority update 
            ticketConfiguration.setCommentAllowed(true); 
            ticketConfiguration.setCommentEditAllowed(false); 
            ticketConfiguration.setCommentDeleteAllowed(false); 
            MyApplication.deskInstance.setTicketConfiguration(ticketConfiguration);
         
      
      
   

その他

以下のメソッドを使用すると、ASAPアドオンにてさまざまな他の操作を行うことができます。
ユーザーの詳細データの更新
以下のAPIを使用すると、ポータルに追加されたユーザーの詳細データを更新することができます。
      
         
            HashMap<String, String> profileData = new HashMap<>(); 
            profileData.put("displayName", "displayName"); 
            profileData.put("mobile", "123456"); 
            MyApplicaiton.zohoDeskPortalSDKInstnace.updateProfile(profileData, new DeskCallback.DeskUpdateProfileCallback() {
            @Override
            public void onProfileUpdated(JSONObject jsonObject) {
            Log.i("UpdateProfile", "Success"); 
            }
            @Override
            public void onException(final DeskCallback.DeskException exception) {
            Log.i("UpdateProfile", "Exception"); 
            } 
            }); 
         
      
      
   
パラメーター
  1. HashMap <String, String> - キーと値のペアです。キーには次の値が含まれます: twitter phone facebook name displayName mobile countryLocale timeZone  
  2. DeskCallback.DeskUpdateProfileCallback - コールバックオブジェクトです

SDKのログ

ASAP SDKには、アドオンの利用中に発生したエラーを解決するオプションも用意されています。解決するには、SDKのログを活用します。
SDKのログを有効にするには、以下のコードを追加します。
      
         
            ZohoDeskPortalSDK.Logger.enableLogs();
         
      
      
   
SDKのログを有効にした後、エラーについてコンソールログを確認し、必要に応じた処理を行うことができます。
メモ: SDKに関するデバッグの情報は、「logcat」に保存されます。そのため、リリースビルド内に「 enableLogs() 」が存在しないようにしてください。

リリースノート

バージョン1.1.4
  • ユーザーの詳細データを更新するAPIを追加しました。詳細については こちらをクリック してください。
  • 問い合わせの送信画面でのユーザの操作を有効または無効にする条件を追加しました。詳細については、 こちらをクリック してください
バージョン1.1.3
  • ログアウトに失敗する問題を解決しました。
バージョン1.1.2
  • 初回にアプリ/アドオンを通じて電話のストレージにアクセスする際に、権限の画面を表示する機能を追加しました。
バージョン1.1.1
  • 識別に関する問題を解決しました。
バージョン1.1.0
  • 問い合わせの送信画面の項目でカスタマイズ設定を行えるメソッドを追加しました。詳細については、 こちらをクリック してください。
  • コミュニティタブのサブフォーラムに「すべて」のオプションを追加しました。
  • ナレッジベースのカテゴリーに対してディープリンクを利用できるようになりました。詳細については、 こちらをクリック してください。
  • コミュニティタブでのユーザの操作を有効または無効にする条件を追加しました。詳細については、 こちらをクリック してください。
バージョン1.0.1
  • コミュニティタブにディスカッションのトピックの種類を追加しました。
  • コミュニティタブの検索機能に関連する問題を解決しました。(バージョン1.0からSDKを使用し始めた場合、この問題に対して操作を行う必要はありません。1.0以前のバージョンからSDKを使用していて、Zoho DeskのポータルでJWT認証を有効にしている場合は、1.0にアップグレードした後にユーザートークンを再生成する必要があります。アプリケーションのデモについては こちら をご確認ください。エンドユーザーに対する影響はありません。)
バージョン1.0
  • 問い合わせのコメントにてリッチテキスト(書式付きテキスト)でテキストの書式を設定できるようにしました。
  • ユーザーコミュニティのフォーラムのトピックにスレッド形式でコメントを追加できるようにしました。
  • フォーラムのトピックでのコメントに対して、操作を行えるようにしました。
  • ユーザーコミュニティに検索機能を追加しました。
  • イベントのコールバック機能を追加しました。詳細については、 こちらをクリック してください。
  • コミュニティのカテゴリー、最も人気のあるトピック、最も議論されたトピックに関連するAPIを追加しました。詳細については、 こちらをクリック してください。
  • トピックIDが入力された際にトピックの詳細画面が表示されるようにするメソッドを追加しました。
バージョン0.826.1
  • コミュニティタブのカテゴリーに「 フォロー 」オプションを追加しました。このオプションは、認証済みユーザーに対してのみ表示されます。
バージョン0.826
  • アプリに「 androidx 」の依存関係が含まれる場合にアプリが突然終了する問題を解決しました。
バージョン0.825
  • インドのデータセンターのサポートを開始しました。インドのデータセンターにてASAPアドオンをホスティングするには、 SDKの初期設定 時にデータセンターのキーに「 DataCenter.IN 」と指定してください。
  • 設定を上書きしたアドオンのダッシュボードを表示できる新しいメソッドを追加しました。詳細については、 こちらをクリック してください
  • 商品に関するAPIに「from」、「limit」のパラメーターを追加しました。パラメーター「from」はリソースのインデックス番号を表します。パラメーター「limit」は返すデータの件数を表します。この2種類のパラメーターがAPIリクエストで指定されない場合、初期設定で最初の10件の商品が返されます。
バージョン0.824
  • 以下の操作が行われた際にプッシュ通知を送信できるようにしました:
    • 担当者がユーザーの代わりに問い合わせを作成。
    • 担当者が新たに問い合わせに返信。
    • 問い合わせの優先度の変更。
    • 問い合わせのステータスの変更。
    • 問い合わせに新たにコメントを追加。
    • 問い合わせのコメントを編集。
  • 問い合わせの送信画面にコールバックメソッドを追加しました。このメソッドを使用すると、問い合わせの送信後に、問い合わせの詳細データが即座にアプリに送信されるように、ASAPアドオンを設定することができます。
バージョン0.823
  • 2MBを超えるサイズのナレッジベースの記事を読み込む際にアプリが突然終了する問題を解決しました。
バージョン0.822
  • Zoho DeskのポータルのSDKが含まれるアプリの内部ディレクトリに保存されているファイルに他のアプリからアクセスできる、という設定に関する問題を修正しました。

バージョン1.xから2.0への移行

SDKとAndroidアプリとの連携

Zoho Deskでは、2018年下半期にASAP機能を追加しました。これにより、ユーザーはアプリをより便利に利用できるようになりました。別のタブに移動する手間や、ヘルプ記事を検索する手間を省くことができます。ASAP SDKを使用すると、Androidアプリにウィジェットを埋め込むことができます。これにより、顧客はサポート記事をすばやく表示することができます。

ASAP SDKを追加してから本日まで、Zoho DeskではASAP SDKを改善し続けてきました。より便利に利用しやすくしました。そして2020年、Zoho DeskではASAP SDKを一新しました。Android向けASAP SDKバージョン2.0が利用できるようになりました。

現在、以前のバージョンのAndroid向けASAP SDKを利用している場合、バージョン2.0に対応するための移行処理があります。

以下の表は、移行処理をスムーズに行うための変更内容の一覧です。
バージョン1.x
バージョン2.0
1.X以前のバージョンの場合、 asapsdk (com.zoho.desk:asapsdk) 全体に連携する必要があります
バージョン2.0から、要件に応じてヘルプタブを選択できます。
com.zoho.desk:asapsdk - すべてのヘルプタブ:問い合わせ、ナレッジベース、コミュニティ、チャット
com.zoho.desk:asap - 問い合わせ、ナレッジベース、コミュニティタブのみ
com.zoho.desk:asap-api - ASAP SDKにAPIを提供するサーバーこのオプションには操作画面は含まれません。そのため、アプリの操作画面の部分を必要とせず、サーバーとの接続だけを必要とする場合は、こちらのオプションを選択します。

ビルドの設定の詳細

バージョン1.x
バージョン2.0 
  • compileSdkVersion - 28
  • buildToolsVersion - 28.0.3
  • supportLibVersion - 26.1.0
  • minSdkVersion - 16
  • targetSdkVersion - 28
  • compileSdkVersion - 29
  • buildToolsVersion - 29.0.0
  • supportLibVersion - 27.1.1
  • minSdkVersion - 16
  • targetSdkVersion - 29

初期化コード

バージョン1.x
バージョン2.0
「initDesk」メソッドには4種類のパラメーターが含まれます:
  1. orgId
  2. appId
  3. DC
  4. configuration object
MyApplication.deskInstance.initDesk(orgId, appId, dcVal, config);
「initDesk」メソッドには3種類のパラメーターが含まれます:
  1. orgId
  2. appId
  3. DC
MyApplication.deskInstance.initDesk(orgId, appId, dcVal);

ヘルプ項目の表示

Zoho Deskのホーム画面を表示するメソッド
バージョン1.x
バージョン2.0 
MyApplication.deskInstance.startDeskHomeScreen(activity);
ZDPortalHome.show(activity);
カスタマイズ設定したZoho Deskのホーム画面を表示するメソッド
バージョン1.x
バージョン2.0
MyApplication.deskInstance.startDeskHomeScreen(activity, config);
ZDPortalHome.show(activity, config);
ヘルプセンター(ナレッジベース)を表示するメソッド
バージョン1.x
バージョン2.0 
MyApplication.deskInstance.startHelpCenter(activity);
ZDPortalKB.show(activity);
コミュニティタブを表示するメソッド
バージョン1.x
バージョン2.0 
MyApplication.deskInstance.startCommunity(activity);
ZDPortalCommunity.show(activity);
問い合わせの送信画面を表示するメソッド
バージョン1.x
バージョン2.0 
MyApplication.deskInstance.startNewTicket(activity);
ZDPortalSubmitTicket.show(activity);
コールバック機能を持つ問い合わせの送信画面を表示するメソッド
バージョン1.x
バージョン2.0
MyApplication.deskInstance.startNewTicket(activity, callBack);
ZDPortalSubmitTicket.show(activity, callback);
自分の問い合わせの一覧を表示するメソッド
バージョン1.x
バージョン2.0 
MyApplication.deskInstance.startTickets(activity);
ZDPortalTickets.show(activity);
チャットタブを表示するメソッド
バージョン1.x
バージョン2.0 
MyApplication.deskInstance.startLiveChat(activity);
ZDPortalChat.show(activity);

SDKでのユーザー認証

バージョン1.x
バージョン2.0 
MyApplication.deskInstance.setUserToken(userToken, callback);
callback 」は、「 DeskCallback.DeskSetUserCallback 」のインスタンスです。
MyApplication.deskInstance.setUserToken(userToken, callback);
callback 」は、「 ZDPortalCallback.SetUserCallback 」のインスタンスです。

ユーザーをSDKからログアウト

バージョン1.x
バージョン2.0
MyApplication.deskInstance.removeUser(callBack);
callback 」は、「 DeskCallback.DeskRemoveUserCallback 」のインスタンスです。
MyApplication.deskInstance.logout(callBack);
callback 」は、「 ZDPortalCallback.LogoutCallback 」のインスタンスです。

アドオンの操作画面のカスタマイズ

バージョン1.x
バージョン2.0
MyApplication.deskInstance.setThemeResource(themeResourceId);
ZDPortalConfiguration.setThemeResource(themeResourceId);

言語設定の変更

バージョン1.x
バージョン2.0
DeskConfig config = new DeskConfig.Builder().setLanguage("es").build();
MyApplication.deskInstance.initDesk(orgId, appId, dc, config);
ZDPortalConfiguration.setLanguage("es");

通知の有効化

プッシュ通知を有効にするメソッド
バージョン1.x
バージョン2.0
MyApplication.deskInstance.handleNotification(context, remoteMsgData, icon);
ZDPortalConfiguration.handleNotification(context, remoteMsgData, icon);

プログラミングによる問い合わせの追加

問い合わせを投稿するメソッド(問い合わせを投稿するAPI)
バージョン1.x
バージョン2.0 
MyApplication.deskInstance.addTicket(ticketData, new DeskCallback.DeskAddGuestTicketCallback() {
  @Override
  public void onTicketAdded() {
}
  @Override
  public void onException(DeskException exception) {
}
});
ticketData 」は、「 DeskNewTicketData 」のインスタンスです。
callback 」は、「 DeskCallback.DeskAddGuestTicketCallback 」のインスタンスです。
ZDPortalTicketsAPI.createTicket(new CreateTicketCallback() {
  @Override
  public void onTicketCreated(Ticket ticket) {
}
  @Override
  public void onException(ZDPortalException exception) {
}
}, ticketData, params);
ticketData 」は、「 HashMap<String, Object> 」のインスタンスです。
callback 」は、「 ZDportalCallback.CreateTicketCallback 」のインスタンスです。
部門の一覧を取得するメソッド(部門を提供するAPI)
バージョン1.x
バージョン2.0
MyApplication.deskInstance.getDepartmentsList(new DeskCallback.DeskDepartmentsCallback() {
  @Override
  public void onDepartmentsLoaded(DeskDepartmentsList response) {
}
  @Override
  public void onException(DeskException exception) {
}
});
callback 」は、「 DeskCallback.DeskDepartmentsCallback 」のインスタンスです。
ZDPortalAPI.getDepartments(new ZDPortalCallback.DepartmensCallback() {
  @Override
  public void onDepartmentsDownloaded(DepartmentsList departmentsList) {
}
  @Override
  public void onException(ZDPortalException exception) {
}
}, params);
callback 」は、「 DeskCallback.DeskDepartmentsCallback 」のインスタンスです。
params 」は、「 HashMap<String, String> 」のインスタンスです。
商品の一覧を取得するメソッド(商品の一覧を提供するAPI)
バージョン1.x
バージョン2.0
MyApplication.deskInstance.getProductsList(new DeskCallback.DeskProductsCallback() {
  @Override
  public void onProductsCompleted(DeskProductsList response) {
}
  @Override
  public void onException(DeskException exception) {
}
}, departmentId,1,10);
callback 」は、「 DeskCallback.DeskProductsCallback 」のインスタンスです。
deptId - 部門のIDです
from - インデックス番号です。
この番号順に商品が表示されます。
limit -- 取得する商品の件数です。
ZDPortalAPI.getProductsList(new ProductsCallback() {
  @Override
  public void onProductsDownloaded(ProductsList productsList) {
}
  @Override
  public void onException(ZDPortalException exception) {
}
}, params);
callback 」は、「 ZDPortalCallback.ProductsCallback 」のインスタンスです。
「params」は、「 HashMap<String, String> 」のインスタンスです。
問い合わせの項目の一覧を取得するメソッド(問い合わせの項目を取得するAPI)
バージョン1.x
バージョン2.0
MyApplication.deskInstance.getTicketsFieldsList(new DeskCallback.DeskTicketsFieldsCallback() {
  @Override
  public void onTicketsFieldsLoaded(DeskTicketFieldList response) {
}
  @Override
  public void onException(DeskException exception) {
}
}, deptId);
callback 」は、「 DeskCallback.DeskTicketsFieldsCallback 」のインスタンスです。「 deptId (long)」は、部門のIDです。
ZDPortalTicketsAPI.getTicketFields(new TicketFieldsCallback() {
  @Override
  public void onTicketFieldsDownloaded(TicketFieldsList ticketFieldsList) {
}
  @Override
  public void onException(ZDPortalException exception) {
}
}, params, featureFlag);
callback 」は、「 ZDPortalCallback.TicketFieldsCallback 」のインスタンスです。
params 」は、「 HashMap<String, String> 」のインスタンスです。
featureFlag - 「 String(例:apiName) 」のインスタンスです。
添付ファイルをアップロードするメソッド(添付ファイルをアップロードするAPI)
バージョン1.x
バージョン2.0
MyApplication.deskInstance.uploadAttachment(new DeskCallback.DeskUploadAttachmentCallback() {
  @Override
  public void onUploadSuccess(DeskUploadAttachmentResponse response) {
}
  @Override
  public void onException(DeskException exception) {
}
}, fileTobeuploaded);
callback 」は、「 DeskCallback.DeskUploadAttachmentCallback 」のインスタンスです。
fileTobeUploaded - File object のインスタンスです
ZDPortalTicketsAPI.uploadAttachment(new UploadAttachmentCallback() {
  @Override
  public void onAttachmentUploaded(ASAPAttachmentUploadResponse response) {
}
  @Override
  public void onException(ZDPortalException exception) {
}
}, fileTobeUploaded, params);
callback 」は、「 ZDPortalCallback.UploadAttachmentCallback 」のインスタンスです。
「params」は、「 HashMap<String, String> 」のインスタンスです。
fileTobeUploaded - File object のインスタンスです

ナレッジベース

ナレッジベースのカテゴリーに対してディープリンクを利用するメソッド
バージョン1.x
バージョン2.0
MyApplication.deskInstance.startKBCategory(activity, permalink);
ZDPortalKB.showCategoryWithPermalink(activity, permaLink);
ナレッジベースの記事に対してディープリンクを利用するメソッド
バージョン1.x
バージョン2.0
MyApplication.deskInstance.startKBArticle(activity, permalink);
ZDPortalKB.showArticleWithPermalink(activity, permaLink);

コミュニティ

コミュニティ内でのユーザーの操作を設定するメソッド
バージョン1.x
バージョン2.0
MyApplication.deskInstance.setCommunityConfiguration(communityConfiguration);
communityConfiguration - 「 ZDeskCommunityConfiguration 」のインスタンスです
ZDPortalCommunity.setConfiguration(communityConfiguration);
communityConfiguration - 「 ZDPortalCommunityConfiguration 」のインスタンスです
最も人気のあるトピックを取得するメソッド(最も人気のあるトピックを取得するAPI)
バージョン1.x
バージョン2.0 
MyApplication.zohoDeskPortalSDKInstnace.getMostPopularTopics(new DeskCallback.DeskCommunityTopicsListCallback() {
  @Override
  public void onTopicsListCompleted(DeskTopicsList response) {
}
  @Override
  public void onException(DeskException exception) {
}
}, categoryId, type, from, limit, includeCount);
callback 」は、「 DeskCallback.DeskCommunityTopicsListCallback 」のインスタンスです。
categoryId - long(コミュニティのカテゴリーのID) です
type - String(トピックの種類) です
from - インデックスのint です
limit - トピックのint です
includeCount - boolean です
ZDPortalCommunityAPI.getMostPopularTopics(new ZDPortalCallback.CommunityTopicsCallback() {
  @Override
  public void onCommunityTopicsDownloaded(DeskTopicsList deskTopicsList) {
}
  @Override
  public void onException(ZDPortalException e) {
}
}, params);
callback 」は、「 ZDPortalCallback.CommunityTopicsCallback 」のインスタンスです。
params 」は、「 HashMap<String, String> 」のインスタンスです。
最も議論されたトピックを取得するメソッド(最も議論されたトピックを取得するAPI)
バージョン1.x
バージョン2.0 
MyApplication.zohoDeskPortalSDKInstnace.getMostDiscussedTopics(new DeskCallback.DeskCommunityTopicsListCallback() {
  @Override
  public void onTopicsListCompleted(DeskTopicsList response) {
}
  @Override
  public void onException(DeskException exception) {
}
}, categoryId, type, from, limit, includeCount);
callback 」は、「 DeskCallback.DeskCommunityTopicsListCallback 」のインスタンスです。
categoryId - long(コミュニティのカテゴリーのID) です
type - String(トピックの種類) です
from - インデックスのint です
limit - トピックのint です
includeCount - boolean です
ZDPortalCommunityAPI.getMostDiscussedTopics(new ZDPortalCallback.CommunityTopicsCallback() {
  @Override
  public void onCommunityTopicsDownloaded(DeskTopicsList deskTopicsList) {
}
  @Override
  public void onException(ZDPortalException e) {
}
}, params);
callback 」は、「 ZDPortalCallback.CommunityTopicsCallback 」のインスタンスです。
params 」は、「 HashMap<String, String> 」のインスタンスです。

問い合わせ

問い合わせの送信フォームで表示する問い合わせの項目の一覧を設定するメソッド
バージョン1.x
バージョン2.0
MyApplication.deskInstance.setTicketsFieldsListTobeShown(ticketListTobeShown, deptId);
ZDPortalSubmitTicket.setTicketsFieldsListTobeShown(ticketListTobeShown, deptId);
問い合わせ項目で値を事前入力するメソッド
バージョン1.x
バージョン2.0 
MyApplication.deskInstance.preFillTicketFields(preFillTicketFields, deptId);
ZDPortalSubmitTicket.preFillTicketFields(preFillTicketFields, deptId);
問い合わせの操作を設定するメソッド
バージョン1.x
バージョン2.0
MyApplication.deskInstance.setTicketConfiguration(ticketConfiguration);
ticketConfiguration - 「 ZDeskTicketConfiguration 」のインスタンスです
ZDPortalTickets.setConfiguration(ticketConfiguration);
ticketConfiguration - 「 ZDPortalTicketConfiguration 」のインスタンスです

その他

ユーザー情報を更新するメソッド(プロフィールをアップロードするAPI)
バージョン1.x
バージョン2.0 
MyApplicaiton.zohoDeskPortalSDKInstnace.updateProfile(params, new DeskCallback.DeskUpdateProfileCallback() {
  @Override
  public void onProfileUpdated(JSONObject jsonObject) {
}
  @Override
  public void onException(final DeskCallback.DeskException exception) {
} });
callback 」は、「 DeskCallback.DeskUpdateProfileCallback 」のインスタンスです。
params 」は、「 HashMap<String, String> 」のインスタンスです。
ZDPortalAPI.updateProfileDetails(new ZDPortalCallback.UserDetailsCallback() {
  @Override
  public void onUserDetailsSuccess(DeskUserProfile userProfile) {
}
  @Override
  public void onException(ZDPortalException exception) {
}
}, params);
callback 」は、「 ZDPortalCallback.UserDetailsCallback 」のインスタンスです。
params 」は、「 HashMap<String, String> 」のインスタンスです。








          Zoho CRM Training Programs

          Learn how to use the best tools for sales force automation and better customer engagement from Zoho's implementation specialists.

          Zoho CRM Training







                          • Related Articles

                          • iOS向けASAP SDKの操作

                            SDK バージョン2.0 はじめに iOS向けのASAP SDK(ソフトウェア開発キット)を活用すると、iOSアプリのエンドユーザーが手軽に利用できるヘルプ機能を提供することができます。SDKを使用することで、アプリ内のアドオンを作成したり、カスタマイズしたりできます。また、エンドユーザーが以下の機能に簡単にアクセスできるようになります: カスタマーサポートチームへの問い合わせ(問い合わせの送信、サポート担当者とのチャット) ナレッジベース(ヘルプ記事へのアクセス) ...
                          • React Native向けASAP SDKの操作

                            React Native向けのASAP SDK(ソフトウェア開発キット)を活用すると、モバイルアプリのエンドユーザーが手軽に利用できるヘルプ機能を提供することができます。SDKを使用することで、iOSやAndroidアプリ内のアドオンを作成したり、カスタマイズしたりできます。また、エンドユーザーが以下の機能に簡単にアクセスできるようになります: カスタマーサポートチームへの問い合わせ(問い合わせの送信、サポート担当者とのチャット) ナレッジベース(ヘルプ記事へのアクセス) ...
                          • Web用のASAPアドオン

                            はじめに Webサイト用のASAPアドオンを使用すると、エンドカスタマー用のヘルプセンターにすぐにアクセスできます。このアドオンをWebサイトに連携すると、顧客は簡単に次にアクセスできます:  カスタマーサポートチーム(問い合わせをするため) ナレッジベース(ヘルプ記事にアクセスするため)  ユーザーコミュニティー(他の顧客とやりとりするため) Ziaボット(AI搭載のバーチャルアシスタント「Zia」を通じてすばやく回答を探し出すため) ...
                          • ASAPアドオンでの認証ユーザー用のJWT

                            はじめに エンドユーザーが、ASAPアドオンにサインインするかどうかによって、ゲストユーザーや認証済みユーザーに分類できます。サインインしなかったユーザーはゲストユーザー、サインインしたユーザーは認証済みユーザーと呼ばれます。ASAPアドオンでは、表示するコンポーネントとコンテンツを、ユーザーの種類別に設定できます。  ゲストユーザーは、ナレッジベースへのアクセス/問い合わせの送信/ユーザーコミュニティの投稿の閲覧/カスタマーサポート担当者とのチャットを行うことができます。   ...

                          Resources

                          Videos

                          Watch comprehensive videos on features and other important topics that will help you master Zoho CRM.



                          eBooks

                          Download free eBooks and access a range of topics to get deeper insight on successfully using Zoho CRM.



                          Webinars

                          Sign up for our webinars and learn the Zoho CRM basics, from customization to sales force automation and more.



                          CRM Tips

                          Make the most of Zoho CRM with these useful tips.