GetAppointmentCandidatesInput クラス
要求を作成する前に、Salesforce Scheduler を設定します。この設定には、サービスリソース、サービステリトリーメンバー、作業種別グループ、作業種別、作業種別グループメンバー、およびサービステリトリー作業種別の作成または設定が含まれます。詳細は、「Salesforce Scheduler の設定」を参照してください。
利用可能な時間枠を決定するために、予定の時間枠が、項目値、スケジュール済み予定、不在、Scheduler の設定、スケジュールポリシーなどの複数の要素に基づいて決定されます。詳細は、「Salesforce Scheduler による対応可能な時間枠の決定」を参照してください。
リソースの開始時刻および終了時刻を返す際には、以下の要素が検討されます。
- リソースの作業可能性
- サービステリトリーメンバー、サービステリトリー、作業種別、取引先の業務時間の各項目を使用して判断されます。
- リソースの作業不可能性
- リソースの不在、リソースが割り当てられた既存の予定に基づいて判断されます。リソースは、状況が [クローズ済み]、[キャンセル]、または [完了] のいずれでもない予定の必須リソースとしてマークする必要があります。
- スケジュールポリシー内の予定の開始時間の間隔
- 予定を開始できる時間は、スケジュールポリシー内の [Appointment start time interval (予定の開始時間の間隔)] 項目を使用して決定されます。この間隔には、5、10、15、20、30、または 60 を設定できます。デフォルトでは 15 に設定されます。
- 作業種別の期間
- 終了時刻は、開始時刻 + 作業種別の期間で計算されます。
名前空間
使用方法
このクラスのコンストラクターは、直接コールできません。このクラスのインスタンスを作成するには、GetAppointmentCandidatesInputBuilder.build() メソッドを使用します。
次の例は、workTypeGroupId に基づいて利用可能な予定候補のリストを取得する方法を示しています。
1//Build input for GetAppointmentCandidates API
2 lxscheduler.GetAppointmentCandidatesInput input = new lxscheduler.GetAppointmentCandidatesInputBuilder()
3 .setWorkTypeGroupId('0VSRM0000000ABc4AM')
4 .setTerritoryIds(new List<String>{'0HhRM0000000FXd0AM'})
5 .setStartTime(System.now().format('yyyy-MM-dd\'T\'HH:mm:ssZ','America/New_York'))
6 .setEndTime(System.now().addDays(5).format('yyyy-MM-dd\'T\'HH:mm:ssZ','America/New_York'))
7 .setAccountId('001RM0000053iQgYAI')
8 .setSchedulingPolicyId('0VrRM00000000Bx')
9 .setApiVersion(Double.valueOf('50.0'))
10 .build();
11
12 String response = lxscheduler.SchedulerResources.getAppointmentCandidates(input);次の例は、workType に基づいて利用可能な予定候補のリストを取得する方法を示しています。
1//Build WorkType
2 lxscheduler.WorkType workType = new lxscheduler.WorkTypeBuilder()
3 .setId('08qRM0000000G9RYAU')
4 .build();
5
6 lxscheduler.GetAppointmentCandidatesInput input = new lxscheduler.GetAppointmentCandidatesInputBuilder()
7 .setWorkType(workType)
8 .setTerritoryIds(new List<String>{'0HhRM0000000FXd0AM'})
9 .setStartTime(System.now().format('yyyy-MM-dd\'T\'HH:mm:ssZ','America/New_York'))
10 .setEndTime(System.now().addDays(5).format('yyyy-MM-dd\'T\'HH:mm:ssZ','America/New_York'))
11 .setAccountId('001RM0000053iQgYAI')
12 .setSchedulingPolicyId('0VrRM00000000Bx')
13 .setApiVersion(Double.valueOf('50.0'))
14 .build();
15
16 String response = lxscheduler.SchedulerResources.getAppointmentCandidates(input);次の例は、workTypeGroupId 項目や workType 項目は使用せず、durationInMinutes に基づいて利用可能な予定候補のリストを取得する方法を示しています。
1//Build SkillRequirement
2 lxscheduler.SkillRequirement skillReq = new lxscheduler.SkillRequirementBuilder()
3 .setSkillId('0C5RM0000004EZS0A2')
4 .setSkillLevel(90)
5 .build();
6
7//Build WorkType
8 lxscheduler.WorkType workType = new lxscheduler.WorkTypeBuilder()
9 .setDurationInMinutes(15)
10 .setBlockTimeBeforeAppointmentInMinutes(5)
11 .setBlockTimeAfterAppointmentInMinutes(5)
12 .setTimeFrameStartInMinutes(10080)
13 .setTimeFrameEndInMinutes(40320)
14 .setOperatingHoursId('0OHRM0000000FmG4AU')
15 .setSkillRequirements(new List<lxscheduler.SkillRequirement>{skillReq})
16 .build();
17
18 lxscheduler.GetAppointmentCandidatesInput input = new lxscheduler.GetAppointmentCandidatesInputBuilder()
19 .setWorkType(workType)
20 .setTerritoryIds(new List<String>{'0HhRM0000000FXd0AM'})
21 .setSchedulingPolicyId('0VrRM00000000Bx')
22 .setApiVersion(Double.valueOf('50.0'))
23 .build();
24
25 String response = lxscheduler.SchedulerResources.getAppointmentCandidates(input);次の例は、利用可能な候補のリストのサンプル応答を示しています。
1[
2 {
3 "startTime": "2021-02-16T16:15:00.000+0000",
4 "endTime": "2021-02-16T16:16:00.000+0000",
5 "resources": [
6 "0Hnxx0000004C9BCAU"
7 ],
8 "territoryId": "0Hhxx0000004C92CAE"
9 },
10 {
11 "startTime": "2021-02-16T16:30:00.000+0000",
12 "endTime": "2021-02-16T16:31:00.000+0000",
13 "resources": [
14 "0Hnxx0000004C9BCAU"
15 ],
16 "territoryId": "0Hhxx0000004C92CAE"
17 },
18]