GPTsとBacklog APIの連携について

みなさんこんにちは。生成AIチームのテリーです。

今日はBacklogとChatGPTの連携についてお話しさせてもらおうかと思います。ChatGPTとBacklogを日頃愛用されている方にとって有用な記事になればと思っています。

*2023年12月 現在の情報ですので画面のキャプチャや機能などが古くなっている可能性があります。ご注意ください。

GPTsについて

GPTsとは特定の目的のために作成できるカスタムバージョンのChatGPTです。日常生活において特定のタスク、仕事、または家庭でより役立つようにChatGPTのカスタマイズバージョンを誰でも作成できるとても便利なツールです。また共有したりストアで公開したりできるなどの機能があり、SNSを見ていても日々便利なGPTsが作成されていてすごい勢いです。コーディングの知識なども必要とせず誰でもカスタムなChatGPTが作れます。

*2023/12現在有料ユーザーしか使えないサービスですのでご注意ください。

Backlog APIについて

BacklogAPIを使うと課題、Wiki,ファイルの追加や取得を始め、プロジェクトやユーザーの管理などブラウザ上のBacklogでできる操作を行うことができます。

認証方法はAPI Key 方式と OAuth 2.0 方式があります。

https://developer.nulab.com/ja/docs/backlog/ 

早速作ってみましょう

こちらのページに遷移し

https://chat.openai.com/gpts/discovery 下+ボタンを押すとGPTs作成画面に飛びます

ConfigureタブからNameDescriptionを自分好みに設定します。使いながらここは調整していってもいいでしょう。

ChatGPTのGPTs設定タブのスクリーンショット

OAuthで認証する

APIの認証ですがOAuthで認証します。OAuthを使うためにはBacklog側でアプリを登録する必要があります。

注意点としてこの時点ではRedirect URIがまだOpenAI側から発行されていないため適当なURLを入れる必要があります。作成に成功したらClient IdClient SecretがBacklogによって発行されるのでこの情報をChatGPTに入れていきます。Backlog OAuth認証を利用するためのアプリケーション登録フォームのスクリーンショット参考記事

https://dev.classmethod.jp/articles/aurl_oauth2_backlog-api/ 

ChatGPTの画面に戻ってConfigurationタブの下部にあるCreate new actionボタンを押すとAuthenticationのドロップダウンボタンがあるのでそれをクリックすると以下のようなポップアップが表示されますので以下のように設定していきます。

GPTsのAPI認証設定画面のスクリーンショット、OAuth選択済み

yourbacklogdomainの部分は適宜皆様が使用しているBacklogのドメインで置き換えてください。

Client ID: Backlogに登録されている情報

Client Secret: Backlogに登録されている情報

Authorization URL: https://yourbacklogdomain/OAuth2AccessRequest.action

Token URL: https://yourbacklogdomain/api/v2/oauth2/toke

Token Exchange Methodはデフォルトでいいです。

OpenAPI Specificationを用意する

さてこのままではActionsの部分がInvalid actionとなりますのでAPIの定義を用意する必要があります。BacklogAPIはOpenAPI specificationを公開していないためここは自力で入力する必要があります。

わざわざyamlを自分で書くのは大変なのでここも以下のようにChatGPTに部分的にお願いすることにしました。

Method: GET 以下は対象のAPIのWebページをコピペしてChatGPTが理解しやすいように整理したものになります。

Please create an openapi spec file referring below info.

Method: GET 

URL: /api/v2/wikis/:wikiId 

URL parameters

Parameter Name Type Description

wikiId Number Wiki page ID

Response example




Status Line / Response Header

```

HTTP/1.1 200 OK 

Content-Type:application/json;charset=utf-8 

```

Response Body

```

{ 

    "id": 1, 

    "projectId": 1, 

    "name": "Home", 

    "content": "test", 

    "tags": [ 

        { 

            "id": 12, 

            "name": "proceedings" 

        } 

    ], 

    "attachments": [ 

        {

>>>>以下省略

一旦何も考えず自分が必要なAPIのエンドポイントをターゲットに生成していきます。今回は以下のようなOpenAPI Specが生成することができました。このSpecファイルは公式というわけでは無いのでご注意ください。

以下にyamlファイルを公開しています。

https://gist.github.com/trknhr/4ecc2569a2533ca8b50d6aee578f59de 

penapi: 3.0.0

info:

 title: Backlog API

 version: 1.0.0

servers:

 - url: https://xxxx

上記のurl: https://xxxxを自分の使っているスペースのドメインに入れ替えてください。

ここまできたら右上のSaveボタンを押して更新してください。するとConfigurationタブにCallback URLが以下の画像のような形式で表示されるのでそのURLをBacklogのアプリケーションに登録します。GPTsのOAuthコールバックURL設定部分のスクリーンショット

使ってみる

さてこのGPTsのページに移動して早速質問をしてみます。

Home のプロジェクトについて教えて

するとsigninを促すボタンがChatGPTから返却されるのでそれを押してBacklogとの連携を完了させます。404になる場合は最新のCallback URLがBacklogに反映されているか確認して下さい。

課題の検索

homeで旅行についての課題を教えてもらいました。Backlog APIを介してChatGPTに「homeで旅行についての課題があれば教えてください」とお願いしているインターフェースのスクリーンショット

いい感じです。さらに詳しく聞いてみました。

ChatGPTに「東京旅行で子供用荷物って何を持っていきましたっけ?」とお願いしているインターフェースのスクリーンショット

いい感じです。

課題の登録

この後プロジェクトIDを正確に加えてChatGPTにお願いしてみたのですが、課題の登録には至りませんでした。もしかしたらOpenAPI Specを調整したらできるかもしれません。エラーが発生した時に詳細なエラーを探れないのが辛いところです。ChatGPTに「HOMEにテストという課題を登録して」とお願いしているインターフェースのスクリーンショット

Wikiへの質問ChatGPTに「HOMEのwikiで東京旅行について記載のもを教えてください」とお願いしているインターフェースのスクリーンショット

一応そこそこのものが出てきました。

感想

今回のwikiや課題の検索でやっているところは、結局課題の一覧やwikiの一覧のBacklogAPIエンドポイントのkeywordというプロパティにChatGPTが自然言語からキーワードを入れてAPIをコールしているというところが肝なようです。

ということで結局はBacklogAPIを使っての検索と同じようなものが返ってくるため同等の機能を実現するためにGPTsを使う必要性はあまりないかもしれませんが、自然言語でAPIを利用できノーコードでここまでBacklogと簡単に連携できるという点はかなり魅力的に感じました。

まとめ

GPTsはBacklogとノーコードで連携できてとても便利なんですが、今後はBacklogの一機能として提供できるようチームとして頑張っていきたいと思います。

開発メンバー募集中

より良いチームワークを生み出す

チームの創造力を高めるコラボレーションツール

製品をみる