Schemalägga ett jobb
I samband med ett callcenter kanske kunderna vill få ett schemalagt återanrop vid ett senare tillfälle. Därför måste du skapa ett schemalagt jobb i Jobbrouter.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En distribuerad Communication Services-resurs. Skapa en Communication Services-resurs.
- En jobbrouterkö med queueId
Callback
har skapats. - En jobbrouterarbetare med kanalkapacitet på
Voice
kanalen har skapats. - Prenumerera på JobWaitingForActivation-händelsen.
- Valfritt: Slutför snabbstarten för att komma igång med Jobbrouter.
Skapa ett jobb med ScheduleAndSuspendMode
I följande exempel skapas ett jobb som är schemalagt 3 minuter från och med nu genom att ange MatchingMode
till ScheduleAndSuspendMode
med en scheduleAt
parameter. Det här exemplet förutsätter att du har skapat en kö med queueId Callback
och att det finns en aktiv arbetare registrerad i kön med tillgänglig kapacitet på Voice
kanalen.
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))));
Kommentar
Jobbets status efter att ha schemalagts är ursprungligen PendingSchedule
, och när jobbroutern har schemalagt jobbet uppdateras statusen till Scheduled
.
Vänta tills den schemalagda tiden har nåtts och köa sedan jobbet
När den schemalagda tiden har nåtts uppdateras jobbets status till WaitingForActivation
och Jobbrouter genererar en RouterJobWaitingForActivation-händelse till Event Grid. Om den här händelsen prenumererar kan vissa nödvändiga åtgärder utföras innan jobbet matchas med en arbetare. I kontaktcentrets kontext kan en sådan åtgärd till exempel vara att ringa ett utgående samtal och vänta på att kunden ska acceptera återanropet. När de nödvändiga åtgärderna har slutförts kan jobbet köas genom att anropa UpdateJobAsync
metoden med inställningen och prioriteten MatchingMode
inställd 100
på för att snabbt hitta en berättigad arbetare, vilket uppdaterar jobbets status till queued
.QueueAndMatchMode
// 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);
}
Nästa steg
i
- Lär dig hur du accepterar det jobbroutererbjudande som utfärdas när en matchande arbetare hittas för jobbet.