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:
- 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í.
- 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.