Sdílet prostřednictvím


Plánování úlohy

V kontextu call centra můžou zákazníci chtít později obdržet naplánované zpětné volání. Proto je potřeba vytvořit naplánovanou úlohu ve směrovači úloh.

Požadavky

Vytvoření úlohy pomocí ScheduleAndSuspendMode

V následujícím příkladu se vytvoří úloha, která je od této chvíle naplánována 3 minuty nastavením MatchingMode na ScheduleAndSuspendMode parametr.scheduleAt V tomto příkladu se předpokládá, že jste vytvořili frontu s ID Callback fronty a že je ve frontě zaregistrovaný aktivní pracovní proces s dostupnou kapacitou v Voice kanálu.

await client.CreateJobAsync(new CreateJobOptions(jobId: "job1", channelId: "Voice", queueId: "Callback")
{
    MatchingMode = new ScheduleAndSuspendMode(scheduleAt: DateTimeOffset.UtcNow.Add(TimeSpan.FromMinutes(3)))
});
await client.path("/routing/jobs/{jobId}", "job1").patch({
    body: {
        channelId: "Voice",
        queueId: "Callback",
        matchingMode: {
            kind: "scheduleAndSuspend",
            scheduleAt: new Date(Date.now() + 3 * 60000)
        }
    },
    contentType: "application/merge-patch+json"
});
client.upsert_job(
    job_id = "job1",
    channel_id = "Voice",
    queue_id = "Callback",
    matching_mode = ScheduleAndSuspendMode(schedule_at = datetime.utcnow() + timedelta(minutes = 3)))
client.createJob(new CreateJobOptions("job1", "Voice", "Callback")
    .setMatchingMode(new ScheduleAndSuspendMode(OffsetDateTime.now().plusMinutes(3))));

Poznámka:

Stav úlohy po naplánování je zpočátku PendingSchedulea jakmile směrovač úloh úspěšně naplánuje úlohu, stav se aktualizuje na Scheduled.

Počkejte na dosažení naplánovaného času a pak zařadte úlohu do fronty.

Po dosažení naplánovaného času se stav úlohy aktualizuje na WaitingForActivation směrovač úloh a do event Gridu vygeneruje událost RouterJobWaitingForActivation. Pokud je tato událost přihlášená k odběru, je možné provést některé požadované akce před povolením, aby se úloha shodovala s pracovním procesem. Například v kontextu kontaktního centra může taková akce volat odchozí hovor a čekat na přijetí zpětného volání zákazníkem. Po dokončení požadovaných akcí je možné úlohu zařadit do fronty voláním UpdateJobAsync metody s MatchingMode nastavenou hodnotou QueueAndMatchMode a prioritou, aby 100 bylo možné rychle najít oprávněného pracovníka, který aktualizuje stav úlohy na queued.

// Event Grid Event Handler code omitted
if (eventGridEvent.EventType == "Microsoft.Communication.RouterJobWaitingForActivation")
{
    // Perform required actions here

    await client.UpdateJobAsync(new RouterJob(jobId: eventGridEvent.Data.JobId)
    {
        MatchingMode = new QueueAndMatchMode(),
        Priority = 100
    });
}
// Event Grid Event Handler code omitted
if (eventGridEvent.EventType == "Microsoft.Communication.RouterJobWaitingForActivation")
{
    // Perform required actions here

    await client.path("/routing/jobs/{jobId}", eventGridEvent.data.jobId).patch({
      body: {
          matchingMode: { kind: "queueAndMatch" },
          priority: 100
      },
      contentType: "application/merge-patch+json"
    });
}
# Event Grid Event Handler code omitted
if (eventGridEvent.event_type == "Microsoft.Communication.RouterJobWaitingForActivation")
{
    # Perform required actions here

    client.upsert_job(
        job_id = eventGridEvent.data.job_id,
        matching_mode = queue_and_match_mode = {},
        priority = 100)
}
// Event Grid Event Handler code omitted
if (eventGridEvent.EventType == "Microsoft.Communication.RouterJobWaitingForActivation")
{
    // Perform required actions here

    job = client.updateJob(eventGridEvent.getData().toObject(new TypeReference<Map<String, Object>>() {
}).get("JobId").toString(), BinaryData.fromObject(new RouterJob()
        .setMatchingMode(new QueueAndMatchMode())
        .setPriority(100)), null).toObject(RouterJob.class);
}

Další kroky

Mohu

  • Zjistěte, jak přijmout nabídku směrovačů úloh, která se vydá, jakmile se pro danou úlohu najde odpovídající pracovní proces.