notification enable notifications jira issue-tracking

notifications - enable email notification jira



JIRA-Enviar correo electrónico a un usuario anónimo (3)

Estoy tratando de encontrar la manera de enviar un correo electrónico a un usuario anónimo cuando se crea un problema a través del correo electrónico. Lo que necesito es que este usuario anónimo reciba un correo electrónico de notificación cuando se abre, comenta y cierra el problema. Según su documentación oficial, esto solo se puede hacer si el creador ya es un usuario en JIRA o si se creará un usuario sobre la marcha. Nada de lo cual funciona para mí. Las soluciones que encontré hasta ahora son:

  1. JEMH - que promete esta funcionalidad, pero se ve inestable, lo que significa que parece romperse (al menos por un tiempo) con cada actualización de JIRA y no hay tiempo de inactividad aceptable para mí.
  2. Escribir mi propio script como se recomendó en el hilo similar

No tengo problemas para escribir mi propio guión, pero solo quería asegurarme de no reinventar la rueda. ¿Hay alguna otra forma de hacer esto?

Seré muy agradecido por cualquier ayuda.


Dudo que esta funcionalidad ya esté disponible para JIRA, y no he visto un complemento que lo haga.

Miré esto en el pasado y salí vacío. Sospecho que no está incorporado porque para muchos clientes potenciales les permitiría obtener una licencia de 10 usuarios y aún así soportar miles de usuarios.

Fuimos con la licencia de usuario ilimitada en su lugar.

Actualización: Quise añadir que podría escribir un script que hiciera esto, creo. Pero parece que sería un PITA con la necesidad de crear un oyente personalizado para capturar los cambios en el problema https://developer.atlassian.com/display/DOCS/Plugin+Tutorial+-+Writing+event+listeners+with + la biblioteca + evento + atlassian


Me acabo de dar cuenta de esta pregunta. JEMH ahora se ha convertido en un complemento comercial completamente desarrollado y tiene una gran cantidad de características nuevas, algunas de las cuales abordan el soporte de usuarios remotos "anónimos" para la creación de problemas, convirtiendo a JIRA en una solución de soporte de correo electrónico completamente capaz. La personalización específica de la plantilla está disponible para esto en cada evento.

En cuanto a las roturas, permanecer en el último lanzamiento no les da tiempo a los desarrolladores para ponerse al día. Juegue inteligentemente, brinde a todos los desarrolladores la oportunidad de ponerse al día.

Con las profundidades de las API JIRA que JEMH sondea, las rupturas fueron desafortunadamente comunes, pero ahora son menos probables gracias a que Atlassian estabiliza algunas API principales en 5.0+. También se está trabajando para proporcionar pruebas de integración de extremo a extremo, ¡lo cual es una misión por derecho propio!


Así es como lo hice usando el plugin Script Runner , le he dicho a Jira que reciba correos electrónicos de mi buzón y que cree problemas a partir de ellos. Luego, en el flujo de trabajo, guardé el correo electrónico y el nombre del remitente en un campo personalizado usando el siguiente script:

from com.atlassian.jira import ComponentManager import re cfm = ComponentManager.getInstance().getCustomFieldManager() # read issue description description = issue.getDescription() if (description is not None) and (''Created via e-mail received from'' in description): # extract email and name: if (''<'' in description) and (''>'' in description): # pattern [Created via e-mail received from: name <[email protected]>] # split it to a list description_list = re.split(''<|>|:'',description) list_length = len(description_list) for index in range(list_length-1, -1, -1): if ''@'' in description_list[index]: customer_email = description_list[index] customer_name = description_list[index - 1] break else: # pattern [Created via e-mail received from: [email protected]] customer_name = "Sir or Madam" # split it to a list description_list = re.split('': |]'',description) list_length = len(description_list) for index in range(list_length-1, -1, -1): if ''@'' in description_list[index]: customer_email = description_list[index] break # if the name isn''t in the right form, switch it''s places: if (customer_name[0] == ''"'') and (customer_name[-1] == ''"'') and ('','' in customer_name): customer_name = customer_name[1:-1] i = customer_name.index('','') customer_name = customer_name[i+2:]+" "+customer_name[:i] # insert data to issue fields issue.setCustomFieldValue(cfm.getCustomFieldObject("customfield_10401"),customer_email) issue.setCustomFieldValue(cfm.getCustomFieldObject("customfield_10108"),customer_name)

que, envíe el correo usando la siguiente secuencia de comandos:

import smtplib,email from smtplib import SMTP from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email import Encoders import os import re from com.atlassian.jira import ComponentManager customFieldManager = ComponentManager.getInstance().getCustomFieldManager() cfm = ComponentManager.getInstance().getCustomFieldManager() # read needed fields from the issue key = issue.getKey() #status = issue.getStatusObject().name summary = issue.getSummary() project = issue.getProjectObject().name # read customer email address toAddr = issue.getCustomFieldValue(cfm.getCustomFieldObject("customfield_10401")) # send mail only if a valid email was entered if (toAddr is not None) and (re.match(''[A-Za-z0-9._%+-]+@(?:[A-Za-z0-9-]+/.)+[A-Za-z]{2,4}'',toAddr)): # read customer name customerName = issue.getCustomFieldValue(cfm.getCustomFieldObject("customfield_10108")) # read template from the disk template_file = ''new_case.template'' f = open(template_file, ''r'') htmlBody = "" for line in f: line = line.replace(''$$CUSTOMER_NAME'',customerName) line = line.replace(''$$KEY'',key) line = line.replace(''$$PROJECT'',project) line = line.replace(''$$SUMMARY'',summary) htmlBody += line + ''<BR>'' smtpserver = ''smtpserver.com'' to = [toAddr] fromAddr = ''[email protected]'' subject = "["+key+"] Thank You for Contacting Support team" mail_user = ''[email protected]'' mail_password = ''password'' # create html email html = ''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" '' html +=''"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">'' html +=''<body style="font-size:12px;font-family:Verdana">'' html +=''<p align="center"><img src="http://path/to/company_logo.jpg" alt="logo"></p> '' html +=''<p>''+htmlBody+''</p>'' html +=''</body></html>'' emailMsg = email.MIMEMultipart.MIMEMultipart(''alternative'') emailMsg[''Subject''] = subject emailMsg[''From''] = fromAddr emailMsg[''To''] = '', ''.join(to) emailMsg.attach(email.mime.text.MIMEText(html,''html'')) # Send the email s = SMTP(smtpserver) # ip or domain name of smtp server s.login(mail_user, mail_password) s.sendmail(fromAddr, [to], emailMsg.as_string()) s.quit() # add sent mail to comments cm = ComponentManager.getInstance().getCommentManager() email_body = htmlBody.replace(''<BR>'',''/n'') cm.create(issue,''anonymous'',''Email was sent to the customer ; Subject: ''+subject+''/n''+email_body,False)

contenido de new_case.template :

Dear $$CUSTOMER_NAME, Thank you for contacting support team. We will address your case as soon as possible and respond with a solution very quickly. Issue key $$KEY has been created as a reference for future correspondence. If you need urgent support please refer to our Frequently Asked Questions page at http://www.example.com/faq. Thank you, Support Team Issue key: $$KEY Issue subject: $$PROJECT Issue summary: $$SUMMARY

Todas las secuencias de comandos se deben adjuntar al flujo de trabajo, a Create transición. Las secuencias de comandos se escriben usando Jython , por lo que debe instalarse para usarlo.