Mulai Cepat: Mengirimkan Pekerjaan untuk antrean dan perutean
Mulai menggunakan Azure Communication Services Job Router dengan menyiapkan klien Anda, lalu mengonfigurasi fungsionalitas inti seperti antrean, kebijakan, pekerja, dan Pekerjaan. Untuk mempelajari konsep Perute Pekerjaan lebih lanjut, kunjungi dokumen konseptual Perute Pekerjaan
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Sumber daya Communication Services aktif dan string koneksi. Buat sumber daya Azure Communication Services.
- Pustaka klien .NET versi terbaru untuk sistem operasi Anda.
Kode Sampel
Anda dapat meninjau dan mengunduh kode sampel untuk mulai cepat ini di GitHub.
Menyiapkan
Membuat aplikasi C# baru
Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan perintah dotnet new
untuk membuat aplikasi konsol baru dengan nama JobRouterQuickstart
. Perintah ini membuat proyek C# "Halo Dunia" sederhana dengan file sumber tunggal: Program.cs.
dotnet new console -o JobRouterQuickstart
Ubah direktori Anda ke folder aplikasi yang baru dibuat dan gunakan perintah dotnet build
untuk mengompilasi aplikasi Anda.
cd JobRouterQuickstart
dotnet build
Pasang paket
Instal pustaka klien Azure Communication Job Router untuk .NET dengan NuGet:
dotnet add package Azure.Communication.JobRouter
Anda harus menggunakan pustaka klien Azure Communication Job Router untuk .NET versi 1.0.0 atau lebih tinggi.
Tambahkan direktif using
ke bagian atas Program.cs untuk menyertakan namespace layanan Perute Pekerjaan.
using Azure.Communication.JobRouter;
Menginisialisasi klien Job Router dan klien administrasi
Klien Perute Pekerjaan dapat diautentikasi menggunakan string koneksi Anda yang diperoleh dari sumber daya Azure Communication Services di portal Microsoft Azure. Kami menghasilkan klien dan klien administrasi untuk berinteraksi dengan layanan Job Router. Klien admin digunakan untuk menyediakan antrean dan kebijakan, sementara klien digunakan untuk mengirimkan pekerjaan dan mendaftarkan pekerja. Untuk informasi selengkapnya tentang string koneksi, lihat titik akhir access-your-connection-strings-and-service-endpoints.
// Get a connection string to our Azure Communication Services resource.
var routerAdminClient = new JobRouterAdministrationClient("your_connection_string");
var routerClient = new JobRouterClient("your_connection_string");
Membuat kebijakan distribusi
Perute Pekerjaan menggunakan kebijakan distribusi untuk memutuskan cara pemberitahuan kepada Pekerja mengenai Pekerjaan yang tersedia dan waktu aktif pemberitahuan, yang dikenal sebagai Penawaran. Buat kebijakan dengan menentukan ID, nama, offerExpiresAfter, dan mode distribusi.
var distributionPolicy = await routerAdminClient.CreateDistributionPolicyAsync(
new CreateDistributionPolicyOptions(
distributionPolicyId: "distribution-policy-1",
offerExpiresAfter: TimeSpan.FromMinutes(1),
mode: new LongestIdleMode())
{
Name = "My distribution policy"
}
);
Membuat antrean
Buat Antrean menentukan ID, nama, dan berikan ID objek Kebijakan Distribusi yang telah Anda buat di atas.
var queue = await routerAdminClient.CreateQueueAsync(
new CreateQueueOptions(queueId: "queue-1", distributionPolicyId: distributionPolicy.Value.Id)
{
Name = "My Queue"
});
Mengirim pekerjaan
Sekarang, kita dapat mengirimkan pekerjaan langsung ke antrean tersebut, dengan pemilih pekerja yang mengharuskan pekerja memiliki label Some-Skill
yang lebih besar dari 10.
var job = await routerClient.CreateJobAsync(
new CreateJobOptions(jobId: "job-1", channelId: "voice", queueId: queue.Value.Id)
{
Priority = 1,
RequestedWorkerSelectors =
{
new RouterWorkerSelector(key: "Some-Skill", labelOperator: LabelOperator.GreaterThan, value: new RouterValue(10))
}
});
Membuat pekerja
Sekarang, kita membuat pekerja untuk menerima pekerjaan dari antrean itu, dengan label Some-Skill
yang sama dengan 11 dan kapasitas pada my-channel
.
var worker = await routerClient.CreateWorkerAsync(
new CreateWorkerOptions(workerId: "worker-1", capacity: 1)
{
Queues = { queue.Value.Id },
Labels = { ["Some-Skill"] = new RouterValue(11) },
Channels = { new RouterChannel(channelId: "voice", capacityCostPerJob: 1) },
AvailableForOffers = true
});
Menerima penawaran
Kita harus mendapatkan RouterWorkerOfferIssued dari langganan Event Grid kita. Namun, kita juga dapat menunggu beberapa detik dan kemudian mengkueri pekerja secara langsung terhadap API JobRouter untuk melihat apakah penawaran dikeluarkan untuk itu.
await Task.Delay(TimeSpan.FromSeconds(10));
worker = await routerClient.GetWorkerAsync(worker.Value.Id);
foreach (var offer in worker.Value.Offers)
{
Console.WriteLine($"Worker {worker.Value.Id} has an active offer for job {offer.JobId}");
}
Terima penawaran pekerjaan
Kemudian, pekerja dapat menerima penawaran pekerjaan dengan menggunakan SDK, yang menetapkan pekerjaan kepada pekerja.
var accept = await routerClient.AcceptJobOfferAsync(workerId: worker.Value.Id, offerId: worker.Value.Offers.FirstOrDefault().OfferId);
Console.WriteLine($"Worker {worker.Value.Id} is assigned job {accept.Value.JobId}");
Menyelesaikan pekerjaan
Setelah pekerja menyelesaikan pekerjaan yang terkait dengan pekerjaan (misalnya, menyelesaikan panggilan), kami menyelesaikan pekerjaan.
await routerClient.CompleteJobAsync(new CompleteJobOptions(jobId: accept.Value.JobId, assignmentId: accept.Value.AssignmentId));
Console.WriteLine($"Worker {worker.Value.Id} has completed job {accept.Value.JobId}");
Tutup pekerjaan
Setelah pekerja siap untuk mengambil pekerjaan baru, pekerja harus menutup pekerjaan. Secara opsional, pekerja dapat memberikan kode disposisi untuk menunjukkan hasil pekerjaan.
await routerClient.CloseJobAsync(new CloseJobOptions(jobId: accept.Value.JobId, assignmentId: accept.Value.AssignmentId) {
DispositionCode = "Resolved"
});
Console.WriteLine($"Worker {worker.Value.Id} has closed job {accept.Value.JobId}");
Menghapus pekerjaan
Setelah pekerjaan ditutup, kita dapat menghapus pekerjaan sehingga kita dapat membuat ulang pekerjaan dengan ID yang sama jika kita menjalankan sampel ini lagi
await routerClient.DeleteJobAsync(accept.Value.JobId);
Console.WriteLine($"Deleting job {accept.Value.JobId}");
Menjalankan kode
Jalankan aplikasi menggunakan dotnet run
dan perhatikan hasilnya.
dotnet run
Azure Communication Services - Job Router Quickstart
Worker worker-1 has an active offer for job job-1
Worker worker-1 is assigned job job-1
Worker worker-1 has completed job job-1
Worker worker-1 has closed job job-1
Deleting job job-1
Catatan
Setiap kali Anda menjalankan aplikasi lebih dari sekali, maka Pekerjaan yang baru akan ditempatkan di antrean. Tindakan ini dapat menyebabkan Pekerja ditawari Pekerjaan yang berbeda dari yang telah dibuat saat Anda menjalankan kode di atas. Karena ini dapat membuat condong permintaan Anda, mempertimbangkan untuk menghapus Pekerjaan dalam antrean setiap kali. Lihat dokumentasi SDK tentang cara mengelola Antrean atau Pekerjaan.
Dokumentasi rujukan
Baca tentang serangkaian kemampuan lengkap Azure Communication Services Job Router dari referensi .NET SDK atau referensi REST API.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Sumber daya Communication Services aktif dan string koneksi. Buat sumber daya Azure Communication Services.
- Versi terbaru Node.js Active LTS dan Versi Maintenance LTS.
Kode Sampel
Anda dapat meninjau dan mengunduh kode sampel untuk mulai cepat ini di GitHub.
Menyiapkan
Membuat aplikasi web baru
Di jendela terminal atau konsol, buat folder baru untuk aplikasi Anda dan navigasikan ke dalamnya.
mkdir acs-router-quickstart && cd acs-router-quickstart
Jalankan npm init
untuk membuat file package.json dengan pengaturan default.
npm init -y
Buat file index.js
baru tempat Anda akan menambahkan kode untuk mulai cepat ini.
Menginstal paket
Anda harus menggunakan pustaka klien Azure Communication Job Router untuk JavaScript versi 1.0.0 atau lebih tinggi.
Gunakan perintah npm install
untuk menginstal Communication Services SDK untuk JavaScript di bawah.
npm install @azure-rest/communication-job-router --save
Menyiapkan kerangka kerja aplikasi
Dalam file index.js
, tambahkan kode berikut. Kita akan menambahkan kode untuk mulai cepat dalam main
fungsi.
const JobRouterClient = require('@azure-rest/communication-job-router').default;
const main = async () => {
console.log("Azure Communication Services - Job Router Quickstart")
// Quickstart code goes here
};
main().catch((error) => {
console.log("Encountered an error");
console.log(error);
})
Menginisialisasi klien Job Router
Klien Perute Pekerjaan dapat diautentikasi menggunakan string koneksi Anda yang diperoleh dari sumber daya Azure Communication Services di portal Microsoft Azure. Kami menghasilkan klien untuk berinteraksi dengan layanan Job Router. Untuk informasi selengkapnya tentang string koneksi, lihat titik akhir access-your-connection-strings-and-service-endpoints.
Tambahkan kode berikut di dalam index.js
main
fungsi .
const connectionString = process.env["COMMUNICATION_CONNECTION_STRING"] ||
"endpoint=https://<resource-name>.communication.azure.com/;<access-key>";
const client = JobRouterClient(connectionString);
Membuat kebijakan distribusi
Job Router menggunakan kebijakan distribusi untuk memutuskan bagaimana pekerja diberi tahu tentang Pekerjaan yang tersedia dan waktu hidup untuk pemberitahuan, yang dikenal sebagai Penawaran. Buat kebijakan dengan menentukan Id, nama, offerExpiresAfterSeconds, dan mode distribusi.
const distributionPolicy = await client.path("/routing/distributionPolicies/{distributionPolicyId}", "distribution-policy-1").patch({
body: {
offerExpiresAfterSeconds: 60,
mode: { kind: "longest-idle" },
name: "My distribution policy"
},
contentType: "application/merge-patch+json"
});
Membuat antrean
Buat Antrean menentukan ID, nama, dan berikan ID objek Kebijakan Distribusi yang telah Anda buat di atas.
const queue = await client.path("/routing/queues/{queueId}", "queue-1").patch({
body: {
name: "My Queue",
distributionPolicyId: distributionPolicy.body.id
},
contentType: "application/merge-patch+json"
});
Mengirim pekerjaan
Sekarang, kita dapat mengirimkan pekerjaan langsung ke antrean tersebut, dengan pemilih pekerja yang mengharuskan pekerja memiliki label Some-Skill
yang lebih besar dari 10.
const job = await client.path("/routing/jobs/{jobId}", "job-1").patch({
body: {
channelId: "voice",
queueId: queue.body.id,
priority: 1,
requestedWorkerSelectors: [{ key: "Some-Skill", labelOperator: "greaterThan", value: 10 }]
},
contentType: "application/merge-patch+json"
});
Membuat pekerja
Sekarang, kita membuat pekerja untuk menerima pekerjaan dari antrean itu, dengan label Some-Skill
yang sama dengan 11 dan kapasitas pada my-channel
.
let worker = await client.path("/routing/workers/{workerId}", "worker-1").patch({
body: {
capacity: 1,
queues: [queue.body.id],
labels: { "Some-Skill": 11 },
channels: [{ channelId: "voice", capacityCostPerJob: 1 }],
availableForOffers: true
},
contentType: "application/merge-patch+json"
});
Menerima penawaran
Kita harus mendapatkan RouterWorkerOfferIssued dari langganan Event Grid kita. Namun, kita juga dapat menunggu beberapa detik dan kemudian mengkueri pekerja secara langsung terhadap API JobRouter untuk melihat apakah penawaran dikeluarkan untuk itu.
await new Promise(r => setTimeout(r, 10000));
worker = await client.path("/routing/workers/{workerId}", worker.body.id).get();
for (const offer of worker.body.offers) {
console.log(`Worker ${worker.body.id} has an active offer for job ${offer.jobId}`);
}
Terima penawaran pekerjaan
Kemudian, pekerja dapat menerima penawaran pekerjaan dengan menggunakan SDK, yang menetapkan pekerjaan kepada pekerja.
const accept = await client.path("/routing/workers/{workerId}/offers/{offerId}:accept", worker.body.id, worker.body.offers[0].offerId).post();
console.log(`Worker ${worker.body.id} is assigned job ${accept.body.jobId}`);
Menyelesaikan pekerjaan
Setelah pekerja menyelesaikan pekerjaan yang terkait dengan pekerjaan (misalnya, menyelesaikan panggilan), kami menyelesaikan pekerjaan.
await client.path("/routing/jobs/{jobId}/assignments/{assignmentId}:complete", accept.body.jobId, accept.body.assignmentId).post();
console.log(`Worker ${worker.body.id} has completed job ${accept.body.jobId}`);
Tutup pekerjaan
Setelah pekerja siap untuk mengambil pekerjaan baru, pekerja harus menutup pekerjaan. Secara opsional, pekerja dapat memberikan kode disposisi untuk menunjukkan hasil pekerjaan.
await client.path("/routing/jobs/{jobId}/assignments/{assignmentId}:close", accept.body.jobId, accept.body.assignmentId).post({
body: { dispositionCode: "Resolved" }
});
console.log(`Worker ${worker.body.id} has closed job ${accept.body.jobId}`);
Menghapus pekerjaan
Setelah pekerjaan ditutup, kita dapat menghapus pekerjaan sehingga kita dapat membuat ulang pekerjaan dengan ID yang sama jika kita menjalankan sampel ini lagi
await client.path("/routing/jobs/{jobId}", accept.body.jobId).delete();
console.log(`Deleting job ${accept.body.jobId}`);
Menjalankan kode
Untuk menjalankan kode, pastikan Anda berada di direktori tempat file Anda index.js
berada.
node index.js
Azure Communication Services - Job Router Quickstart
Worker worker-1 has an active offer for job job-1
Worker worker-1 is assigned job job-1
Worker worker-1 has completed job job-1
Worker worker-1 has closed job job-1
Deleting job job-1
Catatan
Setiap kali Anda menjalankan aplikasi lebih dari sekali, maka Pekerjaan yang baru akan ditempatkan di antrean. Tindakan ini dapat menyebabkan Pekerja ditawari Pekerjaan yang berbeda dari yang telah dibuat saat Anda menjalankan kode di atas. Karena ini dapat membuat condong permintaan Anda, mempertimbangkan untuk menghapus Pekerjaan dalam antrean setiap kali. Lihat dokumentasi SDK tentang cara mengelola Antrean atau Pekerjaan.
Dokumentasi rujukan
Baca tentang serangkaian kemampuan lengkap Azure Communication Services Job Router dari referensi JavaScript SDK atau referensi REST API.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Sumber daya Communication Services aktif dan string koneksi. Buat sumber daya Azure Communication Services.
- Python 3.7+ untuk sistem operasi Anda.
Kode Sampel
Anda dapat meninjau dan mengunduh kode sampel untuk mulai cepat ini di GitHub.
Menyiapkan
Membuat aplikasi Python baru
Di jendela terminal atau konsol, buat folder baru untuk aplikasi Anda dan navigasikan ke dalamnya.
mkdir jobrouter-quickstart && cd jobrouter-quickstart
Pasang paket
Anda harus menggunakan pustaka klien Azure Communication Job Router untuk Python versi 1.0.0 atau lebih tinggi.
Dari prompt konsol, jalankan perintah berikut:
pip install azure-communication-jobrouter
Menyiapkan kerangka kerja aplikasi
Buat file baru yang disebut router-quickstart.py
dan tambahkan struktur program dasar.
import time
from azure.communication.jobrouter import (
JobRouterClient,
JobRouterAdministrationClient
)
from azure.communication.jobrouter.models import (
LongestIdleMode,
RouterWorkerSelector,
LabelOperator,
RouterChannel,
CloseJobOptions
)
class RouterQuickstart(object):
print("Azure Communication Services - Job Router Quickstart")
#Job Router method implementations goes here
if __name__ == '__main__':
router = RouterQuickstart()
Menginisialisasi klien Job Router dan klien administrasi
Klien Perute Pekerjaan dapat diautentikasi menggunakan string koneksi Anda yang diperoleh dari sumber daya Azure Communication Services di portal Microsoft Azure. Kami menghasilkan klien dan klien administrasi untuk berinteraksi dengan layanan Job Router. Klien admin digunakan untuk menyediakan antrean dan kebijakan, sementara klien digunakan untuk mengirimkan pekerjaan dan mendaftarkan pekerja. Untuk informasi selengkapnya tentang string koneksi, lihat titik akhir access-your-connection-strings-and-service-endpoints.
# Get a connection string to our Azure Communication Services resource.
router_admin_client = JobRouterAdministrationClient.from_connection_string(conn_str = "your_connection_string")
router_client = JobRouterClient.from_connection_string(conn_str = "your_connection_string")
Membuat kebijakan distribusi
Perute Pekerjaan menggunakan kebijakan distribusi untuk memutuskan cara pemberitahuan kepada Pekerja mengenai Pekerjaan yang tersedia dan waktu aktif pemberitahuan, yang dikenal sebagai Penawaran. Buat kebijakan dengan menentukan distribution_policy_id, nama, nilai offer_expires_after_seconds, dan mode distribusi.
distribution_policy = router_admin_client.upsert_distribution_policy(
distribution_policy_id ="distribution-policy-1",
offer_expires_after_seconds = 60,
mode = LongestIdleMode(),
name = "My distribution policy")
Membuat antrean
Buat Antrean menentukan ID, nama, dan berikan ID objek Kebijakan Distribusi yang telah Anda buat di atas.
queue = router_admin_client.upsert_queue(
queue_id = "queue-1",
name = "My Queue",
distribution_policy_id = distribution_policy.id)
Mengirim pekerjaan
Sekarang, kita dapat mengirimkan pekerjaan langsung ke antrean tersebut, dengan pemilih pekerja yang mengharuskan pekerja memiliki label Some-Skill
yang lebih besar dari 10.
job = router_client.upsert_job(
job_id = "job-1",
channel_id = "voice",
queue_id = queue.id,
priority = 1,
requested_worker_selectors = [
RouterWorkerSelector(
key = "Some-Skill",
label_operator = LabelOperator.GREATER_THAN,
value = 10
)
])
Membuat pekerja
Sekarang, kita membuat pekerja untuk menerima pekerjaan dari antrean itu, dengan label Some-Skill
yang sama dengan 11 dan kapasitas pada my-channel
.
worker = router_client.upsert_worker(
worker_id = "worker-1",
capacity = 1,
queues = ["queue-1"],
labels = {
"Some-Skill": 11
},
channels = [RouterChannel(channel_id = "voice", capacity_cost_per_job = 1)],
available_for_offers = True
)
Menerima penawaran
Kita harus mendapatkan RouterWorkerOfferIssued dari langganan Event Grid kita. Namun, kita juga dapat menunggu beberapa detik dan kemudian mengkueri pekerja secara langsung terhadap API JobRouter untuk melihat apakah penawaran dikeluarkan untuk itu.
time.sleep(10)
worker = router_client.get_worker(worker_id = worker.id)
for offer in worker.offers:
print(f"Worker {worker.id} has an active offer for job {offer.job_id}")
Terima penawaran pekerjaan
Kemudian, pekerja dapat menerima penawaran pekerjaan dengan menggunakan SDK, yang menetapkan pekerjaan kepada pekerja.
accept = router_client.accept_job_offer(worker_id = worker.id, offer_id = worker.offers[0].offer_id)
print(f"Worker {worker.id} is assigned job {accept.job_id}")
Menyelesaikan pekerjaan
Setelah pekerja menyelesaikan pekerjaan yang terkait dengan pekerjaan (misalnya, menyelesaikan panggilan), kami menyelesaikan pekerjaan.
router_client.complete_job(job_id = job.id, assignment_id = accept.assignment_id)
print(f"Worker {worker.id} has completed job {accept.job_id}")
Tutup pekerjaan
Setelah pekerja siap untuk mengambil pekerjaan baru, pekerja harus menutup pekerjaan. Secara opsional, pekerja dapat memberikan kode disposisi untuk menunjukkan hasil pekerjaan.
router_client.close_job(job_id = job.id, assignment_id = accept.assignment_id, options = CloseJobOptions(disposition_code = "Resolved"))
print(f"Worker {worker.id} has closed job {accept.job_id}")
Menghapus pekerjaan
Setelah pekerjaan ditutup, kita dapat menghapus pekerjaan sehingga kita dapat membuat ulang pekerjaan dengan ID yang sama jika kita menjalankan sampel ini lagi
router_client.delete_job(accept.job_id)
print(f"Deleting {accept.job_id}")
Menjalankan kode
Untuk menjalankan kode, pastikan Anda berada di direktori tempat file Anda router-quickstart.py
berada.
python router-quickstart.py
Azure Communication Services - Job Router Quickstart
Worker worker-1 has an active offer for job job-1
Worker worker-1 is assigned job job-1
Worker worker-1 has completed job job-1
Worker worker-1 has closed job job-1
Deleting job job-1
Catatan
Setiap kali Anda menjalankan aplikasi lebih dari sekali, maka Pekerjaan yang baru akan ditempatkan di antrean. Tindakan ini dapat menyebabkan Pekerja ditawari Pekerjaan yang berbeda dari yang telah dibuat saat Anda menjalankan kode di atas. Karena ini dapat membuat condong permintaan Anda, mempertimbangkan untuk menghapus Pekerjaan dalam antrean setiap kali. Lihat dokumentasi SDK tentang cara mengelola Antrean atau Pekerjaan.
Dokumentasi rujukan
Baca tentang serangkaian kemampuan lengkap Azure Communication Services Job Router dari referensi Python SDK atau referensi REST API.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Sumber daya Communication Services aktif dan string koneksi. Buat sumber daya Azure Communication Services.
- Java Development Kit (JDK) versi 8 atau lebih tinggi.
- Apache Maven
Kode Sampel
Anda dapat meninjau dan mengunduh kode sampel untuk mulai cepat ini di GitHub.
Menyiapkan
Membuat aplikasi Java baru
Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan perintah di mvn
bawah ini untuk membuat aplikasi konsol baru dengan nama router-quickstart
. Perintah ini membuat proyek Java "Halo Dunia" sederhana dengan satu file sumber: App.java.
mvn archetype:generate -DgroupId=com.communication.jobrouter.quickstart -DartifactId=jobrouter-quickstart-java -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Sertakan paket
Anda harus menggunakan pustaka klien Azure Communication Job Router untuk Java versi 1.0.0 atau lebih tinggi.
Sertakan file BOM
Sertakan azure-sdk-bom
ke proyek Anda untuk mengambil dependensi pada versi Ketersediaan Umum (GA) pustaka. Dalam cuplikan berikut, ganti tempat penampung {bom_version_to_target} dengan nomor versi.
Untuk mempelajari selengkapnya tentang BOM, lihat readme BOM Azure SDK.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
lalu sertakan dependensi langsung di bagian dependensi tanpa tag versi.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-jobrouter</artifactId>
</dependency>
</dependencies>
Sertakan dependensi langsung
Jika Anda ingin mengambil dependensi pada versi pustaka tertentu yang tidak ada di BOM, tambahkan dependensi langsung ke proyek Anda sebagai berikut.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-jobrouter</artifactId>
<version>1.0.0</version>
</dependency>
Menyiapkan kerangka kerja aplikasi
Buka direktori /src/main/java/com/communication/quickstart dan buka App.java
file. Tambahkan kode berikut:
package com.communication.quickstart;
import com.azure.communication.jobrouter.JobRouterAdministrationClient;
import com.azure.communication.jobrouter.JobRouterAdministrationClientBuilder;
import com.azure.communication.jobrouter.JobRouterClient;
import com.azure.communication.jobrouter.JobRouterClientBuilder;
import com.azure.communication.jobrouter.*;
import com.azure.communication.jobrouter.models.*;
import java.time.Duration;
import java.util.List;
import java.util.Map;
public class App
{
public static void main(String[] args) throws IOException
{
System.out.println("Azure Communication Services - Job Router Quickstart");
// Quickstart code goes here
}
}
Menginisialisasi klien Job Router dan klien administrasi
Klien Perute Pekerjaan dapat diautentikasi menggunakan string koneksi Anda yang diperoleh dari sumber daya Azure Communication Services di portal Microsoft Azure. Kami menghasilkan klien dan klien administrasi untuk berinteraksi dengan layanan Job Router. Klien admin digunakan untuk menyediakan antrean dan kebijakan, sementara klien digunakan untuk mengirimkan pekerjaan dan mendaftarkan pekerja. Untuk informasi selengkapnya tentang string koneksi, lihat titik akhir access-your-connection-strings-and-service-endpoints.
// Get a connection string to our Azure Communication Services resource.
JobRouterAdministrationClient routerAdminClient = new JobRouterAdministrationClientBuilder().connectionString("your_connection_string").buildClient();
JobRouterClient routerClient = new JobRouterClientBuilder().connectionString("your_connection_string").buildClient();
Membuat kebijakan distribusi
Perute Pekerjaan menggunakan kebijakan distribusi untuk memutuskan cara pemberitahuan kepada Pekerja mengenai Pekerjaan yang tersedia dan waktu aktif pemberitahuan, yang dikenal sebagai Penawaran. Buat kebijakan dengan menentukan ID, nama, offerExpiresAfter, dan mode distribusi.
DistributionPolicy distributionPolicy = routerAdminClient.createDistributionPolicy(
new CreateDistributionPolicyOptions("distribution-policy-1", Duration.ofMinutes(1), new LongestIdleMode())
.setName("My distribution policy"));
Membuat antrean
Buat Antrean menentukan ID, nama, dan berikan ID objek Kebijakan Distribusi yang telah Anda buat di atas.
RouterQueue queue = routerAdminClient.createQueue(
new CreateQueueOptions("queue-1", distributionPolicy.getId()).setName("My queue")
);
Mengirim pekerjaan
Sekarang, kita dapat mengirimkan pekerjaan langsung ke antrean tersebut, dengan pemilih pekerja yang mengharuskan pekerja memiliki label Some-Skill
yang lebih besar dari 10.
RouterJob job = routerClient.createJob(new CreateJobOptions("job-1", "voice", queue.getId())
.setPriority(1)
.setRequestedWorkerSelectors(List.of(
new RouterWorkerSelector("Some-Skill", LabelOperator.GREATER_THAN, new RouterValue(10)))));
Membuat pekerja
Sekarang, kita membuat pekerja untuk menerima pekerjaan dari antrean itu, dengan label Some-Skill
yang sama dengan 11 dan kapasitas pada my-channel
.
RouterWorker worker = routerClient.createWorker(
new CreateWorkerOptions("worker-1", 1)
.setQueues(List.of(queue.getId()))
.setLabels(Map.of("Some-Skill", new RouterValue(11)))
.setChannels(List.of(new RouterChannel("voice", 1))));
Menerima penawaran
Kita harus mendapatkan RouterWorkerOfferIssued dari langganan Event Grid kita. Namun, kita juga dapat menunggu beberapa detik dan kemudian mengkueri pekerja secara langsung terhadap API JobRouter untuk melihat apakah penawaran dikeluarkan untuk itu.
Thread.sleep(10000);
worker = routerClient.getWorker(worker.getId());
for (RouterJobOffer offer : worker.getOffers()) {
System.out.printf("Worker %s has an active offer for job %s\n", worker.getId(), offer.getJobId());
}
Terima penawaran pekerjaan
Kemudian, pekerja dapat menerima penawaran pekerjaan dengan menggunakan SDK, yang menetapkan pekerjaan kepada pekerja.
AcceptJobOfferResult accept = routerClient.acceptJobOffer(worker.getId(), worker.getOffers().get(0).getOfferId());
System.out.printf("Worker %s is assigned job %s\n", worker.getId(), accept.getJobId());
Menyelesaikan pekerjaan
Setelah pekerja menyelesaikan pekerjaan yang terkait dengan pekerjaan (misalnya, menyelesaikan panggilan), kami menyelesaikan pekerjaan.
routerClient.completeJobWithResponse(accept.getJobId(), accept.getAssignmentId(), null);
System.out.printf("Worker %s has completed job %s\n", worker.getId(), accept.getJobId());
Tutup pekerjaan
Setelah pekerja siap untuk mengambil pekerjaan baru, pekerja harus menutup pekerjaan.
routerClient.closeJobWithResponse(accept.getJobId(), accept.getAssignmentId(), null);
System.out.printf("Worker %s has closed job %s\n", worker.getId(), accept.getJobId());
Menghapus pekerjaan
Setelah pekerjaan ditutup, kita dapat menghapus pekerjaan sehingga kita dapat membuat ulang pekerjaan dengan ID yang sama jika kita menjalankan sampel ini lagi
routerClient.deleteJob(accept.getJobId());
System.out.printf("Deleting job %s\n", accept.getJobId());
Menjalankan kode
Untuk menjalankan kode, buka direktori yang berisi pom.xml
file dan kompilasi program.
mvn compile
Kemudian, buat paket:
mvn package
Menjalankan aplikasi
mvn exec:java -Dexec.mainClass="com.communication.jobrouter.quickstart.App" -Dexec.cleanupDaemonThreads=false
Output yang diharapkan menjelaskan setiap tindakan yang diselesaikan:
Azure Communication Services - Job Router Quickstart
Worker worker-1 has an active offer for job job-1
Worker worker-1 is assigned job job-1
Worker worker-1 has completed job job-1
Worker worker-1 has closed job job-1
Deleting job job-1
Catatan
Setiap kali Anda menjalankan aplikasi lebih dari sekali, maka Pekerjaan yang baru akan ditempatkan di antrean. Tindakan ini dapat menyebabkan Pekerja ditawari Pekerjaan yang berbeda dari yang telah dibuat saat Anda menjalankan kode di atas. Karena ini dapat membuat condong permintaan Anda, mempertimbangkan untuk menghapus Pekerjaan dalam antrean setiap kali. Lihat dokumentasi SDK tentang cara mengelola Antrean atau Pekerjaan.
Dokumentasi rujukan
Baca tentang serangkaian kemampuan lengkap Azure Communication Services Job Router dari referensi Java SDK atau referensi REST API.
Langkah berikutnya
Menjelajahi tutorial Panduan Perute Pekerjaan
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk