Zoho CRMにおける統一キオスクインターフェースを使用したZohoサービス全体でのユーザーステータス管理

Zoho CRMにおける統一キオスクインターフェースを使用したZohoサービス全体でのユーザーステータス管理

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

Requirement 概要

Zoho CRM内にカスタムUIを作成し、Zoho People、Zoho SalesIQ、Zoho Voiceのステータスを更新できるようにします。これにより、営業、サポート、またはハイブリッドチームがZoho CRM上でZoho People(出勤状況・在席状況)、Zoho SalesIQ(チャット対応状況)、Zoho Voice(通話可能状況)の現在の稼働ステータスをリアルタイムで一元管理・反映でき、複数アプリケーションを切り替える手間が不要となります。

法人ユースケース

営業チームは、日々の業務や顧客対応を管理するために複数のZohoアプリケーションを活用しています。主な活用例は以下の通りです:
  1. Zoho Peopleは従業員の出勤状況管理やHRコンプライアンス遵守のために利用されています。
  2. Zoho SalesIQは、ウェブサイト訪問者とのリアルタイムチャット対応を通じて、顧客対応やサポートを強化します。
  3. Zoho Voiceは、見込み顧客との直接通話によるパーソナライズされた対応やリアルタイムコミュニケーションを実現します。
  4. Zoho CRMは、リード・顧客管理や営業案件の進捗管理など、営業活動の中核となるプラットフォームです。
  1. 問題点

      Zohoのツール群を利用する組織では、次のような課題が発生することがあります。
  1. 従業員がZoho Peopleで出勤登録をうっかり忘れる場合があります。
  2. 営業担当者やエージェントがSalesIQで「オンライン」のままになっていて、実際は対応できない場合、顧客からのチャット対応を逃すリスクがあります。
  3. サポートエージェントがZoho Voiceでステータスを更新しない場合、実際は不在でも「利用可能」と表示されるため、通話が誤って振り分けられる可能性があります。
  4. 複数のプラットフォームを行き来する必要があるため、生産性が低下し、情報の不整合が発生しやすくなります。

権限 & 利用可否

-> CRMユーザーは、「自動化管理」または「タブカスタマイズ」のいずれかの権限が有効であれば、Kioskを利用・管理できます。
-> 「拡張性管理」権限を持つユーザーは、外部連携やカスタム関数の作成が可能です。
-> 「テスト環境管理」権限を持つユーザーは、テスト環境の管理が可能です。

解決策

Kiosk Studio機能とカスタム関数を活用することで、Zoho CRM内の単一インターフェースからZoho People、SalesIQ、Voiceのステータスを更新する要件を満たせます。Kiosk Studioはボタンとして埋め込んだり、CRMのホームページ上に設定したりでき、ユーザーがスムーズにステータスを更新できるようになります。

Alert
キオスクを安全にテストするには、テスト環境で作成し、その後本番環境へデプロイしてください。
  1. 手順ごとの実装ガイド

手順 1: Zoho CRMでキオスクの作成から開始します。

以下の操作を行ってください:Zoho CRMの設定 (⚙️) → カスタマイズ → Kiosk Studio → Kiosk作成


手順 2: Kioskビルダーページに新しい画面を追加します。

画面内に「Text」エレメントを挿入し、ユーザーがステータスを更新する際のヒントを表示します。


手順 3: 「Text」エレメントで案内や説明を追加したら、続けて各Zohoアプリケーションのボタンを追加します。

例:
  1. ボタンを追加し、Zoho SalesIQでチャット対応ステータスを更新できるようにします。
  2. ボタンを追加し、Zoho Peopleで出勤・退勤処理を管理できるようにします。
  3. ボタンを追加し、Zoho Voiceで通話対応ステータスを変更できるようにします。
各ボタンは、それぞれのアプリケーションに応じた操作が実行されるよう構成してください。


Idea
キャンセルするボタンを画面に追加して、ユーザーがステータスを更新せずにプロセスを終了できるようにすることも可能です。これにより、ユーザーは更新を続行しないことを選択した場合でも途中でキャンセルできる柔軟性が得られます。
画面上の各ボタンは、Kiosk 内で個別の経路を作成します。初期画面で選択済みのボタンに基づき、Kiosk は対応する経路に従い適切な処理を実行します。各フローごとに専用の経路が作成されたので、それぞれのアプリケーションに合わせた具体的な処理の設定を続けてください。 例として、ユーザーが選択した経路に応じて、Zoho SalesIQ、Zoho People、Zoho Voice のステータス更新を適切に設定します。
  1. Kiosk における Zoho SalesIQ パス

1. 画面および要素の設定

SalesIQ パスに新規画面を追加します。この画面内で、ユーザーにクリアな指示を提供するために『Text』要素を挿入します。例として、Zoho SalesIQ でステータスがどのように更新されるかを説明します。これにより、ユーザーがこれから行う操作を理解できるようになります。


2. 画面へのボタン配置

この Kiosk 画面に SalesIQ ステータス設定をボタンとして追加します。Zoho SalesIQ で利用可能なステータスは、
  1. 利用可能
  2. Busy
『利用可能』と『Busy』という2つのボタンを画面に個別に追加します。これにより、ユーザーは現在の状況に応じて適切なステータスを簡単に選択できます。


3. ステータスボタンの処理設定

次に、SalesIQ ステータスボタンに処理を追加します。Kiosk からステータスを更新するには、SalesIQ API を利用してカスタム関数を設定する必要があります。この関数は、ユーザーのボタン選択(つまり、利用可能 または Busy)に基づいて実行されます。


Idea
カスタム関数の後に「Text」要素を含む画面を追加し、ステータスが正常に更新されたことを確定することもできます。
これはエンド画面として機能し、ユーザーにクリアなフィードバックを提供します。

例として、『Your SalesIQ ステータス has been updated successfully』のようなメッセージを表示します。

この手順を含めることで、操作が完了したことを確認でき、ユーザーエクスペリエンスが向上します。

サンプルコード

以下は、Zoho SalesIQでステータスを更新する方法を示す Deluge スクリプトのサンプルです:
  1. 利用可能ステータス 
  1. 無効 自動化.availableSalesIQ()
  2. {
  3.   // 取得リクエストパラメーター用の空の map を作成(invokeurl 構文で必須)
  4. requestParams = Map();

  5.   // SalesIQ からオペレーター一覧を取得 API で取得
  6. operatorResponse = invokeurl
  7. [
  8. 種類 :取得する
  9. パラメーター:requestParams
  10. connection:'salesiq1'
  11. ];

  12.    // レスポンスから 'data' 配列を抽出します(オペレーター情報が含まれています)
  13. operatorData = operatorResponse.取得する('data');
  14. info operatorData;

  15.   // 現在ログインしているZohoユーザーのメールアドレスを取得する
  16. currentUserEmail = Zoho.loginuserid;
  17. info 'ログインユーザー メール: ' + currentUserEmail;

  18.     // 受注データを[パッケージ]データに変換するだけで、operator dataをリストに変換し各オペレーターを繰り返し処理します
  19. operatorList = operatorData.toList();

  20.   // 各オペレーターデータをループ処理
  21. for each index operatorIndex in operatorList
  22. {
  23.       // オペレーターのメールアドレスを抽出
  24. operatorEmail = operatorList.取得する(operatorIndex).取得する('email_id');

  25.       // オペレーターのメールが現在ユーザーのメールと一致するか確認
  26. if(operatorEmail == currentUserEmail)
  27. {
  28.           // 照合済みの場合、オペレーターのIDを取得
  29. operatorId = operatorList.取得する(operatorIndex).取得する('id');

  30.            // オペレーターのステータスを「利用可能」に設定するためのマップを準備
  31. updateStatusMap = Map();
  32. updateStatusMap.put('ステータス','利用可能');

  33.            // オペレーターのステータスを更新するためにPOSTリクエストを実行
  34. updateResponse = invokeurl
  35. [
  36. url :'https://salesiq.Zoho.com/api/v2/harishtestacc/operators/'+ operatorId + '/ステータス'
  37. 種類 :POST
  38. パラメーター:updateStatusMap.toString()
  39. connection:'salesiq1'
  40. ];
  41. }
  42. }
  43. }
  1. Busyステータス
  1. 無効 自動化.availableSalesIQ()
  2. {
  3.     // 取得リクエストパラメーター用の空のマップを作成(invokeurl構文で必須)
  4. requestParams = Map();

  5. // 取得する APIを使用してSalesIQからオペレーターの一覧を取得
  6. operatorResponse = invokeurl
  7. [
  8. url :'https://salesiq.Zoho.com/api/v2/harishtestacc/operators'
  9. 種類 :取得する
  10. パラメーター:requestParams
  11. connection:'salesiq1'
  12. ];

  13.     // レスポンスからオペレーター情報が含まれる 'data' 配列を抽出
  14. operatorData = operatorResponse.取得する('data');
  15. info operatorData;

  16.     // 現在ログインしているZohoユーザーのメールアドレスを取得
  17. currentUserEmail = Zoho.loginuserid;
  18. info 'ログインユーザーメール: ' + currentUserEmail;

  19.     // 受注データを[パッケージ]データに変換するだけで、operator dataをリスト化し各オペレーターを繰り返し処理できるようにします
  20. operatorList = operatorData.toList();

  21.     // 各オペレーターのデータをループ処理
  22. for each index operatorIndex in operatorList
  23. {
  24.    // オペレーターのメールアドレスを抽出
  25. operatorEmail = operatorList.取得する(operatorIndex).取得する('email_id');

  26.   // オペレーターのメールが現在ユーザーのメールと一致するか確認
  27. if(operatorEmail == currentUserEmail)
  28. {
  29.     // 照合済みの場合、オペレーターのIDを取得
  30. operatorId = operatorList.取得する(operatorIndex).取得する('id');

  31.        // オペレーターのステータスを「利用可能」に設定するマップを準備
  32. updateStatusMap = Map();
  33. updateStatusMap.put('ステータス','Busy');

  34.     // オペレーターのステータスを更新するためにPOSTリクエストを送信
  35. updateResponse = invokeurl
  36. [
  37. url :'https://salesiq.Zoho.com/api/v2/harishtestacc/operators/'+ operatorId + '/ステータス'
  38. 種類 :POST
  39. パラメーター:updateStatusMap.toString()
  40. connection:'salesiq1'
  41. ];
  42. }
  43. }
  44. }

Connection用OAuthのスコープ:
SalesIQ.operators.更新する
SalesIQ.operators.READ
Info
ユーザーは、上記のスコープを持つConnectionを使用する必要があります。Zoho CRMでConnectionを作成する手順は以下の通りです。
ナビゲーション:設定 >> Developer Hub >> 外部連携 >> Connection作成
  1. Connection:

🎥 動作例動画: CRM Kiosk経由でSalesIQステータスを更新



  1. KioskでのZoho Peopleパス

1. 画面と要素の設定

Zoho Peopleのパスに新規画面を追加します。この画面内に「Text」要素を挿入し、ユーザーに分かりやすい指示を表示します。例として、チェックインやチェック出力のステータスがZoho Peopleでどのように更新されるかを説明します。このような説明を加えることで、ユーザーが操作前に内容を理解しやすくなります。


2. 画面上にボタンを配置

このKiosk画面にPeopleのステータス設定をボタンとして追加します。Zoho Peopleで利用可能な操作は次の通りです:
  1. Check-in
  2. Check-出力
「Check-in」と「Check-出力」という2つのボタンを画面に追加します。これにより、ユーザーは自分の現在の状況に応じて該当する出勤操作を簡単に選択できます。


Idea
ボタンラベルは、実行される操作内容が明確に伝わるように設定してください。これにより、ユーザーの混乱を防ぐことができます。

3. ステータスボタンの処理設定

次に、Zoho Peopleのステータスボタンに処理を追加していきます。キオスクからステータスを更新するには、Zoho People APIを利用したカスタム関数の設定が必要です。この関数は、ユーザーの選択(チェックインまたはチェックアウト)に応じて実行されます。として、ユーザーがCheck-inボタンをクリックすると、関数がZoho People APIを呼び出してユーザーをチェックイン済みとして設定します。同様に、Check-出力をクリックするとユーザーをチェック出力済みとして設定します。


Idea
ユーザー体験を向上させるために、カスタム関数実行後に確認画面を追加することをおすすめします。
この画面には、「Text」要素を配置し、ユーザーにステータス更新が正常に完了したことを明確に伝えてください。

として、「Zoho Peopleのステータスが正常に更新されました」のようなメッセージを表示します。

この最終手順により、意図した操作が完了したことに安心感を与え、ユーザーが自信を持って一連の流れを進められるようサポートできます。

サンプルスクリプト

以下は、Zoho Peopleでステータスを更新する方法を示したDelugeスクリプトのサンプルです。
  1. Check-In
  1. // 現在ログイン中のユーザーをZoho Peopleの勤怠にチェックインする関数
  2. // 現在ログイン中のZohoユーザーのメールアドレスを取得する
  3. currentUserEmail = Zoho.loginuserid;

  4. // メールアドレスでZoho Peopleから従業員データを取得するリクエストを実行
  5. employeeResponse = invokeurl
  6. [
  7. url :'https://people.Zoho.com/api/forms/従業員/getRecords?searchParams={searchField:'EmailID',searchOperator:'Is',searchText:'+ currentUserEmail + '}'
  8. 種類 :取得する
  9. connection:'people1'
  10. ];

  11. // システムタイムゾーンの現在のタイムスタンプを取得する
  12. currentTime = now;

  13. // Zoho Peopleに出勤(チェックイン)を設定するPOSTリクエストを実行
  14. checkInResponse = invokeurl
  15. [
  16. url :'https://people.Zoho.com/people/api/attendance?dateFormat=dd-MMM-yyyyHH:mm:ss&checkIn=' + currentTime + '&emailId=' + currentUserEmail
  17. 種類 :POST
  18. connection:'people1'
  19. ];
  1. チェック出力:
  1. // 現在ログインしているユーザーをZoho Peopleの出勤管理に打刻する関数
  2. // 現在ログインしているZohoユーザーのメールアドレスを取得
  3. currentUserEmail = Zoho.loginuserid;

  4. // メールアドレスでZoho Peopleから従業員データを取得するリクエストを送信
  5. employeeResponse = invokeurl
  6. [
  7. url :'https://people.Zoho.com/api/forms/従業員/getRecords?searchParams={searchField:'EmailID',searchOperator:'Is',searchText:'+ currentUserEmail + '}'
  8. 種類 :取得する
  9. connection:'people1'
  10. ];

  11. // システムタイムゾーンで現在のタイムスタンプを取得
  12. currentTime = now;

  13. // Zoho PeopleにPOSTリクエストを送信し、出勤を記録する(打刻)
  14. checkInResponse = invokeurl
  15. [
  16. url :'https://people.Zoho.com/people/api/attendance?dateFormat=dd-MMM-yyyyHH:mm:ss&決済する=' + currentTime + '&emailId=' + currentUserEmail
  17. 種類 :POST
  18. connection:'people1'
  19. ];

接続用OAuthスコープ

ZOHOPEOPLE.forms.READ
ZOHOPEOPLE.attendance.すべて

Info

上記のスコープを持つconnectionを使用する必要があります。Zoho CRMでconnectionを作成するには、以下の手順に従ってください。

ナビゲーション: 設定 >> Developer Hub >> 外部連携 >> Connection作成

  1. Connection

🎥 動作デモ: キオスク経由でのZoho Peopleのチェックイン/チェック出力



                  
  1. キオスク内のZoho Voiceパス

1. 画面の設計と要素追加

キオスクのZoho Voiceパスに新規画面を追加します。この画面内に「Text」要素を挿入し、ユーザーへ分かりやすい案内を表示します。として、利用可能、Busy、オンBreak、またはオフラインなど、ユーザーが選択したステータスに応じてZoho Voice内の状態が更新される仕組みを説明します。このような文脈を伝えることで、ユーザーが操作前に内容を十分に理解できるようになります。


2. ユーザー処理用ボタンの挿入

Kiosk画面にZoho Voiceステータス設定をボタンとして追加します。Zoho Voiceで利用可能なステータスは以下の通りです:
  1. 利用可能
  2. オン Break
  3. Busy
  4. オフライン
画面上に上記の各ステータスごとに4つの個別ボタンを作成してください。それぞれのボタンには該当するステータス名を表示します。これにより、ユーザーは自分の現在の稼働状況ステータスをワンクリックで簡単に選択できます。



Idea
各ボタンには、実行される操作が明確にわかるようにラベルを付けてください。これにより、ユーザーの混乱を防ぎ、スムーズな操作体験を実現できます。

3. ボタン処理によるステータス更新の実装

次に、Zoho Voiceステータスボタンに処理を追加していきます。Kioskからユーザーステータスを更新するには、Zoho Voice APIを利用してカスタム関数を設定する必要があります。この関数は、ユーザーが選択したステータス(利用可能・オンBreak・Busy・オフライン)に基づき実行されるようにしてください。各ボタンが、選択されたステータスを反映するために適切なAPIリクエストを送信するように設定します。


Idea
ユーザー体験を向上させるために、カスタム関数の実行後すぐに確認画面を追加してください。
この画面には「Text」要素を含め、Zoho Voiceステータスが正常に更新されたことをユーザーに通知します。

例として、「Zoho Voiceステータスが正常に更新されました。」などのメッセージを表示します。

この最後の手順により、操作が完了したことを明確にフィードバックでき、ユーザーは安心して手続きを進められます。


サンプルスクリプト

以下のサンプルDelugeスクリプトを使用して、KioskからZoho Voiceステータスを更新できます。
  1. 利用可能
  1. // データの内容を保持するMapを初期化
  2. data = Map();
  3. data.put('ステータス', '利用可能'); // エージェントのステータスを「利用可能」に設定

  4. // Zoho Voiceでエージェントのオンラインステータスを更新するためのHTTP PUTリクエストを送信
  5. response = invokeurl
  6. [
  7. url : 'https://voice.Zoho.com/rest/json/zv/api/agents/onlineStatus' // Zoho Voice APIエンドポイント
  8. 種類 : PUT // HTTPメソッド
  9. パラメーター : data // データの内容
  10. connection : 'voice1' // Zohoアカウントで事前設定された接続名
  11. ];

  12. // デバッグ用にAPIレスポンスを記録
  13. info response;
  1. オン break:
  1. // データの内容を保持するMapを初期化
  2. data = Map();
  3. data.put('ステータス', 'オン Break');// エージェントのステータスを「利用可能」に設定

  4. // Zoho Voiceでエージェントのオンラインステータスを更新するためのHTTP PUTリクエストを実行
  5. response = invokeurl
  6. [
  7. url : 'https://voice.Zoho.com/rest/json/zv/api/agents/onlineStatus' // Zoho Voice APIエンドポイント
  8. 種類 : PUT // HTTPメソッド
  9. パラメーター : data // データの内容
  10. connection : 'voice1' // Zohoアカウントで事前設定された接続名
  11. ];

  12. // デバッグ用にAPIレスポンスを記録
  13. info response;
  1. Busy
  1. // データの内容を保持するMapを初期化
  2. data = Map();
  3. data.put('ステータス', 'Busy'); // エージェントのステータスを「利用可能」に設定

  4. // Zoho Voiceでエージェントのオンラインステータスを更新するHTTP PUTリクエストを送信
  5. response = invokeurl
  6. [
  7. url : 'https://voice.Zoho.com/rest/json/zv/api/agents/onlineStatus' // Zoho Voice APIエンドポイント
  8. 種類 : PUT // HTTPメソッド
  9. パラメーター : data // データの内容
  10. connection : 'voice1'// Zohoアカウントで事前設定されたコネクション名
  11. ];

  12. // デバッグ用にAPIレスポンスをログ出力
  13. info response;
  1. オフライン:
  1. // データ内容を保持するMapを初期化
  2. data = Map();
  3. data.put('ステータス', 'オフライン'); // エージェントのステータスを「利用可能」に設定

  4. // Zoho Voiceでエージェントのオンラインステータスを更新するHTTP PUTリクエストを実行
  5. response = invokeurl
  6. [
  7. url : 'https://voice.Zoho.com/rest/json/zv/api/agents/onlineStatus' // Zoho Voice API エンドポイント
  8. 種類 : PUT // HTTPメソッド
  9. パラメーター : data // データ内容
  10. connection : 'voice1' // Zohoアカウントであらかじめ設定したコネクション名
  11. ];

  12. // デバッグ用にAPIレスポンスをログ出力
  13. info response;

Connection用OAuthスコープ:
ZohoVoice.agents.READ
ZohoVoice.agents.更新する
Info
上記スコープを含むコネクションを利用する必要があります。Zoho CRMでコネクションを作成する手順は以下をご参照ください。
ナビゲーション: 設定 >> Developer Hub >> 外部連携 >> コネクション作成
  1. コネクション:

Notes
メモ: このサンプル関数(Zoho Voice)は、ログイン中のユーザーの認証情報を使用して処理を実行します。現在、UI上では「Credential of ログインする ユーザー」を有効にするオプションは利用できず、バックエンドから有効化が必要です。ご希望の場合は、パートナー-サポート@zohocorp.com までメールを送信してください。

🎥 動作デモ: Kioskインターフェースを使ったZoho Voiceステータス管理



Zoho CRMでのKioskの導入

KioskはウィジェットコンポーネントとしてCRMのホームページやダッシュボードに配置したり、任意のタブ内にボタンとして追加したりすることができます。ホームページ上にウィジェットとして設定すると、ユーザーはZoho CRMを開いた際にすぐにKioskへアクセスできます。これにより、Zoho People、SalesIQ、Zoho Voiceなどの該当アプリケーションボタンをクリックして、他のセクションへ移動せずに素早くステータスを更新できます。
Idea
Kioskウィジェットをホームページに配置することで、表示性が向上し、定期的なステータス更新が促進されます。
Alert
「テスト Run」をクリックすると、Kiosk Studio内からKioskにアクセスすることになります。すべての処理は本番環境と同様に実行されます。Kioskを安全にテストする場合は、まずテスト環境で作成し、その後本番環境へ導入してください。




Quote
カスタム Solution 作成者 Harish K & Shalik Ahmed

ご不明な点がございましたら、どうぞご遠慮なく パートナー-サポート@zohocorp.com までご連絡ください。

また、Europe および イギリス のパートナーの方は、パートナー-サポート@eu.zohocorp.com までご連絡いただきますようお願いいたします。