Dieses Mal habe ich mich entschlossen, Redmine-Ticket-Updates in meinem Unternehmen zu melden, daher werde ich das zusammenfassen.
Meine Firma verwendet Redmine, um ein bestimmtes Geschäft auszulagern, aber wenn der Outsourcer eine Untersuchungshaft erhält, reagiert das Ticket nur langsam! !! Es wurde oft gesagt (obwohl die Wörter etwas weicher sind ...).
Danach, als ich nach der Ursache suchte, schien es, dass ** ich die Untersuchungshaft ** </ font> überhaupt nicht bemerkte.
Nur E-Mails können Benachrichtigungen abfangen, wenn Sie Ihr Ticket in Redmine verlängern. .. Ich verstehe dieses Gefühl ...! Wenn Sie Benachrichtigungen wie Backlog festlegen können, werden Sie dies auch dann bemerken, wenn Sie noch andere Arbeiten ausführen, aber natürlich gibt es keine solche Funktion.
Ich habe mich gefragt, was ich tun soll, aber wenn ich eine Benachrichtigung an ** slack ** erhalte, das als Business-Chat-Tool in unserem Unternehmen sehr aktiv ist, werde ich es wahrscheinlich bemerken. Ich dachte, dass ich diese Funktion gemacht habe.
Sofort erschien https://www.sejuku.net/blog/852461 Dieser Artikel
Ergebnis: ✕ Da die von uns verwendete Redmine im Intranet erstellt wird, habe ich aufgegeben, weil ich mit RSS überhaupt keine Verbindung zu Redmine herstellen kann.
Ergebnis: ✕ Benachrichtigen von Slack mit einem Webhook über ein Plug-In namens "Redmine Slack" Der Inhalt war genau das, was ich diesmal machen wollte, aber der Auslöser ist ** nur, wenn ich ein neues Ticket erstelle ... **. Es ist lecker ... (Da es sich um ein Plug-In handelt, das so gefragt zu sein scheint, wollte ich, dass Sie den Freiheitsgrad ein wenig mehr erhöhen ...)
Verwenden Sie abschließend die Redmine-API, um aktiv Daten (Tickets) zu erfassen, die die Bedingungen erfüllen, und um die Lücke zu benachrichtigen. Ich habe mich auf die Korrespondenz festgelegt. Da ich die API so getroffen habe, wie ich es mag, scheint sie in Zukunft sehr vielseitig zu sein.
sashimodoshi.py
# -*- coding: utf-8 -*-
import digdag
import requests
import sys
import os
from datetime import datetime, timedelta
import json
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from .utils.util_slacker import UtilSlacker
class Main():
def __init__(self, incoming_webhook_url, slack_token):
self.incoming_webhook_url = incoming_webhook_url
self.slack_token = slack_token
self.slacker = UtilSlacker(self.incoming_webhook_url, self.slack_token)
def main(self):
redmine_api_key = "API-Zugriffsschlüssel" # 個人設定>API-Zugriffsschlüsselから取得
redmine_url = "http://Redmine URL"
#Aktualisierungsdatum innerhalb von 30 Minuten
now = datetime.utcnow() + timedelta(minutes=-30)
now = now.strftime('%Y-%m-%dT%H:%M:%SZ')
request_url_for_issues = redmine_url + "/issues.json"
params = {
"key": redmine_api_key,
"project_id": "dd",
"status_id": 4,
"updated_on": ">=" + now
}
issues_res = requests.get(request_url_for_issues, params)
issues_responses = json.loads(issues_res.text)
print(issues_responses)
fields = []
if len(issues_responses["issues"]) == 0: #Wenn es 0 ist, wird es verarbeitet
return
for issue in issues_responses["issues"]:
issue_id = issue["id"]
subject = issue["subject"]
assigned_to_name = issue["assigned_to"]["name"]
field = {
"title": subject,
"value": "Verantwortliche Person:" + assigned_to_name + "\r\nlink:<" + redmine_url + "/issues/{0}|{0}>".format(issue_id),
}
print(field)
fields.append(field)
msg = "`Untersuchungshaft`Ich habe ein Ticket für.\r\n Bitte überprüfen Sie die verantwortliche Person."
channel = "#pj-〇〇"
user = "Redmine Untersuchungshaftbenachrichtigung"
icon_emoji = ":redmine:"
fallback = "redmine"
title = ""
attachment1 = self.slacker.attachment_creater(
fallback=fallback, title=title, color="danger", fields=fields)
attachments = [attachment1]
self.slacker.slack_messenger(
msg, channel, user, icon_emoji, is_link_name=1, attachments=attachments)
Wir rufen diesen Prozess im Batch auf, aber da wir bereits einen Digdag-Server haben, haben wir beschlossen, ihn darauf auszuführen.
sashimodoshi.dig
timezone: Asia/Tokyo
schedule:
cron>: 00,30 10-18 * * 1-5
weekly>: Thu,10:30:00
_export:
workflow_name: "sashimodoshi"
+sashimodoshi:
py>: bin.python_project.sashimodoshi.Main.main
incoming_webhook_url: ${env.incoming_webhook_url}
slack_token: ${env.slack_token}
Die Dig-Datei sieht so aus. In den Zeitplaneinstellungen ist die Ausführung von Montag bis Freitag zwischen 10:00 und 18:00 Uhr für 30 Minuten festgelegt. (Ich ahme diesen Ort nur nach, aber ich habe ihn noch nicht eingeholt ...)
Das Implementierungsimage sieht folgendermaßen aus. Ich verwende dieses Mal den Anhang in der Slack-Benachrichtigungs-API und er sieht gut aus!
Dieses Mal haben wir eine Slack-Benachrichtigung mit Schwung implementiert, um die Arbeitseffizienz und Automatisierung zu verbessern, aber als verbleibendes Problem
Es ist da, also werde ich es bald reparieren.
Dies ist das erste Mal, dass ich Python richtig berührt habe, aber ich lerne noch, weil es anscheinend weiterhin eine aktive Rolle in Bezug auf Arbeitseffizienz und Automatisierung spielen wird, z. B. die Möglichkeit, APIs schnell zu verbinden und in einigen Fällen Excel zu betreiben. Ich werde gehen! !!