おはようございます、社長してます牧長です。
もう4月ですね
新社会人の皆さん、ええ感じですか?
さて、今日はそんな春に全く関係のないお話です
Redmine
私はRedmine大好き人間です
最近ではSaas形のチケット管理システムが使われることが多いですが、やはり開発で利用するツールは自分たちで管理したい、、、!
OSSだから、不都合あったら自分たちでカスタマイズできるしね。
あと、バックアップも自分たちで毎日とれるから、サーバに何かあっても復旧できる、他社のサービス停止に影響しない
良いところがいっぱいです
そんなRedmine、開発用のものと、サポート受付用の2つを運用しています
開発用はプロジェクト数が80件を超えていました
サポート受付にも便利
弊社では保守サポート業務も行っているのですが、そこの受付に関してもサポート用のRedmineを立ち上げ、
そこに対して問い合わせを記載し、やり取りをさせていただいております。
そんな使い方をしていると、あぁ、、、、、Webサイトの問い合わせフォームから来た連絡もチケット化したいな、、、
ってなるわけですね
それ、WebAPIで登録できるよ?
Redmineさん、さすがです、WebAPIが提供されています
REST API なので扱いも簡単
APIのドキュメントは公式に記載されています
たとえば、チケット発行はこんな感じ
method: POST
endpoint: {redmine url}/issues.json
{
"issue": {
"project_id": "1",
"subject": "Creating an issue",
"description": "new issue"
}
}
これでRedmineへチケットが作成されました!
すごいね!
GASでAPIを叩いてみる
じゃあ、たとえばお問い合わせにGoogleFormを使ってる場合、GAS(Google Apps Script) で書いたらそのままチケット発行出来るんじゃね?
↓
出来ました
function createIssue(title, message) {
var redmine_url = 'https://{redmine server}/issues.json';
var api_key = 'hogehogehogehogehogehoge';
var project_id = 83
var issue = {
'subject': title,
'description': message,
'tracker_id': 4,
'assigned_to_id': 2,
'status_id': 1,
}
var payload = {
'issue': issue,
'project_id': project_id,
};
payload = JSON.stringify(payload);
var headers = {
'X-Redmine-API-Key': api_key,
'Content-Type': 'application/json',
};
var options = {
'method': 'POST',
'contentType': 'application/json',
'headers': headers,
'payload': payload,
};
var response = UrlFetchApp.fetch(redmine_url, options);
return response;
}
これを、GoogleFormのトリガー設定で、ええ感じに動かしたら、問い合わせから自動的にチケット化されます
エスカレや返信内容の多重チェックに関しても、管理が楽になりますね