Menjadwalkan pekerjaan
Dalam konteks pusat panggilan, pelanggan mungkin ingin menerima panggilan balik terjadwal di lain waktu. Dengan demikian, Anda perlu membuat pekerjaan terjadwal di Job Router.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Sumber daya Communication Services yang disebarkan. Buat sumber daya Azure Communication Services.
- Antrean Job Router dengan queueId
Callback
telah dibuat. - Pekerja Job Router dengan kapasitas saluran pada
Voice
saluran telah dibuat. - Berlangganan ke peristiwa JobWaitingForActivation.
- Opsional: Selesaikan mulai cepat untuk memulai Job Router.
Membuat pekerjaan menggunakan ScheduleAndSuspendMode
Dalam contoh berikut, pekerjaan dibuat yang dijadwalkan 3 menit dari sekarang dengan mengatur MatchingMode
ke ScheduleAndSuspendMode
dengan scheduleAt
parameter. Contoh ini mengasumsikan bahwa Anda membuat antrean dengan queueId Callback
dan ada pekerja aktif yang terdaftar ke antrean dengan kapasitas yang tersedia di Voice
saluran.
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))));
Catatan
Status pekerjaan setelah dijadwalkan pada awalnya PendingSchedule
, dan setelah Job Router berhasil menjadwalkan pekerjaan, status diperbarui ke Scheduled
.
Tunggu hingga waktu terjadwal tercapai, lalu antrekan pekerjaan
Ketika waktu terjadwal tercapai, status pekerjaan diperbarui ke WaitingForActivation
dan Job Router memancarkan peristiwa RouterJobWaitingForActivation ke Event Grid. Jika peristiwa ini berlangganan, beberapa tindakan yang diperlukan dapat dilakukan, sebelum memungkinkan pekerjaan dicocokkan dengan pekerja. Misalnya, dalam konteks pusat kontak, tindakan tersebut dapat melakukan panggilan keluar dan menunggu pelanggan menerima panggilan balik. Setelah tindakan yang diperlukan selesai, pekerjaan dapat diantrekan dengan memanggil UpdateJobAsync
metode dengan MatchingMode
diatur ke QueueAndMatchMode
dan prioritas diatur ke 100
untuk menemukan pekerja yang memenuhi syarat dengan cepat, yang memperbarui status pekerjaan menjadi 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);
}
Langkah berikutnya
i
- Pelajari cara menerima penawaran Job Router yang dikeluarkan setelah pekerja yang cocok ditemukan untuk pekerjaan tersebut.