⚙ Webhook連携の設定方法
<span style="color: #ef0606">※こちらの操作を行えるのはオーナー・管理者のみになります。</span>

DocBaseはチームに対する様々なアクティビティを任意のURLにJSONで通知することができます。

## HTTP Method

POST

## Content-Type

application/json

## User-Agent

DocBase Webhook/1.0

## JSON payload

必ずactionという通知の種類に関するプロパティを含みます。
actionプロパティの種類については[アクティビティ一覧](#%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%93%E3%83%86%E3%82%A3%E4%B8%80%E8%A6%A7)を参照してください。
```json
{
  "trigger": {
    "name": "全員", // グループからの通知の場合はグループ名
    "label": "Webhook設定画面で付けたラベル名"
  },
  "message": "dannyさんが 「メモのタイトル」を公開しました\nhttps://kray.docbase.io/posts/1",
  "action": "post_publish",
  "disable_notification": false,
  "sender": {
    "id": 1,
    "name": "danny"
  },
  "team": {
    "domain": "danny",
    "name": "danny"
  },
  "post": { // team_joinとgroup_join以外の場合のみ
    "id": 1,
    "title": "メモのタイトル",
    "url": "https://kray.docbase.io/posts/1",
    "body": "メモの本文",
    "draft": false,
    "archived": false,
    "created_at": "2015-03-10T12:01:54+09:00",
    "updated_at": "2022-02-09T13:40:37+09:00",
    "tags": [
      {
        "name": "rails"
      },
      {
        "name": "ruby"
      }
    ],
    "scope": "group",
    "groups": [
      {
        "id": 1,
        "name": "DocBase"
      }
    ],
    "user": {
      "id": 1,
      "name": "danny",
      "profile_image_url": "https://image.docbase.io/uploads/aaa.gif"
    },
    "stars_count": 0,
    "good_jobs_count": 0,
    "sharing_url": null,
    "representative_image_url": null,
    "comments": [
      {
        "id": 10,
        "body": "コメント",
        "created_at": "2022-02-09T13:40:36+09:00",
        "user": {
          "id": 2,
          "name": "kintaro",
          "profile_image_url": "https://secure.gravatar.com/avatar/hogehoge.png?d=mm&r=PG&s=128"
        }
      }
    ],
    "attachments": []
  },
  "comment": { // comment_createの場合のみ
    "id": 1,
    "body": "コメント",
    "created_at": "2015-03-09T12:01:54+09:00",
    "user": {
      "id": 1,
      "name": "danny",
      "profile_image_url": "https://image.docbase.io/uploads/aaa.gif"
    }
  },
  "users": [ // team_joinかgroup_joinの場合のみ
    {
      "id": 1,
      "name": "danny",
      "profile_image_url": "https://image.docbase.io/uploads/aaa.gif"
    },
    {
      "id": 2,
      "name": "bob",
      "profile_image_url": "https://image.docbase.io/uploads/bbb.gif"
    }
  ],
  "deleted_post": { // Webhook送信時点でメモが削除されている場合のみ
    "id": 1,
    "title": "メモのタイトル",
    "url": "https://kray.docbase.io/posts/1"  
  }
}
```

### アクティビティ一覧

| action名 | 説明 |
|----|----| 
| post_publish | メモの投稿 |
| post_update | メモの更新|
| post_group_update | メモの公開範囲を更新 |
| post_archive | メモのアーカイブ |
| post_unarchive | メモのアーカイブを解除 |
| post_destroy | メモの削除 |
| sharing_create | メモの共有 |
| sharing_destroy | メモの共有を解除 |
| comment_create | コメントがついた|
| star_create | スターがついた|
| like_create | グッジョブがついた | 
| team_join |チームに新しいメンバーが参加した|
| group_join | グループに新しいメンバーが参加した |

### 特定のアクティビティにのみ入るプロパティ

||post|comment|users|deleted_post|
|---|:---:|:---:|:---:|:---:|
|post_publish|:heavy_check_mark: |||||
|post_update|:heavy_check_mark: ||||
|post_group_update|:heavy_check_mark: ||||
|post_archive|:heavy_check_mark: ||||
|post_unarchive|:heavy_check_mark: ||||
|post_destroy| |||:heavy_check_mark:|
|sharing_create|:heavy_check_mark: ||||
|sharing_destroy|:heavy_check_mark: ||||
|comment_create|:heavy_check_mark: |:heavy_check_mark: ||
|star_create|:heavy_check_mark:||||
|like_create|:heavy_check_mark: ||||
|team_join|||:heavy_check_mark: ||
|group_join|||:heavy_check_mark: ||

## Webhook受信例

### Rails

```ruby:config/routes.rb
resources :hooks, only: [] do
  post :webhook, on: :collection
end
```

```ruby:app/controller/hooks_controller.rb
class HooksController < ApplicationController 
  protect_from_forgery except: [:webhook]

  def webhook
    Rails.logger.info JSON.parse(request.body.read)['message']
    head :ok
  end
end
```

## 設定方法
### 1. サービス連携から連携したいwebhookを選ぶ
設定からサービス連携を選んでください。
![スクリーンショット 2019-06-05 15.59.15.png](https://image.docbase.io/uploads/6a87e3c2-e402-467f-b74b-3a66a0d971de.png =600x)

### 2. Webhook URLを設定
通知したいグループ、Webhook URL、通知するアクティビティを設定してください。複数のwebhookを設定したい場合は「新しくサービス連携を作成する」から追加してください。
![スクリーンショット 2019-06-05 15.59.54.png](https://image.docbase.io/uploads/7e6f4773-f62a-45d5-b16a-f12ab392a74a.png =600x)