Freigeben über


Arbeitskapazität des Auftragsrouters

Bei der Konfiguration von Mitarbeitern möchten wir eine Möglichkeit bieten, anzugeben, wie viele Aufträge ein Mitarbeiter gleichzeitig aus verschiedenen Kanälen verarbeiten kann. Diese Konfiguration kann erfolgen, indem Sie die Gesamtkapazität des Workers angeben und für jeden Kanal kosten pro Auftrag zuweisen.

Beispiel: Worker, der einen VoIP-Auftrag oder bis zu fünf Chataufträge verarbeiten kann

In diesem Beispiel konfigurieren wir einen Mitarbeiter mit einer Gesamtkapazität von 100 und legen den VoIP-Kanal so fest, dass 100 Kapazität pro Auftrag und der Chatkanal 20 Kapazität pro Auftrag verbrauchen. Diese Konfiguration bedeutet, dass der Mitarbeiter gleichzeitig einen VoIP-Auftrag oder bis zu fünf Chataufträge gleichzeitig verarbeiten kann. Wenn der Mitarbeiter einen oder mehrere Chataufträge verarbeitet, kann der Mitarbeiter keine Sprachaufträge annehmen, bis diese Chataufträge abgeschlossen sind. Wenn der Mitarbeiter einen VoIP-Auftrag verarbeitet, kann der Mitarbeiter keine Chataufträge ausführen, bis der VoIP-Auftrag abgeschlossen ist.

var worker = await client.CreateWorkerAsync(
    new CreateWorkerOptions(workerId: "worker1", capacity: 100)
    {
        Queues = { "queue1" },
        Channels =
        {
            new RouterChannel(channelId: "voice", capacityCostPerJob: 100),
            new RouterChannel(channelId: "chat", capacityCostPerJob: 20)
        }
    });
await client.path("/routing/workers/{workerId}", "worker1").patch({
    body: {
        capacity: 100,
        queues: ["queue1"],
        channels: [
            { channelId: "voice", capacityCostPerJob: 100 },
            { channelId: "chat", capacityCostPerJob: 20 },
        ]
    },
    contentType: "application/merge-patch+json"
});
client.upsert_worker(worker_id = "worker1",
    capacity = 100,
    queues = ["queue1"],
    channels = [
        RouterChannel(channel_id = "voice", capacity_cost_per_job = 100),
        RouterChannel(channel_id = "chat", capacity_cost_per_job = 20)
    ]
)
client.createWorker(new CreateWorkerOptions("worker1", 100)
    .setQueues(List.of("queue1"))
    .setChannels(List.of(
        new RouterChannel("voice", 100),
        new RouterChannel("chat", 20))));

Beispiel: Worker, der einen Sprachaufträge und bis zu zwei Chataufträge und zwei E-Mail-Aufträge gleichzeitig verarbeiten kann

In diesem Beispiel wird ein Worker mit einer Gesamtkapazität von 100 konfiguriert. Als Nächstes wird festgelegt, dass der VoIP-Kanal 60 Kapazität pro Auftrag und die Chat- und E-Mail-Kanäle verbraucht, um jeweils 10 Kapazität pro Auftrag zu verbrauchen, wobei jeweils ein maxNumberOfJobs Satz auf zwei festgelegt ist. Diese Konfiguration bedeutet, dass der Worker jeweils einen VoIP-Auftrag und bis zu zwei Chataufträge und bis zu zwei E-Mail-Aufträge gleichzeitig verarbeiten kann. Da die Chat- und E-Mail-Kanäle mit einer maxNumberOfJobs von zwei konfiguriert sind, verbrauchen diese Kanäle insgesamt bis zu 40 Kapazität. Daher kann der Arbeiter immer bis zu einem Sprachauftrag verarbeiten. Der Sprachkanal hat vorrang vor den anderen Kanälen.

var worker = await client.CreateWorkerAsync(
    new CreateWorkerOptions(workerId: "worker1", capacity: 100)
    {
        Queues = { "queue1" },
        Channels =
        {
            new RouterChannel(channelId: "voice", capacityCostPerJob: 60),
            new RouterChannel(channelId: "chat", capacityCostPerJob: 10) { MaxNumberOfJobs = 2},
            new RouterChannel(channelId: "email", capacityCostPerJob: 10) { MaxNumberOfJobs = 2}
        }
    });
await client.path("/routing/workers/{workerId}", "worker1").patch({
    body: {
        capacity: 100,
        queues: ["queue1"],
        channels: [
            { channelId: "voice", capacityCostPerJob: 60 },
            { channelId: "chat", capacityCostPerJob: 10, maxNumberOfJobs: 2 },
            { channelId: "email", capacityCostPerJob: 10, maxNumberOfJobs: 2 }
        ]
    },
    contentType: "application/merge-patch+json"
});
client.upsert_worker(worker_id = "worker1",
    capacity = 100,
    queues = ["queue1"],
    channels = [
        RouterChannel(channel_id = "voice", capacity_cost_per_job = 60),
        RouterChannel(channel_id = "chat", capacity_cost_per_job = 10, max_number_of_jobs = 2),
        RouterChannel(channel_id = "email", capacity_cost_per_job = 10, max_number_of_jobs = 2)
    ]
)
client.createWorker(new CreateWorkerOptions("worker1", 100)
    .setQueues(List.of("queue1"))
    .setChannels(List.of(
        new RouterChannel("voice", 60),
        new RouterChannel("chat", 10).setMaxNumberOfJobs(2),
        new RouterChannel("email", 10).setMaxNumberOfJobs(2))));

Nächste Schritte