Контактный центр

Рассмотрим контакт-центр, который работает с 8:30 до 18:00 и имеет четырех агентов, которые могут принимать звонки на разных языках. Существует три возможных смены, в которые могут быть назначены агенты: 8:30–16:30, 9:00–17:00 и 10:00–18:00. Из предыдущих прогнозов известно, что спрос на каждый язык варьируется в зависимости от дня недели. По понедельникам звонки обычно происходят на английском и португальском языках, поэтому должен быть хотя бы один агент, знающий эти языки. По вторникам звонки обычно происходят на испанском и французском языках, поэтому должен быть хотя бы один агент, владеющий каждым из этих языков. Независимо от языка, всегда должно быть как минимум два агента.

Несколько смен в день

В этом примере контакт-центра в день работает три смены, а горизонт планирования составляет два дня. Например, смена с 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
        }
      }
    ]
  }

Пример с шестью сменами


    {
      "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 . Первый агент, Лорен, знает испанский и португальский языки и представлена ​​как:

  {
    "employees": [
      {
        "id": "Lauren",
        "role_ids": [
          "Agent"
        ],
        "skill_ids": [
          "ES",
          "PR"
        ]
      }
    ]
  }

Также можно добавить другие типы ограничений планирования, запрос на смену и предпочтения сотрудников, как описано в других примерах .

Пример со всеми четырьмя сотрудниками


  {
    "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
          }
        ]
      }
    ]
  }
  

Покрытие спроса на агентов и языки

Спрос на агентов или конкретные языки представлен требованиями к покрытию . Потребность в двух агентах указана в 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"
    ]
  }

Обратите внимание, что все идентификаторы ролей и навыков должны быть определены в запросе. Они должны соответствовать идентификаторам, используемым для определения сотрудников.

Пример полного запроса


    {
      {
        "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"
  }