はじめに
こんにちは、LANSCOPE オンプレミス版 開発チームの中江です。
今回は、LANSCOPE API と Power Automate を活用して、
LANSCOPE の管理コンソールを操作することなく、自動的にデバイスの制御を一時解除するワークフローの作成方法をご紹介します。
- はじめに
- デバイス利用許可申請ワークフローの概要
- Power Automate のフロー構成
- 補足
- おわりに
デバイス利用許可申請ワークフローの概要
デバイス利用許可申請ワークフローの概要や準備については、こちらの記事をご覧ください。
tech.motex.co.jp
準備の補足
前回の記事の準備が完了しても、マネージャー環境のIP制限によって、アクセスできない可能性があります。
その場合、Power Automate側の「送信元IP」を確認して、アクセスを許可する必要があります。
Power Automate側の「送信元IP」を確認する方法は、こちらの記事が分かりやすかったです。
Power Automate のフロー構成
前回の記事でご紹介したデバイス利用許可申請ワークフローの全体構成図はこちらになります。
Power Automate のフロー構成はこちらになります。
各アクションについて、順に説明していきたいと思います。
APIの仕様については、お客様専用サイト(LANSCOPE PORTAL)のAPIリファレンスをご参考ください。
※保守ユーザーのみ、ご利用いただけます。
tryweb2.motex.co.jp
1. Forms の受信処理
Formsのアンケート結果を受信するフローを作成します。
トリガーは新規フロー作成時に「新しい応答が送信されたとき」を選択すると、Power Automate 側で自動的に作成されます。
まず、「新しい応答が送信されたとき」のフォームIDに、事前準備で作成した Forms を選択します。
フォーム IDは事前準備で作成した Forms を選択します。
応答 IDはトリガーで取得した Forms の応答IDを選択します。
2. 変数を初期化する処理
「3. API実行、承認依頼、承認結果通知処理」で使用する変数を定義します。
2-1. 変数初期化:アンケート回答を設定
トリガーで受信した Forms の回答を変数に設定します。
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数を初期化する」を選択します。
項目 | 設定値 |
---|---|
名前 | forms_answer_results |
種類 | オブジェクト |
値 | 下記参照 |
値には、下記の値を入力します。
{ "applicant_name": "申請者名", "applicant_email_address": "申請者のメールアドレス", "applicant_computer_name": "申請者のコンピュータ名", "device_usage_date": "デバイスの使用日", "approver": "承認者(メールアドレス)", "application_reason": "申請理由"} }
最後に、動的なコンテンツから Forms の回答を選択します。
(申請者のメールアドレスは「Responders' Email」を選択します。)
2-2. 変数初期化:API Token
API 実行時に指定する API Token を定義します。
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数を初期化する」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
名前 | api_token |
種類 | 文字列 |
値 | 下記参照 |
最後に、LANSCOPE の管理コンソールから API Token を出力し、値に入力します。
※API Token を発行する手順は、お客様専用サイト(LANSCOPE PORTAL)の資料をご参考ください。
2-3. 変数初期化:統合マネージャーサーバーのホスト名(DNS名)
API 実行時に指定するホスト名(DNS名)を定義します。
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数を初期化する」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
名前 | host_name |
種類 | 文字列 |
値 | 統合マネージャーサーバーのホスト名(DNS名)を値に入力します。 |
2-4. 変数初期化:業務開始時刻/終了時刻
業務開始時刻/終了時刻を定義します。
(「3-5. デバイス一時許可の開始日時と終了日時を設定する」で一時許可の開始時刻/終了時刻を設定するために使用します。)
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数を初期化する」を選択します。
これを2回繰り返します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
名前 | business_start_time , business_end_time |
種類 | 文字列 |
値 | 業務開始時刻/終了時刻を「HH:mm:ss」(24H表記)の形式で入力します。 |
2-5. 変数初期化:クライアントID、デバイスポリシーID、デバイスポリシー名
API で取得した情報を格納する変数を定義します。
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数を初期化する」を選択します。
これを3回繰り返します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
名前 | client_id , device_policy_id , device_policy_name |
種類 | 文字列 |
値 | empty (API でデータを取得出来たことを判別するために、値の初期値は empty を入力します。) |
2-6. 変数初期化:デバイス一時許可 開始日時/終了日時
Forms の回答の「デバイス使用日」と業務開始時刻/終了時刻をまとめた値を格納する変数を定義します。
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数を初期化する」を選択します。
これを2回繰り返します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
名前 | temporary_allow_start_datetime , temporary_allow_end_datetime |
種類 | 文字列 |
値 | empty (初期値は empty を入力していますが、判別処理で使用していないため、空欄でも問題ないです。) |
2-7. 変数初期化:端末別の使用制限の初期設定確認フラグ(任意)
端末別使用制限の初期設定が「全て許可」ではないことを確認するためのフラグを定義します。
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数を初期化する」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
名前 | approve_everything_default_flg |
種類 | ブール値 |
値 | false |
3. API実行、承認依頼、承認結果通知処理
API実行、承認依頼、承認結果通知処理を実装します。
複数のアクションをまとめて見やすくしたり、例外処理を組むために、
「3. API実行、承認依頼、承認結果通知処理」や「4. エラー時の処理」は、「スコープ」を使用します。
「+新しいステップ」または「アクションを追加」から「コントロール」>「スコープ」を選択し、その中に3-1 ~ 3-8のアクションを追加します。
3-1. JSON の解析:forms answer results
変数で定義した Forms の回答をフロー上で使えるようにするため、JSONを解析するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「データ操作」を選択し、「JSON の解析」を選択します。
項目 | 設定値 |
---|---|
コンテンツ | 動的コンテンツから「変数」のforms_answer_results を選択します。 |
スキーマ | 下記参照 |
下記をクリックするとスキーマを確認することが出来ます。
スキーマを確認する
{ "type": "object", "properties": { "applicant_name": { "type": "string" }, "applicant_email_address": { "type": "string" }, "applicant_computer_name": { "type": "string" }, "device_usage_date": { "type": "string" }, "approver": { "type": "string" }, "application_reason": { "type": "string" } } }
3-2. 回答のコンピュータ名と一致するクライアントIDを取得する
Forms から申請されたPC端末のコンピュータ名と一致するクライアントIDを取得するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「コントロール」>「スコープ」を選択し、その中に3-2-1 ~ 3-2-4のアクションを追加します。
下記をクリックすると、アクションの詳細を確認することが出来ます。
3-2-1. HTTP:クライアント一覧の取得
「クライアント一覧の取得 API」を実行して、全てのクライアントの情報を取得するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「HTTP」を選択し、「HTTP」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
方法 | GET |
URI | https://[host_name]/catapisrv/api/v1/clients?mr_type=1 |
ヘッダー | キー:Authorization 値: Bearer [api_token] |
- [host_name]
動的コンテンツの「変数」からhost_name
を選択します。 - [api_token]
動的コンテンツの「変数」からapi_token
を選択します。
3-2-2. JSON の解析:clients
APIで取得したクライアント情報をフロー上で使用するため、JSONを解析するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「データ操作」を選択し、「JSON の解析」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
コンテンツ | 「3-2-1. HTTP:クライアント一覧の取得」の「本文」を選択します。 |
スキーマ | 下記参照 |
下記をクリックするとスキーマを確認することが出来ます。
スキーマを確認する
{ "type": "object", "properties": { "clients": { "type": "array", "items": { "type": "object", "properties": { "client_id": { "type": "string" }, "submgr_no": { "type": "integer" }, "client_no": { "type": "integer" }, "client_type": { "type": "integer" }, "client_name": { "type": "string" }, "belong_group_no": { "type": "integer" }, "full_belong_group_name": { "type": "string" }, "display_level": { "type": "integer" }, "computer_name": { "type": "string" }, "ip_address": { "type": "string" }, "mac_address": { "type": "string" }, "mr_version": { "type": "string" }, "power": { "type": "string" }, "last_activated_date": { "type": "string" }, "license_state": { "type": "integer" } } } } } }
3-2-3. Apply to each:コンピューター名が一致するクライアントIDの取得
「APIで取得したコンピュータ名」と 「Forms から申請されたPC端末のコンピュータ名」が一致することを確認し、
クライアントIDを変数に格納するアクションを追加します。
「Apply to each」、「条件」、「変数の設定」アクションを追加し、設定値を入力します。
- 「Apply to each」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「Apply to each」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
以前の手順から出力を選択 | 動的コンテンツから 「JSON の解析:clients」のclients を選択します。 |
- 「条件」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「条件」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
左 | 動的コンテンツから「JSON の解析:clients」のcomputer_name を選択します。 |
右 | 動的コンテンツから「JSON の解析:forms answer results」のapplicant_computer_name を選択します。 |
式 | 次の値に等しい |
- 「変数の設定」
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数の設定」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
名前 | client_id |
値 | 動的コンテンツから「JSON の解析:clients」のclient_id を選択します。 |
3-2-4. 条件:コンピュータ名が一致するクライアントIDが存在しない場合(任意)
「3-2-3. Apply to each:コンピューター名が一致するクライアントIDの取得」の結果、
コンピュータ名が一致するクライアントIDが存在しない場合、申請者にTeamsで通知するアクションを追加します。
(申請者がコンピュータ名の入力を間違えた時を想定しています。)
「条件」、「チャットまたはチャネルでメッセージを投稿する」、「終了」アクションを追加し、設定値を入力します。
- 「条件」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「条件」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
左 | 動的コンテンツから「変数」のclient_id を選択します。 |
右 | empty |
式 | 次の値に等しい |
- 「チャットまたはチャネルでメッセージを投稿する」
「+新しいステップ」または「アクションを追加」から「Microsoft Teams」を選択し、「チャットまたはチャネルでメッセージを投稿する」を選択します。
次に、下記の設定値を入力します。
メッセージは自由に設定してください。
項目 | 設定値 |
---|---|
投稿者 | フローボット |
登録先 | フローボットとチャットをする |
Recipient | 動的コンテンツから「JSON の解析:forms answer results」のapplicant_email_address を選択します。 |
メッセージ(任意) | 【デバイス使用許可申請】 デバイスの使用許可申請に失敗しました。 Formsに入力した「コンピュータ名」が間違っていないかご確認ください。 回答:[applicant_computer_name] 間違っていない場合、情シスまでご連絡ください。 |
[applicant_computer_name]:動的コンテンツの「JSON_の解析:forms_answer_results」からapplicant_computer_name
を選択します。
- 「終了」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「終了」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
状態 | 失敗 |
コード(任意) | E01 |
メッセージ(任意) | コンピュータ名が一致するクライアントIDが存在していない。 |
3-3. クライアントに適用されているデバイスポリシー情報を取得する
LANSCOPE 側でクライアントに適用されているデバイスポリシー情報(デバイスポリシーIDとデバイスポリシー名)を取得するアクションを追加します。
下記をクリックすると、アクションの詳細を確認することが出来ます。
3-3-1. HTTP:デバイスポリシーの取得
「デバイスポリシー一覧の取得 API」を実行して、デバイスポリシー情報を取得するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「HTTP」を選択し、「HTTP」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
方法 | GET |
URI | https://[host_name]/catapisrv/api/v1/policies/devices?client_id=[client_id] |
ヘッダー | キー:Authorization 値: Bearer [api_token] |
- [host_name]
動的コンテンツの「変数」からhost_name
を選択します。 - [client_id]
動的コンテンツの「変数」からclient_id
を選択します。 - [api_token]
動的コンテンツの「変数」からapi_token
を選択します。
3-3-2. JSON の解析 :device policies
APIで取得したデバイスポリシー情報をフロー上で使用するため、JSONを解析するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「データ操作」を選択し、「JSON の解析」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
コンテンツ | 「3-3-1. HTTP:デバイスポリシーの取得」の「本文」を選択します。 |
スキーマ | 下記参照 |
下記をクリックするとスキーマを確認することが出来ます。
スキーマを確認する
{ "type": "object", "properties": { "device_policies": { "type": "array", "items": { "type": "object", "properties": { "device_policy_id": { "type": "integer" }, "device_policy_name": { "type": "string" }, "offline_restrict_flag": { "type": "integer" }, "allow_device_flag": { "type": "integer" }, "allow_managed_device_flag": { "type": "integer" } } } } } }
3-3-3. Apply to each:デバイスポリシーID、デバイスポリシー名の取得
APIで取得したデバイスポリシーID、デバイスポリシー名を変数に格納するアクションを追加します。
「Apply to each」、「変数の設定」アクションを追加し、設定値を入力します。
- 「Apply to each」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「Apply to each」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
以前の手順から出力を選択 | 動的コンテンツから「JSON の解析:device policies」のdevice_policies を選択します。 |
- 「変数の設定」
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数の設定」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
名前 | device_policy_id , device_policy_name |
値 | 動的コンテンツから「JSON の解析:device policies」のdevice_policy_id とdevice_policy_name を選択します。 |
3-3-4. 条件:デバイスポリシーが適用されていない場合(任意)
「3-3-3. Apply to each:デバイスポリシーID、デバイスポリシー名の取得」の結果、
そのクライアントに対してデバイスポリシーを適用していない場合、管理者にTeamsで通知するアクションを追加します。
「条件」、「チャットまたはチャネルでメッセージを投稿する」、「終了」アクションを追加し、設定値を入力します。
- 「条件」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「条件」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
左 | 動的コンテンツから「変数」のdevice_policy_id とdevice_policy_name を選択します。 |
右 | empty |
式 | 次の値に等しい |
- 「チャットまたはチャネルでメッセージを投稿する」
「+新しいステップ」または「アクションを追加」から「Microsoft Teams」を選択し、「チャットまたはチャネルでメッセージを投稿する」を選択します。
次に、下記の設定値を入力します。
メッセージは自由に設定してください。
項目 | 設定値 |
---|---|
投稿者 | フローボット |
登録先 | フローボットとチャットをする |
Recipient | 動的コンテンツから「JSON の解析:forms answer results」のapprover を選択します。(承認者 = LANSCOPE 管理者を想定しています。) |
メッセージ(任意) | 【デバイス使用許可申請】 デバイスの使用許可申請に失敗しました。 申請したクライアントがデバイスポリシーに所属していない可能性があります。 詳細はPower Automateの実行履歴をご確認ください。 [Power Automateのリンク等] |
- 「終了」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「終了」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
状態 | 失敗 |
コード(任意) | E02 |
メッセージ(任意) | 申請したクライアントがデバイスポリシーに所属していない。 |
3-4. 端末別の使用制限設定の初期設定を確認する(任意)
API で端末別の使用制限設定情報を取得し、LANSCOPE 側で既に全てのデバイスが許可されていないことを確認するアクションを追加します。
( LANSCOPE 側で既に全てのデバイスが許可されている場合、「端末別使用制限設定の変更API」実行時にエラーが発生するため、事前に設定を確認しています。)
下記をクリックすると、アクションの詳細を確認することが出来ます。
3-4-1. HTTP:端末別の使用制限設定一覧取得
「端末別の使用制限設定一覧取得 API」を実行して、端末別の使用制限設定を取得するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「HTTP」を選択し、「HTTP」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
方法 | GET |
URI | https://[host_name]/catapisrv/api/v1/policies/devices/[device_policy_id]/client-settings?client_id=[client_id] |
ヘッダー | キー:Authorization 値: Bearer [api_token] |
- [host_name]
動的コンテンツの「変数」からhost_name
を選択します。 - [device_policy_id]
動的コンテンツの「変数」からdevice_policy_id
を選択します。 - [client_id]
動的コンテンツの「変数」からclient_id
を選択します。 - [api_token]
動的コンテンツの「変数」からapi_token
を選択します。
3-4-2. JSON の解析:devices client-settings
APIで取得した端末別の使用制限設定情報をフロー上で使用するため、JSONを解析するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「データ操作」を選択し、「JSON の解析」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
コンテンツ | 「3-4-1. HTTP:端末別の使用制限設定一覧取得」の「本文」を選択します。 |
スキーマ | 下記参照 |
下記をクリックするとスキーマを確認することが出来ます。
スキーマを確認する
{ "type": "object", "properties": { "client_settings": { "type": "array", "items": { "type": "object", "properties": { "device_policy_id": { "type": "integer" }, "device_policy_name": { "type": "string" }, "client_id": { "type": "string" }, "client_type": { "type": "integer" }, "submgr_no": { "type": "integer" }, "client_no": { "type": "integer" }, "client_name": { "type": "string" }, "belong_group_id": { "type": "string" }, "belong_group_no": { "type": "integer" }, "full_belong_group_name": { "type": "string" }, "mrVersion": { "type": "string" }, "cd": { "type": "object", "properties": { "setting_type": { "type": "integer" } } }, "fd": { "type": "object", "properties": { "setting_type": { "type": "integer" } } }, "usb": { "type": "object", "properties": { "setting_type": { "type": "integer" } } }, "other": { "type": "object", "properties": { "setting_type": { "type": "integer" } } }, "temporary_allow": { "type": "object", "properties": { "allow_type": { "type": [ "integer", "null" ] }, "start_datetime": { "type": [ "string", "null" ] }, "end_datetime": { "type": [ "string", "null" ] } } }, "policy_delivery_status": { "type": "integer" } } } } } }
3-4-3. Apply to each:端末別の使用制限設定の確認
APIで取得した端末別の使用制限設定で、CD、DVD、USB、その他のデバイスが全て「許可」に設定されていることを確認し、
LANSCOPE 側で全てのデバイスが「許可」に設定されている場合、申請者にTeamsで通知するアクションを追加します。
「Apply to each」、「条件」、「変数の設定」アクションを追加し、設定値を入力します。
- 「Apply to each」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「Apply to each」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
以前の手順から出力を選択 | 動的コンテンツから「JSON の解析:devices client-settings」のclient_settings を選択します。 |
- 「条件」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「条件」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
左 | 動的コンテンツから「JSON の解析:devices client-setting」のsetting_type (cd , fd , usb , other )を選択します。 |
右 | 1 ※ |
式 | 次の値に等しい |
※制限設定setting_type
は API で下記の値を取得するため、「許可」設定である1
を指定します。
1:許可 2:読取専用 3:禁止[外付け](Macでは禁止[内蔵]) 4:禁止[内蔵/外付け]
- 「変数の設定」
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数の設定」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
名前 | approve_everything_default_flg |
値 | true |
3-4-4. 条件:既に全てのデバイスが許可されている場合
「3-4-3. Apply to each:端末別の使用制限設定の確認」の結果、
LANSCOPE 側でデバイスの制御設定が「全て許可」に設定されている場合、申請者にTeamsで通知するアクションを追加しています。
「条件」、「チャットまたはチャネルでメッセージを投稿する」、「終了」アクションを追加し、設定値を入力します。
- 「条件」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「条件」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
左 | 動的コンテンツから「変数」のapprove_everything_default_flg を選択します。 |
右 | true |
式 | 次の値に等しい |
- 「チャットまたはチャネルでメッセージを投稿する」
「+新しいステップ」または「アクションを追加」から「Microsoft Teams」を選択し、「チャットまたはチャネルでメッセージを投稿する」を選択します。
次に、下記の設定値を入力します。
メッセージは自由に設定してください。
項目 | 設定値 |
---|---|
投稿者 | フローボット |
登録先 | フローボットとチャットをする |
Recipient | 動的コンテンツから「JSON の解析:forms answer results」のapplicant_email_address を選択します。 |
メッセージ(任意) | 【デバイス使用許可申請】 既にデバイスの使用を許可されています。 引き続き、ご利用ください。 |
- 「終了」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「終了」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
状態 | 成功 |
3-5. デバイス一時許可の開始日時と終了日時を設定する
Forms の回答と定義した業務時間を使って、デバイス一時許可の開始日時と終了日時を設定するアクションを追加します。
下記をクリックすると、アクションの詳細を確認することが出来ます。
3-5-1. 変数設定:デバイス一時許可の開始日時/終了日時を設定する
デバイス一時許可の開始日時と終了日時を設定するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「変数」を選択し、「変数の設定」を選択します。
これを2回繰り返します。
次に、下記の設定値を入力します。
- 開始日時
項目 | 設定値 |
---|---|
名前 | temporary_allow_start_datetime |
値 | 式からconcat([device_usage_date], ' ', [business_start_time] を入力します。※ |
- [device_usage_date]
動的コンテンツの「JSON_の解析:forms_answer_results」からdevice_usage_date
を選択します。 - [business_start_time]
動的コンテンツの「変数」からbusiness_start_time
を選択します。
※変数の値には'yyyy-MM-dd'+ 半角スペース +'HH:mm:ss'='yyyy-MM-dd HH:mm:ss'
の式を設定します。
これには、2 つ以上の文字列を結合し、結合された文字列を返すconcat 関数を使用します。
- 終了日時
項目 | 設定値 |
---|---|
名前 | temporary_allow_end_datetime |
値 | 式からconcat([device_usage_date], ' ', [business_end_time] を入力します。 |
- [device_usage_date]
動的コンテンツの「JSON_の解析:forms_answer_results」からdevice_usage_date
を選択します。 - [business_end_time]
動的コンテンツの「変数」からbusiness_end_time
を選択します。
3-5-2. タイム ゾーンの変換:デバイス一時許可の開始日時/終了日時
「端末別使用制限設定の変更API」で一時許可日時を指定するために、タイムゾーンを日本標準時から協定世界時(UTC)に変更するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「日時」を選択し、「タイムゾーンの変換」を選択します。
これを2回繰り返します。
項目 | 設定値 |
---|---|
基準時間 | 動的コンテンツから「変数」のtemporary_allow_start_datetime とtemporary_allow_end_datetime を選択します。 |
書式設定文字列 | yyyy-MM-ddTHH:mm:ssZ (書式設定文字列は「カスタムの値」を選択してから、上記の値を入力します。) |
変換元のタイムゾーン | (UTC+09:00) 大阪、札幌、東京 |
変換先のタイムゾーン | (UTC) 協定世界時 |
3-6. 開始して承認を待機
承認依頼を送信して、承認の結果を受信するまで待機するアクションを追加します。
「+新しいステップ」または「アクションを追加」から「承認」を選択し、「開始して承認を待機」をします。
タイトルやメッセージは自由に設定してください。
項目 | 設定値 |
---|---|
承認の種類 | 承認/拒否 - 最初に応答 |
タイトル(任意) | デバイス使用許可申請 |
担当者 | 動的コンテンツから「JSON の解析:forms answer results」のapprover を選択します。 |
詳細(任意) | ▼依頼情報 依頼者名:[applicant_name] 依頼日時:[request_date_and_time] 理由:[application_reason] ▼ 申請情報 デバイスの使用日:[device_usage_date] デバイスの使用端末:[applicant_computer_name] デバイスポリシー:[device_policy_name] |
▼依頼情報
- [applicant_name]
動的コンテンツから「JSON の解析:forms answer results」のapplicant_name
を選択します。 - [request_date_and_time]
式から下記の値を入力します。
formatDateTime(convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 'yyyy-MM-dd HH:mm:ss')
(この式は、utcNow関数で現在の日時(UTC:協定世界時)を取得し、convertTimeZone関数で日本標準時に変換した後、formatDateTime関数で「yyyy-MM-dd HH:mm:ss」形に変換します。) - [application_reason]
動的コンテンツから「JSON の解析:forms answer results」のapplication_reason
を選択します。
▼ 申請情報
- [device_usage_date]
動的コンテンツから「JSON の解析:forms answer results」のdevice_usage_date
を選択します。 - [applicant_computer_name]
動的コンテンツから「JSON の解析:forms answer results」のapplicant_computer_name
を選択します。 - [device_policy_name]
動的コンテンツから「変数」のdevice_policy_name
を選択します。
3-7. 条件:承認された場合、デバイスポリシーを変更する
承認結果が「承認」である場合、「端末別の使用制限設定の変更API」を実行し、デバイスポリシーを変更するアクションを追加します。
APIが指定した期間は、デバイスが一時許可されるように設定します。
- 条件
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「条件」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
左 | 動的コンテンツから「開始して承認を待機」の「結果」を選択します。 |
右 | Approve |
式 | 次の値に等しい |
- HTTP
「+新しいステップ」または「アクションを追加」から「HTTP」を選択し、「HTTP」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
方法 | PUT |
URI | https://[host_name]/catapisrv/api/v1/policies/devices/[device_policy_id]/client-settings/update |
ヘッダー | キー:Authorization 値: Bearer [api_token] |
本文 | 下記参照 |
- [host_name]
動的コンテンツの「変数」から
host_name
を選択します。 - [device_policy_id]
動的コンテンツの「変数」から
device_policy_id
を選択します。 - [api_token]
動的コンテンツの「変数」から
api_token
を選択します。
下記をクリックすると本文(リクエストボディ)に入力する値を確認することが出来ます。
本文を確認する
{ "client_settings": [ { "client_id": [client_id], "temporary_allow": { "allow_type": 1, "start_datetime": [start_datetime], "end_datetime": [end_datetime] } } ] }
- [client_id]
動的コンテンツの「変数」からclient_id
を選択します。 - [start_datetime]
動的コンテンツの「タイム ゾーンの変換:デバイス一時許可の開始日時」から「変換後の時間」を選択します。 - [end_datetime]
動的コンテンツの「タイム ゾーンの変換:デバイス一時許可の終了日時」から「変換後の時間」を選択します。
3-8. Apply to each:Teams で承認結果を申請者に通知する
Teams から承認結果を申請者に通知するアクションを追加します。
「Apply to each」、「チャットまたはチャネルでメッセージを投稿する」アクションを追加し、設定値を入力します。
(通知内容に承認者のコメントを使用しているため、「Apply to each」を使用します。)
- 「Apply to each」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「Apply to each」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
以前の手順から出力を選択 | 動的コンテンツから「JSON の解析:devices client-settings」のclient_settings を選択します。 |
- 「チャットまたはチャネルでメッセージを投稿する」
「+新しいステップ」または「アクションを追加」から「Microsoft Teams」を選択し、「チャットまたはチャネルでメッセージを投稿する」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
投稿者 | フローボット |
登録先 | フローボットとチャットをする |
Recipient | 動的コンテンツから「JSON の解析:forms answer results」のapplicant_email_address を選択します。 |
メッセージ(任意) | 【デバイス使用許可申請の結果】 承認結果:[approval_result] コメント:[comments] ▼申請情報 申請者(使用者):[applicant_name] 承認先:[approver] デバイスの使用日:[device_usage_date] コンピューター名:[applicant_computer_name] 申請理由:[application_reason] |
- [approval_result]
動的コンテンツから「開始して承認を待機」の「結果」を選択します。 - [comment]
動的コンテンツから「Apply_to_each:Teamsで承認結果を申請者に通知する」の「回答数 コメント」を選択します。 - [applicant_name]
動的コンテンツから「JSON の解析:forms answer results」のapplicant_name
を選択します。 - [approver]
動的コンテンツから「JSON の解析:forms answer results」のapprover
を選択します。 - [device_usage_date]
動的コンテンツから「JSON の解析:forms answer results」のdevice_usage_date
を選択します。 - [applicant_computer_name]
動的コンテンツから「JSON の解析:forms answer results」のapplicant_computer_name
を選択します。 - [application_reason]
動的コンテンツから「JSON の解析:forms answer results」のapplication_reason
を選択します。
4. エラー時の処理(任意)
「3. API実行、承認依頼、承認結果通知処理」が失敗、スキップ、タイムアウトした時にエラーを通知するアクションを追加します。
次に、「・・・」を選択して、「実行条件の構成」を選択します。 「失敗」、「スキップ」、「タイムアウト」にチェックを付け、「完了」を押します。
作成したスコープに「チャットまたはチャネルでメッセージを投稿する」、「終了」アクションを追加します。
- 「チャットまたはチャネルでメッセージを投稿する」
「+新しいステップ」または「アクションを追加」から「Microsoft Teams」を選択し、「チャットまたはチャネルでメッセージを投稿する」を選択します。 次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
投稿者 | フローボット |
登録先 | フローボットとチャットをする |
Recipient | 動的コンテンツから「JSON の解析:forms answer results」のapprover を選択します。 |
メッセージ(任意) | 【デバイス使用許可申請】 デバイスの使用許可申請フローでエラーが発生しました。 詳細はPower Automateの実行履歴 をご確認ください。 [Power Automateのリンク等] |
エラーの詳細は、Power Automate の「マイフロー」>「28 日間の実行履歴」から確認することが出来るため、
メッセージに Power Automate のリンクを含めてもいいと思います。
- 「終了」
「+新しいステップ」または「アクションを追加」から「コントロール」を選択し、「終了」を選択します。
次に、下記の設定値を入力します。
項目 | 設定値 |
---|---|
状態 | 失敗 |
コード(任意) | E00 |
メッセージ(任意) | 例外のエラーが発生している。 |
補足
YouTube のスピンオフ配信にて、コミュニティの方に対して、
フローを実践している動画や LANSCOPE クラウド版の API の活用事例も紹介しています。
ガチガチに緊張していますが、是非ご覧ください。
おわりに
今まで、お客様のご要望を受けて、チームで開発することはありましたが、
自分が担当した内容を、配信で発表することが初めてだったので、とても緊張しました。
しかし、ご要望を頂いたコミュニティメンバーの方に「求めていたものだ」と伺った時はすごく嬉しかったです。
もっと LANSCOPE API を使っていただきたいという思いで、今回参加させていただきましたが、
今後も同じような機会があれば参加したいと思います。