Avec des alertes après avoir fait des jugements dans le traitement et des notifications en fin de traitement Il existe des cas occasionnels où vous souhaitez être averti par e-mail ou par un service spécifique. Cela devenait gênant de réfléchir à chaque fois, alors je l'ai résumé.
Réalisé au google cola boratory. La version Python est ci-dessous.
Mail Tout d'abord, notification par e-mail au solide.
Le serveur SMTP suppose Gmail
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
#Adresse e-mail, nom et mot de passe de l'expéditeur (dans le cas de Gmail, émettez et utilisez le mot de passe de l'application)
FROM_ADDRESS = '[email protected]'
FROM_NAME = 'XXXXXX'
MY_PASSWORD = 'xxxxx'
#Faire de la destination un type de liste
TO_ADDRESS = ['[email protected]', '[email protected]']
from_mail_addr = FROM_ADDRESS
_from_name = FROM_NAME
_from_addr = "{} <{}>".format(_from_name, from_mail_addr)
#Créer un message à envoyer
## 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)
#Je ne sais pas, mais même si je le mets en BCC, il ne sera affiché que dans la colonne appelée BCC, alors arrêtez
# msg['Bcc'] = ','.join(list_bcc_addrs)
msg['Date'] = formatdate()
return msg
#Envoyer à l'aide du serveur SMTP de Gmail
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()
#Processus à envoyer réellement
##Composition du message
list_to_addr = TO_ADDRESS
subject = "<Exemple de notification>"
import datetime
dt_now = datetime.datetime.now()
#Sauts de ligne\Juste réglé avec n
body = "C'est le contenu à envoyer\Les n sauts de ligne seront-ils reflétés?\n{}"
body = body.format(dt_now.strftime('%Y année%m mois%jour j%H:%M:%S'))
msg = create_message(list_to_addr, subject, body)
##Processus de transmission
send_gmail(list_to_addr, msg)
LINE Puis LINE. Si vous souhaitez notifier LINE, il existe deux types principaux. Dois-je simplement me notifier, ou devrais-je informer un utilisateur spécifique en tant que BOT?
Émettre des jetons pour les salles ci-dessous 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)
Vous pouvez également utiliser l'API LINE Bot pour pousser vers un utilisateur spécifique de vos amis
Il s'agit de créer un BOT à partir des éléments suivants https://developers.line.biz/console
import json
import requests
#Définir l'en-tête HTTP
header = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + _access_token,
}
#Définir les données de transmission
send_data = {
'to': to_user_id,
'messages': [
{
'type': 'text',
'text': send_message
}
]
}
#Courir
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
Est-ce une tendance récente à vouloir notifier les outils de chat?
Créez une URL sur le canal cible en tant que webhook entrant et lancez-la dans POST OK
import requests
import json
requests.post(slack_url, data=json.dumps({'text': send_message}))
Facile.
Teams
Fondamentalement avec Slack. Créez une URL sur le canal cible en tant que webhook entrant et lancez-la dans POST. C'est juste une fonctionnalité de Teams qui est différente de Slack, mais elle peut être intitulée
Comme il est généré en HTML, il ne sera pas interrompu \ n, donc si vous souhaitez le combiner avec d’autres notifications, vous devez ajouter un traitement de remplacement.
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
À la fin, j'essaierai de passer au Webhook d'IFTTT pour pouvoir accéder à n'importe quoi
Parce que je ne décrirai que brièvement une procédure un peu compliquée Si vous n'avez jamais créé de webhook avec IFTTT, vous devez abandonner et aller sur une autre page.
Webhooks n'a que Recevoir une requête Web, alors sélectionnez-la.
Choisissez l'action que vous aimez Pour le moment, définissez le contenu de sortie en supposant qu'il s'agit de LINE
Décidez du nom de la pomme et appuyez sur Terminer.
A tendance à être déroutant d'ici 6. Sélectionnez Mes services en haut à droite pour afficher le service Webhooks
L'URL du webhook IFTTT est déterminée par la clé affichée sur cet écran de réglage et le nom de l'événement mentionné précédemment.
Https://maker.ifttt.com/trigger/ <nom de l'événement> / avec / key /
Si vous arrivez à ce point, vous pouvez simplement le jeter dans l'URL par POST comme le Webhook de Slack ou TEAMS. Il existe trois paramètres, valeur1, valeur2 et valeur3.
import requests
requests.post(url_ifttt, data={'value1': subject, 'value2': send_message, 'value3': ''})
Si je peux passer par IFTTT, je pense que la destination ne sera pas pertinente, donc je pense que je peux notifier ma destination de notification préférée.
Si vous mettez tout ensemble et que vous les informez tous en même temps, cela ressemblera à ceci.
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
import requests
import json
#Adresse e-mail, nom et mot de passe de l'expéditeur (dans le cas de Gmail, émettez et utilisez le mot de passe de l'application)
FROM_ADDRESS = '[email protected]'
FROM_NAME = 'XXXXXX'
MY_PASSWORD = 'xxxxx'
#Faire de la destination un type de liste
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)
#Je ne sais pas, mais même si je le mets en BCC, il ne sera affiché que dans la colonne appelée BCC, alors arrêtez
# 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):
#Définir l'en-tête HTTP
header = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + _access_token,
}
#Définir les données de transmission
send_data = {
'to': to_user_id,
'messages': [
{
'type': 'text',
'text': send_message
}
]
}
#Courir
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):
#Traitement des notifications: Email
Notice_Mail(subject, body)
#Traitement des notifications: LINE_Notify
Notice_LINE_Self(body)
#Traitement des notifications: LINE_push
userid = 'xxxxxxxxxx'
Notice_LINE_push(userid, body)
#Traitement des notifications: Slack
Notice_Slack(body)
#Traitement des notifications: TEAMS
Notice_TEAMS(subject, body)
#Traitement des notifications: IFTTT (vers LINE via)
Notice_IFTTT(subject, body)
import datetime
dt_now = datetime.datetime.now()
#Sauts de ligne\Juste réglé avec n
body = "C'est le contenu à envoyer\Les n sauts de ligne seront-ils reflétés?\n{}"
body = body.format(dt_now.strftime('%Y année%m mois%jour j%H:%M:%S'))
subject = "<Exemple de notification: {}>".format(dt_now.strftime('%Y%m%d %H%M%S'))
#notification
Notice(subject, body)
Recommended Posts