Add Divera messaging functionality and API keys to environment configuration
This commit is contained in:
parent
4a965a96a4
commit
399d8e498d
2
.env.dev
2
.env.dev
@ -13,3 +13,5 @@ alarminator_token=""
|
|||||||
alarminator_zvies_use_PEALGRP="False"
|
alarminator_zvies_use_PEALGRP="False"
|
||||||
printer=DEFAULT
|
printer=DEFAULT
|
||||||
print_num=0
|
print_num=0
|
||||||
|
DIVERA_MESSANGER_API_KEY=""
|
||||||
|
DIVERA_ALARMER_API_KEY=""
|
||||||
@ -14,6 +14,9 @@ ENV alarminator_zvies_use_PEALGRP="False"
|
|||||||
ENV print_num=0
|
ENV print_num=0
|
||||||
ENV printer="DEFAULT"
|
ENV printer="DEFAULT"
|
||||||
ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
|
ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
|
||||||
|
ENV DIVERA_MESSANGER_API_KEY=""
|
||||||
|
ENV DIVERA_ALARMER_API_KEY=""
|
||||||
|
ENV MAPS_API_KEY=""
|
||||||
|
|
||||||
|
|
||||||
COPY *.deb /
|
COPY *.deb /
|
||||||
|
|||||||
@ -50,6 +50,7 @@ def run():
|
|||||||
webhook(parsed_body)
|
webhook(parsed_body)
|
||||||
alarminator_api(parsed_body)
|
alarminator_api(parsed_body)
|
||||||
cups_print(parsed_body,m.body)
|
cups_print(parsed_body,m.body)
|
||||||
|
divera_messenger(parsed_body)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def folder_event_subscriber(folder: Folder):
|
def folder_event_subscriber(folder: Folder):
|
||||||
|
|||||||
68
app/hooks.py
68
app/hooks.py
@ -6,6 +6,8 @@ from weasyprint import HTML
|
|||||||
from requests.adapters import Retry
|
from requests.adapters import Retry
|
||||||
import uuid
|
import uuid
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
|
|
||||||
retries = Retry(total=5,
|
retries = Retry(total=5,
|
||||||
backoff_factor=0.1,
|
backoff_factor=0.1,
|
||||||
@ -152,3 +154,69 @@ def cups_print(parsed_body: dict, body: str):
|
|||||||
finally:
|
finally:
|
||||||
if os.path.exists(fname):
|
if os.path.exists(fname):
|
||||||
os.remove(fname)
|
os.remove(fname)
|
||||||
|
|
||||||
|
|
||||||
|
def divera_messenger(parsed_body: dict):
|
||||||
|
# /api/v2/alarms
|
||||||
|
# message-channels?accesskey=XXX
|
||||||
|
|
||||||
|
try:
|
||||||
|
api = "https://app.divera247.com/api/v2/"
|
||||||
|
messenger_api_token = os.environ.get('DIVERA_MESSANGER_API_KEY') if os.environ.get('DIVERA_MESSANGER_API_KEY') else ""
|
||||||
|
alarmer_api_token = os.environ.get('DIVERA_ALARMER_API_KEY') if os.environ.get('DIVERA_ALARMER_API_KEY') else ""
|
||||||
|
if messenger_api_token != "":
|
||||||
|
if 'ALARMDEPESCHE' in parsed_body: # sendAlarm triggern
|
||||||
|
if 'Einsatzmittelliste' in parsed_body:
|
||||||
|
|
||||||
|
zveis = []
|
||||||
|
message = "Alarmierte Einsatzmittel:\n"
|
||||||
|
for r in parsed_body['Einsatzmittelliste']:
|
||||||
|
if r['Typ'] == 'PEALGRP':
|
||||||
|
zveis.append(r['Ressourcen'])
|
||||||
|
message +='\n'.join(zveis)
|
||||||
|
if 'Zusatztext zum Ort' in parsed_body:
|
||||||
|
message += "\n\nZusatztext zum Ort:\n"+parsed_body['Zusatztext zum Ort']
|
||||||
|
if 'Zusatztext zum Objekt' in parsed_body:
|
||||||
|
message += "\n\nZusatztext zum Objekt:\n"+parsed_body['Zusatztext zum Objekt']
|
||||||
|
|
||||||
|
logging.info("GET zu {}alarms?accesskey=XXX".format(api))
|
||||||
|
s = requests.Session()
|
||||||
|
s.mount('https://', requests.adapters.HTTPAdapter(max_retries=retries))
|
||||||
|
start = datetime.datetime.now()
|
||||||
|
message_channel_id = None
|
||||||
|
alarm_id = None
|
||||||
|
alarm_text = None
|
||||||
|
while message_channel_id is None and datetime.datetime.now() < start + datetime.timedelta(minutes=1):
|
||||||
|
r = s.get("{}alarms?accesskey={}".format(api, messenger_api_token))
|
||||||
|
r_json = r.json()
|
||||||
|
if 'items' in r_json.get('data',{}):
|
||||||
|
for item in r_json.get('data',{})['items']:
|
||||||
|
if str(r_json['data']['items'][item]['foreign_id']) == str(parsed_body['Auftragsnummer']):
|
||||||
|
logging.info("EinsatzNr {} in Divera gefunden, sende Nachricht...".format(r_json['data']['items'][item]['foreign_id']))
|
||||||
|
message_channel_id = r_json['data']['items'][item]['message_channel_id']
|
||||||
|
alarm_id = r_json['data']['items'][item]['id']
|
||||||
|
alarm_text = r_json['data']['items'][item]['text']
|
||||||
|
if message_channel_id is None or alarm_id is None:
|
||||||
|
time.sleep(20)
|
||||||
|
|
||||||
|
if alarmer_api_token != "":
|
||||||
|
if alarm_text is None:
|
||||||
|
alarm_text = ""
|
||||||
|
r = s.put("{}alarms/{}?accesskey={}".format(api, alarm_id, alarmer_api_token),json={
|
||||||
|
"Alarm": {
|
||||||
|
"text": alarm_text+"\n\n"+message,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if message_channel_id:
|
||||||
|
r = s.post("{}messages?accesskey={}".format(api, messenger_api_token),json={
|
||||||
|
"Message": {
|
||||||
|
"message_channel_id": str(message_channel_id),
|
||||||
|
# "parent_id": 0,
|
||||||
|
"text": message,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
pass
|
||||||
|
except Exception as e:
|
||||||
|
logging.error("divera_messenger", e)
|
||||||
|
|||||||
@ -21,6 +21,8 @@ services:
|
|||||||
- alarminator_zvies_use_PEALGRP=${alarminator_zvies_use_PEALGRP}
|
- alarminator_zvies_use_PEALGRP=${alarminator_zvies_use_PEALGRP}
|
||||||
- printer=${printer}
|
- printer=${printer}
|
||||||
- print_num=${print_num}
|
- print_num=${print_num}
|
||||||
|
- DIVERA_MESSANGER_API_KEY=${DIVERA_MESSANGER_API_KEY}
|
||||||
|
- DIVERA_ALARMER_API_KEY=${DIVERA_ALARMER_API_KEY}
|
||||||
volumes:
|
volumes:
|
||||||
- ./cups:/etc/cups
|
- ./cups:/etc/cups
|
||||||
- ./cupsd.conf.txt:/etc/cups/cupsd.conf
|
- ./cupsd.conf.txt:/etc/cups/cupsd.conf
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user