Lassen Sie uns einige Beispiele für die Benachrichtigungsverarbeitung in Python erstellen

Mit Warnungen nach Beurteilung der Verarbeitung und Benachrichtigungen am Ende der Verarbeitung Es gibt gelegentliche Fälle, in denen Sie per E-Mail oder über einen bestimmten Dienst benachrichtigt werden möchten. Es wurde jedes Mal unangenehm zu denken, also fasste ich es zusammen.

Umgebung

Durchgeführt bei Google Cola Boratory. Die Python-Version ist unten. image.png

Mail Zunächst eine E-Mail-Benachrichtigung an solid.

Der SMTP-Server übernimmt Google Mail

import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate

#E-Mail-Adresse, Name und Passwort des Absenders (im Fall von Google Mail das App-Passwort ausstellen und verwenden)
FROM_ADDRESS = '[email protected]'
FROM_NAME = 'XXXXXX'
MY_PASSWORD = 'xxxxx'

#Machen Sie das Ziel zu einem Listentyp
TO_ADDRESS = ['[email protected]', '[email protected]']

from_mail_addr = FROM_ADDRESS
_from_name = FROM_NAME
_from_addr = "{} <{}>".format(_from_name, from_mail_addr)


#Erstellen Sie eine Nachricht zum Senden
## https://docs.python.org/ja/3.5/library/email-examples.html
def create_message(list_to_addr, subject, body):
    msg = MIMEText(body)
    msg['Subject'] = subject
    # msg['From'] = _from_addr
    msg['From'] = _from_name
    msg['To'] = ','.join(list_to_addr)
    #Ich bin mir nicht sicher, aber selbst wenn ich es in BCC einfüge, wird es nur in der Spalte BCC angezeigt
    # msg['Bcc'] = ','.join(list_bcc_addrs)
    msg['Date'] = formatdate()
    return msg

#Senden Sie über den SMTP-Server von Google Mail
def send_gmail(list_to_addr, msg):
    smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
    smtpobj.ehlo()
    smtpobj.starttls()
    smtpobj.ehlo()
    smtpobj.login(FROM_ADDRESS, MY_PASSWORD)
    smtpobj.sendmail(from_mail_addr, list_to_addr, msg.as_string())
    smtpobj.close()


#Prozess zum tatsächlichen Senden
##Nachrichtenzusammensetzung
list_to_addr = TO_ADDRESS
subject = "<Benachrichtigungsbeispiel>"
import datetime
dt_now = datetime.datetime.now()
#Zeilenumbrüche\Einfach mit n einstellen
body = "Es ist der zu sendende Inhalt\Werden n Zeilenumbrüche wiedergegeben?\n{}"
body = body.format(dt_now.strftime('%Y Jahr%m Monat%d Tag%H:%M:%S'))

msg = create_message(list_to_addr, subject, body)

##Übertragungsprozess
send_gmail(list_to_addr, msg)

LINE Dann LINE. Wenn Sie LINE benachrichtigen möchten, gibt es zwei Haupttypen. Soll ich mich nur selbst benachrichtigen oder sollte ich einen bestimmten Benutzer als BOT benachrichtigen?

Benachrichtigen Sie sich

Stellen Sie Token für die unten aufgeführten Räume aus https://notify-bot.line.me/ja/

import requests
line_notify_api = 'https://notify-api.line.me/api/notify'

payload = {'message': send_message}
headers = {'Authorization': 'Bearer ' + line_notify_token}
line_notify = requests.post(line_notify_api, data=payload, headers=headers)

Benachrichtigen Sie per BOT

Sie können auch die LINE Bot-API verwenden, um einen bestimmten Benutzer Ihrer Freunde zu erreichen

Hiermit erstellen Sie einen BOT aus dem Folgenden https://developers.line.biz/console

import json
import requests

#HTTP-Header festlegen
header = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ' + _access_token,
}

#Übertragungsdaten einstellen
send_data = {
  'to': to_user_id,
  'messages': [
      {
          'type': 'text',
          'text': send_message
      }
  ]
}

#Lauf
url = 'https://api.line.me/v2/bot/message/push'
res = requests.post(url, headers=header, data=json.dumps(send_data))
if(res.status_code != 200):
  print("error : [{}]".format(res.text))

Slack

Ist es ein aktueller Trend, Chat-Tools benachrichtigen zu wollen?

Erstellen Sie eine URL auf dem Zielkanal als eingehenden Webhook und werfen Sie sie in POST OK

import requests
import json
requests.post(slack_url, data=json.dumps({'text': send_message}))

Einfach.

Teams

Grundsätzlich mit Slack. Erstellen Sie eine URL auf dem Zielkanal als eingehenden Webhook und werfen Sie sie in POST. Es ist nur eine Funktion von Teams, die sich von Slack unterscheidet, aber sie kann betitelt werden

Da es in HTML ausgegeben wird, wird es nicht in \ n unterbrochen. Wenn Sie es also mit anderen Benachrichtigungen kombinieren möchten, sollten Sie eine Ersatzverarbeitung hinzufügen.

import requests
import json
send_message = send_message.replace('\n', '<BR>')
requests.post(teams_webhook_url, data=json.dumps({'title': subject, 'text': send_message}))

IFTTT

Am Ende werde ich versuchen, zu IFTTTs Webhook zu springen, damit ich zu allem springen kann

Weil ich nur ein wenig kompliziertes Verfahren kurz beschreiben werde Wenn Sie noch nie einen Webhook mit IFTTT erstellt haben, sollten Sie aufgeben und zu einer anderen Seite wechseln.

    1. Geben Sie Webhooks als Auslöser in New Applet an. image.png
  1. Webhooks hat nur eine Webanforderung empfangen. Wählen Sie sie daher aus.

    1. Ich gebe Ihnen einen Ereignisnamen. (Beachten Sie, dass dieser Name auch in der Webhook-URL enthalten ist.)
  2. Wählen Sie die Aktion, die Sie mögen Stellen Sie den Ausgabeinhalt vorerst unter der Annahme ein, dass es sich um LINE handelt

  3. Bestimmen Sie den Apfelnamen und drücken Sie Fertig stellen.

Neigen dazu, von hier aus verwirrend zu sein 6. Wählen Sie oben rechts Meine Dienste aus, um den Webhooks-Dienst anzuzeigen

  1. Drücken Sie Einstellungen
  1. Da die URL beschrieben ist, geben Sie die URL im Browser ein. Dieser Bildschirm ist der IFTTT Webhook-Einstellungsbildschirm. image.png

Die URL des IFTTT-Webhooks wird durch den auf diesem Einstellungsbildschirm angezeigten Schlüssel und den zuvor genannten Ereignisnamen bestimmt.

Https://maker.ifttt.com/trigger/ / with / key /

Wenn Sie an diesen Punkt kommen, können Sie ihn einfach per POST in die URL einfügen, wie z. B. den Webhook von Slack oder TEAMS. Es gibt drei Parameter: Wert1, Wert2 und Wert3.

import requests
requests.post(url_ifttt, data={'value1': subject, 'value2': send_message, 'value3': ''})

Wenn ich IFTTT durchlaufen kann, ist das Ziel meiner Meinung nach irrelevant, sodass ich mein bevorzugtes Benachrichtigungsziel benachrichtigen kann.

Zusammenfassung

Wenn Sie alles zusammenfügen und alle gleichzeitig benachrichtigen, sieht es so aus.


import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
import requests
import json

#E-Mail-Adresse, Name und Passwort des Absenders (im Fall von Google Mail das App-Passwort ausstellen und verwenden)
FROM_ADDRESS = '[email protected]'
FROM_NAME = 'XXXXXX'
MY_PASSWORD = 'xxxxx'

#Machen Sie das Ziel zu einem Listentyp
TO_ADDRESS = ['[email protected]', '[email protected]']

def create_message(list_to_addr, subject, body):
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = FROM_NAME 
    msg['To'] = ','.join(list_to_addr)
    #Ich bin mir nicht sicher, aber selbst wenn ich es in BCC einfüge, wird es nur in der Spalte BCC angezeigt
    # msg['Bcc'] = ','.join(list_bcc_addrs)
    msg['Date'] = formatdate()
    return msg

def send_gmail(list_to_addr, msg):
    smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
    smtpobj.ehlo()
    smtpobj.starttls()
    smtpobj.ehlo()
    smtpobj.login(FROM_ADDRESS, MY_PASSWORD)
    smtpobj.sendmail(FROM_ADDRESS, list_to_addr, msg.as_string())
    smtpobj.close()

def Notice_Mail(subject, send_message):
  list_to_addr = TO_ADDRESS
  msg = create_message(list_to_addr, subject, send_message)
  send_gmail(list_to_addr, msg)

line_notify_token = 'xxxxxxxxxxx'
def Notice_LINE_Self(send_message):
  line_notify_api = 'https://notify-api.line.me/api/notify'

  payload = {'message': send_message}
  headers = {'Authorization': 'Bearer ' + line_notify_token}
  line_notify = requests.post(line_notify_api, data=payload, headers=headers)

_access_token ='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
def Notice_LINE_push(to_user_id, send_message):

  #HTTP-Header festlegen
  header = {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + _access_token,
  }

  #Übertragungsdaten einstellen
  send_data = {
      'to': to_user_id,
      'messages': [
          {
              'type': 'text',
              'text': send_message
          }
      ]
  }

  #Lauf
  url = 'https://api.line.me/v2/bot/message/push'
  res = requests.post(url, headers=header, data=json.dumps(send_data))
  if(res.status_code != 200):
    print("error : [{}]".format(res.text))

slack_url = 'https://hooks.slack.com/services/xxxxxxxx/xxxxxxxx/xxxxxx'
def Notice_Slack(send_message):
  requests.post(slack_url, data=json.dumps({'text': send_message}))

teams_webhook_url = 'https://outlook.office.com/webhook/xxxxxxx/IncomingWebhook/xxxxxxx/xxxxxx'
def Notice_TEAMS(subject, send_message):
  send_message = send_message.replace('\n', '<BR>')
  requests.post(teams_webhook_url, data=json.dumps({'title': subject, 'text': send_message}))

url_ifttt = 'https://maker.ifttt.com/trigger/eventid/with/key/xxxxx'
def Notice_IFTTT(subject, send_message):
  requests.post(url_ifttt, data={'value1': subject, 'value2': send_message, 'value3': ''})

def Notice(subject, body):
  #Benachrichtigungsverarbeitung: E-Mail
  Notice_Mail(subject, body)

  #Benachrichtigungsverarbeitung: LINE_Notify
  Notice_LINE_Self(body)

  #Benachrichtigungsverarbeitung: LINE_push
  userid = 'xxxxxxxxxx'
  Notice_LINE_push(userid, body)

  #Benachrichtigungsverarbeitung: Slack
  Notice_Slack(body)

  #Benachrichtigungsverarbeitung: TEAMS
  Notice_TEAMS(subject, body)

  #Benachrichtigungsverarbeitung: IFTTT (an LINE via)
  Notice_IFTTT(subject, body)


import datetime
dt_now = datetime.datetime.now()

#Zeilenumbrüche\Einfach mit n einstellen
body = "Es ist der zu sendende Inhalt\Werden n Zeilenumbrüche wiedergegeben?\n{}"
body = body.format(dt_now.strftime('%Y Jahr%m Monat%d Tag%H:%M:%S'))

subject = "<Benachrichtigungsmuster: {}>".format(dt_now.strftime('%Y%m%d %H%M%S'))

#Benachrichtigung
Notice(subject, body)

Recommended Posts

Lassen Sie uns einige Beispiele für die Benachrichtigungsverarbeitung in Python erstellen
Lassen Sie uns eine Kombinationsberechnung mit Python durchführen
Dateiverarbeitung in Python
Multithread-Verarbeitung in Python
Textverarbeitung mit Python
Verarbeitung in Python beenden
Mal sehen, wie def in Python verwendet wird
UTF8-Textverarbeitung mit Python
Asynchrone Verarbeitung (Threading) in Python
Mach nicht test.py in Python!
Erstellen Sie ein Lesezeichen in Python
Stellen Sie Opencv in Python zur Verfügung
Segfo Python in 2 Zeilen
Bildverarbeitungssammlung in Python
Lassen Sie uns das Umfangsverhältnis mit Python finden
Verwenden des Python-Modus in der Verarbeitung
Machen wir einen Spot Sale Service 4 (in Python Mini Hack-a-thon)
Segfo Python in einer Zeile
Signalverarbeitung in Python (1): Fourier-Transformation
100 Sprachverarbeitung Knock Kapitel 1 in Python
Lassen Sie uns eine GUI mit Python erstellen.
Versuchen wir es mit Fizz Buzz mit Python
Machen Sie die Standardausgabe in Python nicht blockierend
Mal sehen, wie man Eingaben in Python verwendet
Segfo Python in drei Zeilen
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Ich habe Line Benachrichtigung in Python versucht
Lassen Sie uns mit Python langsam sprechen
[Python] Lassen Sie uns matplotlib mit Japanisch kompatibel machen
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow
Erstellen Sie ein Webframework mit Python! (1)
Stellen Sie sicher, dass in Python regelmäßig Cron-ähnliche Jobs ausgeführt werden
Machen wir einen Twitter-Bot mit Python!
Doppelte Verbotsverarbeitung im GAE / Python-Datenspeicher
Erstellen Sie ein Webframework mit Python! (2)
Status jedes Python-Verarbeitungssystems im Jahr 2020
Asynchrone Verarbeitung in Python: Asyncio-Reverse-Referenz
Lassen Sie uns das Git-Commit-Protokoll in Python analysieren!
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Ich habe mich eingehend mit der Verarbeitung von Variablen in Python befasst
Lassen Sie uns Emotionen mithilfe der Emotions-API in Python beurteilen
Lassen Sie uns den englischen Sprachdialog in Python implementieren [offline]
Mach ein Janken-Spiel in einer Zeile (Python)
Python: Tiefes Lernen in der Verarbeitung natürlicher Sprache: Grundlagen
Ersetzen wir UWSC durch Python (5) Machen wir einen Roboter
Machen Sie mit Python eine Joyplot-ähnliche Handlung von R.
J / N-Verarbeitung mit Bash, Python und Go
Parallele Verarbeitung ohne tiefe Bedeutung in Python
Lassen Sie uns mit SWIG ein Modul für Python erstellen
So nehmen Sie Python Interpreter-Änderungen in Pycharm vor
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Python-Bildverarbeitung
Metaanalyse in Python
Unittest in Python