# Notifikationer
# Sammanfattning
Notifikationer är ett sätt för integrationer och system att skicka meddelanden till användare. Dessa kan användas för att skicka larm, notifiera användare mm. Notifikationer bryggar automationer med möjligheten att notifiera användare vid eventuella problem.
För att kunna skicka dynamiska meddelanden och skicka dessa till olika system stödjer IoT Open en form av mallspråk för texten i meddelandet. Som sedan levereras till 3:e-parts tjänster. IoT Open levererar några integrationer som standard.
# Arkitektur
En notifikation består av flera delar som tillsammans bildar en kedja för att leverera meddelandet till mottagaren. Det finns tre olika delar i denna kedja meddelandemall, exekverare och utskick. Varje del beskrivs i mer detalj nedan.
Följande bild illustrerar kopplingen mellan de olika delarna.
Följande bild visar flödet för en användare eller ett system som ska skapa en ny notifiering.
# Exekverare (executor)
Exekverare är det sätt som IoT Open kan leverera att utskick till en 3:e part. Vanligtvis körs en exekverare som en fristående programvara som kan utökas och uppdateras separat. En exekverare tar emot POST request på en angiven sökväg från IoT Open backend med ett JSON objekt innehållande det färdigformaterade meddelandet samt annan ytterligare information.
IoT Open levererar några exekverare som finns beskrivna här.
# Exempel på POST request
Detta är ett exempel på den data som skickas med POST requesten varje gång en
output används. Både meddelande och alla värden i output_config
använder
mallspråket innan data skickas till exekveraren.
Exekveraren kan också konfigureras för att ta emot en header X-API-Key
för
autentisering. Det är upp till exekveraren att implementera verifikation av
autentiseringen. Requesten kommer även att ha 'Content-Type' satt
till application/json
.
{
"message": "The installation called 'My Home' is reporting an error.",
"output_config": {
"key-1": "value-1",
"key-2": "value-2"
},
"executor_config": {
"key-1": "value-1",
"key-2": "value-2"
},
"organization": {
"id": 0,
"name": "string",
"address": {
"address": "string",
"city": "string",
"country": "string",
"zip": "string"
},
"email": "string",
"phone": "string",
"force_sms_login": false,
"parent": 0,
"children": {
"name": "string",
"id": 0
},
"notes": "string"
},
"installation": {
"id": 1,
"name": "First installation",
"client_id": 1,
"organization_id": 1,
"capabilities": [
"string"
]
},
"payload": {
"some_key": "some_value",
"other_key": 5
}
}
# Mall för meddelanden
Dynamiska meddelanden i plattformen kan skapas genom att använda sig av ett mallspråk. Varje mall kan även användas i flertalet utskick. Detta medför att en template kan återanvändas för olika larm till olika personer.
En detaljerad beskrivning av hur mallarna fungerar kan hittas här.
# Utskick (output)
Ett utskick är den kombinerade länken mellan ett meddelande, en exekverare samt lite extra konfiguration. Ett utskick kan ha separata konfigurationsparametrar, som exempel ett utskick av SMS anger mottagare som en kommaseparerad lista av telefonnummer. Ett utskick av e-post behöver sätta rubrikrad, mottagare och avsändare. Alla variabler i konfigurationen för en output kan även använda sig av mallspråket för att skapa dynamiska värden.