BLOGスタッフブログ

インソースマーケティングデザイン

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を確認することができます。
image005

2.APIキーの取得(ユーザの作成・APIキーの発行)

課題を登録するお問い合わせ用のユーザを作成します。既にBacklogに登録されているお問い合わせを担当している方のユーザでも構いません。
対象のユーザで「APIキー」を発行します。
ダッシュボード画面等で「個人設定」をクリックすると、「個人設定」画面が表示されます。個人設定のメニューの「API」をさらにクリックすると、「APIの設定」画面が表示されます。
「新しいAPIキーを発行」で「メモ」を入力し「登録」ボタンをクリックすると、「登録されたAPIキー」のエリアに「APIキー」が表示されるので、これを控えておいてください。
image015

さてやっと準備が整いました。お問合せのプログラムの中に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ライブラリのご紹介をいたします。
以上です。ではまた。

インソースマーケティングデザインが書いた他の記事

見積もり・ご依頼など、
お気軽にご相談ください

本サイトはユーザーエクスペリエンスの向上などを目的に、Cookieを使用しています。
右記のバナーで「同意する」をクリックする、または本サイトを利用することにより、
お客様は弊社のCookieポリシーに同意したことになります。

同意します