Aparat reguł funkcji platformy Azure
W ramach modelu rozszerzalności klienta router zadań usług Azure Communication Services obsługuje aparat reguł oparty na funkcji platformy Azure. Zapewnia możliwość korzystania z własnej funkcji platformy Azure. Za pomocą usługi Azure Functions można włączyć niestandardową i złożoną logikę do procesu routingu.
Tworzenie funkcji platformy Azure
Jeśli dopiero zaczynasz korzystać z usługi Azure Functions, zapoznaj się z artykułem Wprowadzenie do usługi Azure Functions , aby dowiedzieć się, jak utworzyć pierwszą funkcję przy użyciu ulubionego narzędzia i języka.
Uwaga
Aby używać wyzwalacza HTTP, należy skonfigurować funkcję platformy Azure
Treść żądania HTTP, która jest wysyłana do funkcji, będzie zawierać etykiety każdej z zaangażowanych jednostek. Jeśli na przykład piszesz funkcję w celu określenia priorytetu zadania, ładunek będzie zawierać wszystkie etykiety zadań w kluczu job
.
{
"job": {
"label1": "foo",
"label2": "bar",
"urgent": true,
}
}
Poniższy przykład sprawdzi wartość urgent
etykiety i zwróci priorytet 10, jeśli ma wartość true.
public static class GetPriority
{
[FunctionName("GetPriority")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
var priority = 5;
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
var data = JsonConvert.DeserializeObject<JObject>(requestBody);
var isUrgent = data["job"]["urgent"].Value<bool>();
if (isUrgent)
priority = 10;
return new OkObjectResult(JsonConvert.SerializeObject(priority));
}
}
Konfigurowanie zasad do korzystania z funkcji platformy Azure
Sprawdź wdrożoną funkcję w witrynie Azure Portal i znajdź identyfikator URI funkcji i klucz uwierzytelniania. Następnie użyj zestawu SDK, aby skonfigurować zasady, które używają aparatu reguł do wskazywania tej funkcji.
await administrationClient.CreateClassificationPolicyAsync(
new CreateClassificationPolicyOptions("policy-1") {
PrioritizationRule = new FunctionRouterRule(new Uri("<insert function uri>")) {
Credential = new FunctionRouterRuleCredential("<insert function key>")
}});
Po przesłaniu lub zaktualizowaniu nowego zadania ta funkcja zostanie wywołana w celu określenia priorytetu zadania.
błędy
Jeśli funkcja platformy Azure zakończy się niepowodzeniem lub zwróci kod inny niż 200, zadanie zostanie przeniesione do ClassificationFailed
stanu i otrzymasz komunikat JobClassificationFailedEvent
z usługi Event Grid zawierający szczegóły błędu.