Agendar um trabalho

No contexto de um call center, os clientes podem querer receber um retorno de chamada agendado posteriormente. Como tal, você precisa criar um trabalho agendado no Job Router.

Pré-requisitos

Criar um trabalho usando o ScheduleAndSuspendMode

No exemplo a seguir, é criado um trabalho agendado para daqui a 3 minutos, definindo o MatchingMode para ScheduleAndSuspendMode com um scheduleAt parâmetro. Este exemplo pressupõe que você criou uma fila com o queueId Callback e que há um trabalhador ativo registrado na fila com capacidade disponível no Voice canal.

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

O status do trabalho depois de agendado é inicialmente PendingSchedule, e assim que o Job Router agendar o trabalho com êxito, o status será atualizado para Scheduled.

Aguarde até que a hora agendada seja atingida e, em seguida, enfileire o trabalho

Quando a hora agendada é atingida, o status do trabalho é atualizado e WaitingForActivation o Job Router emite um evento RouterJobWaitingForActivation para a Grade de Eventos. Se esse evento for inscrito, algumas ações necessárias poderão ser executadas, antes de permitir que o trabalho seja correspondido a um trabalhador. Por exemplo, no contexto do contact center, tal ação pode ser fazer uma chamada de saída e esperar que o cliente aceite o retorno de chamada. Quando as ações necessárias forem concluídas, o trabalho poderá ser enfileirado chamando o UpdateJobAsync método com o MatchingMode definido como QueueAndMatchMode e a prioridade definida para 100 encontrar rapidamente um trabalhador qualificado, que atualiza o status do trabalho para 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);
}

Próximos passos

posso

  • Saiba como aceitar a oferta do Job Router que é emitida assim que um trabalhador correspondente é encontrado para o trabalho.