Android向けのどこでもサポートSDKの操作(バージョン3.0)

Android向けのどこでもサポートSDKの操作(バージョン3.0)

はじめに

Android向けのどこでもサポートSDK(ソフトウェア開発キット)を活用すると、Androidアプリ内に利用者が手軽に利用できるサポート機能を埋め込むことができます。これにより、アプリの利用者はアプリ内から以下の機能を利用できるようになります。
  • 問い合わせの送信、サポート担当者とのチャット
  • ナレッジベース(自社の製品やサービスに関するヘルプやよくある質問)
  • コミュニティ(アプリを通じた他の顧客とのやりとり)
この機能を活用すれば、アプリの利用者はヘルプセンター(Zoho Deskを通じて提供される顧客向けのポータル)にアクセスし直さなくても、アプリ内ですぐにヘルプ記事を参照したり問い合わせを送信したりできるようになるため、顧客満足度の向上が期待できます。
現在バージョン2.1.6以前のどこでもサポートSDKを利用している場合、バージョン3.0の機能を利用するには既存のコードを移行する必要があります。コードの移行手順については、この記事の「バージョン2.xから3.0への移行」のセクションをご参照ください。

Zoho DeskでのSDK(開発キット)の設定

提供中のAndroidアプリに、どこでもサポートの機能を追加するには、まず、Zoho Deskでどこでもサポートのアドオンの設定を作成し、登録します。
アドオンの設定の作成手順は以下のとおりです。
  1. Zoho Deskで、画面右上にある設定アイコンをクリックし、[経路]→[どこでもサポート]の順に移動します。
  2. 画面左側にあるメニューで[どこでもサポート]の欄にある[モバイル]にカーソルを重ね、[+](追加)アイコンをクリックします。モバイル用アドオンの作成ページが表示されます。



  3. [アドオンの詳細]で、以下の内容を設定します:
    1. [名前]:どこでもサポートのアドオンの名前です。この名前は参照用です。アプリの操作画面上には表示されません。
    2. [有効]:どこでもサポートのアドオンを有効にする部門を選択します。
    3. [チャット]:切り替えボタンをクリックすると、チャット機能の有効/無効を切り替えることができます。
      メモ:どこでもサポートのチャット機能には、ポータルでのチャット機能の設定内容が反映されます。そのため、チャット機能の設定を変更するには、画面右上の設定アイコンをクリックし、[経路]の欄にある[チャット]をクリックします。
    4. [Zia]:Zoho DeskのZia(ZohoのAIアシスタント)機能を有効にすると、顧客がモバイルアプリからZiaの案内に従って必要な情報を得ることができます。たとえば、質問を送信すると、対応するヘルプやよくある質問の記事(ナレッジベース)の内容が自動で表示されます。Zia機能を有効にするには、切り替えボタンをクリックします。
    5. [自動ガイドボット]:自動ガイドボットは、顧客が、担当者からのサポートを受けずに、自力で問題を解決するのに役立つ機能です。自動応答によるやりとりを通じて、顧客の求めている内容を絞り込みながら、適切な解決策や手続きを提示できます。提供には、チャットのフローの事前設定が必要です。切り替えボタンをクリックすると、自動ガイドボット機能の状態(有効/無効)を切り替えることができます。
      有効にしたら、使用したい自動ガイドボットのフローを選択する必要があります。自動ガイドボットの詳細については、こちらの記事をご参照ください。
      メモ:Ziaと自動ガイドボットの機能は、両方を有効にすることも可能です。
    6. [バンドルID]:[Android]の項目に、AndroidアプリのバンドルIDを入力します(バンドルIDは、Androidアプリの「applicationId」です。アプリ内の「build.gradle」ファイルから取得できます)。
      メモ:チャット機能を有効にしたり、プッシュ通知を送信したりするには、バンドルIDが必須です。
    7. [プッシュ通知]:切り替えボタンをクリックすると、プッシュ通知の有効/無効を切り替えることができます。プッシュ通知を有効にするには、[GCMキーを入力]」の項目にGCM/FCMサーバーキーを入力します(このキーを取得するには、Firebaseの設定画面で次の順に移動します:設定アイコン→[プロジェクトの設定][クラウドメッセージング][サーバーキー])。
      メモ:通知を有効にするには、JWT方式でのユーザー認証が必須です。匿名ユーザーに対して、問い合わせに関するプッシュ通知を送信することはできません。
    8. 認証方法:このアドオンにおけるユーザーの認証方法を設定します。
      1. JWT認証なし:ユーザー認証を行わない場合、利用者はゲストユーザー(匿名ユーザー)としてみなされます。ゲストユーザーによって実行できる操作は、ナレッジベースへのアクセス、問い合わせ送信、コミュニティでの投稿の表示、サポート担当者とのチャットに限定されます。自分が送信した問い合わせを表示したり、コミュニティで投稿したりすることはできません。
      2. JWT認証あり:JWT方式でのユーザー認証を行う場合、利用者は認証ユーザーとみなされます。認証ユーザーは、ゲストユーザーが行える操作に加えて、送信した問い合わせのステータスの表示、問い合わせへの返信やコメントの追加を行うことができます。また、コミュニティでは、トピック(投稿)の追加やフォロー、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
  4. [保存]をクリックします。


保存すると、コード欄が表示されます。このコード欄では組織ID、アプリID、配置の種類(データセンター)などの情報を確認できます。これらの情報は、アプリでどこでもサポートSDKの初期設定を行う際に必要です。

SDKとアプリとの連携

次に、Mavenを使用して、どこでもサポートSDKとAndroidアプリを連携します。
SDKとアプリを連携するには、以下のコードを最上位のフォルダー(ルートフォルダー)の「build.gradle」ファイルに追加します。
repositories { jcenter() google() maven { url 'http://maven.zohodl.com/' } maven { url 'https://downloads.zohocdn.com/wmslibrary' } } 
メモ:どこでもサポートSDKは、Android アーキテクチャ コンポーネントを使用して開発が行われています。そのため、アプリのコード内に「maven.google.com/google()」を追加する必要があります。
上記のコードの追加が完了したら、依存関係に関するコードを追加します。

アプリ内の「build.gradle」ファイルの依存関係のセクションに、依存関係に関する以下のコードを追加します。
  1. 「com.zoho.desk:asapsdk:3.0_BETA_0_7」 - 初期設定の操作画面あり。チャットあり。
  2. 「com.zoho.desk:asap:3.0_BETA_0_7」 - 初期設定の操作画面あり。チャットなし。
  3. 「com.zoho.desk:asap-api:3.0_BETA_0_7」 - 操作画面なし(APIプロバイダーとして機能します)。

dependencies { implementation 'com.zoho.desk:asapsdk:3.0-BETA_0_1' }
以上で、SDKとアプリとの連携が完了します。どこでもサポートSDKの設定情報は、以下のとおりです。
  • compileSdkVersion - 32
  • targetSdkVersion - 32
  • minSdkVersion - 21
  • org.jetbrains.kotlin:kotlin-stdlib:1.5.20

アプリ内のSDKの初期設定

次に、アプリ内のSDKの初期設定を行います。
この手順では、以下の3つのキーが必須です。
  • 組織ID(orgID)
  • アプリID(appID)
  • データセンター(datacenterValue)
これらのキーの値は、Zoho Deskのどこでもサポートのアドオンの設定画面にあるコード欄に表示されます。
アプリでSDKの初期設定を行うには、以下のコードをApplicationクラスのサブクラスに追加します。
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地域(EU) - DataCenter.EU
アメリカ(US) - DataCenter.US
インド(IN) - DataCenter.IN
オーストラリア(AU) - DataCenter.AU
日本(JP) - DataCenter.JP


各サポート機能(メニュー)の表示

ダッシュボード
アプリの利用者は、ダッシュボードの画面を通じてどこでもサポートの機能(メニュー)にアクセスすることができます。利用者は、このダッシュボードでボタンやアイコンをクリックすることで、ナレッジベース、コミュニティ、問い合わせの送信フォーム、自分の問い合わせの一覧、チャットにアクセスすることができます。
メモ:初期設定では、どこでもサポートのダッシュボードでチャット機能は無効になっています。利用するには、はじめにZoho Deskの設定ページからチャット機能を有効にする必要があります。
ダッシュボードを表示するには、以下のメソッドを使用します。
ZDPortalHome.show(MainActivity.this);
                                                                  
      

ダッシュボードの設定の上書き(オーバーライド)
(i) ダッシュボード上に表示する機能を指定するには:
ダッシュボードの設定では、ダッシュボードにどの機能を表示するかを指定できます。初期設定では、すべての機能が表示されます。特定の機能を無効にするには、以下のコード内の「true」の値を「false」に変更します。
ダッシュボードの設定を上書き(オーバーライド)するには、以下のコードを使用します。

ZDPHomeConfiguration config = new ZDPHomeConfiguration.Builder()

                .isKBEnabled(true)

                .isCommunityEnabled(true)

                .isLiveChatEnabled(true)

                .isMyTicketsEnabled(true).build();

ZDPortalHome.setConfiguration(config);

ZDPortalHome.show(activity);
 (ii) ダッシュボードを表示せずに各機能の画面を個別に表示するには:
アプリ上にダッシュボードを表示せずに、個別の機能のみを表示することも可能です。
各機能の画面を個別に表示するには、以下のメソッドを使用します。
チャット
チャット画面では、アプリの利用者がサポート担当者とチャットのやりとりを行うことができます。
チャット画面を表示するには、以下のメソッドを使用します。
ZDPortalChat.show(activity);
activityは、チャット画面を表示するためのActivityインスタンスです。

サポート担当者の画面におけるゲストユーザー(匿名ユーザー)の情報の表示
通常、サポート担当者がゲストユーザー(匿名ユーザー)からチャットを受信しても、サポート担当者の画面には利用者(顧客)に関する詳細情報は表示されません。ただし、どこでもサポートのアドオンを設定することで、ゲストユーザー(匿名ユーザー)から連絡を受け取った際にも詳細情報を表示することができます。
設定するには、次のメソッドを追加します。
ZDPortalChatUser chatUser = new ZDPortalChatUser();
chatUser.setName(name);
chatUser.setEmail(email);
chatUser.setPhone(phone);
ZDPortalChat.setGuestUserDetails(chatUser);
ナレッジベース(ヘルプやよくある質問)
ナレッジベース機能では、アプリの利用者がナレッジベース内のヘルプ記事にアクセスすることができます。
ナレッジベースの画面を表示するには、以下のメソッドを使用します。
ZDPortalKB.show(activity);
「activity」は、ナレッジベースを表示するためのActivityインスタンスです。
問い合わせの送信
問い合わせの送信画面では、アプリの利用者が質問や要望を問い合わせとして送信できます。
問い合わせの送信画面を表示するには、以下のメソッドを使用します。
ZDPortalSubmitTicket.show(activity);
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は、問い合わせの送信画面を表示するためのActivityインスタンスです。

問い合わせの送信画面を通じて問い合わせが送信されると、コールバックオブジェクト「CreateTicketCallback」を通じて、問い合わせに関する情報を取得できます。
メモ:認証済みのユーザーが問い合わせを送信した場合、問い合わせに関するすべての詳細情報が送信されます。ゲストユーザーが問い合わせを送信した場合、問い合わせ番号のみが送信されます。
自分の問い合わせ
自分の問い合わせの画面では、アプリの利用者が、自分自身が送信した問い合わせを確認したり編集したりできるようになります。

自分の問い合わせの画面を表示するには、以下のメソッドを使用します。
ZDPortalTickets.show(activity);
activityは、[自分の問い合わせ]の画面を表示するためのActivityインスタンスです。
コミュニティ
コミュニティの画面では、アプリの利用者が、自社が提供する商品やサービスに関するフォーラム(掲示板)にアクセスし、他の利用者やサポート担当者と交流できます。
コミュニティの画面を表示するには、以下のメソッドを使用します。
ZDPortalCommunity.show(activity);
activityは、コミュニティの画面を表示するためのアクティビティインスタンスです。

自動ガイドボット
自動ガイドボットは、顧客が、担当者からのサポートを受けずに、自力で問題を解決するのに役立つ機能です。自動応答によるやりとりを通じて、顧客の求めている内容を絞り込みながら、適切な解決策や手続きを提示できます。提供には、チャットのフローの事前設定が必要です。基本的には、追加的な開発は不要で利用できます(自動ガイドボットの処理を他の処理と組み合わせて利用する場合を除きます)。
自動ガイドボットの画面を表示するには、以下のメソッドを使用します。
ZDPortalLiveChat.show(<activity>);
また、自動ガイドボットのフローは、フラグメントのコンポーネントとしても設計されているため、以下のメソッドによっても表示できます。
ZDPortalLiveChat.getChatFragment()
自動ガイドボットやZiaの機能を有効にすると、チャットの画面は以下のように表示されます。
   
   
                                              

自動ガイドボットとZiaを同時に有効にすると、初期設定では自動ガイドボットが読み込まれます。必要に応じて、Ziaによるチャットに切り替えることもできます。なお、自動ガイドボットのフローの実行中はZiaと自動ガイドボットを切り替えることはできませんので、ご注意ください。このような場合、切り替えを行うには、会話を再開するメニューをクリックしてフローをリセットする必要があります。

どこでもサポートにおけるユーザー認証

アプリの利用者が、自分自身の送信した問い合わせにアクセスするには、ユーザーIDによるサインインが必要です。サインインすると、認証ユーザー限定の機能を利用できます。認証方式には、JWT(ジョット:JSON Web Token)を利用できます。

アプリの利用者は、JWT認証の有無によって、匿名ユーザーと認証ユーザーに分類されます。
  • JWT認証なし:JWT方式でのユーザー認証を行わない場合、利用者はゲストユーザー(匿名ユーザー)とみなされます。ゲストユーザーによって実行できる操作は、ナレッジベースへのアクセス、問い合わせ送信、コミュニティでの投稿の表示、サポート担当者とのチャットに限定されます。自分が送信した問い合わせを表示したり、コミュニティで投稿したりすることはできません。
  • JWT認証あり:JWT方式でのユーザー認証を行う場合、利用者は認証ユーザーとみなされます。認証ユーザーは、ゲストユーザーが行える操作に加えて、送信した問い合わせのステータスの表示、問い合わせへの返信やコメントの追加を行うことができます。また、コミュニティでは、トピック(投稿)の追加やフォロー、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
           どこでもサポートSDKでのJWTによるユーザー認証の設定方法については、こちらの記事をご参照ください。

ユーザー認証を行うには、以下のコードを使用します。
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」は、利用者(ユーザー)がサインインしていない場合にのみ実行される必要があります。そのため、どこでもサポートのアドオンの設定では、利用者(ユーザー)がサインインしているかどうかをはじめに確認する必要があります。確認には、以下のコードを使用します。
boolean isUserLoggedIn = MyApplication.deskInstance.isUserSignedIn();

利用者(ユーザー)のログアウト

利用者(ユーザー)をログアウトさせるには、以下のメソッドを使用します。

MyApplication.deskPortalSDK.logout (new ZDPortalCallback.LogoutCallback() { @Override public void onLogoutSuccess() { //User logged out } @Override public void onException(ZDPortalException e) { } });
このメソッドが実行されると、対象の認証ユーザーはゲストユーザー(匿名ユーザー)として識別されます。


ローカルデータのクリア  


認証ユーザーがどこでもサポートのアドオンからログアウトすると、デバイスに保存されているすべてのデータ(ローカルデータ)は自動的にクリアされます。

ゲストユーザー(匿名ユーザー)のローカルデータもクリアする必要がある場合は、以下のメソッドを使用します。

MyApplication.deskInstance.clearDeskPortalData();

操作画面のカスタマイズ
  

どこでもサポートの操作画面は、必要に応じてカスタマイズできます。

標準のテーマ

操作画面の標準テーマとしては、ライトとダークの2種類が用意されています。


                                                    

テーマのカスタマイズ

(i) テーマの種類のカスタマイズ:

どこでもサポートの操作画面のテーマをカスタマイズするには、以下のコードを使用します。

ZDPortalConfiguration.setThemeType(ZDPThemeType.SYSTEM);

[ZDPThemeType.SYSTEM]:操作画面のテーマは、使用中のOSのテーマと連動します。ライトモード/ダークモードに変更したい場合は、以下のメソッドを使用します。

  •  [ZDPThemeType.Light]: 使用中のOSのテーマに関わらず、ライトテーマを適用します。

  • [ZDPThemeType.Dark]: 使用中のOSのテーマに関わらず、ダークテーマを適用します。

 

(ii) [特定のテーマにおける色のカスタマイズ]:

特定のテーマで、操作画面の背景や要素の色をカスタマイズしたい場合、以下のメソッドを使用します。

 

ZDPTheme theme = new ZDPTheme.Builder(true)
        .setColorPrimary(Color.parseColor("#"))
        .setColorAccent(Color.parseColor("#"))
        .build();
ZDPortalConfiguration.setThemeBuilder(theme);

カスタマイズ可能な要素の属性名は以下のとおりです。

 
                                                      

言語設定の変更

どこでもサポートは、多数の言語に対応しています。利用者の地域に応じた言語を選択することができます。
どこでもサポートのアドオンの言語を設定するには、以下のコードを使用します。
ZDPortalConfiguration.setLanguage("en");
対応言語は以下のとおりです。

言語
ロケールコード
英語(イギリス)
en-GB
英語(アメリカ)
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

自社のアプリが上記のすべての言語には対応していない場合、アプリの対応言語に応じて、どこでもサポートのアドオンの言語を設定することができます。 

どこでもサポートのアドオンの言語を設定するには、「build.gradle」ファイルに以下のコードを挿入します。 
android {
    defaultConfig {
        ...
        resConfigs "ja", "en", "ta"
    }
}
たとえば、上記のコードでは、どこでもサポートの対応言語に日本語、英語、タミル語のみを含め、その他の言語は除外することができます。

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

どこでもサポートでは、画面上に表示するテキストの内容をカスタマイズできます(機能/メニューの表示名や説明、エラーメッセージ、一般情報など)。テキストをカスタマイズするには、以下の手順を実施します。
  1. アプリの「strings.xml」ファイル内に、どこでもサポートの操作画面に関連するキーを追加します(対応しているキーの一覧については、以下の表をご参照ください)。
  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」
問い合わせの送信フォームのタイトルです

通知の有効化

通知機能を有効にすると、サポート担当者がチャットに返信した際に、アプリの利用者に通知が送信されます。
メモ:プッシュ通知の設定は、Zoho Deskのどこでもサポートのアドオンの設定画面で行う必要があります。
チャット、問い合わせに関するプッシュ通知を有効にするには、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」は、通知に表示されるアプリケーションのアイコンです。

問い合わせの自動送信

どこでもサポートでは、利用者に対して手動による問い合わせの送信を許可できます。許可した場合は、アプリ内で特定のエラーなどが発生した場合に、どこでもサポートの機能を通じて自動で問い合わせが送信されるように設定することもできます。たとえば、ファッション通販アプリで利用者が[レディース]画面を読み込めなかった場合に、その情報を踏まえて読み込みの失敗に関する問い合わせが自動で送信されるように設定することができます。これにより、利用者が手動で問い合わせを送信する手間を省くことができます。

問い合わせの自動送信を有効にするには、アプリのコードに以下のメソッドを追加します。
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) {
   }
});

レイアウトのIDを取得するには、以下のメソッドを使用します。

HashMap<String, String> params = new HashMap<>();
params.put("departmentId", departmentId);
ZDPortalAPI.getLayouts(new ZDPortalCallback.LayoutsCallback() {
    @Override
    public void onLayoutsDownloaded(Layouts layouts) {
//layout fetch succeed
    }

    @Override
    public void onException(ZDPortalException e) {
//layot fetch failed
    }
}, params);
部門で設定した商品に関する情報を取得するには、以下のメソッドを使用します。
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);

ナレッジベース

どこでもサポートでナレッジベースや、ナレッジベース内の記事を表示するためのメソッドをご紹介します。
カテゴリーのディープリンク
以下のメソッドを使用すると、ナレッジベースのカテゴリー、セクション/サブセクション、ヘルプ記事の一覧を表示することができます。
ZDPortalKB.showCategoryWithPermalink(activity, permaLink);
  1. 「activity」は、対象のActivityインスタンスです。
  2. 「permalink」は、対象のナレッジベースのカテゴリーのURLです。


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


たとえば、上記の画像では、「/articles/」に続く部分が対象の記事のURLです。

コミュニティ

コミュニティ機能に関する設定や操作のためのメソッドは以下のとおりです。
コミュニティで許可する操作の設定
コミュニティ機能では、トピック(投稿)やコメントの追加/編集/削除など、さまざまな操作を行うことが可能です。
コミュニティ機能で、どのような操作を許可するかを指定するには、以下のメソッドを使用します。

ZDPCommunityConfiguration configuration = new ZDPCommunityConfiguration.Builder()

                .isReplyAllowed(true)

                .isReplyEditAllowed(true)

                .isReplyDeleteAllowed(true)

                .isTopicEditAllowed(true)

                .isTopicDeleteAllowed(true).build();

ZDPortalCommunity.setConfiguration(configuration);
最も評価の高いトピック(投稿)の取得
最も評価の高いトピック(投稿)を取得するには、以下の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) - トピック(投稿)の種類です。指定可能な値は次のとおりです:QUESTIONIDEAANNOUNCEMENTPROBLEMDISCUSSION
  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) - トピック(投稿)の種類です。指定可能な値は次のとおりです:QUESTIONIDEAANNOUNCEMENTPROBLEMDISCUSSION
  3. from(int) - インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  4. limit(int) - 取得するトピック(投稿)の件数です。
  5. includeCount(Boolean) - 取得したトピック(投稿)の件数を表示するかどうかを指定するパラメーターです。

問い合わせ

問い合わせの送信フォームの設定に関するメソッドをご紹介します。
問い合わせの送信フォームの項目を非表示にする
どこでもサポートの問い合わせの送信フォームには、Zoho Deskの問い合わせのレイアウトと同じ項目が表示されます。フォーム内の任意の項目を非表示にするには、「setTicketsFieldsListTobeShown()」メソッドを使用します。

このメソッドでは、項目のリスト(apiNames)を文字列で指定する必要があります。また、どこでもサポートに関連付けられている部門に応じて、「departmentId」キーを指定する必要があります。たとえば、ある特定の部門においてのみどこでもサポートが設定されている場合、「departmentId」キーを指定する必要はありません。どこでもサポートが複数の部門で設定されている場合、「departmentId」キーによって部門を指定する必要があります。

このメソッドを追加すると、問い合わせ送信フォームにはメソッドで指定した項目のみが表示されます。ただし、必須項目に関しては、メソッド内で値を指定しない場合にも表示されますのでご注意ください。
ZDPortalSubmitTicket.setTicketsFieldsListTobeShown(ticketListTobeShown, deptId, layoutId);
  1. ticketListTobeShown - 文字列のリストです(問い合わせ項目のapiNameです)
  2. deptId - 問い合わせの送信フォームに関連付けたい部門のIDです。
  3. layoutId -問い合わせの送信フォームに関連付けたいレイアウトのIDです。

問い合わせの送信フォームの必須項目を非表示にする
問い合わせの送信フォームの必須項目を非表示にしたい場合は、非表示にしたい必須項目に事前に値を入力しておく必要があります。必須項目に事前に値を入力にするには、「preFillTicketFields()」メソッドを使用します。

「preFillTicketFields()」メソッドは、自動で作成されたIDやデバイスのOSのバージョンといった値を項目に事前入力したい場合に役立ちます。このメソッドを使用するには、「PreFillTicketField」オブジェクトのリストを指定する必要があります。また、どこでもサポートに関連付けられている部門に応じて「departmentId」キーを指定する必要があります。「setTicketsFieldsListTobeShown()」メソッドの場合と同様に、どこでもサポートの設定で、ある特定の部門のみが関連付けられている場合は、「departmentId」 キーを指定する必要はありません。どこでもサポートが複数の部門で設定されている場合は、「departmentId」によって部門を指定して、問い合わせの送信フォームの部門を指定する必要があります。
ZDPortalSubmitTicket.preFillTicketFields(preFillTicketFields, deptId, layoutId);
  1. preFillTicketFields - 「PreFillTicketField」オブジェクトのリストです。
  2. deptId - 問い合わせの送信フォームに関連付けたい部門のIDです。
  3. layoutId - 問い合わせの送信フォームに関連付けたいレイアウトのIDです。
「PreFillTicketField」オブジェクトには、主に3種類の属性があります。
  1. fieldApiName(文字列) - 問い合わせの項目の「apiName」です。各項目の「apiName」を取得するには、「getTicketFields()」メソッドを使用します。
  2. fieldValue(オブジェクト)
    1. 複数選択項目の場合、選択肢の値を文字列のリストとして指定します。
    2. 選択リスト項目の場合、選択肢に含まれるいずれかの値を指定します。
    3. 日付項目の場合、文字列の値を「dd-MM-yyyy」形式で指定します。
    4. 日時項目の場合、文字列の値を「dd-MM-yyyy HH:mm a」形式で指定します。
    5. 真偽値の項目の場合、真偽値を指定します。
    6. 他の項目の場合、文字列の値を指定します。
    7. こちらで指定した値が、項目で設定されている文字数や小数点の上限内になるようにしてください。
  3. isEditable(真偽値) - 対象の項目が編集可能かどうかを指定するキーです。
メモ:コードのサンプルは、こちらをご参照ください。
問い合わせに関して許可する操作の設定
アプリの利用者は、問い合わせに関して、サポート担当者への返信、コメント、完了などのさまざまな操作を行うことができます。
問い合わせの送信画面において、どのような操作を許可するかを指定するには、以下のメソッドを使用します。
ZDPTicketConfiguration configuration = new ZDPTicketConfiguration.Builder()
        .isReplyAllowed(true)
        .isCommentAllowed(true)
        .isCommentEditAllowed(true)
        .isTicketUpdateAllowed(true)
        .build();

ZDPortalTickets.setConfiguration(configuration);

その他
どこでもサポートにおけるその他の操作(ユーザー情報の更新やログの有効化)に関するメソッドは以下のとおりです。
ユーザー情報の更新
Zoho Deskに追加されたユーザーの情報を更新するには、以下の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」

ログの有効化

どこでもサポートの利用中に発生したエラーの解決には、ログが役立ちます。
ログを有効にするには、以下のコードを追加します。
ZohoDeskPortalSDK.Logger.enableLogs();
ログを有効にすると、コンソールでエラーの詳細を確認し、必要な処理を行うことができます。
メモ:デバッグの情報は、ログ出力機能(Logcat)に保存されます。リリースビルド内には「enableLogs()」が存在しないようにしてください。

バージョン2.xから3.0への移行

 

 

操作画面のカスタマイズ

 

 

ZDPortalConfiguration.setThemeResource(themeId);

ZDPortalConfiguration.setThemeType(ZDPThemeType.LIGHT);

ZDPortalConfiguration.setThemeBuilder(new ZDPTheme.Builder(false)

    .setColorPrimary(getResources().getColor(R.color.colorPrimary))

    .setColorPrimaryDark(getResources().getColor(R.color.colorPrimaryDark))

.build());

 


 

コミュニティで許可する操作の設定

 

 

ZDPCommunityConfiguration communityConfiguration = new ZDPCommunityConfiguration(); communityConfiguration.setTopicEditAllowed(false);

 

ZDPortalCommunity.setConfiguration(communityConfiguration);

ZDPCommunityConfiguration communityConfiguration = new ZDPCommunityConfiguration.Builder().isTopicEditAllowed(false).build();

        

ZDPortalCommunity.setConfiguration(communityConfiguration);

 

 

問い合わせに関して許可する操作の設定

 

 

ZDPTicketConfiguration ticketConfiguration = new ZDPTicketConfiguration();

ticketConfiguration.setReplyAllowed(false);

 

 

ZDPortalTickets.setConfiguration(ticketConfiguration);

ZDPTicketConfiguration ticketConfiguration = new ZDPTicketConfiguration.Builder().isReplyAllowed(false).build();

        

 

ZDPortalTickets.setConfiguration(ticketConfiguration);

 


    Zoho CRM 管理者向けトレーニング

    「導入したばかりで基本操作や設定に不安がある」、「短期間で集中的に運用開始できる状態にしたい」、「運用を開始しているが再度学び直したい」 といった課題を抱えられているユーザーさまに向けた少人数制のオンライントレーニングです。

    日々の営業活動を効率的に管理し、導入効果を高めるための方法を学びましょう。

    Zoho CRM Training



              Zoho WorkDrive Resources



                Zoho Desk Resources

                • Desk Community Learning Series


                • Digest


                • Functions


                • Meetups


                • Kbase


                • Resources


                • Glossary


                • Desk Marketplace


                • MVP Corner


                • Word of the Day









                                • Related Articles

                                • Flutter向けどこでもサポートSDKのバージョン情報

                                  バージョン1.0.2 • Android SDKの最新バージョン(バージョン14/ベータ版)と連携しました。 バージョン1.0.1 • どこでもサポートSDK(ソフトウェア開発キット)の初期化時に発生する問題を解決しました。
                                • iOS向けどこでもサポートSDKのバージョン情報

                                  3.0.5
 • どこでもサポートSDKでブランド情報を反映したチャット画面を読み込むにあたって、新しい方式を採用しました。詳細については、該当のヘルプをご参照ください。 • 最新のZoho SalesIQ SDK(バージョン8.0.2)と連携しました。 3.0.4
 • 自動ガイドボットSDKの最新バージョンと連携しました。 3.0.3
 • 問い合わせの追加フォーム、問い合わせの詳細画面に関して、システムの項目を地域に合わせて設定できるようになりました。 • ...
                                • Android向けどこでもサポートSDKのバージョン情報

                                  3.0_BETA-13(ベータ版) • 問い合わせの追加フォームと問い合わせの詳細ページで、システムの項目名を翻訳できるようになりました。 3.0_BETA-12(ベータ版) • 添付ファイルのアップロード、ダウンロード、共有の各操作を無効にできるようになりました。詳細については、こちらをご参照ください。 3.0_BETA-11(ベータ版)
 • ...
                                • React Native向けどこでもサポートSDKのバージョン情報

                                  バージョン1.2.4 • チャット画面において、匿名ユーザー(未認証ユーザー)の詳細情報の表示に関する設定を行えるようになりました。 匿名ユーザー(未認証ユーザー)とは、アカウントにログインしていないユーザーや、アカウントを作成していないユーザーを表します。サポート担当者の画面には、これらのユーザーに関する詳細情報は表示されません。Zoho ...
                                • PageSense連携による目標指標の管理

                                  ヘルプセンターがカスタマーサポート業務でどのように有効に機能しているか把握することは、ページへの訪問者数などの指標を測定することと同様にとても重要です。たとえば、フォームの送信、ボタンのクリック回数、アカウントの作成など、ヘルプセンターでの行われる訪問者の操作を把握することで、顧客のニーズを満たせているかどうかを把握できます。ヘルプセンターとZoho PageSenseを連携することで、それぞれの指標を目標として設定し、管理することができます。 ...

                                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.