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

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

はじめに

iOS向けのどこでもサポートSDK(ソフトウェア開発キット)を活用すると、iOSアプリ内に、利用者が手軽に利用できるサポート機能を埋め込むことができますこれにより、アプリの利用者はアプリ内から以下の機能を利用できるようになります。
  • サポート窓口への問い合わせ(問い合わせの送信、サポート担当者とのチャット)
  • ナレッジベースの参照(製品やサービスに関するヘルプやよくある質問)
  • コミュニティの利用(他の利用者とのやりとり)
この機能を活用すれば、アプリの利用者はヘルプセンター(Zoho Deskを通じて提供される顧客向けのポータル)にアクセスし直さなくても、アプリ内ですぐにヘルプ記事を参照したり問い合わせを送信したりできるようになるため、顧客満足度の向上が期待できます。

なお、どこでもサポートのサンプル用のiOSアプリは、こちらからインストールできます。インストールすると、どこでもサポートを搭載したアプリをiPhoneやiPadで実際に使用してみることができます。 
どこでもサポートのSDK(開発キット)は、iOS 11.0以降のバージョンに対応しています。
現在バージョン2.1.2.2以前のどこでもサポートのSDKを利用している場合、バージョン3.0の機能を利用するには既存のコードを移行する必要があります。コードの移行手順については、この記事の「バージョン2.xから3.0への移行」のセクションをご参照ください。

  

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

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



  3. [アドオンの詳細]で、以下の内容を設定します。
    1. [名前]:どこでもサポートのアドオンの名前です。この名前は参照用です。アプリの操作画面上には表示されません。
    2. [有効]:どこでもサポートのアドオンを有効にする部門を選択します。
    3. [チャット]:切り替えボタンをクリックすると、チャット機能の状態(有効/無効)を切り替えることができます。
      メモ:チャット機能には、ポータルでのチャット機能の設定内容が反映されます。そのため、チャット機能の設定を変更するには、画面右上の設定アイコンをクリックし、[経路]の欄にある[チャット]をクリックします。
    4. [Zia]:  Zoho DeskのZia(ZohoのAIアシスタント)機能を有効にすると、顧客がモバイルアプリからZiaの案内に従って必要な情報を得ることができます。たとえば、質問を送信すると、対応するヘルプやよくある質問の記事(ナレッジベース)の内容が自動で表示されます。Zia機能を有効にするには、切り替えボタンをクリックします。
    5. [自動ガイドボット]:自動ガイドボットは、顧客が、担当者からのサポートを受けずに、自力で問題を解決するのに役立つ機能です。自動応答によるやりとりを通じて、顧客の求めている内容を絞り込みながら、適切な解決策や手続きを提示できます。提供には、チャットのフロー(流れ)の事前設定が必要です。切り替えボタンをクリックすると、自動ガイドボット機能の状態(有効/無効)を切り替えることができます。
      有効にしたら、使用したい自動ガイドボットのフローを選択する必要があります。関連情報:自動ガイドボット
      メモ:Ziaと自動ガイドボットの機能は、両方を有効にすることも可能です。

    6. [バンドルID]:[iOS]の項目にiOSアプリのバンドルIDを入力します。バンドルIDを確認するには、XCodeで対象のプロジェクトのターゲットを開き、[General](一般)タブに移動します。
      メモ:チャット機能を有効にしたり、プッシュ通知を送信したりするには、バンドルIDが必須です。
    7. プッシュ通知:切り替えボタンをクリックすると、プッシュ通知の状態(有効/無効)を切り替えることができます。詳細については、この記事内の「通知の有効化」セクションをご参照ください。
      メモ:通知を有効にするには、JWT方式でのユーザー認証が必須となります。匿名ユーザーに対して、問い合わせに関するプッシュ通知を送信することはできません。
    8. [認証方法]:このアドオンにおけるユーザーの認証方法を設定します。
      1. JWT認証なし:ユーザー認証を行わない場合、利用者はゲストユーザー(匿名ユーザー)としてみなされます。ゲストユーザーによって実行できる操作は、ナレッジベースへのアクセス、問い合わせ送信、コミュニティでの投稿の表示、サポート担当者とのチャットに限定されます。自分が送信した問い合わせを表示したり、コミュニティで投稿したりすることはできません。
      2. JWT認証あり:JWT方式でのユーザー認証を行う場合、利用者は認証ユーザーとみなされます。認証ユーザーは、ゲストユーザーが行える操作に加えて、送信した問い合わせのステータスの表示、問い合わせへの返信やコメントの追加を行うことができます。また、コミュニティでは、トピック(投稿)の追加やフォロー、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
  4. [保存する]をクリックします。



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

どこでもサポートのSDKとアプリとの連携

次に、Mavenを使用して、どこでもサポートSDKとiOSアプリを連携します。
連携処理は、以下のいずれかの方法によって可能です。
(i)CocoaPodsを利用した連携
iOSアプリのライブラリ管理ツールであるCocoaPodsを利用します。CocoaPodsを利用すると、外部サービスの機能を自分のプロジェクトに追加することができます。 
CocoaPodsのインストール方法については、こちらのページをご参照ください。

どこでもサポートとアプリを連携するには、まずCocoaPodsでプロジェクトのPodfileを作成する必要があります。Podfileをまだ作成していない場合は、以下の手順で作成できます。
  1. ターミナルで、プロジェクトの最上位のフォルダーに移動します(「xcodeproj」ファイルが含まれるフォルダーです)。
  2. コマンド「$ pod init」を実行します。
  3. 次に、コマンド「open -a Xcode Podfile」を実行して、XcodeのPodfileを開きます。ファイルの内容が以下のように表示されます。
    # Uncomment this line to define a global platform for your project # platform :ios, '9.0' # Uncomment this line if you're using Swift # use_frameworks! target 'My Sample App' do end 
  4. ライブラリの作成にSwiftを利用している場合は、「use frameworks!」の行頭にあるハッシュ記号(#)を消してください。
次に、Zoho DeskのどこでもサポートのSDKをPodfileに追加し、プロジェクトにSDKをインストールします。手順は以下のとおりです。
  1. はじめに、該当のSDKをPodfileに追加します。
    • どこでもサポートの簡易版のSDK(問い合わせ、ナレッジベース、コミュニティ)を連携するには、以下のコードをPodfileのdoブロックに追加します。
      target 'My SampApp' do pod 'ZohoDeskPortalCore' end 
    • どこでもサポートの完全版のSDK(問い合わせ、ナレッジベース、コミュニティ、チャット)を連携するには、以下のコードをPodfileのdoブロックに追加します。
      target 'My Sample App' do pod 'ZohoDeskPortalServices' end 
  2. Podfileを保存します。
  3. ターミナルでコマンド「$ pod install」を実行します。

CocoaPodsのインストール前は、「xcodeproj」としてファイルが開きます。

インストール後は、「xcodeproj」ファイルを閉じて、「xcworkspace」ファイルを開きます。

 

CocoaPodsの利用方法に関する詳細は、こちらのページをご参照ください。

(ii)手動連携
どこでもサポートのSDKとアプリは手動で連携することもできます。手順は、以下のとおりです。
  1. はじめに、以下のいずれかのSDKをダウンロードします。
    • どこでもサポートの簡易版のSDK(問い合わせ、ナレッジベース、コミュニティ)の場合は、こちらをクリックします。
    • どこでもサポートの完全版のSDK(問い合わせ、ナレッジベース、コミュニティ、自動ガイドボット、チャット)の場合は、こちらをクリックします。
  2. ダウンロードしたzipファイルを解凍します。次に、拡張子が「.XCFramework」である対象のフレームワークファイルを、Xcodeのプロジェクトの「Frameworks, Libraries, and Embedded Content」のセクションにドラッグ&ドロップします。
メモ:どこでもサポートの簡易版のSDKを連携する場合は、アプリの「info.plist」ファイルに「NSPhotoLibraryUsageDescription」「NSCameraUsageDescription」「NSMicrophoneUsageDescription」の各キーを追加してください。
どこでもサポートの完全版のSDKを連携する場合は、上記のキーに加えて、「NSBluetoothPeripheralUsageDescription」キーも追加してください(チャット機能の利用にはBluetoothに関する権限が必要であるため、該当のキーは忘れずに追加してください)。「info.plist」ファイルに以上のキーが追加されていない場合、アプリを起動してもアプリは正常に動作しません。また、関連するビューコントローラーが存在する場合、App Storeによる認証に失敗する可能性があります。

アプリ内のSDKの初期設定

次に、アプリでどこでもサポートSDKの初期設定を行います。
この手順では、以下の3つのキーが必須です。
  • 組織ID(orgID)
  • アプリID(appID)
  • データセンター(datacenterValue)
これらのキーの値は、Zoho Deskのどこでもサポートのアドオンの設定画面にあるコード欄に表示されます。
アプリでSDKの初期設定を行うには、以下の手順を実施します。
  1. 「ZohoDeskPortalSDK」内のフレームワークを、プロジェクトの「AppDelegate」ファイル内にインポートします。
    Swift
    import ZohoDeskPortalAPIKit 
    Objective-C
    @import ZohoDeskPortalAPIKit; 
  2. 以下の初期化コードを「didFinishLaunchingWithOptions」と引数(入力値)として持つアプリケーションメソッド内に貼り付けます。
    Swift
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)-> Bool { ZohoDeskPortalSDK.initialize(orgID:<#String#>, appID:<#String#>, dataCenter: <#ZDPDataCenter#>) return true } 
    Objective-C
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [ZohoDeskPortalSDK initializeWithOrgID:<#NSString#>appID:<#NSString#>dataCenter:< #ZDPDataCenter#>]; return YES; }
メモ:
各データセンターに対応する値は、以下のとおりです。
中国(CN) - ZDPDataCenter.CN
EU地域(EU) - ZDPDataCenter.EU
アメリカ(US) - ZDPDataCenter.US
インド(IN) - ZDPDataCenter.IN
オーストラリア(AU) - ZDPDataCenter.AU

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

こちらのセクションでは、どこでもサポートで各機能を表示するためのメソッドをご紹介します。どこでもサポートでは、Zoho Deskでも有効に設定されている機能のみを表示できます。また、利用できる機能は、利用中のプランによって異なります。
ダッシュボード
アプリの利用者は、ダッシュボードの画面を通じて、どこでもサポートの機能(メニュー)にアクセスすることができます。利用者は、このダッシュボードでボタンやアイコンをクリックすることで、ナレッジベース、コミュニティ、問い合わせの送信フォーム、自分の問い合わせの一覧、チャットにアクセスすることができます。
メモ:どこでもサポートの完全版のSDKでチャット機能を表示したい場合、Zoho Deskの設定ページでチャット機能が有効になっている必要があります。
ダッシュボードを表示するには、以下のコードをいずれかのメソッドに追加します。
Swift
import ZohoDeskPortalCore ...ZDPortalHome.show() 
Objective-C
@import ZohoDeskPortalCore; ...[ZDPortalHome showWithConfiguration:nil andTitle:nil]; 
メモ
  • 特定のサポート機能(メニュー)を表示するには、前提として、Zoho Deskで対象の機能が有効になっている必要があります。
  • 特定の機能をダッシュボードには表示せずに、アプリ内の別の場所から起動することもできます。
  • また、ダッシュボードそのものを表示せずに、各サポート機能を個別に起動することも可能です。

  
                                                                                                                      
ダッシュボードの設定の上書き(オーバーライド)
(i) ダッシュボード上に表示する機能を指定するには:
ダッシュボードの設定では、ダッシュボードにどの機能を表示するかを指定できます。初期設定では、すべての機能が表示されます。特定の機能を無効にするには、以下のコード内の「true」の値を「false」に変更します。
ダッシュボードの設定を上書き(オーバーライド)するには、以下のコードを使用します。
Swift
let config = ZDPHomeConfiguration()
config.enableHelpCenter = true
config.enableCommunity = true
config.enableCreateTicket = true
config.enableMyTicket = true
config.enableAddTopic = true
config.showChat = true
config.showChatBot = true
ZDPortalHome.updateConfiguration(with: config)
ZDPortalHome.show()
Objective-C
ZDPHomeConfiguration * config = [[ZDPHomeConfiguration alloc]init]; 
config.enableHelpCenter = YES;
config.enableCommunity = YES;
config.enableCreateTicket = YES;
config.enableMyTicket = YES;
config.enableAddTopic = YES;
config.showChat = YES;
config.showChatBot = YES;
[ZDPortalHome updateConfigurationWith:config];
[ZDPortalHome showTitle:<#(NSString * _Nullable)#>];
 (ii) ダッシュボードを表示せずに各機能の画面を個別に表示するには:
アプリ内でダッシュボードを表示せずに、個別の機能のみを表示することも可能です。
各機能の画面を個別に表示するには、以下のメソッドを使用します。
チャット
チャット画面では、アプリの利用者がサポート担当者とチャットのやりとりを行うことができます。
チャット画面を表示するには、以下のメソッドを使用します。
Swift
import ZohoDeskPortalChat ...ZDPortalChat.show() 
Objective-C
@import ZohoDeskPortalChat; ...[ZDPortalChat show]; 
ナレッジベース(ヘルプやよくある質問)
ナレッジベース機能では、アプリの利用者がナレッジベース内のヘルプ記事にアクセスすることができます。
ナレッジベースに関するメソッドの呼び出しには、以下のimport文を使用します。
Swift
import ZohoDeskPortalKB 
Objective-C
@import ZohoDeskPortalKB; 
ナレッジベースの画面を表示するには、以下のメソッドを使用します。
Swift
ZDPortakKB.show() 
Objective-C
[ZDPortalKB showWithTitle:<#NSString#>]; 
リンクを利用してナレッジベースのカテゴリーを表示するには、以下のメソッドを使用します。
Swift
ZDPortalKB.showCategory(withPermalink: <#String#>) 
Objective-C
[ZDPortalKB showCategoryWithPermalink:<#NSString#>withTitle:<#NSString#>];
リンクには、対象のナレッジベースのカテゴリーのURLを指定します。

たとえば、上記の画像のURLでは、「/kb/」に続く部分が対象のカテゴリーのリンクです。リンクのURLには、カテゴリー、セクション/サブセクションのURLとして、以上の部分を指定できます。
リンクを利用して記事を直接表示するには、以下のメソッドを使用します。
Swift
ZDPortalKB.showArticle(withPermalink : <#String#>) 
Objective-C
ZDPortalKB showArticleWithPermalink:<#NSString#>withTitle:<#NSString#>]; 
リンクには、対象のヘルプ記事のURLを指定します。

たとえば、上記の画像では、「/articles/」に続く部分が対象の記事のURLです。
問い合わせ
問い合わせに関するメソッドの呼び出しには、以下のimport文を使用します。
Swift
import ZohoDeskPortalTicket 
Objective-C
@import ZohoDeskPortalTicket; 
問い合わせの送信
問い合わせの送信画面では、アプリの利用者が質問や要望を問い合わせとして送信できます。
問い合わせの送信画面を表示するには、以下のメソッドを使用します。
Swift
ZDPortalSubmitTicket.show() 
Objective-C
[ZDPortalSubmitTicket showWithTitle:<#NSString#>]; 
問い合わせの送信処理の記録
問い合わせの送信処理が行われたときにアプリ側でその情報を把握するには、以下のメソッドを使用します。このメソッドでは、問い合わせ送信後に実行する処理(イベントのコールバック処理)を設定できます。
Swift
ZDPortalSubmitTicket.showAddTicketForm(completion: { (ticket) in // 「ticket」のパラメーターには、作成した問い合わせの詳細情報が入ります// こちらに実行処理を記述します}, onError: { error in // 問い合わせの作成エラー }) 
Objective-C
[ZDPortalSubmitTicket showAddTicketFormWithTitle: <#(NSString * _Nullable)#> navigationMode:<#(enum ZDPNavigationMode)#> completion:^(ZDPTicket * ticket) { // 「ticket」のパラメーターには、作成した問い合わせの詳細情報が入ります// こちらに各自でコードによる処理を記載します} onError:^(NSError * error) { // 問い合わせの作成エラー }]; 
問い合わせの送信画面を通じて問い合わせが送信されると、コールバックオブジェクトによって、問い合わせに関する情報がアプリに送信されます。
メモ:認証済みユーザーによって問い合わせが送信されると、問い合わせのすべての詳細情報がアプリに送信されます。ゲストユーザーによって問い合わせが送信されると、問い合わせ番号のみが送信されます。
自分の問い合わせ
自分の問い合わせの画面では、アプリの利用者が、自分自身が送信した問い合わせを確認したり編集したりできるようになります。
自分の問い合わせの画面を表示するには、以下のメソッドを使用します。
Swift
ZDPortalTicket.show()
Objective-C
[ZDPortalTicket showWithTitle:<#NSString#>]; 
コミュニティ
コミュニティの画面では、アプリの利用者が、自社が提供する商品やサービスに関するフォーラム(掲示板)にアクセスし、他の利用者やサポート担当者と交流できます。
コミュニティ機能に関するメソッドの呼び出しには、以下のimport文を使用します。
Swift
import ZohoDeskPortalCommunity 
Objective-C
@import ZohoDeskPortalCommunity; 
コミュニティの画面を表示するには、以下のメソッドを使用します。
Swift
ZDPortalCommunity.show() 
Objective-C
[ZDPortalCommunity show]; 
特定のトピック(投稿)を表示するには、以下のメソッドを使用します。
Swift
ZDPortalCommunity.showTopic(withID: <#String#>) 
Objective-C
[ZDPortalCommunity showTopicWithID:<#NSString#>]; 

自動ガイドボット
自動ガイドボットは、顧客が、担当者からのサポートを受けずに、自力で問題を解決するのに役立つ機能です。自動応答によるやりとりを通じて、顧客の求めている内容を絞り込みながら、適切な解決策や手続きを提示できます。提供には、チャットのフロー(流れ)の事前設定が必要です。
自動ガイドボットに関するすメソッドの呼び出しには、以下のimport文を使用します。
Swift
import ZohoDeskPortalLiveChat
Objective-C
@import ZohoDeskPortalLiveChat;
自動ガイドボットの画面を表示するには、以下のメソッドを使用します。
Swift
ZDPortalLiveChat.show()
Objective-C
[ZDPortalLiveChat show];
自動ガイドボットやZiaの機能を有効にすると、チャットの画面は以下のように表示されます。
   
  
                                                 

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

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

アプリの利用者が、自分自身の送信した問い合わせにアクセスするには、ユーザーIDによるサインインが必要です。サインインすると、認証ユーザー限定の機能を利用できます。認証方式には、JWT(ジョット:JSON Web Token)を利用できます。
アプリの利用者は、JWT認証の有無によって、匿名ユーザーと認証ユーザーに分類されます。
  • JWT認証なし:JWT方式でのユーザー認証を行わない場合、利用者はゲストユーザー(匿名ユーザー)とみなされます。ゲストユーザーによって実行できる操作は、ナレッジベースへのアクセス、問い合わせ送信、コミュニティでの投稿の表示、サポート担当者とのチャットに限定されます。自分が送信した問い合わせを表示したり、コミュニティで投稿したりすることはできません。
  • JWT認証あり:JWT方式でのユーザー認証を行う場合、利用者は認証ユーザーとみなされます。認証ユーザーは、ゲストユーザーが行える操作に加えて、送信した問い合わせのステータスの表示、問い合わせへの返信やコメントの追加を行うことができます。また、コミュニティでは、トピック(投稿)の追加やフォロー、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
ユーザー認証を行うには、以下のコードを使用します。ユーザー認証に関連するメソッドの呼び出しには、以下のimport文を使用します。
Swift
import ZohoDeskPortalAPIKit 
Objective-C
@import ZohoDeskPortalAPIKit; 
Swift
if !ZohoDeskPortalSDK.isUserLoggedIn { ZohoDeskPortalSDK.login(withUserToken: String) { (isSuccess: Bool) in // 「isSuccess」ではサインインが成功したかどうかを表示します // エラーが発生した場合はログに記録されます } }else { // ユーザーがすでにサインインしている場合 }
Objective-C
iif (!ZohoDeskPortalSDK.isUserLoggedIn) { [ZohoDeskPortalSDK loginWithUserToken: <#(NSString * _Nonnull)#> onCompletion:^(BOOL isSuccess) { // 「isSuccess」ではサインインが成功したかどうかを表示します // エラーが発生した場合は記録されます }]; }else { // ユーザーがすでにサインインしている場合 } 
「ZohoDeskPortalSDK.isUserLoggedIn」は、ユーザーが現在サインインしているかどうかを識別するための真偽値です。
利用者(ユーザー)のログアウト
利用者(ユーザー)をログアウトさせるには、以下のメソッドを使用します。
Swift
ZohoDeskPortalSDK.logout { (isSuccess: Bool ) in // 「isSuccess」ではサインインが成功したかどうかを表示します // エラーが発生した場合は記録されます } 
Objective-C
[ZohoDeskPortalSDK logoutOnCompletion:^(BOOL isSuccess) { // 「isSuccess」ではサインインが成功したかどうかを表示します // エラーが発生した場合は記録されます }];
このメソッドが実行されると、対象の認証ユーザーはゲストユーザー(匿名ユーザー)として識別されます。

ローカルデータのクリア

認証ユーザーがどこでもサポートのアドオンからログアウトすると、デバイスに保存されているすべてのデータ(ローカルデータ)は自動的にクリアされます。
ゲストユーザー(匿名ユーザー)のローカルデータもクリアする必要がある場合は、以下のメソッドを使用します。
Swift
ZohoDeskPortalSDK.clearAllLocalData() 
Objective-C
[ZohoDeskPortalSDK clearAllLocalData];

操作画面のカスタマイズ

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

テーマの変更に関するメソッドの呼び出しには、以下のimport文を使用します。
Swift
import ZohoDeskPortalConfiguration 
Objective-C
@import ZohoDeskPortalConfiguration; 

ホワイトテーマ(初期設定)を適用するメソッド
Swift
ZD
ThemeManager.setTheme(type: .white) 
Objective-C
[ZDPThemeManager setTheme:ZDPThemeTypeWhite]; 
ダークテーマを適用するメソッド
Swift
ZDPThemeManager.setTheme(type: .dark) 
Objective-C
[ZDPThemeManager setTheme:ZDPThemeTypeDark]; 
iOSのバージョン13以降では、どこでもサポートのテーマをデバイスのテーマと連動させることが可能です。どこでもサポートのテーマにデバイスと同じテーマを適用するには、以下のメソッドを使用します。
Swift
ZDPThemeManager.setTheme(type: .system) 
Objective-C
[ZDPThemeManager setTheme:ZDPThemeTypeSystem]; 
メモ
- 「ZDPThemeType.system」は、iOSのバージョン13以降でのみ利用できます。
- 初期設定のテーマには、iOS 13以降の場合、OSのテーマが、iOS 13以前の場合、ライトテーマが適用されます。
テーマのカスタマイズ
テーマは、初期設定のテーマから必要に応じて変更できます。また、特定のテーマを設定した上で、操作画面の背景や要素の色をカスタマイズすることも可能です。
ライトテーマを適用するには、以下のメソッドを使用します。
Swift
ZDPThemeManager.updateLightTheme(theme: <#ZDPThemeProtocol#>) 
Objective-C
[ZDPThemeManager updateLightThemeWithTheme:<#ZDPThemeProtocol#>]; 
ダークテーマを適用するには、以下のメソッドを使用します。
Swift
ZDPThemeManager.updateDarkTheme(theme: <#ZDPThemeProtocol#>) 
Objective-C
[ZDPThemeManager updateDarkThemeWithTheme:<#ZDPThemeProtocol#>]; 
「ZDPThemeProtocol」には、どこでもサポートで使用したい色の属性のリストを指定できます(例:「primaryTextColor」「navigationBarTextColor」)。なお、プロトコル内の属性はすべて任意です。独自のクラスを作成した上で、対象のクラスの属性を実装し、「updateLightTheme」メソッドや「updateDarkTheme」メソッドの「ZDPThemeProtocol」内に複数指定できます。これにより、標準のテーマの色をクラスで設定した色に変更することができます。
メモ:テーマの色をカスタマイズする場合も、テーマの種類の設定が必要です。どこでもサポートのテーマには、設定に従って、ダークテーマまたはライトテーマのいずれかが適用されます。
                                                                  

カスタムフォントの利用
操作画面のフォントには、通常、あらかじめ用意されている標準のフォントが使用されます。また、これとは別に、カスタムフォント(独自のフォント)を利用することもできます。
操作画面上にカスタムフォントを表示するには、まず、以下の手順を実行します。
  1. プロジェクトにフォントを追加します。
  2. アプリの「info.plist」ファイルを編集して、「Fonts provided by application」キーにカスタムフォントを追加します。
  3. このキーには、どこでもサポートの操作画面で使用するすべてのフォントの名前が表示されます。
プロジェクトにフォントを追加したら、操作画面上のテキストが対象のフォントによって表示されるように設定を行う必要があります。
操作画面でカスタムフォントを表示するには、アプリのコードに以下のメソッドを追加します。
Swift
ZDPortalConfiguration.customFontName = <#String#> 
Objective-C
ZDPortalConfiguration.customFontName = <#NSString#>; 
メモ:カスタムフォントを使用しない場合は、通常、OSのフォントが使用されます。バージョン2.0からはフォントのサイズを変更できるようになりました。また、カスタムフォントは、iOS 11以降にのみ対応しています。

言語設定の変更

どこでもサポートは、多数の言語に対応しています。利用者の地域に応じた言語を選択することができます。
どこでもサポートのアドオンの言語を設定するには、以下のコードを使用します。ただし、ファイルサイズの制約上、SDKには初期設定で13言語のみが含まれています。
すべての対応言語は以下のとおりです。

言語

言語コード

英語(イギリス)

en-GB

英語(アメリカ)

en

ドイツ語

de

スペイン語

es

カタロニア語

ca-ES

フランス語

fr

フランス語(カナダ)

fr-CA

イタリア語

it

ロシア語

ru

中国語(繁体字)

zh-Hant

中国語(簡体字)

zh-Hans

トルコ語

tr

オランダ語

nl

デンマーク語

da

ポルトガル語(ポルトガル)

pt-PT

日本語

ja

スウェーデン語

sv

ポーランド語

pl

アラビア語

ar

ヘブライ語

he

アフリカーンス語

af

チェコ語

cz

ブルガリア語

bg

フィンランド語

fi

ギリシャ語

el

ハンガリー語

hu

インドネシア語

id

ノルウェー語(ブークモール)

nb

ルーマニア語

ro

タイ語


ウクライナ語

uk

ベトナム語

vi

ウルドゥー語

ur

ヒンディー語

hi

テルグ語

te

カンナダ語

kn

タミル語

ta

マラーティー語

mr

韓国語

ko

ペルシャ語

fa

ベンガル語

bn

グジャラート語

gu

マレー語

ms

マラヤーラム語

ml

スロバキア語

sk

クロアチア語

時間

スロベニア語

sl


どこでもサポートのアドオンの言語を設定するには、以下のコードを使用します。メソッドには、上記の表で示される言語コードを指定します。たとえば、英語の場合「en」を指定します。

Swift
ZDPortalConfiguration.setSDKLanguage(<#String#>) 
Objective-C
[ZDPortalConfiguration setSDKLanguage:<#NSString#>]; 
SDKに最初から含まれている13の言語は以下のとおりです。

言語
言語コード
英語
en
ドイツ語
de
スペイン語
es
フランス語
fr
イタリア語
it
ロシア語
ru
中国語(繁体字)   
zh-Hant
中国語(簡体字) 
zh-Hans
トルコ語
tr
オランダ語
nl
デンマーク語
da
ポルトガル語(ポルトガル)  
pt-PT
日本語
ja

以上の表(13言語)には含まれていない言語を追加したい場合、以下の手順を実行します。
  1. 「ASAPStrings.bundle」ファイルをダウンロードします。
  2. 不要な言語の「lproj」ファイルを削除します。
  3. プロジェクトにBUNDLEファイルを追加します。

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

どこでもサポートでは、画面上に表示するテキストの内容をカスタマイズできます(機能/メニューの表示名や説明、エラーメッセージ、一般情報など)。テキストをカスタマイズするには、以下の手順を実施します。
  1. Xcodeで対象のアプリのプロジェクトに「ASAPStrings.bundle」を作成します。このバンドルのパスは、「Application-bundle/ASAPStrings.bundle」です。
  2. ファイル名を言語コードにした「lproj」ファイルを作成し、必要に応じてキーの値を設定します(以下の表内のキーを含む、ファイル内のすべてのキーの値をカスタマイズできます)。
  3. 作成した「lproj」ファイルを「ASAPStrings.bundle」に追加します。
言語が複数ある場合は、言語ごとに個別の「lproj」ファイルを作成し、上記の手順2、手順3を行います。

「ASAPLocalizable.strings」ファイル内にあらかじめ用意されている主なキーは以下のとおりです。

キー
初期設定のテキスト
説明
DeskPortal.Dashboard.Heading
「Welcome」
ダッシュボードに表示されるテキストです
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
「Check your internet connection」
接続が切断された際に表示されるエラーメッセージです
DeskPortal.Dashboard.livechat.title
「Live Chat」
ダッシュボード上に表示されるチャット機能のタイトルです
DeskPortal.Helpcenter.category.subheading
「Section」
ナレッジベース内の記事のカテゴリーが1件のみ登録されている場合に表示されるテキストです
DeskPortal.Helpcenter.categories.subheading
「Sections」
ナレッジベース内の記事のカテゴリーが複数登録されている場合に表示されるテキストです
DeskPortal.Helpcenter.article.detail.title
「FAQs」
各記事の画面のタイトルです
DeskPortal.Addticket.title
「Add Ticket」
問い合わせの送信フォームのタイトルです
DeskPortal.Myticket.comment.option.title
「Comment Actions」
利用者が問い合わせにコメントを追加した際に表示される操作メニューのタイトルです
DeskPortal.Myticket.option.editcomment
「Edit Comment」
利用者のコメントを利用者自身で編集するためのメニューのテキストです
DeskPortal.Helpcenter.article.subheading
「Article」
ナレッジベースのカテゴリーに記事が1件のみ登録されている場合に表示されるテキストです
DeskPortal.Helpcenter.articles.subheading
「Articles」
ナレッジベースのカテゴリーに記事が複数登録されている場合に表示されるテキストです

通知の有効化

通知機能を有効にすると、サポート担当者がチャットに返信した際に、アプリの利用者に通知が送信されます。通知を有効にするには、.p12形式のAPNs(Apple Push Notification service:Apple プッシュ通知サービス)証明書が必要です。
APNs証明書の.p12ファイルを作成するには、以下の手順を実行します。
  1. Apple Developer(Appleの開発者向けポータル)でAPNs証明書を作成し、ダウンロードします。
  2. 証明書をダブルクリックします。ダブルクリックすると、証明書がキーチェーンアクセスのアプリ内に自動でインポートされます。
  3. キーチェーンアクセスのアプリを起動し、証明書を開きます。証明書に対応するキーが表示されます。
  4. 証明書とキーの両方を選択して、右クリックします。メニューが表示されます。
  5. エクスポート(書き出し)のためのメニューをクリックします。保存先に関する設定画面が表示されます。
  6. ファイル形式(拡張子)として.p12が選択されていることを確認し、[保存]をクリックします。
  7. ファイルにアクセスするためのパスワードを入力して[OK]をクリックします。証明書が.p12ファイルとしてエクスポートされます。
次に、Zoho Deskのどこでもサポートの設定画面でプッシュ通知を有効にする必要があります。有効にするには、Zoho Deskで画面右上の設定アイコン→[どこでもサポート]→[モバイル]に移動します。[プッシュ通知の設定]の欄で.p12ファイルをアップロードし、パスワードを入力します。次に、「AppDelegate」クラス内の「application:didRegisterForRemoteNotificationsWithDeviceToken:」メソッドで「enablePushNotification:」APIを呼び出せるように、アドオンを設定します。
この設定を行うには、以下のメソッドをアプリのコードに追加します。
Swift
func application (_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let token = deviceToken.reduce ("", {$0 + String(format: "%02X", $1)}).uppercased() ZohoDeskPortalSDK.enablePushNotification (deviceToken:token, mode: .production) } 
Objective-C
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSString * token = [[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""] stringByReplacingOccurrencesOfString: @">" withString: @""] stringByReplacingOccurrencesOfString: @" " withString: @""]; [ZohoDeskPortalSDK enablePushNotificationWithDeviceToken:token isTestDevice:NO mode:APNSModeProduction]; } 
メモ:開発モードに切り替えると、通知が正しく送信されるかどうかを検証することができます。開発モードに切り替えるには、上記のコードの「.production」を「.sandbox」に変更します。開発モードに切り替えた場合は、アプリの公開前に、必ず本番環境モードに戻してください。
次に、プッシュ通知が受信された際に「AppDelegate」クラスの「didReceiveRemoteNotification:」メソッドが自動的に呼び出されるように、SDKを設定する必要があります。また、その後、SDKが受信した通知を処理できるように、SDKで「processRemoteNotification」メソッドが呼び出されるようにする必要があります。この処理を実行するには、以下のメソッドを追加します。
Swift
import ZohoDeskPortalConfiguration ... func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { ZDPortalConfiguration.processRemoteNotification(userInfo: userInfo) } 
Objective-C
@import ZohoDeskPortalConfiguration; ... - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^) (UIBackgroundFetchResult))completionHandler { [ZDPortalConfiguration processRemoteNotificationWithUserInfo:userInfo]; }

サポート担当者の画面におけるゲストユーザー(匿名ユーザー)の情報の表示

通常、サポート担当者がゲストユーザー(匿名ユーザー)からチャットを受信しても、サポート担当者の画面には利用者(顧客)に関する詳細情報は表示されません。ただし、どこでもサポートのアドオンを設定することで、ゲストユーザー(匿名ユーザー)から連絡を受け取った際にも詳細情報を表示することができます。
設定するには、次のメソッドを追加します。
Swift
import ZohoDeskPortalChat ...ZDPortalChat.setGuestUser(email:<#Guest_User_Email#>, displayName:<#Guest_User_DisplayName#>", phoneNumber: <#Guest_User_PhoneNumber#>") 
Objective-C
@import ZohoDeskPortalChat; ... [ZDPortalChat setGuestUserWithEmail:<#Guest_User_Email#> displayName:<#Guest_User_DisplayName#> phoneNumber:<#Guest_User_PhoneNumber#>]; 
また、チャットのやりとりは、必要に応じて、問い合わせに変換きます(問い合わせへの変換には、利用者/顧客のメールアドレスが必須です)。

問い合わせの自動送信

どこでもサポートでは、利用者に対して手動による問い合わせの送信を許可できます。許可した場合は、アプリ内で特定のエラーなどが発生した場合に、どこでもサポートの機能を通じて自動で問い合わせが送信されるように設定することもできます。たとえば、利用者がアプリを利用中に特定の画面を読み込めなかった場合に、その情報を踏まえて読み込みの失敗に関する問い合わせが自動で送信されるように設定することができます。これにより、利用者が手動で問い合わせを送信する手間を省くことができます。
問い合わせの自動送信を有効にするには、アプリのコードに以下のメソッドを追加します。
Swift
import ZohoDeskPortalAPIKit
Objective-C
@import ZohoDeskPortalAPIKit;
部門のIDを取得するには、以下のメソッドを使用します。
Swift
ZohoDeskPortalSDK.getDepartments(onCompletion: { (departments, error) in // 成功時は、「departments」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「departments」は空(nil)を戻します } 
Objective-C
[ZohoDeskPortalSDK getDepartmentsOnCompletion:^ (NSArray * departments, NSError * error) { // 成功時は、「departments」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「departments」は空(nil)を戻します }]; 
部門で設定した商品に関する情報を取得するには、以下のメソッドを使用します。
Swift
ZohoDeskPortalSDK.getProducts(inDepartmentID: String, [String: Any]?){ (products, error) in // 成功時は、「products」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「products」は空(nil)を戻します } 
Objective-C
[ZohoDeskPortalSDK getProductsInDepartmentID:<#NSString#> params:<#NSDictionary#>onCompletion:^ (NSArray * products, NSError * error) { // 成功時は、「products」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「products」は空(nil)を戻します }]; 
部門の問い合わせ用のレイアウトに含まれる項目の情報を取得するには、以下のメソッドを使用します。
Swift
ZohoDeskPortalSDK.Ticket.getFields([String: Any]?){ (fields, error) in // 成功時は、「fields」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「fields」は空(nil)を戻します } 
Objective-C
[ZohoDeskPortalSDKTicket getFields: <#(NSDictionary * _Nullable)#>onCompletion:^ (NSArray * fields, NSError * error) { // 成功時は、「fields」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「fields」は空(nil)を戻します }]; 
問い合わせに添付ファイルを含めるには、以下のメソッドを使用します。
Swift
ZohoDeskPortalSDK.Ticket.addAttachment(with:<#Data#>, andName:<#String#>, using: <#ZDPUploaderDelegate?#>) { (attachment, error) in // 成功時は、「attachment」によって値が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「attachment」は空(nil)を戻します } 
Objective-C
[ZohoDeskPortalSDKTicket addAttachmentWith: <#NSData#>andName:<#NSString#>using: <#(id _Nullable)#>onCompletion:^ (ZDPortalAttachment * attachment, NSError * error) { // 成功時は、「attachment」によって値が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「attachment」は空(nil)を戻します }]; 
問い合わせの自動送信を有効にするには、アプリのコードに以下のメソッドを追加します。認証済みユーザーと未認証ユーザーで別々のメソッドを呼び出す必要があります。
Swift
if ZohoDeskPortalSDK.isUserLoggedIn { ZohoDeskPortalSDK.Ticket.add(withFields:<#T##[String : Any]#>) { (ticket, error) in // 成功時は、「ticket」によってオブジェクトが出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「ticket」は空(nil)を戻します } } else { ZohoDeskPortalSDK.Ticket.addAsGuest (withFields: <#T##[String : Any]#>) { (ticketNumber, error) in // 成功時は、「ticketNumber」によって文字列の値が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「ticket」は空(nil)を戻します } } 
Objective-C
if (ZohoDeskPortalSDK.isUserLoggedIn) { [ZohoDeskPortalSDKTicket addWithFields:<#(NSDictionary * _Nonnull) #>onCompletion:^(ZDPTicket * ticket, NSError * error) { // 成功時は、「ticket」によってオブジェクトが出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「ticket」は空(nil)を戻します }]; }else { [ZohoDeskPortalSDKTicket addAsGuestWithFields: <#(NSDictionary * _Nonnull) #>onCompletion:^(NSString * ticketNumber, NSError * error) { // 成功時は、「ticketNumber」によって文字列の値が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「ticket」は空(nil)を戻します }] } 
メモ:メソッドの呼び出しにあたっては、メールアドレス(EmailAddress)件名(Subject)部門ID(DepartmentID)は必須のパラメーターです。

コミュニティ

コミュニティ機能に関する設定や操作のためのメソッドは以下のとおりです。
コミュニティで許可する操作の設定
コミュニティ機能では、トピック(投稿)やコメントの追加/編集/削除など、さまざまな操作を行うことが可能です。
コミュニティ機能で、どのような操作を許可するかを指定するには、以下のメソッドを使用します。
Swift
ZDPCommunityConfiguration.isTopicEditAllowed = <#Bool#> ZDPCommunityConfiguration.isTopicDeleteAllowed = <#Bool#> ZDPCommunityConfiguration.isReplyAllowed = <#Bool#> ZDPCommunityConfiguration.iReplyEditAllowed = <#Bool#> ZDPCommunityConfiguration.isReplyDeleteAllowed = <#Bool#> 
Objective-C
ZDPCommunityConfiguration.isTopicEditAllowed = <#Bool#>; ZDPCommunityConfiguration.isTopicDeleteAllowed = <#Bool#>; ZDPCommunityConfiguration.isReplyAllowed = <#Bool#>; ZDPCommunityConfiguration.iReplyEditAllowed = <#Bool#>; ZDPCommunityConfiguration.isReplyDeleteAllowed = <#Bool#>; 
最も人気のあるトピックの取得
最も評価の高いトピック(投稿)を取得するには、以下のAPIを使用します。
Swift
ZohoDeskPortalSDK.Community.getMostPopularTopics(<#[String:Any]?#>) { (result: Result<[ZDPCommunity.TopicDetail], ZDPError>) in // 成功時にのみトピックの配列を取得 } 
Objective-C
[ZohoDeskPortalSDKCommunity getMostPopularTopics: <#(NSDictionary * _Nullable) #>onCompletion:^(NSArray * topics, NSError * error) { // 成功時は、「topics」によって配列が出力され「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「topics」は空(nil)を戻します }]; 
各パラメーターのキーと値の型(種類)は、以下のとおりです。すべてのキーと値に関する詳細については、APIドキュメントをご参照ください。
  1. categoryId(string) - 対象のカテゴリーIDを指定します。すべてのカテゴリーを追加する場合、値に「-1」を指定します。
  2. filterType(string) - トピック(投稿)の種類です。指定可能な値は次のとおりです:QUESTIONIDEAANNOUNCEMENTPROBLEMDISCUSSION
  3. from(int) - インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  4. limit(int) - 取得するトピックの件数です。
  5. includeCount(Boolean) - 取得したトピックの件数を表示するかどうかを指定するパラメーターです。
最もコメントの多いトピック(投稿)の取得
以下のAPIを使用すると、最もコメントが多いトピック(投稿)を取得することができます。
Swift
ZohoDeskPortalSDK.Community.getMostDiscussedTopics (<#[String:Any]?#>) { (topics, error) in // 成功時は、「topics」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「topics」は空(nil)を戻します } 
Objective-C
[ZohoDeskPortalSDKCommunity getMostDisuccedTopics: <#(NSDictionary * _Nullable) #>onCompletion:^(NSArray * topics, NSError * error) { 成功時は、「topics」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「topics」は空(nil)を戻します }]; 
パラメーターのキーと値の型(種類)は、以下のとおりです。すべてのキーと値に関する詳細情報については、APIドキュメントをご参照ください。
  1. categoryId(string) - 対象のカテゴリーIDを指定します。すべてのカテゴリーを追加する場合、値に「-1」を指定します。
  2. filterType(string) - トピック(投稿)の種類です。指定可能な値は次のとおりです:QUESTIONIDEAANNOUNCEMENTPROBLEMDISCUSSION
  3. from(int) - インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  4. limit(int) - 取得するトピックの件数です。
  5. includeCount(Boolean) - 取得したトピックの件数を表示するかどうかを指定するパラメーターです。

問い合わせ

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

Objective-C
[ZDPortalSubmitTicket setFieldsListTobeShownWithFields: <#(NSArray * _Nonnull)#>]; 
上記のコード内の「ZDVisibleTicketField」は、「departmentId」 (任意の文字列)、「layoutId」の2種類の属性と、項目名の配列が含まれるクラスです。このメソッドでは、項目のリスト(apiNames)を文字列で指定する必要があります。また、どこでもサポートに関連付けられている部門に応じて、「departmentId」キーを指定する必要があります。たとえば、ある特定の部門においてのみどこでもサポートが設定されている場合、「departmentId」キーを指定する必要はありません。どこでもサポートが複数の部門で設定されている場合、「departmentId」キーによって部門を指定する必要があります。このメソッドを追加すると、問い合わせ送信フォームにはメソッドで指定した項目のみが表示されます。ただし、必須項目に関しては、メソッド内で値を指定しない場合にも表示されますのでご注意ください。
問い合わせの送信フォームの必須項目を非表示にする
問い合わせの送信フォームの必須項目を非表示にしたい場合は、非表示にしたい必須項目に事前に値を入力しておく必要があります。必須項目に事前に値を入力にするには、「preFillTicketFields()」メソッドを使用します。
「preFillTicketFields()」メソッドは、自動で作成されたIDやデバイスのOSのバージョンといった値を項目に事前入力したい場合に役立ちます。
このメソッドを使用するには、「PreFillTicketField」オブジェクトのリストを指定する必要があります。また、どこでもサポートに関連付けられている部門に応じて「departmentId」キーを指定する必要があります。
Swift
ZDPortalSubmitTicket.preFillTicketFields(forForms: <#[ZDCustomizedTicketForm]#>) 
Objective-C
[ZDPortalSubmitTicket preFillTicketFieldsForForms:<#[ZDCustomizedTicketForm]#>]; 
上記のコード内の「ZDCustomizedTicketForm」は、「departmentId」 (任意の文字列)、「layoutId」の2種類の属性と、項目名の配列が含まれるクラスです。「setTicketsFieldsListTobeShown()」メソッドの場合と同様に、どこでもサポートの設定で、ある特定の部門のみが関連付けられている場合は、「departmentId」 キーを指定する必要はありません。どこでもサポートが複数の部門で設定されている場合は、「departmentId」によって部門を指定して、問い合わせの送信フォームの部門を指定する必要があります。
「PreFillTicketField」オブジェクトには、主に3種類の属性があります。
  1. deptId - 問い合わせの送信フォームに関連付けたい部門のIDです。
  2. layoutId - 問い合わせの送信フォームに関連付けたいレイアウトのIDです。
  3. fieldApiName(文字列) - 問い合わせの項目の「apiName」です。各項目の「apiName」を取得するには、「getTicketFields()」メソッドを使用します。
  4. fieldValue(オブジェクト)
    1. 複数選択項目の場合、選択肢の値(文字列)をコンマ区切りで指定します。
    2. 選択リスト項目の場合、選択肢に含まれるいずれかの値を指定します。
    3. 日付項目の場合、文字列の値を「MM/dd/yyyy」 の形式で指定します。
    4. 日時項目の場合、文字列の値を「MM-dd-yyyy hh:mm aa」」の形式で指定します。
    5. 真偽値項目の場合、真偽値(「true」または「false」)を指定します。
    6. その他の項目の場合、文字列の値を指定します。
    7. 項目には、項目の文字数の上限や、小数点の桁数の制限を超えない値を指定する必要があります。
  5. isEditable(真偽値) - 対象の項目が編集可能かどうかを指定するキーです。
メモ:サンプルのコードは、こちらをご参照ください。
問い合わせに関して許可する操作の設定
アプリの利用者は、問い合わせに関して、サポート担当者への返信、コメント、完了などのさまざまな操作を行うことができます。
問い合わせの送信画面において、どのような操作を許可するかを指定するには、以下のメソッドを使用します。
Swift
ZDPTicketConfiguration.isCommentAllowed = <#Bool#> ZDPTicketConfiguration.isCommentDeleteAllowed = <#Bool#> ZDPTicketConfiguration.isCommentEditAllowed = <#Bool#> ZDPTicketConfiguration.isReplyAllowed = <#Bool#> ZDPTicketConfiguration.isTicketUpdateAllowed = <#Bool#> 
Objective-C
ZDPTicketConfiguration.isCommentAllowed = YES; ZDPTicketConfiguration.isCommentDeleteAllowed = YES; ZDPTicketConfiguration.isCommentEditAllowed = YES; ZDPTicketConfiguration.isReplyAllowed = YES; ZDPTicketConfiguration.isTicketUpdateAllowed = YES;

その他

どこでもサポートにおけるその他の操作(ユーザー情報の更新やログの有効化)に関するメソッドは以下のとおりです。
ユーザー情報の更新
Zoho Deskに追加されたユーザーの情報を更新するには、以下のAPIを使用します。
Swift
import ZohoDeskPortalAPIKit ... var body = [String : Any]() body["displayName"] = "displayName" body["mobile"] = "123456" ZohoDeskPortalSDK.updateUserInformation(with: body) { (profile, error) in { 成功時は、「profile」のみが値を出力し、「error」は空(nil)を戻します // 失敗時は、「error」のみが値を出力し、「profile」は空(nil)を戻します } 
Objective-C
NSMutableDictionary * body = [NSMutableDictionary new]; [body setObject:@"displayName" forKey:@"displayName"]; [body setObject:@"123456" forKey:@"mobile"]; [ZohoDeskPortalSDK updateUserInformationWith:body onCompletion: ^(Profile * profile, NSError * error) { // 成功時は、「profile」のみが値を出力し、「error」は空(nil)を戻します // 失敗時は、「error」のみが値を出力し、「profile」は空(nil)を戻します }]; 
パラメーター
Dictionary [String : Any] - キーと値のペアです。使用できるキーは次のとおりです:twitterphonefacebooknamedisplayNamemobilecountryLocaletimeZone


ログの有効化

どこでもサポートの利用中に発生したエラーの解決には、ログが役立ちます。初期設定では、ログは有効になっています。有効な場合は、コンソールでエラーの詳細を確認し、必要な処理を行うことができます。また、ログは無効にすることもできます。
無効にするには、以下のコードを追加します。
Swift
import ZohoDeskPortalAPIKit ...ZohoDeskPortalSDK.disableLogs() 
Objective-C
@import ZohoDeskPortalAPIKit; ...[ZohoDeskPortalKit disableLogs]

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

以下の表は、移行処理をスムーズに行うための変更内容の一覧です。


ホーム画面の設定に関する個別のメソッドの追加 

バージョン2.x

v3.0

let config = ZDPHomeConfiguration()

config.enableHelpCenter = true

config.enableCommunity = false

config.enableCreateTicket = true

config.enableMyTicket = true

ZDPortalHome.show(withConfiguration: config)


let config = ZDPHomeConfiguration()

config.enableHelpCenter = true

config.enableCommunity = true

config.enableCreateTicket = true

config.enableMyTicket = true

config.enableAddTopic = true

config.showChat = true

config.showChatBot = true

ZDPortalHome.updateConfiguration(with: config)

ZDPortalHome.show()

 

// ホーム画面の設定に関する個別のメソッドが追加されました

 

 

 

テーマ設定に使用するAPIの変更

バージョン2.x

v3.0

import ZDThemeKit
....
ZDPThemeManager.setTheme(type: .white)

import ZohoDeskPortalConfiguration
...
ZDPThemeManager.setTheme(type: .white) // ZDThemeManagerがZDPThemeManagerに変更

ZDThemeManager.updateTheme(theme: <#ZDThemeProtocol#>)

ZDPThemeManager.updateLightTheme(theme: <#ZDPThemeProtocol#>)

 




    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.