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
- Ein Azure-Konto mit einem aktiven Abonnement. Erstellen Sie kostenlos ein Azure-Konto.
- Eine bereitgestellte Azure Communication Services-Ressource. Erstellen Sie eine Communication Services-Ressource.
- Optional: Schließen Sie den Schnellstart ab, um mit Job Router loszulegen.
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 completed
aktualisiert.
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 closed
aktualisiert. 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
- Informieren Sie sich über das Verwalten einer Job Router-Warteschlange.
- Lesen Sie den Artikel zum Abonnieren von Job Router-Ereignissen.