Blue는 다른 시스템에 데이터를 전송하기 위해 아웃고잉 웹후크를 지원합니다.


웹후크는 어떤 일이 발생할 때 한 애플리케이션에서 다른 애플리케이션으로 전송되는 자동화된 메시지입니다. 예를 들어, Blue에서 새로운 레코드가 생성되면, 해당 레코드에 대한 데이터를 다른 시스템으로 전송하도록 웹후크를 구성할 수 있습니다.

Blue 웹후크는 이벤트가 발생한 후 밀리초 내에 즉시 트리거됩니다. 이러한 실시간 특성은 Blue를 다른 비즈니스 시스템과 통합하는 데 매우 유용합니다.

웹후크

  • 시스템 간 실시간 데이터 동기화
  • Blue 이벤트에 대한 응답 및 조치 가능
  • 변경 사항을 반복적으로 폴링할 필요 없음; 즉시 푸시됨
  • 사용자 정의 통합 및 워크플로우 생성

전례 없는 제어

Blue 웹후크는 다음에 대한 세밀한 제어를 제공합니다:

  • 웹후크를 트리거해야 하는 정확한 이벤트와 프로젝트
  • 레코드 범위를 좁히기 위한 필터
  • 보안을 강화하기 위한 서명 검증

웹후크 생성

Blue에서 프로젝트 관리자는 개인 설정에서 웹후크를 생성할 수 있습니다. 다음을 지정합니다:

  • 웹후크 이름
  • 데이터를 전송할 페이로드 URL
  • 서명을 위한 선택적 비밀

트리거

웹후크는 다음을 포함한 다양한 Blue 이벤트에 의해 트리거될 수 있습니다:

  • 레코드 생성/업데이트/삭제
  • 댓글 추가/편집
  • 담당자 변경
  • 체크리스트 상태 변경
  • 사용자 정의 필드 값 변경
  • 기타 많은 이벤트

웹후크 페이로드

트리거되면, Blue는 이벤트의 모든 세부 정보를 포함하는 JSON 페이로드를 지정한 URL로 전송합니다.

여기 예시 페이로드가 있습니다:

{
  "event": "RECORD_CREATED",
  "record": {
    "id": "1234",
    "title": "New record"
    ...
  },
  "company": {
    "id": "5678"  
  },
  "project": {
    "id": "91011"
  },
  "user": {
    "id": "1213" 
  }
}

서명

페이로드가 실제로 Blue에서 온 것인지 검증하기 위해 선택적 서명을 확인할 수 있습니다. OAuth와 유사하게, 서명은 선택한 비밀 키로 페이로드 내용을 해싱하여 생성됩니다.

Node.js에서의 샘플 검증

const crypto = require('crypto');
const key = 'secret'; 
const body = {...webhookPayload} 
const hash = crypto.createHmac('sha256', key).update(body);
const signature = hash.digest('hex');

추가 통합

사용자 정의 웹후크 외에도, Blue는 ZapierPabbly Connect와 같은 도구와의 통합을 제공하여 Blue 데이터를 수백 개의 인기 앱과 쉽게 연결할 수 있습니다.

예시 웹후크 응답

{

  "event": "TODO_CREATED",

  "webhook": {

    "id": "clb4qaopy0000vt24mlp28v03",

    "uid": "edb5b5d51dc9461a952160dbe72153b4",

    "name": "Testing webhook",

    "url": "https://httpdump.app/dumps/7cc66eda-8e83-4039-ba49-4c36db14d508",

    "secret": "",

    "status": "HEALTHY",

    "enabled": true,

    "metadata": {

      "events": [

        "TODO_CREATED",

        "TODO_DELETED",

        "TODO_MOVED",

        "TODO_NAME_CHANGED",

        "TODO_CHECKLIST_CREATED",

        "TODO_CHECKLIST_NAME_CHANGED",

        "TODO_CHECKLIST_DELETED",

        "TODO_CHECKLIST_ITEM_CREATED",

        "TODO_LIST_CREATED",

        "TODO_LIST_DELETED",

        "TODO_LIST_NAME_CHANGED",

        "COMMENT_CREATED",

        "COMMENT_DELETED",

        "COMMENT_UPDATED"

      ],

      "projectIds": [

        "clakt90vu000bvt64hhffqleq",

        "claulnu1y0000vtrcjurjgds4",

        "clb4gay0y000qvtzs8smaays8"

      ]

    },

    "createdById": "claksl2ye0000vtas0h0ln71e",

    "createdAt": "2022-12-01T07:01:25.014Z",

    "updatedAt": "2022-12-01T11:23:00.661Z"

  },

  "currentValue": {

    "id": "clb4zna6x0000vt1swuwso25f",

    "uid": "11021cb836f34732b31e5ebd5dd5eb27",

    "title": "GGGG",

    "html": null,

    "text": null,

    "position": "32767.5",

    "archived": false,

    "done": false,

    "startedAt": null,

    "duedAt": null,

    "timezone": null,

    "createdAt": "2022-12-01T11:23:09.000Z",

    "updatedAt": "2022-12-01T11:23:09.241Z",

    "createdById": "claksl2ye0000vtas0h0ln71e",

    "todoListId": "clakt9v5t000kvt64f563l90l",

    "todoCustomFields": [],

    "todoUsers": [],

    "todoTags": [],

    "todoList": {

      "id": "clakt9v5t000kvt64f563l90l",

      "uid": "df0e931e6e8f4fc2905ece9da167d2d3",

      "createdAt": "2022-11-17T08:29:22.000Z",

      "updatedAt": "2022-11-17T08:29:22.050Z",

      "title": "ETEST",

      "position": 131070,

      "createdById": "claksl2ye0000vtas0h0ln71e",

      "projectId": "clakt90vu000bvt64hhffqleq",

      "project": {

        "id": "clakt90vu000bvt64hhffqleq",

        "uid": "d7db469a8908496f8e5f5e68030fe4c8",

        "slug": "teest",

        "name": "TEEST",

        "description": "",

        "archived": false,

        "createdAt": "2022-11-17T08:28:43.000Z",

        "updatedAt": "2022-11-17T08:28:42.811Z",

        "isTemplate": false,

        "isOfficialTemplate": false,

        "category": "GENERAL",

        "companyId": "clakt8jud0002vt64205yyj10",

        "imageId": null,

        "hideEmailFromRoles": null,

        "company": {

          "id": "clakt8jud0002vt64205yyj10",

          "uid": "400eb3f8238c486caf40957618be9662",

          "slug": "rogue",

          "name": "Rogue",

          "description": null,

          "createdAt": "2022-11-17T08:28:21.000Z",

          "updatedAt": "2022-11-17T08:28:20.726Z",

          "freeTrialExpiredAt": "2022-12-01T08:28:15.000Z",

          "freeTrialStartedAt": "2022-11-17T08:28:15.000Z",

          "subscribedAt": null,

          "imageId": null,

          "subscriptionPlanId": "clakt8jue0003vt64e40q2prj",

          "freeTrialExtendedById": null,

          "freeTrialExtendedAt": null

        }

      }

    }

  }

}
개발자 지원


질문이 있으시면 [support@blue.cc](support@blue.cc)로 연락 주시면 도움을 드리겠습니다. 또한 통합 지원을 위한 전문 서비스를 제공합니다.

AI 어시스턴트

응답은 AI를 사용하여 생성되며 오류가 포함될 수 있습니다.

어떻게 도와드릴까요?

Blue 또는 이 문서에 대해 궁금한 점이 있으면 무엇이든 물어보세요.

전송하려면 Enter • 새 줄을 추가하려면 Shift+Enter • ⌘I를 눌러 열기