Bagaimana pekerjaan dicocokkan dengan pekerja

Penting

Fungsionalitas yang dijelaskan pada bagian ini saat ini dalam pratinjau pribadi. Pratinjau pribadi mencakup akses ke SDK dan dokumentasi untuk tujuan pengujian yang belum tersedia untuk umum. Daftar untuk menjadi pengadopsi awal dengan mengisi formulir untuk akses pratinjau ke Azure Communication Services.

Dokumen ini menjelaskan pendaftaran pekerja, pengajuan pekerjaan, dan bagaimana mereka cocok satu sama lain.

Pendaftaran Pekerja

Sebelum pekerja dapat menerima penawaran untuk melayani pekerjaan, pekerja harus terdaftar.
Untuk mendaftar, kita perlu menentukan antrean mana yang akan didengarkan pekerja, saluran mana yang dapat ditangani dan sekumpulan label.

Dalam contoh berikut, kami mendaftarkan pekerja ke

  • Dengarkan dan queue-1queue-2
  • Dapat menangani saluran suara dan obrolan. Dalam hal ini, pekerja dapat mengambil satu voice pekerjaan pada satu atau dua chat pekerjaan secara bersamaan. Ini dikonfigurasi dengan menentukan total kapasitas pekerja dan menetapkan biaya per pekerjaan untuk setiap saluran.
  • Memiliki sekumpulan label yang menjelaskan hal-hal tentang pekerja yang dapat membantu menentukan apakah itu cocok untuk pekerjaan tertentu.
var worker = await client.RegisterWorkerAsync(
    id: "worker-1",
    queueIds: new[] { "queue-1", "queue-2" },    
    totalCapacity: 2,
    channelConfigurations: new List<ChannelConfiguration>
    {
        new ChannelConfiguration(channelId: "voice", capacityCostPerJob: 2),
        new ChannelConfiguration(channelId: "chat", capacityCostPerJob: 1)
    },
    labels: new LabelCollection()
    {
        ["Skill"] = 11,
        ["English"] = true,
        ["French"] = false,
        ["Vendor"] = "Acme"
    }
);
let worker = await client.registerWorker({
    id: "worker-1",    
    queueAssignments: [
        { queueId: "queue-1" },
        { queueId: "queue-2" } 
    ],
    totalCapacity: 2,
    channelConfigurations: [
        { channelId: "voice", capacityCostPerJob: 2 },
        { channelId: "chat", capacityCostPerJob: 1 }
    ],
    labels: {
        Skill: 11,
        English: true,
        French: false,
        Vendor: "Acme"
    }
});

Catatan

Jika pekerja terdaftar dan menganggur selama lebih dari 7 hari, pekerja akan secara otomatis dibatalkan pendaftarannya dan Anda akan menerima WorkerDeregistered acara dari EventGrid.

Pengiriman Pekerjaan

Dalam contoh berikut, kita akan mengirimkan pekerjaan yang

  • Langsung menuju ke queue-1.
  • Untuk saluran.chat
  • Dengan pemilih label yang menentukan bahwa setiap pekerja yang melayani pekerjaan ini harus memiliki label English yang diatur ke true.
  • Dengan pemilih label yang menentukan bahwa setiap pekerja yang melayani pekerjaan ini harus memiliki label Skill yang lebih besar dari 10 dan kondisi ini akan kedaluwarsa setelah satu menit.
  • Dengan label diatur name ke John.
var job = await client.CreateJobAsync(
    channelId: "chat",
    queueId: "queue-1",
    workerSelectors: new List<LabelSelector>
    {
        new LabelSelector(
            key: "English", 
            @operator: LabelOperator.Equal, 
            value: true),
        new LabelSelector(
            key: "Skill", 
            @operator: LabelOperator.GreaterThan, 
            value: 10,
            ttl: TimeSpan.FromMinutes(1)),    
    },
    labels: new LabelCollection()
    {
        ["name"] = "John"
    });
let job = await client.createJob({
    channelId: "chat",
    queueId: "queue-1",
    workerSelectors: [
        { key: "English", operator: "equal", value: true },        
        { key: "Skill", operator: "greaterThanEqual", value: 10, ttl: "00:01:00" },        
    ],
    labels: {
        name: "John"
    },
});

Job Router sekarang akan mencoba mencocokkan pekerjaan ini dengan pekerja queue-1 yang tersedia mendengarkan saluran chat , dengan English diatur ke true dan Skill lebih besar dari 10. Setelah kecocokan dibuat, penawaran dibuat. Kebijakan distribusi yang melekat pada antrean akan mengontrol berapa banyak penawaran aktif yang ada untuk pekerjaan dan berapa lama setiap penawaran valid. Anda akan menerimaPeristiwa OfferIssued yang akan terlihat seperti ini:

{
    "workerId": "worker-1",
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelId": "chat",
    "queueId": "queue-1",
    "offerId": "525fec06-ab81-4e60-b780-f364ed96ade1",
    "offerTimeUtc": "2021-06-23T02:43:30.3847144Z",
    "expiryTimeUtc": "2021-06-23T02:44:30.3847674Z",
    "jobPriority": 1,
    "jobLabels": {
        "name": "John"
    }
}

Acara OfferIssued mencakup detail tentang pekerjaan, pekerja, berapa lama penawaran valid dan offerId yang perlu Anda terima atau tolak pekerjaannya.

Catatan

Masa pakai maksimum pekerjaan adalah 90 hari, setelah itu akan kedaluwarsa secara otomatis.