リソースの空き時間の検索 API

Field サービス組織は、多くの場合、顧客から直接サービス エージェントを通して、作業のスケジュールを立てる必要があります。 予約は通常、企業が利用可能なリソースと仕事の要件に基づいて作成されます。

少なくともDynamics 365 Field Service v8.8.43.51およびUniversal Resource Scheduling v3.12.46.21を使って作業をスケジューリングする場合は、msdyn_SearchResourceAvailability APIを使ってジョブに該当するすべてのリソースを取得し、効率的に作業をスケジューリングできます。 執筆時点では、v3が msdyn_SearchResourceAvailability の最新バージョンであり、ウェブAPI呼び出しをサポートしています。

ヒント

古いバージョンでは廃止された認証方法を使う可能性があるため、最新のAPIを使いましょう。

入力パラメーター

件名 タイプ プロパティ Required 既定
バージョン String API のバージョン番号は、呼び出す必要がある API のバージョンを識別します。 これは、major.minor.patch の形式に従います。 要求に完全なバージョン番号を含める必要はありません。

  • メジャー バージョンのみが指定されている場合は、そのメジャー バージョンで使用可能な最も高いマイナーとパッチ バージョンを呼び出します。
  • メジャー バージョンとマイナー バージョンの両方が指定されている場合は、使用可能な最も高いパッチ バージョンを呼び出します。
  • バージョンの 3 つの部分すべてが指定されている場合は、指定された API の正確なバージョンを呼び出します。
  • -N/A-
    IsWebApi ブール値 スケジュールアシスタントをウェブAPI経由で使うために True に設定してください。 -N/A-
    要件 Entity この属性では、リソースの空き時間を取得するリソース要件を指定します。 msdyn_resourcerequirement タイプのエンティティである必要があります。 要件は、データベースからの既存のレコード、または必要な制約を使用してその場で作成されたレコードにすることができます。 エンティティには、検索に関連するすべての詳細が含まれている必要があります。 このエンティティの@odata.typeMicrosoft.Dynamics.CRM.msdyn_requirementであるべきです。 次の重要な属性を入力します:
    1. msdyn_fromdate (DateTime): ISO 形式の要件の開始日
    2. msdyn_todate (DateTime): ISO 形式の要件の終了日
    3. msdyn_remainingduration (整数): 要件の残り時間 (分)
    4. msdyn_duration (整数): 要件の合計時間 (分)
    -N/A-
    設定 Entity settings 属性は、取得したリソースをさらにフィルタリングするのに役立ちます。 エンティティバッグで属性として設定を指定してください。 エンティティの種類は関係ありません。 任意のエンティティ論理名を指定できます。 -N/A-
    ResourceSpecification Entity エンティティバッグ内の属性として resourceSpecification 属性を定義します。 このエンティティの@odata.typeMicrosoft.Dynamics.CRM.expandoであるべきです。 いいえ None

    Settings エンティティ

    設定エンティティは、Dataverse に存在するエンティティではありません; ただし、スケジュール アシスタント API が結果をフィルターするのに役立つ、次のすべての属性のコレクションです。 したがって、このエンティティの@odata.typeMicrosoft.Dynamics.CRM.expandoであるべきです。

    件名 タイプ プロパティ Required 既定
    ConsiderSlotsWithLessThanRequiredCapacity ブール値 これを True に設定するのは、リソースのカレンダーで潜在的な利用可能時間帯を計算する際に、必要なキャパシティ (工数) よりも少ない時間帯を考慮する必要がある場合です。 いいえ
    ConsiderSlotsWithLessThanRequiredDuration ブール値 これを True に設定するのは、リソースのカレンダーで潜在的な利用可能時間帯を計算する際に、必要な期間よりも短い時間帯を考慮する必要がある場合です。 いいえ
    ConsiderSlotsWithOverlappingBooking ブール値 これを True に設定するのは、リソースのカレンダーで潜在的な利用可能時間帯を計算する際に、予約が重複している時間帯を考慮する必要がある場合です。 いいえ
    ConsiderSlotsWithProposedBookings ブール値 これを True に設定するのは、リソースのカレンダーで潜在的な利用可能時間帯を計算する際に、提案済み予約の時間帯を考慮する必要がある場合です。 いいえ
    ConsiderAppointments ブール値 これを検索リソースの可用性 API に対して True に設定して、既存の Dataverse の予定をリソース上の予約として、組織およびリソース レベルの設定が設定された として尊重します。 「忙しい」または「完了」のステータスのアポイントは、スケジューリング業務の対象外とみなされます。 いいえ
    ConsiderTravelTime ブール値 これを True に設定するのは、リソースのカレンダーで潜在的な時間帯を計算する際に、移動時間を考慮する必要がある場合です。 いいえ
    リソース特徴を除外する ブール値 応答するタイムスロットのリソース特性を除外するためにこれを True に設定してください。 いいえ
    MovePastStartDateToCurrentDate ブール値 これを True に設定すると、過去の開始日が現在の日付に移動します。 いいえ
    UseRealTimeResourceLocation ブール値 これを True に設定するのは、リソースのカレンダーで潜在的な時間帯を計算する際に、リソースのリアルタイムの場所を使用する必要がある場合です。 いいえ
    SortOrder EntityCollection エンティティ コレクションを使用して並べ替え順序を指定します。 コレクション内の各エンティティは 1 つの並べ替え基準を表し、応答から Resources のみを並べ替えることができ、 TimeSlotsは並べ替えられません。 このエンティティの@odata.typeMicrosoft.Dynamics.CRM.expandoであるべきです。 入力する必要のある属性は次のとおりです:
    1. Name (文字列): 並べ替え条件
    2. SortOrder (整数): 並べ替え方向 (昇順の場合は 0、降順の場合は 1)
    いいえ None
    MaxResourceTravelRadius Entity この属性は、エンティティで定義できる最大値を指定します。 このエンティティの@odata.typeMicrosoft.Dynamics.CRM.expandoであるべきです。 入力する必要のある属性は次のとおりです:
    1. Value (10 進数): 半径
    2. Unit (整数): 距離の単位。 可能な値については、msdyn_distance 単位オプション セットを参照してください。
    いいえ 0キロ。 その場合、オンサイト要件のためのリソースは返されません。
    MaxNumberOfResourcesToEvaluate 整数 この属性は、要求で考慮されるリソースの数の制限を定義します。 いいえ この属性がAPI呼び出しに含まれていない場合、システムは 有効エンティティの編集設定で定義されたスデューラブルエンティティ定義からリソース可用性リトリーバルリトリーブル制限を使用します。 呼び出しに含まれる場合は、定義されたリソース可用性取得制限が上書きされます。
    ConsiderOutlookSchedules ブール値 Outlookのスケジュールを考慮する場合は、これをTrueに設定してください。 バージョン3.1.0以降のみで利用可能。 いいえ

    リソース仕様エンティティ

    件名 タイプ プロパティ Required 既定
    ResourceTypes EntityCollection この属性は、要件に必要なリソースの種類を指定します。 エンティティコレクションを使ってこの属性を指定します。 コレクション内の各エンティティは、1 つの予約可能リソースの種類を表します。 このエンティティの@odata.typeMicrosoft.Dynamics.CRM.msdyn_resourceTypeであるべきです。 この属性は必須です:
    1. Value (整数): リソースの種類を表すオプション セット値:
      • 1- 汎用
      • 2- 連絡先
      • 3- ユーザー
      • 4- 備品
      • 5- アカウント
      • 6- スタッフ
      • 7- 施設
      • 8- プール
    いいえ スタッフを除くすべてのリソースの種類
    PreferredResources EntityCollection この属性は、要件に対して優先されるリソースを指定します。 このエンティティコレクションにリソースを追加し、利用可能なリソースのリストの上位に位置するようにしましょう。 エンティティコレクションに含まれていないリソースもリストに含まれますが、それは優先リソースの後にのみです。 いいえ None
    RestrictedResources EntityCollection この属性は、要件に対して考慮されないリソースを指定します。 このリソースのすべてのタイムスロットは、このAPIの結果リストから除外されます。 いいえ None
    MustChooseFromResources EntityCollection この属性は、使用可能なリソースの一覧に含めることができるリソースのみを指定します。 出力リストから他のすべての結果を除外します。
    制約 Entity この属性は、使用可能なリソースの取得に適用する必要がある追加の制約を指定します。 いいえ None
    RetrieveResourcesQueryId GUID リソース取得クエリの ID です。 いいえ 既定のリソース取得クエリ ID です。
    BookedResourceId GUID この属性は、要件に対して現在予約されているリソースを指定します。 いいえ None

    ヒント

    Preferred、RestrictedMustChooseFrom リソース属性を指定するために、Bookable resource entityのエンティティコレクションを使いましょう。 コレクション内の各エンティティは、 1つのPreferredRestricted、または MustChooseFrom リソースを表します。 この属性は彼らに必要です:

    1. 価値 (Guid): 優先制限またはMustChooseFrom リソースの予約可能なリソースID。 このエンティティの@odata.typeMicrosoft.Dynamics.CRM.msdyn_bookableresourceであるべきです。

    制約

    このエンティティの属性を通じて追加の制約を指定してください。 エンティティの種類は関係ありません。 任意のエンティティ論理名を指定できます。

    スケジュール ボード設定の リソース取得クエリ を確認して、適用される可能性のある制約を特定します。 既定では、次のものが含まれます:

    件名 タイプ プロパティ
    特性 EntityCollection 資格のあるリソースが持つべき特徴の集合体です。 各エントリには特徴IDの characteristic が含まれています。 オプションとして、特定の習熟レベルでリソースを絞り込むために、評価値ID付きの ratingvalue を含めることも可能です。
    ロール EntityCollection 要件を満たすリソースに必要なロール ID のコレクション。
    担当地域 EntityCollection 担当地域 ID のコレクション。 要件を満たすリソースは、いずれかの担当地域に割り当てる必要があります。
    UnspecifiedTerritory ブール値 担当地域制約と組み合わせて、要件を満たすリソースを担当地域の 1 つに割り当てるか、担当地域をまったく割り当てないように指定します。
    OrganizationalUnits EntityCollection 組織単位 ID のコレクション。 要件を満たすリソースは、指定された組織単位の 1 つのメンバーである必要があります。
    Teams EntityCollection チーム ID のコレクション。 要件を満たすリソースは、チームの 1 つに属している必要があります (リソースの種類がシステム ユーザーであることを意味します)。
    BusinessUnits EntityCollection 事業部門のIDのコレクションです。 要件を満たすリソースは、部署の 1 つに属している必要があります (リソースがシステム ユーザーであることを意味します)。

    出力パラメーター

    最上位レベルでは、出力に次の 4 つのパラメーターがあります。 結果は、エンティティ コレクションとエンティティで表されます。 応答には、ここで説明するすべての属性が null 値として含まれない場合や、応答から NA 値が省略されない場合があります。 属性にアクセスする前に、必ず属性のプレゼンスを確認してください。

    件名 タイプ プロパティ
    TimeSlots EntityCollection 時間帯の結果のコレクション。 詳細については、「 タイムスロットエンティティ 」セクションを参照してください。
    リソース EntityCollection リソースの結果のコレクション。 リソースは、次の属性を持つエンティティのコレクションとして表されます:
    1. BookableResource (ンティティ): 要件に使用できる予約可能なリソース エンティティ。
    2. TotalAvailableTime (Double): リソースが要件を実行するために利用可能な合計時間。
    関連 Entity 関連リソースは、要求された要件に直接適格ではないが関連しているリソースとリソースのタイムスロットを表します。 たとえば、スタッフ メンバーが要件を満たす場合、そのスタッフの他のメンバーは関連する結果になります。
    1. TimeSlots (EntityCollection): 関連リソースの時間帯。 時間帯の定義は、時間帯セクション で説明したものと同じです。
    2. Resources (EntityCollection): 関連リソース。 リソースの定義は、リソース属性の定義で説明したものと同じです。
    例外 Entity この属性には、発生した例外に関する情報と、リソース検索が切り捨てられたかどうかとどこで切り捨てられたかに関する情報が含まれます。
    1. Message (文字列): 例外メッセージ
    2. ResourcesTruncatedAt (整数): リソースの数が取得制限を超えた場合; リソースが切り捨てられた数。

    時間帯エンティティ

    件名 タイプ プロパティ
    ID GUID 時間帯の一意識別子
    タイプ 整数 時間帯の種類。 次のいずれかの値を指定できます。
    • 0: 使用可能
    • 1: スケジュール済み
    • 2: オフ
    • 3: 休憩
    StartTime DateTime 時間帯の開始時刻。 もしその要件に旅行がある場合、この時間が移動開始時刻となります。 もしそうでなければ、この時間が要件の開始時間となります。
    ArrivalTime DateTime 時間帯の到着時刻。 要件のための移動がある場合、この時間が移動完了後の要件開始時刻となります。 そうでない場合は、時間帯の開始時刻と同じです。
    EndTime DateTime 時間帯の終了時刻。
    工数 整数 要件を実行するためのリソースの工数またはキャパシティ。
    ResourceRequirement EntityReference 時間帯が取得されるリソース要件。
    Potential ブール値 時間帯が要求された要件を満たす可能性があるかどうかを示すブール値。
    IsDuplicate ブール値 時間帯が重複しているかどうかを示すブール値。
    AllowOverlapping ブール値 重複が許可されているかどうかを示すブール値。
    リソース Entity 時間帯が属するリソース。 詳細については、時間帯リソース を参照してください。
    場所 Entity 位置情報には 3 つの属性があります:
    1. Location (Entity): 2 つの属性があります -
      • 緯度
      • 緯度
    2. WorkLocation (整数): 3 つの属性があります -
      • オンサイト。 オンサイト要件では、リソースの種類としてプールと設備が結果から除外されます。
      • 設備
      • 場所指定なし
    3. LocationSourceSlot (整数): 位置情報のソースには 3 つの属性があります -
      • 一般的な
      • ユーザー定義 GPS エンティティ
      • モバイル監査
    移動 Entity このエンティティには、時間帯の移動時間と距離の詳細が含まれています。 属性は次のとおりです:
    1. Distance (Double): 移動距離
    2. TravelTime (Double): 移動時間 (分)。
    3. DistanceFromStartLocation (Double): リソースの開始場所からの距離。
    4. DistanceFromEndLocation (Double): リソースの終了場所からの距離。
    5. DistanceMethodSourceSslot (整数):距離値のソースまたは計算タイプ
      • マップ サービス
      • 直線距離
    Entity このエンティティには、次の時間帯予約までの移動時間と距離に関する詳細が含まれています。
    1. NextScheduleLocation (エンティティ): 次の予約の場所。 エンティティには 2 つの属性があります:
      • 緯度
      • 緯度
    2. NextScheduleTravelTime (整数): 次の予約までの移動時間 (分)。
    可用性 Entity 時間帯の詳細な空き時間情報。 このエンティティは時間群と共に使用されます。
    1. AvailableIntervals (EntityCollection): 利用可能な間隔のコレクション。 このコレクションの各エンティティには、時間グループ間隔に関する詳細が含まれています。
      • StartTime (DateTime): 開始時刻。
      • ArrivalTime (DateTime): 到着時刻。
      • EndTime (DateTime): 終了時刻。
      • TimeGroupId (DateTime): 時間グループ ID。
      • TimeGroupDetailStartTime (DateTime): 時間グループの開始時刻。
      • TimeGroupDetailEndTime (DateTime): 時間グループの終了時刻。
    2. TotalAvailableDuration (Double): 合計利用可能時間 (分)。
    3. TotalAvailableTime (Double): リソースが 1 日に利用可能な時間の合計 (分)。
    TimeGroup Entity 時間グループに関する詳細。
    1. TimeGroupId (GUID): 時間グループ ID。
    2. TimeGroupDetail (EntityReference): 時間グループの詳細へのエンティティ参照。
    3. TimeGroupDetailStartTime (DateTime): 時間グループ詳細の開始時刻。
    4. TimeGroupDetailEndTime (DateTime): 時間グループ詳細の終了時刻。

    チップ

    APIを使って予約を作成する際は、表に記載されている Potential フィールドを使ってください。 このフィールドを使用しないと、予約が重複したり不適切になる可能性があります。

    時間帯リソース

    件名 タイプ プロパティ
    リソース EntityReference 予約可能リソースへのエンティティ参照。
    リソース グループ EntityReference 予約可能リソース グループへのエンティティ参照。
    BusinessUnit EntityReference 部署へのエンティティ参照。
    OrganizationalUnit EntityReference 組織単位へのエンティティ参照。
    ResourceType 整数 リソースの種類。 可能な値については、BookableResource エンティティの ResourceType 属性を参照してください。
    PoolId GUID 時間帯で、リソースがメンバーであるプールの ID。
    CrewId GUID 時間帯で、クルーがメンバーであるプールの ID。
    特性 EntityCollection 予約可能リソースの特性。 コレクション内の各エンティティには、特性と評価情報を持つエンティティが含まれています。
    1. Characteristic (EntityReference): 特性へのエンティティ参照。
    2. RatingId (GUID) 特性の評価 ID。
    3. RatingName (文字列): 評価名。
    4. RatingValue (整数): 評価値。
    HasStartLocation ブール値 リソースに開始場所があるかどうかを示すブール値。
    HasEndLocation ブール値 リソースに終了場所があるかどうかを示すブール値。
    Email String リソースのメール アドレス。
    電話 String リソースの電話番号。
    ImagePath String リソースの画像へのパス。
    CalendarId GUID リソースのカレンダー ID。

    使用例

    この例では、スケジュールアシスタントAPIのバージョン3を使用し、ウェブAPI呼び出しをサポートし、60分の要件を適用します。 settings属性を使うことで、結果をフィルタリングします。 最終結果として、2種類のリソースタイプを考えます:1と2(つまりジェネリックとコンタクト)。

    {
        "Version": "4",
        "IsWebApi": true,
        "Requirement": {
            "msdyn_fromdate": "2021-07-14T00:00:00Z",
            "msdyn_todate": "2021-07-15T23:59:00Z",
            "msdyn_remainingduration": 60,
            "msdyn_duration": 60,
            "msdyn_TimeGroup@odata.bind": "/msdyn_timegroups(c3dc79ea-d12f-ee11-9cc9-000d3a745a58)",
            "@odata.type": "Microsoft.Dynamics.CRM.msdyn_resourcerequirement"
        },
        "Settings": {
            "ConsiderSlotsWithProposedBookings": false,
            "MovePastStartDateToCurrentDate": true,
            "@odata.type": "Microsoft.Dynamics.CRM.expando"
        },
        "ResourceSpecification": {
            "@odata.type": "Microsoft.Dynamics.CRM.expando",
            "ResourceTypes@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
            "ResourceTypes": [
                {
                    "@odata.type": "Microsoft.Dynamics.CRM.expando",
                    "value": "1"
                },
                {
                    "@odata.type": "Microsoft.Dynamics.CRM.expando",
                    "value": "2"
                }
            ],
            "Constraints": {
                "@odata.type": "Microsoft.Dynamics.CRM.expando",
                "Characteristics@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
                "Characteristics": [
                    {
                        "@odata.type": "Microsoft.Dynamics.CRM.expando",
                        "characteristic": {
                            "@odata.type": "Microsoft.Dynamics.CRM.expando",
                            "value": "67387f9f-12e2-ec11-bb43-000d3aed25f7"
                        },
                        "ratingvalue": {
                            "@odata.type": "Microsoft.Dynamics.CRM.expando",
                            "value": "a1b2c3d4-5678-90ab-cdef-1234567890ab"
                        }
                    }
                ],
                "Territories@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
                "Territories": [
                    {
                        "@odata.type": "Microsoft.Dynamics.CRM.expando",
                        "value": "cc19f004-4483-ee11-8178-000d3a5c32c3"
                    }
                ],
                "Roles@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
                "Roles": [
                    {
                        "@odata.type": "Microsoft.Dynamics.CRM.expando",
                        "value": "76998e42-744c-f011-877d-6045bdfb899e"
                    }
                ]
            }
        }
    }
    
    

    次の例は、エンティティ コレクションの適切な使用法を示しています。 この場合、 MustChooseFromResourcesを指定します。

    {
        "Version": "4",
        "IsWebApi": true,
        "Requirement": {
            "msdyn_fromdate": "2021-07-14T00:00:00Z",
            "msdyn_todate": "2021-07-15T23:59:00Z",
            "msdyn_remainingduration": 60,
            "msdyn_duration": 60,
            "msdyn_latitude": 47.64807,
            "msdyn_longitude": -122.41249,
            "msdyn_worklocation": 690970000,
            "msdyn_TimeGroup@odata.bind": "/msdyn_timegroups(c3dc79ea-d12f-ee11-9cc9-000d3a745a58)",
            "@odata.type": "Microsoft.Dynamics.CRM.msdyn_resourcerequirement"
        },
        "Settings": {
            "ConsiderSlotsWithProposedBookings": false,
            "MovePastStartDateToCurrentDate": true,
            "MaxNumberOfResourcesToEvaluate":500,
            "ConsiderTravelTime": true,
            "MaxResourceTravelRadius": {
                "Value": 20,
                "Unit" : 192350000,
                "@odata.type": "Microsoft.Dynamics.CRM.expando"
            },
            "@odata.type": "Microsoft.Dynamics.CRM.expando"
        },
        "ResourceSpecification": {
            "@odata.type": "Microsoft.Dynamics.CRM.expando",
            "ResourceTypes@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
            "ResourceTypes": [
                {
                    "@odata.type": "Microsoft.Dynamics.CRM.expando",
                    "value": "1"
                },
                {
                    "@odata.type": "Microsoft.Dynamics.CRM.expando",
                    "value": "2"
                }
            ],
            "MustChooseFromResources@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
            "MustChooseFromResources": [
                {
                    "@odata.type": "Microsoft.Dynamics.CRM.expando",
                    "value": "2145a982-f718-ed11-b83e-0022482d79c8"
                }
            ],
            "Constraints": {
                "@odata.type": "Microsoft.Dynamics.CRM.expando",
                "Characteristics@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
                "Characteristics": [
                    {
                        "@odata.type": "Microsoft.Dynamics.CRM.expando",
                        "characteristic": {
                            "@odata.type": "Microsoft.Dynamics.CRM.expando",
                            "value": "67387f9f-12e2-ec11-bb43-000d3aed25f7"
                        },
                        "ratingvalue": {
                            "@odata.type": "Microsoft.Dynamics.CRM.expando",
                            "value": "a1b2c3d4-5678-90ab-cdef-1234567890ab"
                        }
                    }
                ],
                "Territories@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
                "Territories": [
                    {
                        "@odata.type": "Microsoft.Dynamics.CRM.expando",
                        "value": "cc19f004-4483-ee11-8178-000d3a5c32c3"
                    }
                ]
            }
        }
    }