Share via


Upptäck hur du accepterar eller avböjer jobbroutererbjudanden

Den här guiden beskriver de steg du behöver vidta för att observera ett jobbroutererbjudande. Den beskriver också hur du accepterar eller avböjer jobberbjudanden.

Förutsättningar

Acceptera jobberbjudanden

När du har skapat ett jobb observerar du den händelse som utfärdats av arbetserbjudandet, som innehåller arbets-ID:t och jobberbjudandets ID. Arbetaren kan acceptera jobberbjudanden med hjälp av SDK:et. När erbjudandet har accepterats tilldelas jobbet till arbetaren och jobbets status uppdateras till assigned.

// 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());

Neka jobberbjudanden

Arbetaren kan neka jobberbjudanden med hjälp av SDK:et. När erbjudandet avvisas erbjuds jobbet till nästa tillgängliga arbetare. Jobbet erbjuds inte till samma arbetare som nekade jobbet förrän arbetaren avregistrerades och registrerades igen.

// 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());

Försök igen efter en tid

I vissa scenarier kanske en arbetare vill prova ett erbjudande igen efter en viss tid. En arbetare kanske till exempel vill försöka ett erbjudande igen efter 5 minuter. För att uppnå det här flödet kan arbetaren använda SDK:et för att avvisa erbjudandet och ange retryOfferAfter egenskapen.

// 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)))));

Slutför jobbet

När arbetaren har slutfört det arbete som är associerat med jobbet (till exempel slutfört anropet) slutför vi jobbet, som uppdaterar statusen till completed.

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);

Stäng jobbet

När arbetaren är redo att ta emot nya jobb bör arbetaren stänga jobbet, vilket uppdaterar statusen till closed. Om du vill kan arbetaren ange en borttagningskod som anger resultatet av jobbet.

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"))));

Nästa steg