プロジェクト

全般

プロフィール

メールによるチケットの登録機能について

Hirofumi Kubota さんが13年以上前に追加

はじめまして。
最近、RedmineおよびRuby、Railsを勉強し始めた初心者です。
そのため、不可解な発言があるかもしれませんが、よろしくお願いします。

ここから、本題に入りますが、Redmine0.8.0以降には、メールによるチケット
の登録機能があると思いますが、この標準機能は、標準のフィールドに対して
値を設定できると思いますが、プロジェクトでカスタムフィールドを追加し、
そのカスタムフィールドが入力必須となっている場合、チケットの登録ができません。
そこで、1プロジェクトにつき、1種類のメールによるチケットの登録機能を
作成したいと考えているのですが、どのようにすれば出来るのでしょうか?
それとも、そのようなものは不可能なのでしょうか?

以下に要件を記載します。
1.出来れば、Redmine本体にではなく、Pluginとしたい。
2.メールに記載する項目は、標準機能と同じとしたい。(メール本文のキーは除く)
3.標準機能と同じく、APIキーを使用し、認証不要としたい。
4.FROMアドレスから、作成者(更新者)を取得したい。


返答 (9)

RE: メールによるチケットの登録機能について - Haru Iida さんが13年以上前に追加

メールによるチケット登録はrdm-mailhandler.rbを使用されているのでしょうか?
この機能は内部でREST-APIを使用しているようですが、どうやらREST-APIではカスタムフィールドの変更はできないようです。
http://www.redmine.org/boards/2/topics/17070?r=17198#message-17198
この問題が解決しないと難しいかもしれません。

rake redmine:email:receive_imap や rake redmine:email:receive_pop3 を使う方法でしたらmail_handler.rbのrecieve_isseメソッドをいじればなんとかなりそうな気がします。

プラグインからやるのであれば、最初にmail_handler.rbをロードしたあとにrecieve_isseをオーバライドするとかalias_method_chainで置き換えるとかでしょうか。

RE: メールによるチケットの登録機能について - Hirofumi Kubota さんが13年以上前に追加

早速の返答ありがとうございます。
質問時に用途について記載し忘れてしまいましたので、追記させて頂きます。
実は、「メールによるチケットの登録機能」を使用する際、メールは使用せず、
「/redmine/mail_handler」に対して、自作のアプリケーションから、直接POST
したいと考えております。
(ついでに、登録後、POSTメソッドに対する応答として、チケット番号を受け取りたい)
そのため、最初に記載したように、Pluginを作成し、オリジナルのmail_handlerのコードを
コピーしてみたのですが、mail_handlerにPOSTする時と違い、POST後、ログイン画面にリダ
イレクトされてしまい困っております。
(トレースログを見る限り、自作のPluginのメソッドを呼び出そうとはしているようです。)
そこで、自作のPluginでも、オリジナルのmail_handlerのときのように、リダイレクト
されずにPluginのメソッドが呼び出されるようにするには、どうしたらよいかをご教授
いただければ幸いです。

RE: メールによるチケットの登録機能について - Haru Iida さんが13年以上前に追加

実際のコードを見せてもらうことは可能でしょうか?

よくあるのはアクションに対する適切なパーミッションが指定されていないというのが考えられますが。

RE: メールによるチケットの登録機能について - Hirofumi Kubota さんが13年以上前に追加

返答ありがとうございます。
ご指摘の通り、「アクションに対する適切なパーミッションが指定」
は、作成したいPluginの性格から特に必要ないと考えておりました。
一応、現在までに作成した部分を添付させていただきますが、これは、
該当Plugin(MailHandlerforepstest)のコントローラのindexメソッドが
呼び出されるところまでを作成しようと意図したものです。
(indexメソッドが呼び出された後の処理はダミーです。)

追記:
 「メールによるチケットの登録機能」を使用する際、メールは使用せず、
 「/redmine/mail_handler」に対して、自作のアプリケーションから、直接POST
 することは実現できております。

RE: メールによるチケットの登録機能について - Haru Iida さんが13年以上前に追加

Hirofumi Kubota は書きました:

追記:
 「メールによるチケットの登録機能」を使用する際、メールは使用せず、
 「/redmine/mail_handler」に対して、自作のアプリケーションから、直接POST
 することは実現できております。

つまり、問題は解決されたということでよろしいのでしょうか?

RE: メールによるチケットの登録機能について - Hirofumi Kubota さんが13年以上前に追加

いつも回答ありがとうございます。

つまり、問題は解決されたということでよろしいのでしょうか?

下名の記載がわかりにくかったのかもしれませんが、問題は解決しておりません。

再度、以下に現状を記載します。

1.標準の「メールによるチケットの登録機能」(「/redmine/mail_handler」)を使用し、
自作のクライアントアプリケーションからチケットを登録することは出来る。(目的の第一ステップ)
2.入力必須とされたカスタムフィールド(プロジェクトごと)に対応するため、標準の「メールによる
 チケットの登録機能」の改造版をPlugin形式で作成したい。(「/redmine/mail_handlerforepstest」)
(目的の第ニステップ)
 現状、これが問題になっている。
3.2に対して登録したチケット番号をResponseとしてクライアントに返したい。
 (目的の第三ステップ)
実現していないが、目処は立っている。

このような状況なので、2を実現するための方法を模索しております。
これまでに判ったことは、1のクライアントアプリケーションのPOST先アドレスを
Pluginのアドレス「/redmine/mail_handlerforepstest」に変更した場合、
mongrelが、「/redmine/mail_handlerforepstest」のindexメソッド
を呼び出そうとはしているようですが、呼び出す前にユーザ認証画面へリダイレクトされてしま
っているということです。
標準の「メールによるチケットの登録機能」(「/redmine/mail_handler」)のように、
動作するPluginを作成するためには、どのようにすればよいかをご教授いただければ幸いです。

 

RE: メールによるチケットの登録機能について - Haru Iida さんが13年以上前に追加

Hirofumi Kubota は書きました:

2.入力必須とされたカスタムフィールド(プロジェクトごと)に対応するため、標準の「メールによる
 チケットの登録機能」の改造版をPlugin形式で作成したい。(「/redmine/mail_handlerforepstest」)
(目的の第ニステップ)
 現状、これが問題になっている。

いただいたプラグインをインストールして動かしてみましたが、特に問題なくチケットの追加ができましたよ。ユーザ認証画面へリダイレクトはされませんでした。

RE: メールによるチケットの登録機能について - Hirofumi Kubota さんが13年以上前に追加

いつもお世話になります。
こちらの環境では、リダイレクトされ、チケットが登録できないのですが、
再度、アンインストール&インストールを行なって検証してみます。
以後も質問させていただくことがあるかと思いますが、その時はよろしくお願い致します。

RE: メールによるチケットの登録機能について - Hirofumi Kubota さんが13年以上前に追加

上記の件、早速試してみましたが、やはりリダイレクトされてしまいます。
(添付ファイルのHTMLが返されます。)
また、当然のことながら、チケットの登録もされませんでした。
[Haru iida]さんがお試しくださった際には、チケットの登録が出来たとのことですので
Redmine側で何か設定が必要もしくは、こちらの環境で、デフォルトの設定を
変更している可能性があるのどちらかだと思いますが、見当がつかなくて
困っております。
大変勝手なお願いですが、思いつく範囲で結構ですので、何かヒントをいただけないでしょうか?
(POSTメソッド実行用VBSファイルも添付させて頂きます。)

    (1-9/9)