Cette fois, j'ai décidé d'informer Slack des mises à jour des tickets Redmine dans mon entreprise, je vais donc résumer cela.
Mon entreprise utilise Redmine pour sous-traiter une certaine entreprise, mais quand il y a un renvoi du sous-traitant, la réponse au ticket est lente! !! On l'a souvent dit (même si les mots sont un peu plus doux ...).
Après cela, quand j'ai cherché la cause, il m'a semblé que ** je n'avais pas remarqué le renvoi ** </ font> en premier lieu.
Eh bien, seuls les e-mails peuvent recevoir des notifications lorsque vous renouvelez votre ticket dans Redmine. .. Je comprends ce sentiment ...! Si vous pouvez définir des notifications comme Backlog, vous le remarquerez même lorsque vous effectuez encore un autre travail, mais bien sûr, il n'y a pas de telle fonction.
Je me demandais quoi faire, mais si je reçois une notification à ** slack **, qui est très actif en tant qu'outil de chat professionnel dans notre entreprise, je pense que je le remarquerai. J'ai pensé que j'avais fait cette fonction.
Immédiatement sorti https://www.sejuku.net/blog/852461 Cet article
Résultat: ✕ Puisque le Redmine que nous utilisons est créé dans l'intranet, j'ai abandonné car je ne peux pas me connecter à Redmine à partir de slack en utilisant RSS en premier lieu.
Résultat: ✕ Notifier Slack avec un webhook à l'aide d'un plug-in appelé "Redmine Slack" Le contenu de ceci était exactement ce que je voulais faire cette fois, mais le déclencheur est ** uniquement lorsque je crée un nouveau ticket ... **. C'est délicieux ... (Puisqu'il s'agit d'un plug-in qui semble être demandé comme celui-ci, je voulais que vous augmentiez un peu plus le degré de liberté ...)
Enfin, utilisez l 'API Redmine pour acquérir activement des données (tickets) qui remplissent les conditions et en informer Slack. Je me suis installé à la correspondance. Depuis que j'ai frappé l'API comme j'aime, il semble être très polyvalent à l'avenir.
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 = "Clé d'accès à l'API" # 個人設定>Clé d'accès à l'APIから取得
redmine_url = "http://URL redmine"
#Date de mise à jour dans les 30 minutes
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: #S'il vaut 0, il sera traité
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": "Personne en charge:" + assigned_to_name + "\r\nlink:<" + redmine_url + "/issues/{0}|{0}>".format(issue_id),
}
print(field)
fields.append(field)
msg = "`Renvoi`J'ai un ticket pour.\r\n Veuillez vérifier la personne responsable."
channel = "#pj-〇〇"
user = "notification de renvoi Redmine"
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)
Nous appelons ce processus par lots, mais comme nous avons déjà un serveur digdag, nous avons décidé de l'exécuter dessus.
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}
Le fichier dig ressemble à ceci. Dans les paramètres de planification, il est configuré pour fonctionner pendant 30 minutes entre 10h00 et 18h00 du lundi au vendredi. (J'imite juste cet endroit, mais je ne l'ai pas encore rattrapé ...)
L'image d'implémentation ressemble à ceci. J'utilise la pièce jointe dans l'API de notification Slack cette fois, et ça a l'air bien!
Cette fois, nous avons mis en œuvre une notification de ralentissement avec élan pour améliorer l'efficacité du travail et l'automatisation, mais comme un problème restant
C'est autour, donc je vais le réparer bientôt.
C'est la première fois que je touche correctement Python, mais j'étudie toujours car il semble qu'il continuera à jouer un rôle actif en termes d'efficacité de travail et d'automatisation, comme pouvoir connecter rapidement des API et dans certains cas pouvoir faire fonctionner Excel. J'irai! !!
Recommended Posts