Notre équipe utilise Trello pour gérer les tâches que chacun doit faire. (Les tâches sont répertoriées sur la carte, les noms personnels sont répertoriés sur la liste de contrôle et ☑ est ajouté à ceux qui ont terminé la tâche)
Le boss doit ouvrir Trello à chaque fois et ouvrir chaque carte pour voir la progression. Absolument gênant. Et avec Trello Alert, vous pouvez envoyer une notification de relâche lorsque vous modifiez ou créez une nouvelle carte, ajoutez ☑ à la liste, etc., mais chaque fois que vous ajoutez ☑, vous serez averti et vous pourrez voir les personnes terminées et incomplètes dans la liste. N'est pas. En gros, les notifications polluent le canal mou (à mon avis). Et c'est ennuyeux que vous ne puissiez pas le voir dans la liste.
Ensuite, créons une application qui avertit les personnes qui n'ont pas terminé les tâches de manière régulière (à condition qu'elle ne pollue pas le canal). Et si vous le faites, implémentons-le à l'aide d'AWS. J'ai eu l'idée et j'ai essayé de la réaliser.
Le flux de développement approximatif est
① Hit API de Trello ② Ecrire le code ③ Implémenté dans AWS lambda ④ Pont d'événement de déclenchement (événements Cloud Watch) ⑤ Créez une application Slack ⑥ Publier sur Slack C'est comme ça. Regardons chacun d'eux.
Allez sur ici.
Trello API Keys
Faites une copie de la clé en haut. (Si vous le mettez dans un bloc-notes, ◎)
Trello API Token
Cliquez sur le lien Token dans ToKen: sous Clé:.
Puis
Would you like to give the following application access to your account?
Sera demandé, alors faites défiler et autorisez.
Lorsque vous passez à la page ci-dessus, la clé de jeton est écrite, alors copiez-la également.
Ensuite, installons la bibliothèque (py-trello). Puisque nous prévoyons d'utiliser Lambda cette fois, installez la bibliothèque dans le même dossier que le code python (trello_alert). (Laisser l'intérieur du dossier sale)
powershell
mkdir trello_alert
cd trello_alert
pip install py-trello --target .
Vous êtes maintenant prêt à accéder à l'API. Frappons-le réellement.
trello_api.py
from trello import TrelloClient
#Connexion API à trello
client=TrelloClient(
api_key='Écrivez la clé API ici',
api_secret='Écrivez le jeton API ici'
)
print(client.list_boards())
Si vous exécutez ceci et que la liste de trello est sortie, la tâche de frapper l'API est terminée.
Maintenant, obtenons la liste et sortons les personnes qui n'ont pas terminé la tâche qui approche de la date limite. Fondamentalement, le code de la classe TrelloClient est disponible dans This GitHub, alors vérifiez-le si nécessaire. s'il vous plaît essayez. Je vais me référer au code que j'ai écrit. (Puisqu'il est élevé à lamda, c'est le code pour lamda)
lambda_function.py
#Obtenir des personnes incomplètes dont la date approche
import re
import datetime
from trello import TrelloClient
import json
def lambda_handler(event, context):
result = {}
#Obtenez des dates pour aujourd'hui et la semaine prochaine
today = datetime.date.today()
next_week = today + datetime.timedelta(weeks=1)
#Connexion API à trello
client = TrelloClient(
api_key='Écrivez la clé API ici',
api_secret='Écrivez le jeton API ici'
)
#Obtenez une carte trello
board = client.get_board(`Remarque ①:Écrivez l'identifiant du tableau ici`) #Obtenez la planche
target_list = board.get_list(`Remarque ②:Écrivez l'identifiant de la liste ici`) #Obtenir la liste
cards = target_list.list_cards() #Obtenez une liste de cartes sur la liste
#Obtenez la tâche incomplète et la date limite pour chaque carte
#Notifier la date limite une semaine plus tard et aujourd'hui
for c in cards:
#Obtenez une carte
card = client.get_card(c.id)
card.fetch()
#Obtenir l'expiration de la carte
due = re.match("[0-9]{4}-[0-9]{2}-[0-9]{2}", c.due).group()
#Obtenez une liste de contrôle des délais d'aujourd'hui et d'une semaine
if(str(due) == str(today) or str(due) == str(next_week)):
#Obtenez la liste de contrôle une par une
for checklist in card.checklists:
not_finish = []
for i, item in enumerate(checklist.items):
#Tâche de sortie personne incomplète
if(item["checked"]== False):
not_finish.append(item["name"])
#Stocker le nom de la carte et la personne incomplète de la tâche au format dictionnaire
result[c.name] = not_finish
return {
'statusCode': 200,
'body': json.dumps(result, ensure_ascii=False)
}
Remarque 1: l'id de la carte se trouve après b dans l'URL lorsque la carte trello est ouverte.
https://trello.com/b/id du tableau / nom du tableau
Remarque 2: Puisqu'il existe une fonction all_list dans la classe de la carte, affichez-la pour trouver l'identifiant de la liste.
print(board.all_list())
Avec ce genre de sentiment, j'ai pu obtenir des tâches qui sont proches de l'échéance et celles qui n'ont pas terminé les tâches.
(Si vous voulez l'exécuter localement, vous pouvez le faire en commentant 8e ligne, 45e à 48e lignes
et en ajoutant` print (résultat) à la fin.)
Veuillez noter que si vous ne nommez pas le fichier "fonction_lambda", il ne fonctionnera pas lorsque vous le téléverserez sur lamda.
Pour le moment, le code est prêt. Je vais l'élever à lambda.
J'ai besoin de créer un fichier zip pour télécharger le code sur lambda, donc Sélectionnez tout dans le dossier trello_alert, compressez-le et créez-en un fichier zip. Le nom du fichier zip doit être trello.
Si vous recherchez lambda à partir de Find Services, AWS Lambda apparaîtra comme candidat, alors sélectionnez-le.
Après avoir accédé à cette page, cliquez sur créer une fonction
.
Sur la page suivante, sélectionnez l'extrême gauche et faites défiler vers le bas.
Remplissez comme ça. (Trello_alert est dans le rouge car on dit qu'il existe déjà) Cliquez ensuite sur créer une fonction.
Trello_alert est ajouté à Lambda. Cliquez sur trello_alert pour télécharger le code.
Après avoir accédé à cette page, cliquez sur la partie Action en bas à droite.
Sélectionnez ʻUpload a .zip file` et téléchargez le trello.zip que vous avez créé précédemment.
Le fichier sera téléchargé comme ceci. (Si la fonction lambda fournie par défaut vous gêne, supprimez-la)
Après cela, appuyez sur Enregistrer sur l'écran ci-dessus pour exécuter le test. Lorsque vous appuyez sur test, l'écran suivant apparaît, alors définissez le nom de l'événement pour tester et créer. Vous serez renvoyé à l'écran précédent, alors relancez le test.
Si 200 réponses sont renvoyées dans le résultat de l'exécution, le téléchargement vers lambda est terminé.
Pour ceux qui souhaitent écrire une clé API et un jeton API bruts dans le code.
Puisqu'il y a des variables d'environnement sous le code de fonction,
Définissez la variable d'environnement ici, et dans le code,
api_key=os.environ['API_KEY']
Si vous écrivez, il sera exécuté sans aucun problème.
Je veux l'exécuter régulièrement, j'utilise donc CloudWatch Events.
Sélectionnez Ajouter un déclencheur dans l'écran Lambda (trello_alert).
Remplissez l'écran de réglage comme suit et ajoutez-le.
Cette fois, je voulais publier régulièrement à 9 heures du matin en semaine, alors
cron(0 9 ? * MON-FRI *)
Et écrivez une expression de planification.
Si tu veux chaque minute
rate(1 minute)
Si vous le définissez comme OK!
J'ai créé l'application Slack en me référant à l'article suivant. [Version 2020] Création / paramétrage de l'application Bot pour publier des messages avec l'API slack (explication détaillée de l'autorité de portée)
lambda_function.py Ajoutez le code suivant.
lambda_function.py
import requests
#Publier sur Slack
url = "https://slack.com/api/chat.postMessage"
msg = {
"token": "Écrivez le JETON D'ACCÈS ici",
"channel": "Écrivez l'ID de chaîne que vous souhaitez publier ici",
"text": result
}
requests.post(url, data=msg)
Ce fut une bonne expérience de pouvoir utiliser AWS, accéder aux API et espérer des améliorations dans les affaires.
Recommended Posts