JIRA整合OpenFire实现任务实时提醒

上一篇,主要介绍了搭建OpenFire和Spark实现即时沟通平台,比较简单就能完成。由于团队间配合的特殊性以及无法访问外网等诸多原因,在 部署了Jira后,一直缺乏一种即时提醒的功能。只能依靠浏览器中定时刷新来查看是否有任务被分配。在完成了OpenFire和Spark插件后,就开始 着手设想是否可以通过Jabber协议,在Jira中有任务分派事件时,通过Jabber协议将事件信息转发出去的想法?在搜索了Jira插件后,发现有 一个插件正符合我的设想:Jabber Listener for JIRA。

下载地址:https://marketplace.atlassian.com/download/plugins/com.atlassian.jira.ext.jabbernotifier.jabber/version/12100

在JIRA上安装此插件后,需要做一些配置,这部分资料较少,这里将配置经验分享给大家,避免走同样的弯路。
官方配置说明:https://ecosystem.atlassian.net/wiki/display/JJABBER/JIRA+Jabber+Listener

下面做一下具体说明:

  1. 管理员账户登录JIRA,进入“管理员页面”,在“系统”–“高级”–“监听器”中添加监听器。如下图所示:(该步骤同官方文档)

  2. 下面编辑监听器详细信息,所有的属性信息在界面上均由详细说明,有空了再补上所有详细说明的翻译。下面将几个主要的属性做一下说明,也是我所配置的内容,留空的属性均有默认值。

XMPP Server:配置OpenFire服务器的地址(必须填写),如:107.22.173.36

XMPP Port:配置OpenFire服务器的端口,若没有修改过,则默认5222

XMPP Login:为JIRA建立一个发送通知用的账户,这里填账户名,如:JIRA_NOTIFIER

XMPP Password:上面账户密码

Users to notify:配置通知事件,如:assignee,即在当有任务分派事件时,通知用户

User‘s Jabber ID Property:配置通知的用户在OpenFire中的ID,可使用变量形式配置,如:{userName}@xxx,xxx为OpenFire服务器 名,在OpenFire的管理员页面首页可以看到。{userName}所取得值为被分派任务用户的JIRA账户名。
Notifiable Statuses:配置通知状态,默认值:ONLINE,AWAY,即当需要通知的OpenFire账号在线或离开状态时通知。

该属性当前版本存在 bug,提交的bug地址可见:https://ecosystem.atlassian.net/browse/JJABBER-30
若不填写内容, 日志会报NullPointException,所以,这里必须填写配置,推荐使用:ONLINE,AWAY,OFFLINE,这样用户即时离线也会通 知,等到用户上线时会收到通知。

可以看到,为了让OpenFire与JIRA整合,还要做的一件事就是同步JIRA账户,保证 OpenFire的账户名与JIRA的账户名一致,才能使得监听器发送给正确的人,当然也可以配置JIRA的邮箱作为账户名等,支持的变量有: {email},{userName},{xmppServer},{xmppService},{projectKey}。

可能大家在配置的时候主要会碰到问题的是最后一点,其他应该都不会有问题,若依然无法发现,建议修改JIRA下的日志文件WEB-INF/classes/log4j.properties,新增以下两个属性,就能看到该插件的运作日志了,另外要注意的是,日志是JIRA程序目录下的logs目录,而是在application-data/jira/log目录下。

log4j.category.com.atlassian.jira.ext.jabbernotifier = DEBUG, console, filelog

log4j.additivity.com.atlassian.jira.ext.jabbernotifier = false