インソースマーケティングデザイン
2015.05.29 システム
お問い合わせ内容をBacklog APIで管理してみよう(第2回)
こんにちは。エンジニアの高田です。
前回はBacklogを使ってWEBサイトからのお問い合わせを管理する方法を紹介しました。
さらにBacklogにはAPIが準備されていて、お問い合わせがされたらそのAPIを通して自動的にBacklogへ課題(お問い合わせ内容)が登録されたらさらに便利ですよねということを紹介しました。
今回は実際にどのようにAPI連携するのか技術的な部分を紹介します。
弊社のお問い合わせフォームはPHPで動いています。
そのためPHPでBacklog APIとの連携をしてみましょう。
現在のBacklog APIは「JSON」をベースとしてよりご利用しやすい形式となった、Backlog APIバージョン2が提供されています。
以前のバージョン1は「XML-RPC」で実装されていたそうです。今回はもちろんAPIバージョン2を利用します。
Backlog APIを使用すると何ができるのでしょう。
Backlog APIのドキュメントサイトを参考にしてみます。
このサイトではAPIの仕様なども確認できます。
課題,Wiki,ファイルの追加や取得を始め、プロジェクトやユーザーの管理などブラウザ上の Backlog でできる操作の大部分を API から行うことができます。詳しくは API リストを参照してください。
また、Cross Origin Resource Sharing (CORS) によるブラウザ上での Ajax を使用したクロスドメイン通信が可能です。
今回は、お問い合わせとの連携で「課題の登録」をAPIを用いて実装してみます。
実装をする前に、準備するものがあります。
目次
1.スペースID、プロジェクトIDの取得(プロジェクトの作成)
Backlogに申し込んでおくというのは当たり前の話ですが、お問い合わせを管理したいBackogスペース上でお問い合わせ用のプロジェクトを作成しましょう。
作成後「スペースID」と「プロジェクトID」を控えておきます。
プロジェクトのホーム画面等で「プロジェクト設定」をクリックすると、「プロジェクト設定」画面が表示されます。
そのURL「https://[スペースID].backlog.jp/EditProject.action?project.id=[プロジェクトID]」からスペースID、プロジェクトIDを確認することができます。
2.APIキーの取得(ユーザの作成・APIキーの発行)
課題を登録するお問い合わせ用のユーザを作成します。既にBacklogに登録されているお問い合わせを担当している方のユーザでも構いません。
対象のユーザで「APIキー」を発行します。
ダッシュボード画面等で「個人設定」をクリックすると、「個人設定」画面が表示されます。個人設定のメニューの「API」をさらにクリックすると、「APIの設定」画面が表示されます。
「新しいAPIキーを発行」で「メモ」を入力し「登録」ボタンをクリックすると、「登録されたAPIキー」のエリアに「APIキー」が表示されるので、これを控えておいてください。
さてやっと準備が整いました。お問合せのプログラムの中にAPIとの連携を組み込んでみましょう。
先ほどのAPIのドキュメントサイトを参考にしながら。課題の追加なので。。。このページですね。
3.課題の追加(http://developer.nulab-inc.com/ja/docs/backlog/api/2/add-issue)
抜粋です。
メソッド | POST |
---|---|
URL | /api/v2/issues |
リクエストヘッダ | Content-Type:application/x-www-form-urlencoded |
パラメーター名 | 型 | 内容 |
---|---|---|
projectId (必須) | 数値 | 課題を登録するプロジェクトのID |
summary (必須) | 文字列 | 課題の件名 |
parentIssueId | 数値 | 課題の親課題のID |
description | 文字列 | 課題の詳細 |
startDate | 文字列 | 課題の開始日 |
dueDate | 文字列 | 課題の期限日 |
estimatedHours | 数値 | 課題の予定時間 |
actualHours | 数値 | 課題の実績時間 |
issueTypeId (必須) | 数値 | 課題の種別のID |
categoryId[] | 数値 | 課題のカテゴリーのID |
versionId[] | 数値 | 課題の発生バージョンのID |
milestoneId[] | 数値 | 課題のマイルストーンのID |
priorityId (必須) | 数値 | 課題の優先度のID |
assigneeId | 数値 | 課題の担当者のID |
notifiedUserId[] | 数値 | 課題の登録の通知を受け取るユーザーのID |
attachmentId[] | 数値 | 添付ファイルの送信APIが返すID |
ほうほう。とりあえず、必須項目だけ設定しましょうか。
4.Backlog連携を実装
// お問合せの処理を実装してある前提で!
// ———————————————————-
// バックログ課題登録
// ———————————————————-
$spaceId = ‘test-backlog’; // BacklogスペースID (控えておいたID)
$apiKey = ‘PbAPQD9MHjX90jM3TRSHUbsEIn73hklCNmPIfkkIc7kSO03RIeHxHrqiPsewzNJn’; // APIキー (控えておいたID)
$params = array(
’projectId’ => ‘12345’, // プロジェクトID (控えておいたID)
’issueTypeId’ => ‘1’, // 種別ID 設定の必要がなければ1で問題無さそう?
’priorityId’ => ‘3’, // 優先度の設定(3は中)
’summary’ => ‘Webサイトよりお問い合わせ’, // 課題のタイトル お問合せを識別できるようにお問合せIDなどを入れるといいかも
’description’ => ‘お問合せ内容です!’, // 課題の内容、お問い合わせ内容を整形して設定
);
$url = ‘https://’ .$spaceId .’.backlog.jp/api/v2/issues?apiKey=’.$apiKey. ‘&’. http_build_query($params, ”, ‘&’);
$headers = array(‘Content-Type: application/x-www-form-urlencoded’);
$context = array(
’http’ => array(
’method’ => ‘POST’,
’header’ => $headers,
’ignore_errors’ => true,
)
);
$response = file_get_contents($url, false, stream_context_create($context));
これで、お問い合わせをするとBacklogへ課題が登録されることが確認できました。
今回はものすごく簡単な方法を取りましたが、有志の開発者によってAPIライブラリも開発されているようです。APIライブラリを利用すれば、もっと手軽にBacklogを操作できるのではないでしょうか。
(参考)ライブラリ(http://developer.nulab-inc.com/ja/docs/backlog/libraries)
次回は、このAPIライブラリのご紹介をいたします。
以上です。ではまた。