Hatena::ブログ(Diary)

こくぼ@Everything is the experience.

こんにちは。この日記は主にプログラミング関係のことを書いています。
読書と写真を趣味にしています。よろしければこちらもどうぞ。 Flickr , Twitter , github

 | 

2011-07-08

Redmine Mail Intergration plugin

前置き

「Redmineがメール受信」という表現はRedmineが稼働しているサーバ上で"rake redmine:email:receive_pop3"を実行したときだと解釈してください。


背景

Redmineにはチケットが更新されたときなどにメールで通知してくれる機能があります。さらにその通知メールに返信することで注記を書けたりします。

さらには、Redmineのメールアドレスを宛先に含めておくだけでRedmineがメールを受信してチケットにできる機能もあります。

いろいろ便利な機能がそろっているのですが、うちの会社の使い方ではちょっと痒いところに手が届きません。

なにに困ってるの

マネージャ「お客さんからこんなこと頼まれたんだけど、Aさんこの作業お願い!」

とお客さんからの依頼をAさんのメールアドレス宛にRedmineのメールアドレスをCCに入れて転送しました。*1

Redmineはメールを受信してチケットに起こして通知メールを投げます(投げったっけ?)。

Aさんが受け取ったメール

この時点でAさんはマネージャからのメールとRedmineからの通知メールを受け取っています。

AさんがRedmineからの通知メールに返信すればRedmineは注記として処理できます。しかし元々のマネージャからのメールに返信すると、Redmineは返信元のチケットを特定できないので、新たにチケットを作成してしまうのです。注記にできないどころか無駄なチケットが作られてしまいます。困りました。

そこで作ったプラグイン

Redmineがメール受信したときにメールのMessageIDと処理したチケットNoを覚えておくプラグインを作りました。

この場合でいうと、最初にマネージャが投げたメールを処理したときにMessageIDとチケットNoをDBに保存します。

そしてAさんからの返信を受信したときに、メールのin-reply-toからMessageIDを検索して処理元のチケットを特定します。

まとめ

これでRedmineを意識できない人でもとりあえず宛先にRedmineのメールアドレスを含めておいてもらえば、チケットに履歴が残っていってハッピーになれるかもしれません。

試してみたいかたはこちらから

https://github.com/YusukeKokubo/redmine_mail_intergration

注意点としてはまだ稼動実績がないのでちゃんと動くかあやしいところ…かな。

*1:本来ならこの時点でRedmineにチケットとして作れよ、という話ですが

anonymaruanonymaru 2011/08/23 02:13 とても興味深いプラグインです。私のところでも同じようなニーズがありまして。1.2.1で試しました。

一応ちゃんと動いているように見えますが、注記のときに登録されるmail_messages.issue_idに実在しない架空の数値が入ります。
具体的には1019,1020,1021…と連番で増えていきます(実際のチケット番号は365です)が、これは期待の動作なのでしょうか。

それと、Message-IDからチケット番号を逆引きできたときは、メール本文の元メッセージ部分('>'で始まる行)は切り捨てても構わないと思いますが、いかがですか。

anonymaruanonymaru 2011/08/31 16:44 架空の数値と言っていたのは、よく見たらjournalのIDでした。ここはissueのIDが入るべきな気がします。
それと、件名がISO-2022-JPのときに正規表現のところが誤判定します。
こんな感じに変えてみました。

# diff mail_intergration.rb.original mail_intergration.rb
20c20
< if email.subject =~ /#(\d+)/
---
> if email.subject.toutf8 =~ /#(\d+)/
23c23,24
< issue = receive_issue_reply($1.to_i)
---
> journal = receive_issue_reply($1.to_i)
> issue = journal.issue

rubyもrailsも良く分かっていないので、変なところがあるかも知れませんが、今のところ期待通りに動いています。

coolstylecoolstyle 2011/08/31 17:31 返事遅れてすみません。
架空の数値が入るのはreceive_issue_replyの戻り値にissueが返るつもりがjournalが返ってきてしまってるからですね。(つまりバグです。。)

正規表現の判定も含めて直します。
ありがとうございます。

coolstylecoolstyle 2011/08/31 17:40 ご指摘いたたいだコードを反映してpushしました。
問題などあれば教えていただけると助かります。

tarotaro 2012/12/19 10:31 redmine 2.1.x環境では動作しますか?

coolstylecoolstyle 2012/12/19 11:23 申し訳ないのですが、動作確認していません

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/coolstyle/20110708/1310100053
 | 
最近のコメント
ページビュー
694287
2004 | 04 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
2010 | 01 | 02 | 04 | 05 | 06 | 07 | 09 | 12 |
2011 | 03 | 06 | 07 | 10 | 11 |
2012 | 01 |