Partage via


Moteur de règles de fonction Azure

Dans le cadre du modèle d’extensibilité client, le routeur de travaux Azure Communication Services prend en charge le moteur de règles basé sur Azure Functions. Il vous donne la possibilité d’apporter votre propre fonction Azure Function. Avec Azure Functions, vous pouvez incorporer une logique personnalisée complexe dans le processus de routage.

Création d’une fonction Azure

Si vous débutez avec Azure Functions, reportez-vous à Bien démarrer avec Azure Functions pour savoir comment créer votre première fonction avec votre outil et votre langage préférés.

Remarque

Votre fonction Azure doit être configurée pour utiliser un déclencheur HTTP

Le corps de la requête HTTP envoyé à votre fonction inclut les étiquettes de chacune des entités impliquées. Par exemple, si vous écrivez une fonction pour déterminer la priorité du travail, la charge utile inclut toutes les étiquettes de travail sous la clé job.

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

L’exemple suivant inspecte la valeur de l’étiquette urgent et retourne une priorité de 10 si sa valeur est 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));
    }
}

Configurer une stratégie pour utiliser la fonction Azure

Inspectez votre fonction déployée dans le portail Azure et recherchez l’URI de fonction et la clé d’authentification. Utilisez ensuite le kit de développement logiciel (SDK) pour configurer une stratégie qui utilise un moteur de règle pour pointer vers cette fonction.

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

Lorsqu’un nouveau travail est envoyé ou mis à jour, cette fonction est appelée pour déterminer la priorité du travail.

Erreurs

Si la fonction Azure échoue ou retourne un code hors 200, le travail passe à l’état ClassificationFailed et vous recevrez un JobClassificationFailedEvent d’Event Grid contenant les détails de l’erreur.

Étapes suivantes