Unser Team verwaltet mit Trello die Aufgaben, die jeder erledigen muss. (Aufgaben sind auf der Karte aufgeführt, persönliche Namen sind auf der Checkliste aufgeführt und ☑ wird zu denen hinzugefügt, die die Aufgabe abgeschlossen haben.)
Der Boss muss jedes Mal Trello öffnen und jede Karte öffnen, um den Fortschritt zu sehen. Absolut mühsam. Und mit Trello Alert können Sie eine Slack-Benachrichtigung senden, wenn Sie eine neue Karte ändern oder erstellen, ☑ zur Liste hinzufügen usw., aber jedes Mal, wenn Sie ☑ hinzufügen, werden Sie benachrichtigt und Sie können die vollständigen und unvollständigen Personen in der Liste sehen. Ist nicht. Grundsätzlich verschmutzen Benachrichtigungen den Slack Channel (meiner Meinung nach). Und es ist ärgerlich, dass Sie es nicht in der Liste sehen können.
Erstellen wir dann eine App, die Personen benachrichtigt, die ihre Aufgaben nicht regelmäßig erledigt haben (sofern sie den Kanal nicht verschmutzen). Wenn Sie dies tun, implementieren wir es mit AWS. Ich kam auf die Idee und versuchte sie zu machen.
Der grobe Entwicklungsfluss ist
① Triff die API von Trello ② Code schreiben ③ Implementiert in AWS Lambda ④ Ereignisbrücke auslösen (Cloud Watch-Ereignisse) ⑤ Erstellen Sie eine Slack-App ⑥ Nachlassen Es ist wie es ist. Schauen wir uns jeden an.
Gehen Sie zu hier.
Trello API Keys
Erstellen Sie oben eine Kopie des Schlüssels. (Wenn Sie es in einen Notizblock legen, ◎)
Trello API Token
Klicken Sie in ToKen auf den Link Token: unter Schlüssel :.
Dann
Would you like to give the following application access to your account?
Wird gefragt, also scrollen und zulassen.
Wenn Sie zur obigen Seite wechseln, wird der Token-Schlüssel geschrieben. Kopieren Sie ihn daher ebenfalls.
Als nächstes installieren wir die Bibliothek (py-trello). Da wir diesmal Lambda verwenden möchten, installieren Sie die Bibliothek im selben Ordner wie der Python-Code (trello_alert). (Lassen Sie das Innere des Ordners schmutzig)
powershell
mkdir trello_alert
cd trello_alert
pip install py-trello --target .
Jetzt können Sie die API aufrufen. Lassen Sie es uns tatsächlich treffen.
trello_api.py
from trello import TrelloClient
#API-Verbindung zu Trello
client=TrelloClient(
api_key='Schreiben Sie hier den API-Schlüssel',
api_secret='Schreiben Sie hier das API-Token'
)
print(client.list_boards())
Wenn Sie es ausführen und die Liste der Trello ausgegeben wird, ist die Aufgabe, die API zu treffen, abgeschlossen.
Lassen Sie uns nun die Liste abrufen und die Personen ausgeben, die die Aufgabe nicht erledigt haben, die sich der Frist nähert. Grundsätzlich wird der Code der TrelloClient-Klasse in This GitHub veröffentlicht. Überprüfen Sie ihn daher gegebenenfalls. bitte versuche. Ich werde auf den Code verweisen, den ich geschrieben habe. (Da es auf lamda angehoben wird, ist es der Code für lamda)
lambda_function.py
#Get Task unvollständige Personen, deren Datum sich nähert
import re
import datetime
from trello import TrelloClient
import json
def lambda_handler(event, context):
result = {}
#Holen Sie sich Termine für heute und nächste Woche
today = datetime.date.today()
next_week = today + datetime.timedelta(weeks=1)
#API-Verbindung zu Trello
client = TrelloClient(
api_key='Schreiben Sie hier den API-Schlüssel',
api_secret='Schreiben Sie hier das API-Token'
)
#Holen Sie sich eine Trello-Karte
board = client.get_board(`Hinweis ①:Schreiben Sie hier die Board-ID`) #Hol das Brett
target_list = board.get_list(`Hinweis ②:Schreiben Sie hier die Listen-ID`) #Liste abrufen
cards = target_list.list_cards() #Holen Sie sich eine Liste der Karten auf der Liste
#Erhalten Sie unvollständige Aufgabe und Frist für jede Karte
#Benachrichtigen Sie die Frist eine Woche später und heute
for c in cards:
#Holen Sie sich eine Karte
card = client.get_card(c.id)
card.fetch()
#Kartenablauf erhalten
due = re.match("[0-9]{4}-[0-9]{2}-[0-9]{2}", c.due).group()
#Holen Sie sich eine Checkliste mit den heutigen und einwöchigen Fristen
if(str(due) == str(today) or str(due) == str(next_week)):
#Holen Sie sich eine Checkliste nach der anderen
for checklist in card.checklists:
not_finish = []
for i, item in enumerate(checklist.items):
#Ausgabeaufgabe unvollständige Person
if(item["checked"]== False):
not_finish.append(item["name"])
#Speichern Sie den Namen der Karte und die unvollständige Person der Aufgabe im Wörterbuchformat
result[c.name] = not_finish
return {
'statusCode': 200,
'body': json.dumps(result, ensure_ascii=False)
}
Hinweis 1: Die Board-ID steht in der URL nach b, wenn das Trello-Board geöffnet wird.
https://trello.com/b/board id / board name
Hinweis 2: Da die Board-Klasse eine all_list-Funktion enthält, geben Sie sie aus, um die Listen-ID zu ermitteln.
print(board.all_list())
Mit diesem Gefühl konnte ich Aufgaben bekommen, die kurz vor dem Termin standen, und solche, die die Aufgaben nicht erledigt haben. (Wenn Sie es lokal ausführen möchten, können Sie dies tun, indem Sie "8. Zeile, 45. bis 48. Zeile" auskommentieren und am Ende "Druck (Ergebnis)" hinzufügen.) Bitte beachten Sie, dass wenn Sie die Datei 'lambda_function' nicht benennen, sie beim Hochladen auf lamda nicht funktioniert.
Der Code ist vorerst fertig. Ich werde es zu Lambda erheben.
Ich muss eine Zip-Datei erstellen, um den Code auf Lambda hochzuladen Wählen Sie alles im Ordner trello_alert aus, komprimieren Sie es und machen Sie es zu einer Zip-Datei. Der Name der Zip-Datei sollte trello sein.
Wenn Sie in Find Services nach Lambda suchen, wird AWS Lambda als Kandidat angezeigt. Wählen Sie es daher aus.
Klicken Sie nach dem Wechseln auf diese Seite auf "Funktion erstellen".
Wählen Sie auf der nächsten Seite ganz links aus und scrollen Sie nach unten.
Füllen Sie so aus. (Trello_alert schreibt rote Zahlen, weil gesagt wird, dass es bereits existiert) Klicken Sie dann auf Funktion erstellen.
Trello_alert wird zu Lambda hinzugefügt. Klicken Sie auf trello_alert, um den Code hochzuladen.
Klicken Sie nach dem Wechseln zu dieser Seite unten rechts auf den Aktionsteil.
Wählen Sie "ZIP-Datei hochladen" und laden Sie die zuvor erstellte Trello-ZIP-Datei hoch.
Die Datei wird folgendermaßen hochgeladen. (Wenn die standardmäßig bereitgestellte Lambda-Funktion im Weg steht, löschen Sie sie.)
Drücken Sie danach auf dem obigen Bildschirm auf Speichern, um den Test auszuführen. Wenn Sie auf Test drücken, wird der folgende Bildschirm angezeigt. Legen Sie daher den Ereignisnamen zum Testen und Erstellen fest. Sie kehren zum vorherigen Bildschirm zurück. Führen Sie den Test erneut aus.
Wenn im Ausführungsergebnis 200 Antworten zurückgegeben werden, ist das Hochladen auf Lambda abgeschlossen.
Für diejenigen, die API-Schlüssel und API-Token roh in den Code schreiben möchten.
Da es unter dem Funktionscode Umgebungsvariablen gibt,
Legen Sie die Umgebungsvariable dort und im Code fest.
api_key=os.environ['API_KEY']
Wenn Sie schreiben, wird es ohne Probleme ausgeführt.
Ich möchte es regelmäßig ausführen, daher verwende ich CloudWatch-Ereignisse.
Wählen Sie im Lambda-Bildschirm (trello_alert) die Option Trigger hinzufügen.
Füllen Sie den Einstellungsbildschirm wie folgt aus und fügen Sie ihn hinzu.
Dieses Mal wollte ich an Wochentagen regelmäßig um 9 Uhr posten, also
cron(0 9 ? * MON-FRI *)
Und schreiben Sie einen Zeitplanausdruck.
Wenn du jede Minute willst
rate(1 minute)
Wenn Sie es als OK einstellen!
Ich habe die Slack-App unter Bezugnahme auf den folgenden Artikel erstellt. [Version 2020] Erstellung / Einstellung von Bot-Anwendungen zum Posten von Nachrichten mit Slack-API (ausführliche Erläuterung der Gültigkeitsbereichsberechtigung)
lambda_function.py Fügen Sie den folgenden Code hinzu.
lambda_function.py
import requests
#Post zu locker
url = "https://slack.com/api/chat.postMessage"
msg = {
"token": "Schreiben Sie hier ACCESS TOKEN",
"channel": "Schreiben Sie die Kanal-ID, die Sie hier veröffentlichen möchten",
"text": result
}
requests.post(url, data=msg)
Es war eine gute Erfahrung, AWS verwenden, APIs aufrufen und Verbesserungen im Geschäft erwarten zu können.
Recommended Posts