Freigeben über


Entdecken Sie, wie Sie Auftragsrouter-Auftragsangebote akzeptieren oder ablehnen.

In diesem Leitfaden werden die Schritte erläutert, die Sie ergreifen müssen, um ein Auftragsrouterangebot zu beobachten. Außerdem wird erläutert, wie Sie Auftragsangebote akzeptieren oder ablehnen.

Voraussetzungen

Auftragsangebote annehmen

Nachdem Sie einen Auftrag erstellt haben, beobachten Sie das vom Mitarbeiter ausgestellte Ereignis, das die Arbeits-ID und die Auftragsangebots-ID enthält. Der Arbeitnehmer kann mit dem SDK Jobangebote annehmen. Sobald das Angebot angenommen wurde, wird der Job dem Arbeitnehmer zugewiesen, und der Status des Auftrags wird aktualisiert auf 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());

Auftragsangebote ablehnen

Der Mitarbeiter kann Jobangebote mithilfe des SDK ablehnen. Sobald das Angebot abgelehnt wurde, wird der Job dem nächsten verfügbaren Arbeitnehmer angeboten. Der Job wird nicht demselben Arbeitnehmer angeboten, der den Job abgelehnt hat, bis der Arbeitnehmer wieder registriert und registriert wird.

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

Wiederholungsangebot nach einiger Zeit

In einigen Szenarien möchte ein Mitarbeiter möglicherweise nach einiger Zeit ein Angebot automatisch wiederholen. Beispielsweise möchte ein Arbeitnehmer nach 5 Minuten ein Angebot wiederholen. Um diesen Ablauf zu erreichen, kann der Worker das SDK verwenden, um das Angebot abzulehnen und die retryOfferAfter Eigenschaft anzugeben.

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

Abschließen des Auftrags

Sobald der Worker die dem Auftrag zugeordnete Arbeit abgeschlossen hat (z. B. den Aufruf abgeschlossen), füllen wir den Auftrag aus, der den Status completedaktualisiert.

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

Schließen des Auftrags

Sobald der Arbeitnehmer bereit ist, neue Aufträge zu übernehmen, sollte der Arbeitnehmer den Auftrag schließen, der den Status closedaktualisiert. Optional kann der Worker einen Dispositionscode bereitstellen, um das Ergebnis des Auftrags anzugeben.

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ächste Schritte