コンタクト センターが 8:30 から 18:00 まで稼働し、さまざまな言語で通話に対応できる 4 人のエージェントがいるとします。エージェントが割り当てられる可能性があるシフトは、8:30 ~ 16:30、9:00 ~ 17:00、10:00 ~ 18:00 の 3 つです。これまでの予測から、各言語の需要は曜日によって異なることがわかっています。通常、月曜日は英語とポルトガル語で通話するため、これらの言語を知っているエージェントが少なくとも 1 人必要です。火曜日は、通常、スペイン語とフランス語での通話です。そのため、それぞれの言語に習熟したエージェントが少なくとも 1 人必要です。言語に関係なく、常に 2 つ以上のエージェントが対応している必要があります。
1 日に数回のシフト
このコンタクト センターの例では、1 日に 3 回のシフトがあり、計画期間は 2 日間です。たとえば、特定の月曜日の 8:30 ~ 16:30 シフトは次のように表されます。
{
"shifts": [
{
"id": "Monday-2024-7-1 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 16,
"minutes": 30
}
}
]
}
6 つのシフトがある例
{
"shifts": [
{
"id": "Monday-2024-7-1 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 16,
"minutes": 30
}
},
{
"id": "Monday-2024-7-1 9:00-17:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 9
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 17
}
},
{
"id": "Monday-2024-7-1 10:00-18:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 10
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 18
}
},
{
"id": "Tuesday-2024-7-2 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 16,
"minutes": 30
}
},
{
"id": "Tuesday-2024-7-2 9:00-17:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 9
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 17
}
},
{
"id": "Tuesday-2024-7-2 10:00-18:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 10
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 18
}
}
]
}
従業員のスキルとしての言語
エージェントが認識する言語は skill
として表されます。最初のエージェントである Lauren はスペイン語とポルトガル語を知っているので、次のように表現されます。
{
"employees": [
{
"id": "Lauren",
"role_ids": [
"Agent"
],
"skill_ids": [
"ES",
"PR"
]
}
]
}
他の例で説明されているように、他の種類のスケジュールの制約、シフトのリクエスト、従業員の好みを追加することもできます。
4 人の従業員全員を含む例
{
"employees": [
{
"id": "Lauren",
"role_ids": [
"Agent"
],
"skill_ids": [
"ES",
"PR"
]
},
{
"id": "Markus",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"PR"
]
},
{
"id": "Hans",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"ES"
],
"shiftRequests": [
{
"shiftIds": [
"Monday-2024-7-1 10:00-18:00"
],
"type": "STATUS_NOT_WORK"
}
]
},
{
"id": "Peter",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"FR"
],
"shiftPreferences": [
{
"shiftId": "Monday-2024-7-1 10:00-18:00",
"preference": 1
}
]
}
]
}
エージェントと言語に対応するデマンド カバレッジ
エージェントまたは特定の言語に対する需要は、カバレッジ要件で示されます。2 つのエージェントが必要とされている場合は roleRequirements
で、言語の要件は skillRequirements
で規定されています。月曜日と火曜日のカバレッジ要件は次のとおりです。
{
"coverageRequirements": [
{
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 18
},
"roleRequirements": [
{
"role_id": "Agent",
"target_employee_count": 1,
"priority": "PRIORITY_HIGH"
}
],
"skillRequirements": [
{
"skill_id": "EN",
"target_employee_count": 1
},
{
"skill_id": "PR",
"target_employee_count": 1
}
]
},
{
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 18,
"minutes": 0
},
"roleRequirements": [
{
"role_id": "Agent",
"target_employee_count": 1,
"priority": "PRIORITY_HIGH"
}
],
"skillRequirements": [
{
"skill_id": "ES",
"target_employee_count": 1
},
{
"skill_id": "FR",
"target_employee_count": 1
}
]
}
],
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"ES",
"FR",
"PR"
]
}
リクエストですべてのロール ID とスキル ID を定義する必要があることにご注意ください。これらは、従業員の定義に使用される ID と一致する必要があります。
完全なリクエストの例
{
{
"requestId": "contact_center_examples",
"solve_parameters": {
"time_limit": {
"seconds": 60
}
},
"employees": [
{
"id": "Lauren",
"role_ids": [
"Agent"
],
"skill_ids": [
"ES",
"PR"
]
},
{
"id": "Markus",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"PR"
]
},
{
"id": "Hans",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"ES"
],
"shiftRequests": [
{
"shiftIds": [
"Monday-2024-7-1 10:00-18:00"
],
"type": "STATUS_NOT_WORK"
}
]
},
{
"id": "Peter",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"FR"
],
"shiftPreferences": [
{
"shiftId": "Monday-2024-7-1 10:00-18:00",
"preference": 1
}
]
}
],
"shifts": [
{
"id": "Monday-2024-7-1 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 16,
"minutes": 30
}
},
{
"id": "Monday-2024-7-1 9:00-17:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 9
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 17
}
},
{
"id": "Monday-2024-7-1 10:00-18:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 10
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 18
}
},
{
"id": "Tuesday-2024-7-2 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 16,
"minutes": 30
}
},
{
"id": "Tuesday-2024-7-2 9:00-17:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 9
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 17
}
},
{
"id": "Tuesday-2024-7-2 10:00-18:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 10
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 18
}
}
],
"coverageRequirements": [
{
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 18
},
"roleRequirements": [
{
"role_id": "Agent",
"target_employee_count": 1,
"priority": "PRIORITY_HIGH"
}
],
"skillRequirements": [
{
"skill_id": "EN",
"target_employee_count": 1
},
{
"skill_id": "PR",
"target_employee_count": 1
}
]
},
{
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 18,
"minutes": 0
},
"roleRequirements": [
{
"role_id": "Agent",
"target_employee_count": 1,
"priority": "PRIORITY_HIGH"
}
],
"skillRequirements": [
{
"skill_id": "ES",
"target_employee_count": 1
},
{
"skill_id": "FR",
"target_employee_count": 1
}
]
}
],
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"ES",
"FR",
"PR"
]
}
}
レスポンスの例
ソルバーのレスポンスには、シフトへのエージェントの割り当てと最適化手順のステータスが含まれます。
次の例は、割り当てられたシフトを示しています。
{
"solutionStatus": "OPTIMAL",
"shiftAssignments": [
{
"employeeId": "Lauren",
"shiftId": "Tuesday-2024-7-2 10:00-18:00",
"roleId": "Agent"
},
{
"employeeId": "Markus",
"shiftId": "Monday-2024-7-1 8:30-16:30",
"roleId": "Agent"
},
{
"employeeId": "Peter",
"shiftId": "Monday-2024-7-1 10:00-18:00",
"roleId": "Agent"
},
{
"employeeId": "Peter",
"shiftId": "Tuesday-2024-7-2 8:30-16:30",
"roleId": "Agent"
}
],
"requestId": "contact_center_examples"
}