上一篇,主要介紹了搭建OpenFire和Spark實現(xiàn)即時溝通平臺,比較簡單就能完成。由于團隊間配合的特殊性以及無法訪問外網(wǎng)等諸多原因,在 部署了Jira后,一直缺乏一種即時提醒的功能。只能依靠瀏覽器中定時刷新來查看是否有任務被分配。在完成了OpenFire和Spark插件后,就開始 著手設想是否可以通過Jabber協(xié)議,在Jira中有任務分派事件時,通過Jabber協(xié)議將事件信息轉發(fā)出去的想法?在搜索了Jira插件后,發(fā)現(xiàn)有 一個插件正符合我的設想:Jabber Listener for JIRA。
在JIRA上安裝此插件后,需要做一些配置,這部分資料較少,這里將配置經(jīng)驗分享給大家,避免走同樣的彎路。 官方配置說明:https://ecosystem.atlassian.net/wiki/display/JJABBER/JIRA+Jabber+Listener
下面做一下具體說明:
管理員賬戶登錄JIRA,進入“管理員頁面”,在“系統(tǒng)”--“高級”--“監(jiān)聽器”中添加監(jiān)聽器。如下圖所示:(該步驟同官方文檔)

下面編輯監(jiān)聽器詳細信息,所有的屬性信息在界面上均由詳細說明,有空了再補上所有詳細說明的翻譯。下面將幾個主要的屬性做一下說明,也是我所配置的內(nèi)容,留空的屬性均有默認值。
XMPP Server:配置OpenFire服務器的地址(必須填寫),如:107.22.173.36
XMPP Port:配置OpenFire服務器的端口,若沒有修改過,則默認5222
XMPP Login:為JIRA建立一個發(fā)送通知用的賬戶,這里填賬戶名,如:JIRA_NOTIFIER
XMPP Password:上面賬戶密碼
Users to notify:配置通知事件,如:assignee,即在當有任務分派事件時,通知用戶
User‘s Jabber ID Property:配置通知的用戶在OpenFire中的ID,可使用變量形式配置,如:{userName}@xxx,xxx為OpenFire服務器 名,在OpenFire的管理員頁面首頁可以看到。{userName}所取得值為被分派任務用戶的JIRA賬戶名。 Notifiable Statuses:配置通知狀態(tài),默認值:ONLINE,AWAY,即當需要通知的OpenFire賬號在線或離開狀態(tài)時通知。
該屬性當前版本存在 bug,提交的bug地址可見:https://ecosystem.atlassian.net/browse/JJABBER-30若不填寫內(nèi)容, 日志會報NullPointException,所以,這里必須填寫配置,推薦使用:ONLINE,AWAY,OFFLINE,這樣用戶即時離線也會通 知,等到用戶上線時會收到通知。
可以看到,為了讓OpenFire與JIRA整合,還要做的一件事就是同步JIRA賬戶,保證 OpenFire的賬戶名與JIRA的賬戶名一致,才能使得監(jiān)聽器發(fā)送給正確的人,當然也可以配置JIRA的郵箱作為賬戶名等,支持的變量有: {email},{userName},{xmppServer},{xmppService},{projectKey}。
可能大家在配置的時候主要會碰到問題的是最后一點,其他應該都不會有問題,若依然無法發(fā)現(xiàn),建議修改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
歡迎關注我的個人博客:程序猿DD