Découvrez comment accepter ou refuser des offres d’emploi Job Routeur
Ce guide décrit les étapes à suivre pour observer une offre Job Routeur. Il décrit également comment accepter ou refuser des offres d’emploi.
Prérequis
- Compte Azure avec un abonnement actif. Créez gratuitement un compte Azure.
- Une ressource Azure Communication Services déployée. Créez une ressource Communication Services.
- Facultatif : suivre le guide de démarrage rapide pour bien démarrer avec Job Router.
Accepter les offres d’emploi
Après avoir créé un travail, observez l’événement émis par l’offre de travail, qui contient l’ID de travail et l’ID de l’offre de travail. Le worker peut accepter des offres de travail à l’aide du Kit de développement logiciel (SDK). Une fois l’offre acceptée, le travail est affecté au worker et l’état du travail est mis à jour 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());
Refuser les offres d’emploi
Le worker peut refuser des offres de travail à l’aide du Kit de développement logiciel (SDK). Une fois l’offre refusée, le travail est proposé au prochain travailleur disponible. Le travail n’est pas proposé au même travailleur que celui qui a refusé le travail tant que le travailleur n’est pas inscrit et inscrit à nouveau.
// 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());
Nouvelle offre après un certain temps
Dans certains scénarios, un worker peut souhaiter réessayer automatiquement une offre après un certain temps. Par exemple, un worker peut souhaiter réessayer une offre après 5 minutes. Pour atteindre ce flux, le worker peut utiliser le Kit de développement logiciel (SDK) pour refuser l’offre et spécifier la retryOfferAfter
propriété.
// 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)))));
Terminer le travail
Une fois que le worker a terminé le travail associé au travail (par exemple, terminé l’appel), nous avons terminé le travail, qui met à jour l’état vers 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);
Fermer le travail
Une fois que le worker est prêt à entreprendre de nouveaux travaux, le worker doit fermer le travail, ce qui met à jour l’état sur closed
. Le worker peut également fournir un code de disposition pour indiquer le résultat du travail.
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"))));
Étapes suivantes
- Consultez comment gérer une file d’attente Job Router.
- Découvrez comment vous abonner aux événements Job Router.