Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu paket, Azure İletişim Hizmetleri (ACS) İş Yönlendirici hizmeti için JavaScript SDK'sını içerir.
Başlarken
Önemli Kavramlar
Önkoşullar
- Bir Azure aboneliği.
- bir Azure İletişim Hizmetleri (ACS) kaynağı.
- ACS kaynağı oluşturmanız gerekiyorsa Azure Portal, Azure PowerShell veya Azure CLI'yı kullanabilirsiniz.
Yükleme
npm install @azure/communication-job-router
Tarayıcı desteği
Bir web sitesinde Azure SDK kitaplıklarını kullanmak için kodunuzu tarayıcı içinde çalışacak şekilde dönüştürmeniz gerekir. Bunu paketleyici adlı bir araç kullanarak yaparsınız. Paketlemeyi daha iyi anlamak için paketleme belgelerimize bakın.
Öğretici: Azure İletişim Hizmetleri (ACS) İş Yönlendirici SDK'sını kullanarak işleri çalışanlara yönlendirme
Bu öğreticide şunları öğreneceksiniz:
- Kuyruk oluşturma.
- Çalışan oluşturma ve bir kuyruğa atama.
- İşleri çalışanlara yönlendirme.
- İş Yönlendiricisi olaylarına abone olma ve olayları işleme.
- İşleri tamamlama ve kapatma.
Ayarlama
(İsteğe bağlı) IDE yükleme
VSCode veya Webstorm gibi bir IDE yükleyin.
NodeJS'yi yükleme
NodeJS'yi yükleyin.
NodeJS Express sunucusu başlatma
Bir kabukta (cmd, PowerShell, Bash vb.), adlı bir klasör RouterQuickStart oluşturun ve bu klasörün içinde komutunu yürütür npx express-generator. Bu, üzerinde port 3000dinleyecek basit bir Express projesi oluşturur.
Örnek
mkdir RouterQuickStart
cd RouterQuickStart
npx express-generator
npm install
DEBUG=routerquickstart:* npm start
ACS Kaynağınız Var
Azure Portal'da bir ACS kaynağı oluşturun veya mevcut bir kaynağı kullanın.
Azure ACS İş YönlendiriciSI SDK'sını yükleme
RouterQuickStart klasöründe, yürüterek ACS İş Yönlendirici SDK'sını npm install @azure/communication-job-router --saveyükleyin.
Yönlendirme İşleri
İş Yönlendirici İstemcileri Oluşturma
İlk olarak ve jobRouterAdministrationClientjobRouterClientoluşturmamız gerekir.
jobRouterAdministrationClientSınıflandırma İlkeleri, Dağıtım İlkeleri, Özel Durum İlkeleri ve Kuyruklar için yöntemler sağlar.jobRouterClientİşler ve Çalışanlar için yöntemler sağlar.
const {
JobRouterClient,
JobRouterAdministrationClient,
} = require("@azure/communication-job-router");
const acsConnectionString =
"endpoint=https://<YOUR_ACS>.communication.azure.com/;accesskey=<YOUR_ACCESS_KEY>";
const jobRouterClient = new JobRouterClient(acsConnectionString);
const jobRouterAdministrationClient = new JobRouterAdministrationClient(acsConnectionString);
Dağıtım İlkesi Oluşturma
Bu ilke, işler kuyruklarından dağıtıldığında hangi çalışanların iş tekliflerini alacağını belirler.
const distributionPolicy = await jobRouterAdministrationClient.createDistributionPolicy(
"default-distribution-policy-id",
{
name: "Default Distribution Policy",
offerExpiresAfterSeconds: 30,
mode: {
objectType: "longest-idle",
minConcurrentOffers: 1,
maxConcurrentOffers: 3,
},
}
);
Sınıflandırma İlkesi Oluşturma
Bu ilke, oluşturma sırasında işleri sınıflandırır.
- Öncelik belirleme kurallarını daha iyi anlamak için kural belgelerimize bakın.
const classificationPolicy = await jobRouterAdministrationClient.createClassificationPolicy("default-classification-policy-id", {
name: "Default Classification Policy",
fallbackQueueId: salesQueueResponse.Id,
queueSelectors: [{
kind: "static",
labelSelector: { key: "department", labelOperator: "equal", value: "xbox" }
}],
workerSelectors: [{
kind: "static",
labelSelector: { key: "english", labelOperator: "greaterThan", value: 5 }
}],
prioritizationRule: {
kind: "expression-rule",
language: "powerFx";
expression: "If(job.department = \"xbox\", 2, 1)"
}
});
Kuyruk oluşturma
Bu kuyruk, daha önce oluşturulmuş dağıtım ilkemize göre çalışanlara işler sunar.
const salesQueueResponse = await jobRouterAdministrationClient.createQueue("sales-queue-id", {
name: "Sales",
distributionPolicyId: distributionPolicy.Id,
labels: {
department: "xbox",
},
});
Çalışan Oluşturma
Bu çalışanlar daha önce oluşturulan "Satış" kuyruğumuza atanır ve bazı etiketlere sahiptir.
trueayarıavailableForOffers, bu çalışanların iş tekliflerini kabul etmeye hazır olduğu anlamına gelir.- etiketleri ve etiket seçicileri daha iyi anlamak için etiketler belgelerimize bakın.
// Create worker "Alice".
const workerAliceId = "773accfb-476e-42f9-a202-b211b41a4ea4";
const workerAliceResponse = await jobRouterClient.createWorker(workerAliceId, {
totalCapacity: 120,
labels: {
Xbox: 5,
german: 4
name: "Alice",
},
queueAssignments: { [salesQueueResponse.Id]: {} },
availableForOffers: true
});
// Create worker "Bob".
const workerBobId = "21837c88-6967-4078-86b9-1207821a8392";
const workerBobResponse = await jobRouterClient.createWorker(workerBobId, {
totalCapacity: 100,
labels: {
xbox: 5,
english: 3
name: "Bob"
},
queueAssignments: { [salesQueueResponse]: {} },
availableForOffers: true
});
İş Yaşam Döngüsü
bir işin yaşam döngüsünü daha iyi anlamak için iş yaşam döngüsü belgelerimize bakın .
İş Oluşturma
Bu iş, daha önce oluşturulmuş "Satışlar" kuyruğumuzda sıralanır.
const job = await jobRouterClient.createJob("job-id", {
// e.g. callId or chat threadId
channelReference: "66e4362e-aad5-4d71-bb51-448672ebf492",
channelId: "voice",
priority: 2,
queueId: salesQueueResponse.Id,
});
(İsteğe bağlı) Sınıflandırma İlkesi ile İş Oluşturma
Bu iş, daha önce oluşturulmuş sınıflandırma ilkemizle sınıflandırılır. Ayrıca bir etiketi vardır.
const classificationJob = await JobRouterClient.createJob("classification-job-id", {
// e.g. callId or chat threadId
channelReference: "66e4362e-aad5-4d71-bb51-448672ebf492",
channelId: "voice",
classificationPolicyId: classificationPolicy.Id,
labels: {
department: "xbox",
},
});
Ekinlikler
İş Yönlendiricisi olayları Azure Event Grid aracılığıyla teslim edilir. Azure Event Grid daha iyi anlamak için Azure Event Grid belgelerimize bakın.
Önceki örnekte:
- İş "Satış" kuyruğuna sıralanır.
- İşi işlemek için bir çalışan seçilir, bu çalışana bir iş teklifi verilir ve Azure Event Grid aracılığıyla bir
RouterWorkerOfferIssuedolay gönderilir.
Örnek RouterWorkerOfferIssued JSON şekli:
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "worker/{worker-id}/job/{job-id}",
"data": {
"workerId": "w100",
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
"offerId": "525fec06-ab81-4e60-b780-f364ed96ade1",
"offerTimeUtc": "2023-08-17T02:43:30.3847144Z",
"expiryTimeUtc": "2023-08-17T02:44:30.3847674Z",
"jobPriority": 5,
"jobLabels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"jobTags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
}
},
"eventType": "Microsoft.Communication.RouterWorkerOfferIssued",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2023-08-17T00:55:25.1736293Z"
}
Olaylara Abone Olma
ACS İş Yönlendiricisi olaylarına abone olma yollarından biri Azure Portal'ı kullanmaktır.
- Azure Portalı'nda ACS kaynağınıza gidin ve "Olaylar" dikey penceresini açın.
- "RouterWorkerOfferIssued" olayı için bir olay aboneliği ekleyin.
- Olayı almak için uygun bir araç seçin (örn. Web kancası, Azure İşlevleri, Service Bus).
NodeJS uygulamanızda olayları alan yol şuna benzer olabilir:
app.post('/event', (req, res) => {
req.body.forEach(eventGridEvent => {
// Deserialize the event data into the appropriate type
if (eventGridEvent.eventType === "Microsoft.EventGrid.SubscriptionValidationEvent") {
res.send({ validationResponse: eventGridEvent.data.validationCode };
} else if (eventGridEvent.eventType === "Microsoft.Azure.CommunicationServices.RouterWorkerOfferIssued") {
// RouterWorkerOfferIssued handling logic;
} else if ...
});
...
});
İş Teklifini Kabul Etme veya Reddetme
Bir RouterWorkerOfferIssued etkinlik aldıktan sonra iş teklifini kabul edebilir veya reddedebilirsiniz.
workerid- İş teklifini kabul eden çalışanın kimliği.offerId- Kabul edilen veya reddedilen teklifin kimliği.
const acceptResponse = await jobRouterClient.acceptJobOffer(workerId, offerId);
// or
const declineResponse = await jobRouterClient.declineJobOffer(workerId, offerId);
İşi Tamamlama
İşi assignmentId tamamlamak için önceki adımın yanıtından alınan gereklidir.
await jobRouterClient.completeJob(jobId, assignmentId);
İşi Kapatma
Çalışan işin sarmalama aşamasını tamamladıktan sonra işi jobRouterClient kapatabilir ve ileride başvurmak üzere buna bir değerlendirme kodu ekleyebilir.
await jobRouterClient.closeJob(jobId, assignmentId, { dispositionCode: "Resolved" });
Sonraki adımlar
Bu SDK'nın kullanımıyla ilgili ek ayrıntılı örnekler için samples dizinine göz atın.
Katkıda bulunma
Bu SDK'ya katkıda bulunmak isterseniz, kodu derleme ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzunu okuyun.
İlgili projeler
Azure SDK for JavaScript