ユーザーアクティビティを取得するデータストリームアクションの作成
SaaS アプリケーションからユーザーアクティビティを取得するデータストリームアクションを作成します。
始める前に
既存の ServiceNow® 統合ハブ スポークを使用している場合は、作成する代わりに使用できるユーザーアクティビティを取得するためのデータストリームアクションがあるかどうかを確認します。
データストリームアクションの詳細については、「 データストリームアクション」を参照してください。
必要なロール:flow_designer
このタスクについて
データストリームアクションを作成する前に、意味のあるユーザーアクティビティを定義する方法を決定します。意味のあるアクティビティは、ユーザーアクションの組み合わせにすることができます。ユーザーアクティビティメトリクスごとに個別のデータストリームアクションを作成します。たとえば、ベースシステム Webex Meetings 統合では、有意義なアクティビティを会議のホストとして定義しています。1 つのデータストリームアクションを使用して、すべてのユーザーの最後にホストされた会議の日付を取得します。Webex Meetings 統合に意味のあるアクティビティとしてログインを含める場合は、2 番目のデータストリームアクションを作成して、すべてのユーザーの最新のログイン時間を取得します。
ユーザーを取得するデータストリームアクションは、前回のログイン時間などのユーザーアクティビティ測定基準を返す場合があります。この場合、追加のユーザーアクティビティメトリクスを定義する場合を除き、ユーザーアクティビティを取得するためのデータストリームアクションや、ユーザーアクティビティを取得するためのサブフローを作成する必要はありません。ユーザーを取得するサブフローで、このユーザーアクティビティメトリクスが [ユーザーサブスクリプションをアップサート] アクションの最後のアクティビティ入力として設定されていることを確認してください。
手順
- 移動先 すべて > フローデザイナー > デザイナー.
- [ 新規] をクリックし、[ データストリーム] を選択します。
-
フォームで、フィールドに入力します。
表 : 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 Meetings 統合では、意味のあるユーザーアクティビティを会議のホストとして定義し、 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 の子アイテム ラベル 名前 タイプ 必須 email email 文字列 いいえ 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 要求と応答が想定どおりに構造化されていることを確認してください。
-
エラーの詳細については、テスト結果とシステムログを参照してください。
- データストリームアクションが期待どおりに機能していることを確認したら、[ 公開] をクリックします。