経緯
ファイルサーバのディスク容量が切迫した時にアラートを通知する仕組みが必要になった。
社内環境であり、通知されて見る可能性があるのが
- メール
- Redmine
だけだった。
メール通知は社内のハードルが高かったのと、Redmineがrest apiでチケット発行できて
簡単だったのでRedmineに通知する方式を採用。
タイトルと説明だけ変えられるようにしていてそれ以外は固定。
コード
Param(
    [String]$title = "タイトル",
    [String]$desc = "説明",
    [String]$logFilePath = ".\Redminerest.log"
)
$postUri = "http://[Redmineurl]/issues.json"
# JSONパラメータ内容改修
$issue = @{
    project_id = "1";  # プロジェクトID
    tracker_id = "22";   # トラッカーID
    subject = $title;   # タイトル
    assigned_to_id = "333"; # 担当者 ユーザID or グループID
    description = $desc.Replace("\r\n","`n") # 説明
}
$issueJson = @{issue = $issue; key = "アクセスキー"}
# 書き換えたパラメータをjson形式に戻す
$postText = ConvertTo-Json $issueJson
#body部(json)変換
$postBody = [Text.Encoding]::UTF8.GetBytes($postText)
#Rest実行
$Redmine = Invoke-RestMethod -Method POST -Uri $postUri -Body $postBody -ContentType application/json
echo "  発行されたRedmineのid:" + $Redmine.issue.id >> $logFilePath
注意点
- 
各ID取得方法 Redmineから一覧を取得して使用するIDを探す ID URL プロジェクトID http://[Redmineurl]/projects.xml トラッカーID http://[Redmineurl]/trackers.xml ユーザID http://[Redmineurl]/users.xml グループID http://[Redmineurl]/groups.xml ※ 対象が多すぎると途中で切られる。取得する必要がある場合はパラメータを付ける。 - 
例) ユーザID200件 http://[Redmineurl]/users.xml?limit=200 
 
- 
- 
アクセスキーの取得方法 - 個人設定画面を開く
- 右側のサイドバー内「APIアクセスキー」欄の「表示」をクリック
 
- 
APIを有効にする方法 - [管理]→[設定]画面の[API]タブ
 (Redmine 3.1以前の場合は[認証]タブ)を開く
- [RESTによるWebサービスを有効にする]をONにする
- [保存]ボタンをクリックして設定内容保存
 
- [管理]→[設定]画面の[API]タブ
ひっかかったこと
- 
assigned_to_idについて ユーザidをassigned_to_idに入れて実行すると 
 そのユーザが担当者に指定されたチケットが発行されることが確認できた。
 では、グループを指定したい場合はどのキーに指定すればよいのかと疑問に思い
 調査してもいまいち回答にたどり着けずにとりあえず試した結果
 assigned_to_idに入れるのが正解だった。
 ユーザidとグループidは通しの連番が設定される模様。
 
 
0 件のコメント:
コメントを投稿