2017-08-02 2 views
3

Ich möchte Azure Logic App erstellen, die ständig eine bestimmte Website im Internet anfordern und HTML empfangen.Text in Azure Logic Apps analysieren

Ich habe Logic App erstellt und Intervall und HTTP-Anfrage-Aktion eingerichtet.

Welche Aktion soll ich als nächsten Schritt auf HTML-Code für einfache regex Betrieb wählen?

Was mir in den Sinn kommt, ist die Erstellung Azure Function, die die Arbeit tun wird, aber ich frage mich, ob es eine andere Lösung, geeigneter für eine solche Aufgabe gibt.

Ich möchte es so einfach wie möglich sein.


Edit:

einfach etwas cooles Feature herausgefunden. Logic Apps enthalten einige grundlegende Ausdrücke für primitive Typen.

Leider fehlt es an allen regex oder string.contains.

Für jetzt versuche ich mit Azure-Funktionen.

+1

Azure Funktion mein Vorschlag wäre. Sie könnten auch einen benutzerdefinierten Connector erstellen, aber das wäre wahrscheinlich mehr Aufwand. –

Antwort

0

Ich habe es geschafft, mein Problem mit der Verwendung von Workflow Definition Language und Bausteinen von Azure bereitgestellt lösen .

Die Azure Function Idee war nicht so schlecht und würde perfekt für jeden komplexeren Fall passen, aber wie ich schon sagte, ich wollte es so einfach wie möglich, also hier ist es.

So sieht mein Flow jetzt aus.

Der Vollständigkeit halber, hier ist der Fluss im JSON-Format

{ 
    "$connections": { 
     "value": { 
      "wunderlist": { 
       "connectionId": "/subscriptions/.../providers/Microsoft.Web/connections/wunderlist", 
       "connectionName": "wunderlist", 
       "id": "/subscriptions/.../providers/Microsoft.Web/locations/northeurope/managedApis/wunderlist" 
      } 
     } 
    }, 
    "definition": { 
     "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", 
     "actions": { 
      "Condition": { 
       "actions": { 
        "Create_a_task": { 
         "inputs": { 
          "body": { 
           "completed": false, 
           "list_id": 000000000, 
           "starred": true, 
           "title": "@{variables('today date')}" 
          }, 
          "host": { 
           "connection": { 
            "name": "@parameters('$connections')['wunderlist']['connectionId']" 
           } 
          }, 
          "method": "post", 
          "path": "/tasks", 
          "retryPolicy": { 
           "type": "none" 
          } 
         }, 
         "limit": { 
          "timeout": "PT20S" 
         }, 
         "runAfter": {}, 
         "type": "ApiConnection" 
        }, 
        "Set_a_reminder": { 
         "inputs": { 
          "body": { 
           "date": "@{addHours(utcNow(), 3)}", 
           "list_id": 000000, 
           "task_id": "@body('Create_a_task')?.id" 
          }, 
          "host": { 
           "connection": { 
            "name": "@parameters('$connections')['wunderlist']['connectionId']" 
           } 
          }, 
          "method": "post", 
          "path": "/reminders", 
          "retryPolicy": { 
           "type": "none" 
          } 
         }, 
         "limit": { 
          "timeout": "PT20S" 
         }, 
         "runAfter": { 
          "Create_a_task": [ 
           "Succeeded" 
          ] 
         }, 
         "type": "ApiConnection" 
        } 
       }, 
       "expression": "@contains(body('HTTP'), variables('today date'))", 
       "runAfter": { 
        "Initialize_variable": [ 
         "Succeeded" 
        ] 
       }, 
       "type": "If" 
      }, 
      "HTTP": { 
       "inputs": { 
        "method": "GET", 
        "uri": "..." 
       }, 
       "runAfter": {}, 
       "type": "Http" 
      }, 
      "Initialize_variable": { 
       "inputs": { 
        "variables": [ 
         { 
          "name": "today date", 
          "type": "String", 
          "value": "@{utcNow('yyyy/MM/dd')}" 
         } 
        ] 
       }, 
       "runAfter": { 
        "HTTP": [ 
         "Succeeded" 
        ] 
       }, 
       "type": "InitializeVariable" 
      } 
     }, 
     "contentVersion": "1.0.0.0", 
     "outputs": {}, 
     "parameters": { 
      "$connections": { 
       "defaultValue": {}, 
       "type": "Object" 
      } 
     }, 
     "triggers": { 
      "Recurrence": { 
       "recurrence": { 
        "frequency": "Day", 
        "interval": 1, 
        "startTime": "2017-08-01T23:55:00Z", 
        "timeZone": "UTC" 
       }, 
       "type": "Recurrence" 
      } 
     } 
    } 
} 
0

Sie sind wahrscheinlich auf dem richtigen Weg. Eine Azure-Funktion wäre der geeignetste Weg, dies jetzt zu implementieren. Eine API-App ist eine Option, aber das ist eine schwerere Plattform, als Sie brauchen. ("C# HTTP-Trigger-Funktion verarbeitet, um eine Anforderung")

{

log.Info;:

0

eine Azure Funktion entlang der Linien von erstellen

// Get request body 

dynamic data = await req.Content.ReadAsAsync<object>(); 



// Set name to query string or body data 

string input = data?.input.ToString(); 

var regexJson = data?.regexList; 

var regexes = regexJson.ToObject<List<RegexReplace>>(); 



foreach (var regex in regexes) 

{ 

    var re = Regex.Replace(regex.Regex, "\\\\","\\"); 

    var replace = Regex.Replace(regex.Replace, "\\\\","\\"); 

    input = Regex.Replace(input, "\\\"","\""); 

    input = Regex.Replace(input, re, replace); 

} 



input = Regex.Replace(input, "[\\r\\n]", ""); 



return data.regexList == null 

    ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body") 

    : req.CreateResponse(HttpStatusCode.OK, input, "application/json"); 

}

public class RegExReplace

{

public string Regex { get; set; } 

public string Replace { get; set; } 

}

Verwandte Themen