Udostępnij za pośrednictwem


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.

Następne kroki