Motore delle regole delle funzioni di Azure
Nell'ambito del modello di estendibilità del cliente, Servizi di comunicazione di Azure Router processo supporta un motore regole basato su funzioni di Azure. Offre la possibilità di usare una funzione di Azure personalizzata. Con Funzioni di Azure, è possibile incorporare logica personalizzata e complessa nel processo di routing.
Creazione di una funzione di Azure
Se non si ha familiarità con Funzioni di Azure, vedere Introduzione a Funzioni di Azure per informazioni su come creare la prima funzione con lo strumento e il linguaggio preferiti.
Nota
La funzione di Azure dovrà essere configurata per l'uso di un trigger HTTP
Il corpo della richiesta Http inviato alla funzione includerà le etichette di ognuna delle entità coinvolte. Ad esempio, se si scrive una funzione per determinare la priorità del processo, il payload includerà tutte le etichette di processo sotto la job
chiave.
{
"job": {
"label1": "foo",
"label2": "bar",
"urgent": true,
}
}
L'esempio seguente esamina il valore dell'etichetta urgent
e restituisce una priorità pari a 10 se è 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));
}
}
Configurare un criterio per l'uso della funzione di Azure
Esaminare la funzione distribuita nel portale di Azure e individuare l'URI della funzione e la chiave di autenticazione. Usare quindi l'SDK per configurare un criterio che usa un motore regole per puntare a tale funzione.
await administrationClient.CreateClassificationPolicyAsync(
new CreateClassificationPolicyOptions("policy-1") {
PrioritizationRule = new FunctionRouterRule(new Uri("<insert function uri>")) {
Credential = new FunctionRouterRuleCredential("<insert function key>")
}});
Quando viene inviato o aggiornato un nuovo processo, questa funzione verrà chiamata per determinare la priorità del processo.
Errors
Se la funzione di Azure ha esito negativo o restituisce un codice diverso da 200, il processo passerà allo ClassificationFailed
stato e si riceverà un oggetto JobClassificationFailedEvent
da Griglia di eventi contenente i dettagli dell'errore.