ユーザーアクティビティを取得するデータストリームアクションの作成
SaaS アプリケーションからユーザーアクティビティを取得するデータストリームアクションを作成します。
始める前に
既存の ServiceNow® 統合ハブ スポークを使用している場合は、作成せずに使用できるユーザーアクティビティを取得するためのデータストリームアクションがあるかどうかを確認します。
データストリームアクションの詳細については、「 データストリームアクション」を参照してください。
必要なロール:flow_designer または admin
このタスクについて
データストリームアクションを作成する前に、意味のあるユーザーアクティビティを定義する方法を決定します。意味のあるアクティビティは、ユーザーアクションの組み合わせである可能性があります。ユーザーアクティビティ測定基準ごとに個別のデータストリームアクションを作成します。たとえば、ベースシステムの Webex 会議統合では、有意義なアクティビティを会議の開催として定義します。1 つのデータストリームアクションを使用して、すべてのユーザーの最後に開催された会議の日付を取得します。Meetings インテグレーションに Webex 有意義なアクティビティとしてログインを含める場合は、2 番目のデータストリームアクションを作成して、すべてのユーザーの最新のログイン時間を取得します。
ユーザーを取得するデータストリームアクションは、最終ログイン時間などのユーザーアクティビティ測定基準を返す場合があります。この場合、追加のユーザーアクティビティ測定基準を定義する場合を除き、ユーザーアクティビティを取得するためのデータストリームアクションまたはユーザーアクティビティを取得するためのサブフローを作成する必要はありません。ユーザーを取得するためのサブフローで、このユーザーアクティビティ測定基準が [ユーザーサブスクリプションをアップサート] アクションの最後のアクティビティ入力として設定されていることを確認してください。
手順
- 移動先 すべて > Flow Designer > デザイナー.
- [ 新規 ] をクリックし、[ データストリーム] を選択します。
-
フォームのフィールドに入力します。
表 : 1. アクションプロパティフォーム フィールド 値 名前 任意の名前。たとえば、「 ユーザーアクティビティを取得」などです。 アクセス可能 すべてのアプリケーションスコープ。 カテゴリ このフィールドは空のままにします。 保護 なし。 アプリケーション SaaS アプリケーションと統合するスポークアプリ。このスポークアプリは、既存の 統合ハブ スポークでも、自分で作成した新しいスポークでもかまいません。 インフロー注釈 このフィールドは空のままにします。 説明 選択内容の説明。 - [送信] をクリックします。
- 「アクション・アウトライン」の「入力」セクションで、「 入力の作成」をクリックします。
-
過去の検索時間の入力を追加します。
表 : 2. 入力 ラベル 名前 タイプ 必須 過去の検索時間 look_back_time 日付/時刻 はい -
使用している API が要求にユーザー認証を必要とする場合は、認証用の入力を追加します。
一般的なユーザー認証入力の例は、管理者ユーザー ID とサイト名です。特定のケースでのユーザー認証の要件については、選択した API のドキュメントを参照してください。API がアクセストークンを必要とする場合は、 後で認証情報の値 変数が自動的に作成されます。アクセストークンを入力として追加する必要はありません。
完了したデータストリームアクションをサブフローで使用する場合は、これらの入力として渡す値を定義します。
- 「アクション・アウトライン」の 「要求 」をクリックします。
-
フォームのフィールドに入力します。
表 : 3. [要求] フォーム フィールド 値 データをどのように取得しますか。 [REST ステップ] または [SOAP ステップ] を選択します。どちらを選択するかは、統合する SaaS アプリケーションの API によって異なります。 ページネーションを有効化 選択済み。 各要求の前にスクリプトを実行 未選択。 - [アクションアウトライン] の [ページネーション設定] ステップ をクリックします。
-
SaaS API で使用されるクエリパラメーターに基づいてページネーション変数を定義します。
オフセットベースのページネーションを使用している場合は、制限/オフセットページネーションテンプレートを使用して、ページネーション設定をプリロードします。
注:予約済みのgetNextPage変数の値によって、結果の別のページを要求するかどうかが決まります。getNextPage変数が true である限り、アクションは次のページの要求を送信し続けます。 -
ページネーション変数を更新するページネーション変数スクリプトを記述します。
スクリプトは要求ごとに実行されます。ページネーションテンプレートを使用している場合は、必要に応じてプリロードされたスクリプトを調整します。
次の画像は、ページネーション設定手順の完了した例を示しています。この例は、[サブスクリプションをダウンロード] サブフローで使用される Webex [ユーザーを取得] データストリームアクションからのものです。
注:ページネーション変数は、文字列データ型のみをサポートします。数学演算を実行するには、値を整数に変換し、必要な操作を実行してから、文字列に変換し直します。 - データの取得方法について選択したオプションに応じて、[アクションアウトライン] で [ SOAP ステップ ] または [REST ステップ ] をクリックします。
-
[SOAP] を選択した場合は、次のようにフォームに入力します。
表 : 4. SOAP ステップフォーム フィールド 値 接続の詳細 接続 接続エイリアスを使用。 接続エイリアス 統合プロファイルを作成したときに作成した接続エイリアス。統合プロファイルをまだ作成していない場合は、手順に従って接続 エイリアスを使用してカスタム統合プロファイルを作成します。 エンドポイント この値は、接続エイリアスを選択すると自動的に入力されます。エイリアスにリンクされた HTTP(s) 接続レコードからの接続 URL に設定されます。 要求の詳細 エンベロープの作成 手動で。 SOAP アクション 意味のあるユーザーアクティビティのリストを取得するための API 要求。たとえば、ベースシステムの Webex 会議統合は、 LstsummaryMeeting要求を使用してすべての会議のリストを取得するように、意味のあるユーザーアクティビティを会議のホストとして定義します。選択した API のドキュメントを参照して、適切な要求を選択してください。SOAP エンベロープ すべてのユーザーのリストを取得するための XML 要求メッセージ。XML 要求メッセージの記述方法については、選択した API のドキュメントを参照してください。一般に、ヘッダーには、ユーザー認証用の入力変数と、アクセストークンとしての 認証情報値 変数が必要です。本文には、意味のあるユーザーアクティビティのリストを取得する要求、 [ 過去の検索時間 ] 入力として設定された開始日、およびページネーションセットアップステップからの変数を含める必要があります。 注:SOAP エンベロープの例については、「ユーザーアクティビティの更新サブフローで使用される Webex ユーザーアクティビティデータストリームを取得」アクションを参照してください。 -
[REST] を選択した場合は、次のようにフォームに入力します。
表 : 5. REST ステップフォーム フィールド 値 接続の詳細 接続 接続エイリアスを使用。 接続エイリアス 統合プロファイルを作成したときに作成した接続エイリアス。統合プロファイルをまだ作成していない場合は、手順に従って接続 エイリアスを使用してカスタム統合プロファイルを作成します。 ベース URL この値は、接続エイリアスを選択すると自動的に入力されます。エイリアスにリンクされた HTTP(s) 接続レコードからの接続 URL に設定されます。 要求の詳細 ビルド要求 手動で。 リソース パス リソースへのパス。この値はベース URL に追加されます。リソースパスの構築方法については、使用している API のドキュメントを参照してください。 HTTP メソッド GETです。 クエリ パラメーター ページネーションのパラメーターを追加します。ページネーションのセットアップ手順で作成した変数として値を設定します。 要求が開始日から現在の日付までの結果を返すように、開始日の別のパラメーターを追加します。この値を [ 過去の検索時間 ] の入力値として設定します。注:[過去の検索時間] 入力日付/時刻変数が、使用している API に対して正しい形式になっていることを確認してください。文字列などの別のデータタイプを再フォーマットまたは変換する必要がある場合は、アクション前処理スクリプトステップでこれを行うことができます。次の画像は、REST ステップの完成した例を示しています。この例は、[ユーザーアクティビティの更新] サブフローで使用される Jira [監査ログを取得] データストリームアクションからのものです。
- 「アクション・アウトライン」の「 解析 」をクリックします。
-
フォームのフィールドに入力します。
表 : 6. フォームを解析中 フィールド 値 各レコードをどのように識別しますか。 JSON/XML スプリッター 各アイテムをどのように解析してオブジェクトにしますか。 スクリプトパーサー - 「アクション・アウトライン」の 「スプリッター・ステップ 」をクリックします。
-
フォームのフィールドに入力します。
表 : 7. スプリッターステップフォーム フィールド 値 ソースフォーマット API 応答によって返される形式に応じて、[ XML ] または [JSON ] を選択します。 アイテムパス 応答メッセージ内の意味のあるアクティビティ要素への絶対パス。応答メッセージの形式については、使用している API のドキュメントを参照してください。 - XML アイテムパスの例:
/message/body/meeting - JSON アイテムパスの例:
$.data.meeting
- XML アイテムパスの例:
- 「アクション・アウトライン」の 「出力 」をクリックします。
-
「 出力の作成 」をクリックし、変数を図のように編集します。
表 : 8. アクションの出力 ラベル 名前 タイプ 必須 targetObject targetObject オブジェクト いいえ -
targetObject の子アイテムを追加して、ユーザーのメールと有意義なアクティビティの日付を格納します。
たとえば、XML 応答は次のようになります。
この応答に対して、次のように子アイテムを追加します。<message> <body> <meeting> <meetingID>12345</meetingID> <startDate>08/13/2019 20:08:16</startDate> <hostEmail>email@email.com</hostEmail> </meeting> <meeting> ... </meeting> </body> </message>表 : 9. targetObject の子アイテム ラベル 名前 タイプ 必須 メール メール 文字列 いいえ last_activity last_activity 文字列 いいえ - [アクションアウトライン] で、[ スクリプトパーサー] ステップをクリックします。
-
応答内の意味のあるアクティビティ要素ごとに targetObject 出力オブジェクトを作成し、各アクティビティの日付とユーザーのメールを targetObject 子アイテムにマッピングします。
パーサースクリプトは、ユーザー要素ごとに実行されます。
注:これらの例は、応答に含めることができる要素の型を示しています。これらのスクリプトを直接コピーしないでください。使用している API のドキュメントの要素名を使用します。XML 応答を解析するスクリプトの例。(function parse(inputs, outputs) { var xmlDoc = new XMLDocument(inputs.sourceItem, false); outputs.targetObject.email = xmlDoc.getNodeText('/meeting/hostEmail'); outputs.targetObject.last_activity = xmlDoc.getNodeText('/meeting/startDate'); })(inputs, outputs)JSON 応答を解析するスクリプトの例。(function parse(inputs, outputs) { var record = JSON.parse(inputs.sourceItem); outputs.targetObject.email = record.hostEmail; outputs.targetObject.last_activity = record.startDate; })(inputs, outputs) -
データストリームアクションをテストするには、[ テスト] をクリックします。
-
エラーの詳細については、テスト結果とシステムログを表示します。
システムログを表示するには、次の場所に移動します。 システムログ > システムログ > すべて.
- データストリームアクションにエラーが発生した場合は、正しいエンドポイントを使用していることと、API リクエストとレスポンスが想定どおりに構成されていることを確認してください。
-
エラーの詳細については、テスト結果とシステムログを表示します。
- データストリームアクションが期待どおりに機能していることを確認したら、[ 公開] をクリックします。