Sdílet prostřednictvím


Modul pravidel funkcí Azure

V rámci modelu rozšiřitelnosti zákazníků podporuje směrovač úloh Azure Communication Services modul pravidel založený na funkcích Azure. Umožňuje vám použít vlastní funkci Azure. Pomocí Azure Functions můžete do procesu směrování začlenit vlastní a složitou logiku.

Vytvoření funkce Azure

Pokud s Azure Functions teprve začínáte, přečtěte si článek Začínáme se službou Azure Functions a zjistěte, jak vytvořit první funkci pomocí vašeho oblíbeného nástroje a jazyka.

Poznámka:

Vaše funkce Azure Functions musí být nakonfigurovaná tak, aby používala trigger HTTP.

Text požadavku HTTP, který se odešle do vaší funkce, bude obsahovat popisky jednotlivých zahrnutých entit. Pokud například píšete funkci pro určení priority úlohy, datová část bude obsahovat všechny popisky úloh pod job klíčem.

{
    "job": {
        "label1": "foo",
        "label2": "bar",
        "urgent": true,
    }
}

Následující příklad zkontroluje hodnotu urgent popisku a vrátí prioritu 10, pokud je pravdivá.

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));
    }
}

Konfigurace zásad pro použití funkce Azure

Zkontrolujte nasazenou funkci na webu Azure Portal a vyhledejte identifikátor URI funkce a ověřovací klíč. Pak pomocí sady SDK nakonfigurujte zásadu, která používá modul pravidel k nasměrování na tuto funkci.

await administrationClient.CreateClassificationPolicyAsync(
    new CreateClassificationPolicyOptions("policy-1") {
        PrioritizationRule = new FunctionRouterRule(new Uri("<insert function uri>")) {
            Credential = new FunctionRouterRuleCredential("<insert function key>")
        }});

Při odeslání nebo aktualizaci nové úlohy se tato funkce zavolá, aby určila prioritu úlohy.

Chyby

Pokud funkce Azure Functions selže nebo vrátí kód, který není 200, úloha se přesune do ClassificationFailed stavu a z Event Gridu JobClassificationFailedEvent obdržíte podrobnosti o chybě.

Další kroky