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
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Nasazený prostředek komunikační služby. Vytvořte prostředek komunikační služby.
- Byla vytvořena fronta směrovače úloh s id
Callback
fronty. - Byl vytvořen pracovní proces směrovače úloh s kapacitou kanálu v
Voice
kanálu. - Přihlaste se k odběru události JobWaitingForActivation.
- Volitelné: Dokončením rychlého startu začněte se směrovačem úloh.
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 PendingSchedule
a 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.