Web フック
Webhook を使用すると、アプリケーションは Space のイベントに関する通知を受信できるようになります。イベントがトリガーされると、Space は指定されたアプリケーションエンドポイントに POST リクエストを送信します。リクエストには、イベントの詳細を含む JSON ペイロードが含まれています。Space では、Webhook はアプリケーションの不可欠な部分です。各アプリケーションは、独自の構成済み Webhook セットを持つことができ、アプリケーションとは別に Webhook を作成することはできません。
アプリケーションの Webhook を作成するには 2 つの方法があります。
Space HTTP API または Space SDK を介してプログラム的に – これが複数組織のアプリケーションの Webhook を追加する唯一の方法です。
Space ユーザーインターフェース (UI) を使用した手動 –単一組織のアプリケーションまたはアプリケーション開発中のテスト目的でこの方法を使用できます。
このセクションには両方の方法の手順が含まれています。
Webhook を作成する
次の例では、特定のプロジェクトでイベントを発行するためのサブスクリプションを持つ Webhook を作成します。
複数組織アプリケーションの場合は、アプリケーションのインストール中、つまり InitPayload
の処理中に Webhook を作成することをお勧めします。
次の例では、特定のプロジェクトでイベントを発行するためのサブスクリプションを持つ Webhook を作成します。
拡張 | アプリケーションで、必要なアプリケーションを開きます。
Web フックタブを開き、新しい Webhook をクリックします。
Webhook 名前を指定し、作成をクリックします。
Web フックタブで、必要な Webhook を開きます。
アプリケーションのエンドポイントとは異なるエンドポイントを使用する場合は、エンドポイントの横にある 編集ボタンをクリックします。次に、アプリケーション設定を使用するをオフにして、新しいエンドポイント URL およびその他のオプションを指定します。
アプリケーションの検証方法とは異なる検証方法を使用する場合は、認証の横にある 編集ボタンをクリックします。次に、アプリケーション設定を使用するをオフにして、新しい検証方法を指定します。
通常、Space が POST リクエストを送信した後、アプリケーションは
200 OK
HTTP ステータスで応答する必要があります。デフォルトでは、Space はすべての2xx
コードを成功として扱います。Space が他のコードを成功として受け入れるようにするには、これらのコードを成功した HTTP 応答のステータスコードリストに追加します。Space が他のコードを受信した場合、または応答をまったく受信しなかった場合、最大 3 回までリクエストの再送信を試みます。この動作を無効にするには、エンドポイント設定で失敗時の再試行をクリアします。
エンドポイントを構成した後、テストエンドポイントボタンをクリックして構成をテストできます。この場合、Space は
PingWebhookEvent
ペイロードを含むリクエストを送信します。アプリケーションはこのペイロードタイプを受け入れる必要があることに注意してください。詳細
サブスクリプションを作成する
Webhook を作成したら、追跡する必要があるイベントを Webhook にサブスクライブする必要があります。Webhook には、任意の数のイベントサブスクリプションを含めることができます。
サブスクリプションの横にある 追加ボタンをクリックします。
サブスクリプションの名前およびその他の設定を指定します。
ソース : 通知を受信する Space モジュール ( チーム、課題、会議など)。
イベント : アプリケーションへの POST リクエストの送信をトリガーするイベント。使用可能なイベントのリストは、選択したソースによって異なります。
追加のフィルター: 追加のイベントフィルターを指定することで、サブスクリプションの範囲を絞り込むことができます。使用可能なフィルターのリストは、選択したソースによって異なります。例: チームでフィルターする、プロジェクトでフィルター、場所でフィルタリングするなどになります。
サブスクリプションを作成した後、ペイロードで送信するイベントデータを定義できます。ペイロードサイズを減らすために、Space は必要最小限のデータセットのみを送信します。具体的には、トップレベルのフィールドのみを送信します。
例:
IssueWebhookEvent
クラスのペイロードにはissue: Issue
フィールドがあります。Issue
クラスは完全な課題データを提供しますが、デフォルトでは、Space はissue.id
フィールドのみを送信します。{ "className": "WebhookEvent", ... "payload": { "className": "IssueWebhookEvent", ... "issue": { "id": "30PnZX2QSoWo" }, ... } }ペイロードの内部を確認するには、ペイロードに移動します。ペイロードの内容を変更するには、ペイロードの横にある 編集ボタンをクリックし、必要なフィールドを選択します。
Webhook とアプリケーションの権限
Webhook が機能し始めるには、アプリケーションに対応する権限が付与されている必要があります。例: ドキュメントが作成されましたイベントのサブスクリプションには文書の表示権限が必要です。
アプリケーション所有者 (アプリケーションをインストールするユーザー) またはアプリケーション自体が Webhook を作成した後、権限承認リクエストが対応する管理者に送信されます。詳細
アプリケーション所有者自身が要求された権限を持っている場合、Space は管理者に連絡することなく自動的に権限を付与します。ただし、これはグローバル権限に対してのみ機能します。つまり、プロジェクトおよびチャットチャネルスコープからの権限には、対応する管理者の承認が依然として必要です。
Webhook イベントデータを URL パラメーターとして送信する
デフォルトでは、Space は HTTP リクエストペイロードでイベントデータを Webhook エンドポイントに送信します。また、Space はデータをエンドポイント URL パラメーターとして送信できます。マクロは、イベントが発生したときに実際のイベント値に置き換えられるプレースホルダーです。例: https://my.endpoint.url/api?id={{member.id}}
は、https://my.endpoint.url/api?id=1234
のような実際のユーザー ID に変換されます。
URL マクロを使用するには、デフォルトのアプリケーションエンドポイント URL をカスタムの URL に変更する必要があります。
Webhook 設定を開きます。
編集ボタンをクリックして、エンドポイント設定を開きます。
アプリケーション設定を使用するチェックボックスをクリアします。
必要なマクロを使用してエンドポイント URL を指定します。
現在のコンテキストで使用可能なマクロは、イベントタイプのフィールドに対応します。例: Webhook がブログ投稿が公開されましたイベントにサブスクライブされている場合、Space は
BlogWebhookEvent
タイプのペイロードを送信します。これは、BlogWebhookEvent
タイプのフィールドを URL マクロとして使用できることを意味します。たとえば、ブログ投稿のタイトルを取得するには:https://my.endpoint.url/api?id={{title}}
エンドポイントの編集ウィンドウには、現在のコンテキストで使用できるマクロのリストが表示されます。
アプリケーションで Webhook 通知を処理する
イベントがトリガーされると、Webhook はアプリケーションのエンドポイントに WebhookRequestPayload
を送信します。イベントペイロードの処理を支援するために、Space SDK には多数のクラスが用意されています。ペイロードを処理した後、アプリケーションは 200 OK
HTTP ステータスで応答する必要があります。
ここでは、 Webhook ペイロードを処理する方法を示すアプリケーションの例を見つけることができます。
ペイロードの内容
例: このペイロードは、新しいユーザーが組織に追加されたときに送信されます。
プロセスイベントペイロード
イベントペイロードの処理を支援するために、Space SDK はいくつかのクラスを提供します。イベントタイプごとに個別のクラスです。これらすべてのクラスは WebhookEvent
インターフェースを実装します。イベントクラスのフィールドを使用すると、イベントペイロードから特定のデータを取得できます。イベントクラスの完全なリストは API 参照にあります。
例: 組織に参加したメンバーイベントの Webhook を作成できます。この場合、新しいユーザーが組織に追加されるたびに、Space は ProfileOrganizationEvent
クラスのインスタンスをアプリケーションに送信します。そのフィールドを使用して、追加されたユーザーに関するデータを取得できます。
Space UI で Webhook を作成すると、Webhook にサブスクリプションを追加するときに、特定のイベントクラスに関する詳細情報を取得できます。
Webhook 接続のテスト
Webhook を追加する場合、エンドポイントページのテストエンドポイントボタンを使用してアプリケーションへの接続をテストできます。
これにより、PingWebhookEvent
クラスのペイロードが送信されます。アプリケーションでこのイベントタイプを処理するようにしてください。
Webhook ペイロードをカスタマイズする
リクエスト本文をカスタム形式で送信するように Webhook を構成できます。これは、特定のリクエスト形式のみを受け入れる確立されたシステムと Space を統合する場合に便利です。このような統合の例としては、Slack チャネルにメッセージを送信する Webhook が挙げられます。
Webhook でカスタムペイロード形式を使用するには、Web フックに形式テンプレートを提供する必要があります。これは、Webhook を作成または編集するときに実行できます。
Webhook 設定を開きます。
編集ボタンをクリックして、ペイロード設定を開きます。
ペイロードの編集ウィンドウで文字列テンプレートに切り替えます。
リクエスト本文のテンプレートを指定し、保存をクリックします。
テンプレート形式
テンプレートは、テキストと変数を含めることができる文字列です。
変数はイベントデータを表し、Webhook がトリガーされるとその値に置き換えられます。
変数を参照するには、構文
{{variableName}}
を使用します。JSON オブジェクトの一部である変数を参照するには、ドット表記法{{objectName.variableName}}
を使用します。例: 課題イベントの場合、{{issue.title}}
は課題のタイトルに置き換えられます。標準 Webhook ペイロードで使用可能な変数のみを使用できます。例: Space UI で Webhook を作成した場合、
payload
ノードのペイロードセクションで使用可能なフィールドを表示できます。詳細変数が使用できない場合、Webhook は予期される変数値の代わりに空の文字列を返します。
エスケープにはバックスラッシュ
\
を使用します:\{
、\}
、\\
例: 次のテンプレートは Slack ブロックキットを使用します。
{ "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "The issue \\"{{issue.title}}\\" was created by {{issue.createdBy.name}}" } } ] }
サンプル: Webhook を使用して Slack にメッセージを送信する
この例では、Space で課題が作成されたときに Slack チャネルにメッセージを送信する Webhook を作成します。
Slack アプリ設定に移動し、受信 Web フックページを開きます。
ワークスペースに新しい Web フックを追加するをクリックしてチャンネルを選択します。
Webhook URL をコピーします。
アプリケーションのエンドポイントとして、Slack Webhook URL を指定します。
ソース : 課題
イベント : 作成日
ペイロードで、「 編集」ボタンをクリックします。
文字列テンプレートに切り替えて、次のテンプレートを指定します。
{ "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "The issue \\"{{issue.title}}\\" was created by: \\n*{{issue.createdBy.name}}*" } } ] }
Space で課題が作成されると、Webhook は Slack チャネルにメッセージを送信します。
カスタム HTTP ヘッダーを追加する
Space を使用すると、アプリケーションに送信されるリクエストのヘッダーをカスタマイズできます。通常、アプリケーションが非標準の認証 / 認可フローを使用する場合、これは意味があります。
Web フックタブで、必要な Webhook を開きます。
カスタムヘッダーの横にある 追加ボタンをクリックします。
ヘッダーの名前を指定し、その値を提供します。
保存をクリックします。
Webhook リクエスト履歴を表示する
Space UI で作成した Webhook の場合、アプリケーションに送信されたリクエストの履歴を確認できます。
Web フックタブで、必要な Webhook を開きます。
最近の納品タブを開きます。
関連ページ:
複数組織アプリケーションの配布
マルチ組織アプリケーションは、複数の Space 組織にインストールできるアプリケーションです。組織ユーザーは、直接リンクをクリックするか、JetBrains マーケットプレイスを使用してアプリケーションをインストールできます。アプリケーションを複数の組織で使用できるようにするには、Space API 呼び出しを介して特定の組織内でアプリケーション自体を構成できる必要があります。アプリケーション構成の詳細については、こちらを参照します。複数組織アプリケーションの詳細:クライアントクレデンシャル...
単一組織アプリケーションの登録
アプリケーションの登録は、単一組織アプリケーションを Space インスタンスにインストールする主な方法です。アプリケーションを登録するときは、認可フロー、必要な権限、アプリケーションのエンドポイントなどの設定を手動で指定します。アプリケーションを Space インスタンスに追加する:メインメニューで、「拡張」をクリックし、「インストール済み」を選択します。新しいアプリをクリックします。指定: ユニークなアプリケーション名前。アプリケーションメール。アプリケーションが Space リポジトリにコ...
Space からのリクエストを検証する
アプリケーションが Space からリクエストを受信することになっている場合 (たとえば、エンドポイントでリクエストをリッスンするチャットボット)、受信したリクエストが本物かどうかを検証できる必要があります。Space では、さまざまな検証方法が提供されます。(推奨) 公開鍵、署名キー、(廃止された) 検証トークン、SSL クライアント証明書、HTTP 認証、(推奨) 公開鍵:この検証方法は非対称暗号化に基づいています。最も安全なものとして使用することをお勧めします。Space SDK は、こ...
権限のリクエスト
特定の Space エンドポイントにアクセスするには、アプリケーションはまず対応するアクセス許可を取得する必要があります。例: アプリケーションがプロジェクトの課題を作成する場合、アプリケーションには課題の作成権限が必要です。課題の詳細を表示するには、課題を表示する権限が必要です。アプリケーションに必要な権限のセット全体は、権限スコープと呼ばれます。アプリケーションがアクセス許可を要求する方法は、アプリケーション自体の代わりに動作するアプリケーションと、Space ユーザーの代わりに動作するアプ...
アプリケーションを配布する
Space アプリケーションには、ディストリビューションタイプに応じて、単一組織アプリケーションと複数組織アプリケーションの 2 つのタイプがあります。単一組織アプリケーション:これらは、単一の Space 組織にのみインストールされるアプリケーションです。例: これは、内部使用のみを目的として組織によって開発されたアプリケーションである可能性があります。単一組織アプリケーションのもう 1 つのケースは、まだ開発中のアプリケーションです。開発者としては、まず Space インスタンスでアプリケ...