Freigeben über


Regel-Engine für Azure-Funktionen

Im Rahmen des Erweiterbarkeitsmodells für Kunden unterstützt der Auftragsrouter von Azure Communication Services eine auf Azure Functions basierende Regel-Engine. So erhalten Sie die Möglichkeit, Ihre eigene Azure-Funktion zu verwenden. Mit Azure Functions können Sie benutzerdefinierte und komplexe Logik in den Routingprozess einbinden.

Erstellen einer Azure-Funktion

Wenn Sie noch nicht mit Azure Functions vertraut sind, erfahren Sie unter Erste Schritte mit Azure Functions, wie Sie Ihre erste Funktion mit Ihrem bevorzugten Tool und Ihrer bevorzugten Programmiersprache erstellen.

Hinweis

Ihre Azure-Funktion muss für die Verwendung eines HTTP-Triggers konfiguriert werden.

Der HTTP-Anforderungstext, der an Ihre Funktion gesendet wird, enthält die Bezeichnungen der einzelnen beteiligten Entitäten. Wenn Sie also beispielsweise eine Funktion zur Bestimmung der Auftragspriorität schreiben, enthalten die Nutzdaten alle Auftragsbezeichnungen unter dem Schlüssel job.

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

Im folgenden Beispiel wird der Wert der Bezeichnung urgent überprüft und die Priorität „10“ zurückgegeben, wenn die Bedingung erfüllt ist.

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

Konfigurieren einer Richtlinie für die Verwendung der Azure-Funktion

Überprüfen Sie Ihre bereitgestellte Funktion im Azure-Portal, und suchen Sie den Funktions-URI und den Authentifizierungsschlüssel. Verwenden Sie dann das SDK, um eine Richtlinie zu konfigurieren, die eine Regel-Engine verwendet, um auf diese Funktion zu verweisen.

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

Wenn ein neuer Auftrag übermittelt oder ein Auftrag aktualisiert wird, wird diese Funktion aufgerufen, um die Priorität des Auftrags zu bestimmen.

Fehler

Wenn die Azure-Funktion nicht erfolgreich ist oder keinen Code vom Typ „200“ zurückgibt, wird der Auftrag in den Status ClassificationFailed versetzt, und Sie erhalten von Event Grid ein entsprechendes Ereignis (JobClassificationFailedEvent) mit Fehlerdetails.

Nächste Schritte