Aracılığıyla paylaş


İş 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

İş 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 assignedgü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 completedolarak 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 closedgü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.