Programmazione di un processo
Nel contesto di un call center, i clienti possono voler ricevere un callback pianificato in un secondo momento. Di conseguenza, è necessario creare un processo pianificato in Router processo.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Una risorsa di Servizi di comunicazione distribuita. Creare una risorsa di Servizi di comunicazione.
- È stata creata una coda del router del processo con queueId
Callback
. - È stato creato un ruolo di lavoro Router processo con capacità del canale nel
Voice
canale. - Sottoscrivere l'evento JobWaitingForActivation.
- Facoltativo: completare la guida introduttiva per iniziare a usare Il router di processo.
Creare un processo usando ScheduleAndSuspendMode
Nell'esempio seguente viene creato un processo pianificato di 3 minuti da ora impostando su MatchingMode
ScheduleAndSuspendMode
con un scheduleAt
parametro . In questo esempio si presuppone che sia stata creata una coda con queueId Callback
e che sia presente un ruolo di lavoro attivo registrato nella coda con capacità disponibile nel Voice
canale.
await client.CreateJobAsync(new CreateJobOptions(jobId: "job1", channelId: "Voice", queueId: "Callback")
{
MatchingMode = new ScheduleAndSuspendMode(scheduleAt: DateTimeOffset.UtcNow.Add(TimeSpan.FromMinutes(3)))
});
await client.path("/routing/jobs/{jobId}", "job1").patch({
body: {
channelId: "Voice",
queueId: "Callback",
matchingMode: {
kind: "scheduleAndSuspend",
scheduleAt: new Date(Date.now() + 3 * 60000)
}
},
contentType: "application/merge-patch+json"
});
client.upsert_job(
job_id = "job1",
channel_id = "Voice",
queue_id = "Callback",
matching_mode = ScheduleAndSuspendMode(schedule_at = datetime.utcnow() + timedelta(minutes = 3)))
client.createJob(new CreateJobOptions("job1", "Voice", "Callback")
.setMatchingMode(new ScheduleAndSuspendMode(OffsetDateTime.now().plusMinutes(3))));
Nota
Lo stato del processo dopo essere stato pianificato è inizialmente PendingSchedule
e dopo che il router del processo pianifica correttamente il processo, lo stato viene aggiornato a Scheduled
.
Attendere il raggiungimento dell'ora pianificata, quindi accodare il processo
Quando viene raggiunto l'ora pianificata, lo stato del processo viene aggiornato a WaitingForActivation
e il router del processo genera un evento RouterJobWaitingForActivation in Griglia di eventi. Se questo evento viene sottoscritto, è possibile eseguire alcune azioni necessarie prima di abilitare la corrispondenza del processo a un ruolo di lavoro. Ad esempio, nel contesto del contact center, tale azione potrebbe effettuare una chiamata in uscita e attendere che il cliente accetti il callback. Una volta completate le azioni necessarie, il processo può essere accodato chiamando il UpdateJobAsync
metodo con l'opzione MatchingMode
impostata su e la priorità impostata QueueAndMatchMode
su 100
per trovare rapidamente un ruolo di lavoro idoneo, che aggiorna lo stato del processo a queued
.
// Event Grid Event Handler code omitted
if (eventGridEvent.EventType == "Microsoft.Communication.RouterJobWaitingForActivation")
{
// Perform required actions here
await client.UpdateJobAsync(new RouterJob(jobId: eventGridEvent.Data.JobId)
{
MatchingMode = new QueueAndMatchMode(),
Priority = 100
});
}
// Event Grid Event Handler code omitted
if (eventGridEvent.EventType == "Microsoft.Communication.RouterJobWaitingForActivation")
{
// Perform required actions here
await client.path("/routing/jobs/{jobId}", eventGridEvent.data.jobId).patch({
body: {
matchingMode: { kind: "queueAndMatch" },
priority: 100
},
contentType: "application/merge-patch+json"
});
}
# Event Grid Event Handler code omitted
if (eventGridEvent.event_type == "Microsoft.Communication.RouterJobWaitingForActivation")
{
# Perform required actions here
client.upsert_job(
job_id = eventGridEvent.data.job_id,
matching_mode = queue_and_match_mode = {},
priority = 100)
}
// Event Grid Event Handler code omitted
if (eventGridEvent.EventType == "Microsoft.Communication.RouterJobWaitingForActivation")
{
// Perform required actions here
job = client.updateJob(eventGridEvent.getData().toObject(new TypeReference<Map<String, Object>>() {
}).get("JobId").toString(), BinaryData.fromObject(new RouterJob()
.setMatchingMode(new QueueAndMatchMode())
.setPriority(100)), null).toObject(RouterJob.class);
}
Passaggi successivi
i
- Informazioni su come accettare l'offerta router processo rilasciata una volta trovato un ruolo di lavoro corrispondente per il processo.