[NEWS] Azure News of the week
5. Juli 2024Also this week there were many news around Microsoft Azure! Here as always the overview for you: Have fun reading and trying it out… Dieser Post ist auch verfügbar auf: Englisch
Wie in Teil 1 und Teil 2 beschrieben sieht es um meine Schedule Tweets Lösung garnicht so schlecht aus. Doch ein wichtiger Bestandteil fehlt noch: das versenden der Tweets…
Zunächst hatte ich überlegt das Versenden der Tweets über Microsoft Flow zu realisieren. Doch dann ist musste ich einige Dinge feststellen:
Also musste eine andere Lösung her…und da Flow im Hintergrund auch nur auf Logic Apps basiert…dann nehmen wir doch die…
Dank des Consumption Modells kann ich in der Logic App machen was ich möchte…es wird regulär gegen meine Azure Subscription verrechnet…und gibt keine Limitierungen mehr.
Also los geht’s. Zunächst einmal eine Logic App anlegen und dann den Logic App Designer starten.
Der Grundaufbau war recht schnell klar….ich frage zyklisch die Listen-Elemente ab hole mit die Infos und arbeite dann die Elemente entsprechend ab:
Nun galt es einige Bedingungen abzufragen und Verzweigungen aufzubauen:
In Summe sieht das dann so aus.
Und schon klappts mit den geplanten Tweets… Zur Sicherheit hier nochmal das Code meiner Logic App
{
"$connections": {
"value": {
"sharepointonline": {
HAVEYOUROWNCONNECTIONHERE },
"twitter": {
HAVEYOUROWNCONNECTIONHERE }
}
},
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Apply_to_each": {
"actions": {
"Condition": {
"actions": {
"Condition_2": {
"actions": {
"Apply_to_each_2": {
"actions": {
"Get_attachment_content": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['sharepointonline']['connectionId']"
}
},
"method": "get",
"path": "/datasets/@{encodeURIComponent(encodeURIComponent('YOUR URL'))}/tables/@{encodeURIComponent(encodeURIComponent('YOUR UID'))}/items/@{encodeURIComponent(encodeURIComponent(items('Apply_to_each')?['ID']))}/attachments/@{encodeURIComponent(items('Apply_to_each_2')?['Id'])}/$value"
},
"metadata": {
"flowSystemMetadata": {
"swaggerOperationId": "GetAttachmentContent"
}
},
"runAfter": {},
"type": "ApiConnection"
},
"Post_a_tweet": {
"inputs": {
"body": "@body('Get_attachment_content')",
"host": {
"connection": {
"name": "@parameters('$connections')['twitter']['connectionId']"
}
},
"method": "post",
"path": "/posttweet",
"queries": {
"tweetText": "@{items('Apply_to_each')?['TweetText']} @{items('Apply_to_each')?['Hashtags']}"
}
},
"metadata": {
"flowSystemMetadata": {
"swaggerOperationId": "Tweet"
}
},
"runAfter": {
"Get_attachment_content": [
"Succeeded"
]
},
"type": "ApiConnection"
},
"Update_item": {
"inputs": {
"body": {
"Hashtags": "@items('Apply_to_each')?['Hashtags']",
"Sent": true,
"Title": "@items('Apply_to_each')?['Title']",
"TweetText": "@items('Apply_to_each')?['TweetText']",
"When": "@items('Apply_to_each')?['When']"
},
"host": {
"connection": {
"name": "@parameters('$connections')['sharepointonline']['connectionId']"
}
},
"method": "patch",
"path": "/datasets/@{encodeURIComponent(encodeURIComponent('YOUR URL'))}/tables/@{encodeURIComponent(encodeURIComponent('YOUR UID'))}/items/@{encodeURIComponent(items('Apply_to_each')?['ID'])}"
},
"metadata": {
"flowSystemMetadata": {
"swaggerOperationId": "PatchItem"
}
},
"runAfter": {
"Post_a_tweet": [
"Succeeded"
]
},
"type": "ApiConnection"
}
},
"foreach": "@body('Get_attachments')",
"runAfter": {
"Get_attachments": [
"Succeeded"
]
},
"type": "Foreach"
},
"Get_attachments": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['sharepointonline']['connectionId']"
}
},
"method": "get",
"path": "/datasets/@{encodeURIComponent(encodeURIComponent('YOUR URL'))}/tables/@{encodeURIComponent(encodeURIComponent('YOUR UID'))}/items/@{encodeURIComponent(encodeURIComponent(items('Apply_to_each')?['ID']))}/attachments"
},
"metadata": {
"flowSystemMetadata": {
"swaggerOperationId": "GetItemAttachments"
}
},
"runAfter": {},
"type": "ApiConnection"
}
},
"expression": "@lessOrEquals(items('Apply_to_each')?['When'], utcNow())",
"runAfter": {},
"type": "If"
}
},
"expression": "@equals(items('Apply_to_each')?['Sent'], bool(false))",
"runAfter": {},
"type": "If"
}
},
"foreach": "@body('Get_items')?['value']",
"runAfter": {
"Get_items": [
"Succeeded"
]
},
"type": "Foreach"
},
"Get_items": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['sharepointonline']['connectionId']"
}
},
"method": "get",
"path": "/datasets/@{encodeURIComponent(encodeURIComponent('YOUR URL'))}/tables/@{encodeURIComponent(encodeURIComponent('YOUR UID'))}/items"
},
"metadata": {
"flowSystemMetadata": {
"swaggerOperationId": "GetItems"
}
},
"runAfter": {},
"type": "ApiConnection"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"Recurrence": {
"recurrence": {
"frequency": "Minute",
"interval": 15,
"timeZone": "W. Europe Standard Time"
},
"type": "Recurrence"
}
}
}
}
Dieser Post ist auch verfügbar auf: Englisch
Leave a comment