イベントフレームワーク
重要 - 画像/情報は四半期ごとのリリースで更新されます!
四半期ごとのリリースにて、最新の機能・情報を反映し、画像を含めた情報は更新されます。
概要
Gainsight イベントフレームワークを使用すると、プログラムおよびルールエンジンで使用できるイベントを作成できます。イベントは、他のアクティビティの結果であるトリガーとして定義できます。
次に、イベントフレームワークを使用できるいくつかのユースケースを示します。
- Zendeskチケットがある場合、またはSalesforceのケースが閉じられた場合に、プログラムをトリガーして参加者に調査を送信できます。
- 新しいユーザーが非Gainsightシステムでアカウントを作成したときに、プログラムをトリガーしてウェルカムメールを送信できます。
- 参加者が調査に回答するたびに通知メールが送信されます。
- イベントは、その後ルールエンジンでルールをトリガーするために使用できるデータロードの完了である場合があります。
ルールエンジンでは、スケジュールタイプをイベントとして使用し、cURLコマンドを使用してルールを実行できます。cURLコマンドは、Gainsight以外でルールをトリガーする便利な方法です。より広い意味では、開発者サポートがあれば、Gainsight以外のサービスとルールをより深く統合することができます。
この記事では、Gainsight管理ページからトピックとトピック内のイベントを作成する方法について説明します。Gainsightでは、次のサブスクライバでパブリッシャによってトリガーされるイベントを使用します。
- ルールスケジューラ: イベントがパブリッシャによってトリガーされ、Gainsightに到達すると、設定されたルールの実行が開始されます。このユースケースでは、イベントはスケジューラとして機能します。
- JOプログラム-参加者の構成: イベントがパブリッシャによってトリガーされ、Gainsightに到達すると、Gainsightのイベントで設定されたフィールドマッピングに従って、新しい参加者が公開されたプログラムに追加されます。
イベントフレームワークには、次のコンポーネントが含まれます。
- 公開者: イベントの送信者は発行者として定義されます。例として: プログラムのCSAT調査モデルでは、ZendeskまたはSalesforceが、クローズされたすべてのケースのケースクローズイベントの発行元になることができます。
- 加入者: 加入者は、イベントが発生したときにどのアクションを実行するかを決定する処理エンティティ/アプリケーションです。Gainsightは、パブリッシャーから送信されたイベントに対して利用可能な加入者として機能できるアプリケーションを制御します。プログラムとルールは利用可能な加入者です。
- トピックとイベント: トピックは、類似するイベント間の論理的な分離として定義できます。イベントはトピック内で定義され、特定の発生を表します。たとえば、イベント 「Ticket Closed」 と 「Ticket Reopened」 は、トピック 「Zendesk Tickets」 に属することができます。最大20個のトピックと、各トピックに100個のイベントを作成できます。
イベントAPI契約
次に示すのは、イベント処理API契約のサンプルであり、スクリプトの豊富な経験を持つ管理者や、イベントAPIコールをスクリプトする開発者が、イベントをGainsightに送信する方法について説明するのに役立ちます。
APIコール |
イベントAPI |
詳細 |
---|---|---|
説明 |
パブリッシャーはAPIエンドポイントを使用してイベントを発行できます。 |
|
メソッド |
ポスト |
|
ヘッダー |
コンテンツタイプ:application/json |
コンテンツタイプ:イベントメタの作成時に指定されたものと同じである必要があります。 |
topicName:サンプルトップ |
topicName:現在のイベントが属するトピックの名前。 |
|
イベントName:sample_イベント |
イベントName:現在のイベントの名前 |
|
イベントVersion:v 01 |
イベントVersion:現在のイベントのバージョン |
|
contractId:一部の契約 |
contractId (オプション) : 加入者がコントラクトを購読している場合、一致するコントラクトを持つ加入者のみがこのイベントを取得します。 |
|
sharedSecret: <シークレットトークン> |
sharedSecret: Gainsight イベント設定ページでパブリッシャを登録するときに生成される秘密キー |
|
tenantId: <テナントID> |
tenantId:パブリッシャのテナントID |
APIエンドポイント
https://app.gainsight.com/v1.0/api/イベントManager/イベント
このエンドポイントURLで、https://yourcompany.gainsightcloud.comはGainsightへの接続に使用するドメインです。あくまで参考です。
応答成功のサンプル
{ "result": true, "data": { "イベントId": "259d8882-8b13-4ded-b2b0-39c43359739d" }, "message": "Successfully received イベント, please keep the イベント Id for further reference", "messages": [ "Successfully received イベント, please keep the イベント Id for further reference" ] }
応答失敗のサンプル
{ "result": false, "errorCode": "1001", "errorDesc": "Oops, something went wrong! Please contact Tech Support to report. ", "requestId": "4e1f3665-eb88-4017-8dff-2c8d400c9111", "message": "イベント is not registered", "messages": [ "イベント is not registered" ] }
パブリッシャとして登録
Gainsightからイベント (その他のシステム基盤) の送信者を登録できます。Gainsightは、パブリッシャの設定時に使用されるこの登録用の一意のキーを生成します。このキーは常に特定の組織に対して一意であり、セキュリティで保護する必要があります。
イベントの送信者をPublisherとして登録するには、次のアクションを実行します:
- Webブラウザで次のリンクを開きます:
https://<Salesforce instance url>/apex/JBCXM__EventsV2#/events-dashboard/topics/list
または、 [Administration] > [イベント] に移動します。
- [Register As Publisher] をクリックして、他のシステムインフラストラクチャに現在の組織を登録するために使用される一意のキーを生成し、そこからイベントがGainsightに送信されます。このキーは、パブリッシャの設定中に使用されます。このキーは特定の組織に対して常に一意であり、セキュリティで保護する必要があります。
- 共有秘密キーギアの表示アイコンをクリックし、いつでもキーをコピーします。
イベントの作成
トピックを作成し、同様のイベントをトピックに追加できます。トピックは、ビジネスニーズに応じてイベントを分離するメカニズムを提供します。組織ごとに最大20のトピックを作成し、各トピックに最大100のイベントを追加できます。
トピックの作成
トピックを作成するには、次の操作を実行します。
- TOPICSページで+New Topicをクリックします。Add New Topicダイアログが表示されます。
- [トピックの追加] ダイアログに次の詳細を入力します。
- トピック名: パブリッシャの設定時に使用されるトピックの正確な名前を入力します。たとえば、 「Tickets Closed」 という名前のトピックを、チケットがクローズされたときの操作に関連するイベント用に作成できます。チケット満足度調査は、お客様のサポートチケットが 「Tickets Closed」 トピックのイベントとしてクローズされたときに送信されます。
- 説明 (オプション)
- 保存をクリックします。新しいトピックが作成されます。
- (任意) いつでも説明を編集するには、 [説明の編集] アイコンをクリックします。
イベントの作成
イベントを作成するには、次のアクションを実行します。
- トピックの [イベントの構成] ボタンをクリックするか、タブに移動して必要なトピックを選択します。
- [+新規イベントの作成] をクリックします。
- イベントを作成するには次の詳細を入力します。
- イベント名: パブリッシャの設定時に使用されるイベントの正確な名前を入力します。たとえば、サポートチケットが閉じられるたびに送信されるチケット満足度調査のイベントを作成する場合は、"Ticket Closed for Reporting Issue"という名前を付けることができます。
注: 1つのトピックに同じ名前のイベントを複数含めることはできません。ただし、異なるトピックに属し、異なるビジネス上の問題を解決する場合は、同じ名前のイベントを作成できます。 - バージョン: バージョン番号を割り当てます。バージョンは、似たようなイベントがあるが、構造が異なり、それらを個別に追跡する必要がある場合に便利です。例として: 「チケットクローズ調査」 は、同じ名前で設定できますが、構造に変更があるたびに異なるバージョンを使用します。バージョンが1.0のケースクローズイベントがあり、イベントの構造を更新する必要がある場合は、1.0イベントの詳細を失うことなく、バージョン1.1の別のイベントを作成できます。両方のイベント(1.0および1.1)は、2つの異なるイベントとして扱われます。
- トピック: イベントを作成するトピックを選択します。
- 詳細: (任意) イベントの説明を記述します。
- イベント名: パブリッシャの設定時に使用されるイベントの正確な名前を入力します。たとえば、サポートチケットが閉じられるたびに送信されるチケット満足度調査のイベントを作成する場合は、"Ticket Closed for Reporting Issue"という名前を付けることができます。
- 構造: をクリックして、PublisherによるイベントAPI呼び出しで渡されるフィールドを追加します。Structureでは、イベントのサブスクライバーがイベントを消費できるように、イベントのサンプル形式を定義します。プログラムでは、参加者フィールドへのマッピングに使用されます。例として: 以下に示す構造体からのContactEmailは、参加者のRecipient Email Addressフィールドへのマッピングに使用されます。
- 以下に示すように、複数のフィールド名を入力します。
- イベントAPI呼び出しで渡されるフィールドの正確な名前を入力します。
- フィールドのを選択します。イベントフレームワークは、文字列、数値、ブール、日付、および日時の5つのデータ型の選択をサポートしています。
- [構造項目の保存] をクリックします。
- 構造に別のイベントフィールドを追加するには、 [イベントフィールドの追加] ボタンをクリックします。
- [保存]をクリックします。
メモ:
- パブリッシャイベントとプログラムの参加者設定の設定に従って、後でいつでも新しいイベントフィールドを追加できますが、イベント構造内の既存のフィールドを編集または削除することはできません。
- ルールエンジンでスケジューラとして消費できるイベントには、イベント構造は必要ありません。
- イベント構造に追加されたフィールドは、 [プログラム] > [参加者の構成] ページで標準フィールドにマッピングするために使用できます。追加フィールドを標準フィールドにマッピングする場合は、追加フィールドでイベント構造を更新できます。
- 既存のイベントを削除して同じイベントを再度作成する必要がある場合は、既存のイベントを削除せずに、別のバージョンで新しいイベントを作成することをGainsightは推奨しています。
イベントフィールドの解決
この機能は、イベントの送信者からのレコードを、Gainsightオブジェクトに格納されているレコードに解決するのに役立ちます。これを実行するには、必要に応じて、イベント構造に追加されたフィールドを、Gainsight標準オブジェクト、人、ユーザー、会社、および関係からのフィールドにマッピングします。
Gainsightを使用してイベントフィールドを解決できますが、この機能に依存するGainsightアプリケーション (コンシューマー) は現在開発中です。Journey Orchestratorは、イベント Frameworkのイベントフィールド機能の解決を優先します。これは、管理者がイベントの送信者からGainsightオブジェクトに格納されているレコードにレコードを解決するのに役立ちます。
イベントフィールドの解決機能の助けを借りて、管理者は次のアクションを実行できます。
- 次のようにしながら、イベントソースフィルターの検索フィールドを選択します。
- イベントフィールドの作成
- ソースとしてのイベントの追加
- 条件付き待機でのイベントフィールドの使用
- 選択したイベントソースの [参加者ソースのマッピング] セクションの検索フィールドをマップします。
この設定を適用するには、次の手順を実行します。
- [イベントフィールドの解決] チェックボックスをクリックします。目標 Gainsightオブジェクトは、イベントフィールド、人、会社、関係、GS ユーザー (CSM、その他のユーザ)から確認できます。
- 次のように、オプション人を選択して、イベントフィールドとGainsight 人オブジェクト間のフィールドマッピングを適用します。
- 左側のドロップダウンでイベントフィールドを選択し、Gainsight 人オブジェクトからフィールドを選択します。
- 複数のフィールドマッピングを追加するには、[+]をクリックします。
- [個人経由で会社の個人に解決] チェックボックスをオンにします。これにより、個人レコードが [会社の個人 ID を使用する会社の個人] フィールドの対応するレコードに解決されます。
- [会社担当者経由で会社に解決] チェックボックスをオンにします。これにより、会社 人オブジェクトから会社IDを使用している会社フィールドの対応するレコードにレコードが解決されます。
- [会社経由でGSユーザーに解決] チェックボックスをオンにします。これにより、会社オブジェクトのレコードが、ユーザーオブジェクトの対応するレコードにCSMフィールドを使用して解決されます。
注: 関連エンティティにも同様の解決を適用できます。「人」 から 「関係 人」 、 「関係 人」 から 「関係」 、 「関係」 から 「GS ユーザー」 に解決するチェックボックスを選択できます。
- 次のように、 「会社」 オプションを選択して、イベントフィールドと会社オブジェクト間のフィールドマッピングを適用します。
- 左側のドロップダウンで 「イベントフィールド」 を選択し、会社オブジェクトからフィールドを選択します。
- 複数のフィールドマッピングを追加するには、[+]をクリックします。
- [会社経由でGSユーザーに解決] チェックボックスをオンにします。これにより、会社オブジェクトのレコードが、ユーザーオブジェクトの対応するレコードにCSMフィールドを使用して解決されます。
- 次のように、 [イベント フィールドと関係オブジェクトの間のフィールド マッピングを適用するための関係] オプションを選択して、イベントフィールドと関係オブジェクトのフィールドマッピングを適用します。
- 左側のドロップダウンで [イベントフィールド] を選択し、関係オブジェクトからフィールドを選択します。
- 複数のフィールドマッピングを追加するには、[+]をクリックします。
- [関係を介して GS ユーザーに解決] チェックボックスをオンにします。これにより、関係オブジェクトのレコードが、ユーザーオブジェクト内の対応するレコードにCSMフィールドを使用して解決されます。
- 次のように、GS ユーザーオプションを選択して、イベントフィールドとユーザーオブジェクト間のフィールドマッピングを適用します。
- 左側のドロップダウンでイベントフィールドを選択し、ユーザーオブジェクトからフィールドを選択します。
- 複数のフィールドマッピングを追加するには、[+]をクリックします。
- [保存]をクリックします。
メモ: イベントフィールドからの解決は、人、会社、関係、またはユーザーオブジェクトを含む単一のGainsightオブジェクトに直接適用できます。また、前述のように、現在のオブジェクトを介して別の標準オブジェクトに解決を適用することもできます。たとえば、イベントフィールドを人を介して会社 人、会社を介して会社 人などに解決できます。
イベントの管理
イベントの作成後、イベントの編集、削除、テスト、およびイベントログの表示を行うことができます。以下は、イベントを管理するために使用できるオプションです。
- イベント構造の表示: 特定のイベントでこのボタンをクリックすると、イベントリストページに直接イベント構造 (追加されたイベントフィールドのリスト) が表示されます。
- イベントの編集: 既存のイベントを編集するには、このボタンをクリックします。イベントが作成されると、説明を編集したり、構造体に新しいイベントフィールドを追加したり、イベントフィールドの解決を適用または変更したりできます。
- テストイベント: 既存のイベントをテストするには、このボタンをクリックします。次の2つのパブリッシングタイプを使用してイベントをテストできます。テストイベントまたは発行イベント。
- テストイベント: このオプションを選択し、[送信]をクリックしてイベントをテストします。現在のイベントは正常にテストされ、応答フィールドに結果が表示されます。イベントに問題があると思われる場合は、応答からイベントIdを使用し、Gainsightサポートと共有してイベントをデバッグできます。
- イベントの公開: このオプションを選択し、[送信]をクリックして、イベントを手動でサブスクライバに公開します。これにより、ルールが実行されるか、イベントが設定されている新しい参加者に対してプログラムがオーケストレーションされます。
- イベントログ: このボタンをクリックすると、 [イベントテストする] 、 [イベントを公開] が時間に対してグラフィカルな形式で表示され、イベントログのリストが表形式で表示されます。[イベントテストする] と [公開されたイベント] は、それぞれグラフの赤と緑のカラースパイクで識別されます。[イベントを再テストする] ボタンをクリックすると、ログから任意のイベントを再度テストできます。再テスト後、イベントリストのグラフと表が次のように更新されます。
- イベントの削除: 特定のイベントを削除するには、このボタンをクリックします。
プログラムイベントのワークフロー
プログラムのイベントのサンプルワークフローを次の図に示します。
上の図は、SalesforceのケースクローズイベントまたはZendeskのチケットクローズイベントがそれぞれの加入者に発行される方法を示しています。(また、この8分 ビデオでは、 「プログラム」 で参加者ソースとしてイベントを設定する方法を説明しています。)
ここでの使用例は次のとおりです。ユーザーは、チケットが閉じられた直後にチケット満足度調査を送信したいと考えています。これは、チケットが閉じられた後にトリガーを設定し、イベントフレームワークを使用してこの情報をプログラムに送信することで実現できます。トリガーを設定するときに行われるさまざまなプロセスを以下に説明します。
- 「イベントの作成」 セクションに記載されている手順を使用して、トピック+イベントを作成します。
次の詳細を含むイベントを作成します:
イベント名: チケットの閉鎖
イベントのバージョン: 1.0
イベント構造: イベント構造のフィールド:
- ContactEmail (連絡先)
- ContactName (連絡先)
- 会社名
- SFDCAccountIdとは
- SFDCContactIdとは
- Zendeskチケットが閉じられると、イベントは発行元によってトピックに発行されます。推奨される方法は、Zendeskチケットシステムで作成されたトリガーを使用し、POST呼び出しの一部として必要な情報を渡すことによってAPIを呼び出すことです。Salesforce Caseが閉じられた場合も同様で、SFDC Caseオブジェクトにトリガーが作成され、それによってAPIが呼び出されます。
注意:
- Salesforceからイベントコールを行うには、新しいサイトを許可リスト項目としてリモートサイト設定に追加する必要があります。
- Salesforce組織からイベントコールを行う場合は、ユースケースとSalesforce組織によって、スクリプトに必要な正確な構成が決定されます。このスクリプトはSalesforceを通じて処理されるため、Gainsightにはすべての組織のスクリプト例が網羅されているわけではありません。Gainsightは、Salesforce開発者コンソールのスクリプト処理構成で豊富な経験を持つSalesforce管理者を推奨しています。
- Zendeskシステムからのイベントコールの場合、ユースケースとZendesk orgによって、スクリプトに必要な正確な構成が決定されます。Gainsightは、システム管理者が必要なスクリプト構成をZendeskで処理することを推奨しています。
- トピックは、上記のトリガーの一部として投稿されたイベントを受信し、それを購読者にブロードキャストします。この場合の購読者はプログラムです。
- その後、プログラム機能はケース/チケットクローズイベントを受信し、それらを処理してプログラム構成に新しい参加者を追加し、これらの新しい参加者に電子メールを送信します。検証するために、参加者がプログラム内に追加されているかどうかを確認できます。
注意: 参加者ソースをイベントとして設定してプログラムを公開した後にのみ (上記の画像を参照) 、ZendeskシステムまたはSFDCケーストリガーから生成されたイベントが処理対象となります。プログラムによって受信された各イベントは、選択された一意の基準に基づいて新しい参加者を追加します。
GSイベント用のSalesforce Apexクラス
Salesforce Apex Classを使用して、SalesforceからGainsightへのイベントを作成し、それらをGainsightシステムにトリガーできます。SalesforceでGainsight イベントを作成する前に、Salesforce Remoteサイトにhttps://ep.gainsight.comを追加します。リモートサイトを追加する方法の詳細については、 「リモートサイト設定の構成」 のSalesforce記事を参照してください。
SalesforceからGSイベントを作成するには:
- Salesforce Apexクラスを作成します。Salesforce Apexクラスの作成方法の詳細については、Apex Salesforceの記事を理解するためのシンプルクラスを参照してください。
- 以下からGSイベント構造体をコピーし、特定のイベントにカスタマイズします。
public class GSイベント{ @future(callout=true) public static void calloutFromFuture(string records, string sharedSecret, string tenantId, string イベントName,string topicName, string イベントVersion){ System.debug('Welcome to Apex Case Closure Trigger!'); Http http = new Http(); HttpRequest request = new HttpRequest(); request.setEndpoint('https://ep.gainsight.com/api/v0.1/イベントManager/イベント'); request.setMethod('POST'); request.setHeader('sharedSecret',sharedSecret); request.setHeader('tenantId',tenantId); request.setHeader('イベントName',イベントName); request.setHeader('topicName',topicName); request.setHeader('イベントVersion',イベントVersion); request.setHeader('Content-Type','application/json'); Map<String,Object> data = new Map<String,Object>(); data.put('participantInformationList',JSON.deserializeUntyped(records)); request.setBody(JSON.serialize(data)); HttpResponse response = http.send(request); if (response.getStatusCode() != 201) { System.debug('The status code returned was not expected: ' + response.getStatusCode() + ' ' + response.getStatus()); } else { System.debug(response.getBody()); } } }
Caseのステータスがエスカレート済みに変更されたときにイベントを生成するには、次のGSEイベントサンプル構造要求のSalesforceトリガーを使用します:
trigger CaseClosure on Case (after update) { { string イベントName = ‘copy_value_from_gainsight_イベント_page’; string イベントVersion = 'copy_value_from_gainsight_イベント_page'; string topicName = 'copy_value_from_gainsight_イベント_page'; string tenantId = ‘contact your csm to get your tenantId’; string sharedSecret=‘’copy_value_from_gainsight_イベント_page; if(Trigger.isUpdate) { List<Map<string,Object>> records = new List<Map<String,Object>>(); List<String> caseids = new List<String>(); for(Case updatedCase : Trigger.new) { if(updatedCase.status.equals('Escalated')) { caseids.add(updatedCase.Id); } } List<case> cases = [Select CaseNumber, Contact.Name, ContactEmail, AccountId, Subject, Reason, Account.Name, Type from Case where id in :caseids]; for(Case updatedCase : cases) { Map<String,Object> record = new Map<String,Object>(); record.put('Recipient Email', updatedCase.ContactEmail); record.put('Account Id', updatedCase.AccountId); record.put('Account Name', updatedCase.Account.Name); record.put('Case Number', updatedCase.CaseNumber); record.put('Reason', updatedCase.Reason); record.put('Type', updatedCase.Type); record.put('Contact',updatedCase.Contact.Name); record.put('Subject',updatedCase.Subject); records.add(record); } if(records.size() > 0) { GSイベント.calloutFromFuture(JSON.serialize(records), sharedSecret,tenantId, イベントName,topicName,イベントVersion); } }
追加リソース
- マッピングの詳細については、 「プログラムへの参加者の追加」 を参照してください。