İş Yönlendiricisi iş tekliflerini kabul etme veya reddetmeyi keşfedin
Bu kılavuz, bir İş Yönlendiricisi teklifini gözlemlemek için uygulamanız gereken adımları açıklar. Ayrıca iş tekliflerini kabul etme veya reddetme adımları da özetlenmiştir.
Ön koşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir Azure hesabı oluşturun.
- Dağıtılan Azure İletişim Hizmetleri kaynağı. İletişim Hizmetleri kaynağı oluşturun.
- İsteğe bağlı: İş Yönlendiricisi'ni kullanmaya başlamak için hızlı başlangıcı tamamlayın.
İş tekliflerini kabul et
bir iş oluşturduktan sonra, çalışan kimliğini ve iş teklifi kimliğini içeren çalışan teklifi tarafından verilen olayı gözlemleyin. Çalışan, SDK'sını kullanarak iş tekliflerini kabul edebilir. Teklif kabul edildikten sonra iş çalışana atanır ve işin durumu olarak assigned
güncelleştirilir.
// Event handler logic omitted
var accept = await client.AcceptJobOfferAsync(offerIssuedEvent.Data.WorkerId, offerIssuedEvent.Data.OfferId);
// Event handler logic omitted
const accept = await client.path("/routing/workers/{workerId}/offers/{offerId}:accept",
offerIssuedEvent.data.workerId, offerIssuedEvent.data.offerId).post();
# Event handler logic omitted
accept = client.accept_job_offer(offerIssuedEvent.data.worker_id, offerIssuedEvent.data.offer_id)
// Event handler logic omitted
AcceptJobOfferResult accept = client.acceptJobOffer(offerIssuedEvent.getData().getWorkerId(), offerIssuedEvent.getData().getOfferId());
İş tekliflerini reddetme
Çalışan, SDK'sını kullanarak iş tekliflerini reddedebilir. Teklif reddedildikten sonra iş bir sonraki kullanılabilir çalışana sunulur. İş, çalışanın kaydı kaldırılana ve yeniden kaydedilene kadar işi reddeden çalışana sunulmaz.
// Event handler logic omitted
await client.DeclineJobOfferAsync(new DeclineJobOfferOptions(workerId: offerIssuedEvent.Data.WorkerId,
offerId: offerIssuedEvent.Data.OfferId));
// Event handler logic omitted
await client.path("/routing/workers/{workerId}/offers/{offerId}:decline",
offerIssuedEvent.data.workerId, offerIssuedEvent.data.offerId).post();
# Event handler logic omitted
client.decline_job_offer(offerIssuedEvent.data.worker_id, offerIssuedEvent.data.offer_id)
// Event handler logic omitted
client.declineJobOffer(offerIssuedEvent.getData().getWorkerId(), offerIssuedEvent.getData().getOfferId());
Teklifi bir süre sonra yeniden deneyin
Bazı senaryolarda, bir çalışan bir teklifi bir süre sonra otomatik olarak yeniden denemek isteyebilir. Örneğin, bir çalışan 5 dakika sonra bir teklifi yeniden denemek isteyebilir. Çalışan bu akışı elde etmek için SDK'yı kullanarak teklifi reddedebilir ve özelliğini belirtebilir retryOfferAfter
.
// Event handler logic omitted
await client.DeclineJobOfferAsync(new DeclineJobOfferOptions(workerId: offerIssuedEvent.Data.WorkerId,
offerId: offerIssuedEvent.Data.OfferId)
{
RetryOfferAt = DateTimeOffset.UtcNow.AddMinutes(5)
});
// Event handler logic omitted
await client.path("/routing/workers/{workerId}/offers/{offerId}:decline",
offerIssuedEvent.data.workerId, offerIssuedEvent.data.offerId).post({
body: {
retryOfferAt: new Date(Date.now() + 5 * 60 * 1000)
}
});
# Event handler logic omitted
client.decline_job_offer(
worker_id = offerIssuedEvent.data.worker_id,
offer_id = offerIssuedEvent.data.offer_id,
retry_offer_at = datetime.utcnow() + timedelta(minutes = 5))
// Event handler logic omitted
client.declineJobOffer(
offerIssuedEvent.getData().getWorkerId(),
offerIssuedEvent.getData().getOfferId(),
new RequestOptions().setBody(BinaryData.fromObject(
new DeclineJobOfferOptions().setRetryOfferAt(OffsetDateTime.now().plusMinutes(5)))));
İşi tamamlama
Çalışan, işle ilişkili çalışmayı tamamladıktan sonra (örneğin, aramayı tamamladıktan) sonra, durumu completed
olarak güncelleştiren işi tamamlarız.
await routerClient.CompleteJobAsync(new CompleteJobOptions(jobId: accept.Value.JobId, assignmentId: accept.Value.AssignmentId));
await client.path("/routing/jobs/{jobId}/assignments/{assignmentId}:complete", accept.body.jobId, accept.body.assignmentId).post();
router_client.complete_job(job_id = job.id, assignment_id = accept.assignment_id)
routerClient.completeJobWithResponse(accept.getJobId(), accept.getAssignmentId(), null);
İşi kapatma
Çalışan yeni işleri almaya hazır olduğunda, çalışanın işi kapatması gerekir ve bu da durumu olarak closed
güncelleştirir. İsteğe bağlı olarak, çalışan işin sonucunu belirtmek için bir değerlendirme kodu sağlayabilir.
await routerClient.CloseJobAsync(new CloseJobOptions(jobId: accept.Value.JobId, assignmentId: accept.Value.AssignmentId) {
DispositionCode = "Resolved"
});
await client.path("/routing/jobs/{jobId}/assignments/{assignmentId}:close", accept.body.jobId, accept.body.assignmentId).post({
body: {
dispositionCode: "Resolved"
}
});
router_client.close_job(job_id = job.id, assignment_id = accept.assignment_id, disposition_code = "Resolved")
routerClient.closeJobWithResponse(accept.getJobId(), accept.getAssignmentId(),
new RequestOptions().setBody(BinaryData.fromObject(new CloseJobOptions().setDispositionCode("Resolved"))));
Sonraki adımlar
- İş Yönlendiricisi kuyruğu yönetmeyi gözden geçirin.
- İş Yönlendiricisi olaylarına abone olmayı öğrenin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin