Webhooks

개요

Webhooks는 맞춤 통합 앱이 Workplace에서 이벤트를 구독하고 실시간으로 업데이트를 받도록 지원합니다. Workplace에서 변화가 발생하면 관련 Webhooks 주제를 구독하는 각 맞춤 통합 앱에 대해 콜백 URL로 HTTPS POST 요청이 전송됩니다.

따라서 변경이 언제 발생했는지 정확히 알게 되고 최신 콘텐츠를 가져오기 위해 연속적이거나 정기적인 그래프 API 요청을 보낼 필요가 없어 앱의 효율성이 향상됩니다.

Workplace에 대한 Webhooks지원은 그래프 API용 Webhooks를 운영하는 것과 동일한 프레임워크에서 제공합니다.

Webhooks 주제 구독

맞춤 통합 수정 대화 상자는 Workplace의 앱에 제공되는 각 Webhooks 주제에 대한 탭을 제공합니다.

맞춤 통합 수정 대화 상자의 Webhooks 섹션

특정 주제에 대해 새로운 Webhooks 구독을 추가하려면 콜백 URL인증 토큰을 제공한 다음, 앱에서 제공할 기능에 필요한 구독 필드를 선택합니다.

Webhooks 주제당 URL 1개만 구독할 수 있지만 여러 주제에 동일한 URL을 사용할 수 있습니다.

인증 요청 처리

새로운 구독을 추가하거나 기존 구독을 수정하면 Meta 서버는 콜백 URL에 GET 요청을 보내어 콜백 서버의 유효성을 인증합니다.

쿼리 문자열은 다음 매개변수와 함께 이 URL에 첨부됩니다.

  • hub.mode - 이 매개변수에 'subscribe' 문자열이 전달됨
  • hub.challenge - 무작위 문자열
  • hub.verify_token - 구독을 만들었을 때 지정한 verify_token

엔드포인트는 인증 요청을 받을 때마다 다음과 같이 해야 합니다.

  • hub.verify_token 값이 Webhooks를 구성할 때 인증 토큰 필드에서 설정한 문자열과 일치하는지 확인합니다.
  • hub.challenge 값을 사용하여 응답합니다.

Webhooks 보안

개발자가 정의한 콜백 URL로 보내는 모든 Webhooks 호출은 HTTPS를 통해 이루어져 Webhooks 페이로드 전송 시 보안을 보장합니다.

추가적인 보안을 제공하기 위해 각 POST 페이로드에 HTTP 헤더 X-Hub-Signature-256을 포함하며, 이는 페이로드가 Meta 서버에서 전송한 것인지 확인하는 데 사용해야 합니다.

이 동작에 대한 자세한 내용은 Webhooks 프레임워크 문서를 참조하세요.

개발자가 정의한 콜백 URL로 보내는 모든 Webhooks 호출은 HTTPS를 통해 이루어져 Webhooks 페이로드 전송 시 보안을 보장합니다.

API 호출을 사용하여 Webhooks 구독

Webhooks 구독을 읽거나 수정하기 위한 API 호출은 일반적인 맞춤 통합 토큰이 아니라 앱 토큰을 사용해서 보내야 합니다. 앱 토큰은 앱 ID, '|' 기호, 앱 시크릿 코드를 연결하여 생성할 수 있습니다.

예를 들면 다음과 같습니다.

데이터문자열

앱 ID

504221332732118

앱 시크릿 코드

d76ab3f35f3ff5aa6ffdc8637a660d2ea7

앱 토큰:

504221332732118|d76ab3f35f3ff5aa6ffdc8637a660d2ea7

현재의 Webhooks 구독 가져오기(앱 토큰 사용)

GET graph.facebook.com
  /{app-id}/subscriptions
    &access_token={your_app_token}

새로운 Webhooks 구독 추가(앱 토큰 사용)

POST graph.facebook.com
  /{app-id}/subscriptions
    ?object=page
    &fields=mention,messages
    &callback_url={your-url}
    &verify_token={your-verify-token}
    &access_token={your_app_token}

페이지/앱 구독 문제 해결

Webhooks가 예상한 대로 수신되지 않을 경우 페이지와 앱 사이의 구독이 올바르게 설정되었는지 확인하는 것이 좋습니다. 구독은 자동으로 설정되지만 경우에 따라서 설정이 실패할 수도 있습니다. 예를 들어 Webhooks의 전송이 장기간 실패하면 이 구독이 삭제될 수 있습니다. 타사 앱의 경우 구독이 삭제되면 앱 대시보드에 알림이 표시됩니다.

이 구독을 확인하려면 다음 API 호출을 사용합니다.

현재의 앱/페이지 구독 가져오기(페이지 토큰 사용)

GET graph.facebook.com
  /me/subscribed_apps?access_token={your_page_token}

이 구독을 다시 생성하려면 다음 API 호출을 사용합니다.

현재의 앱/페이지 구독 다시 만들기(페이지 토큰 사용)

POST graph.facebook.com
  /me/subscribed_apps?access_token={your_page_token}
	{"subscribed_fields": ["messages"...]}

Webhooks 주제

Workplace에서 활동은 주제로 그룹화됩니다. 각 주제에는 특정 주제에 대한 이벤트로 매핑되는 여러 개의 필드가 있습니다. 앱은 각 주제에 대한 Webhooks 업데이트와 각 주제 내의 특정 필드를 구독할 수 있습니다.

현재 Workplace에서는 다음 주제와 그룹에 대한 Webhooks를 제공합니다.

페이지

자세한 내용은 페이지 주제 참고 자료를 참조하세요.

구독 필드동작

mention

맞춤 통합 페이지(봇)가 그룹에서 언급되었을 때 트리거됩니다.

messages

맞춤 통합 페이지(봇)가 Work Chat에서 메시지를 받았을 때 트리거됩니다.

message_deliveries

맞춤 통합 페이지(봇)가 보낸 메시지가 전달되었을 때 트리거됩니다.

messaging_postbacks

Work Chat에서 포스트백 버튼이 눌렸을 때 트리거됩니다.

message_reads

맞춤 통합 페이지(봇)가 보낸 메시지를 받는 사람이 읽었을 때 트리거됩니다.

그룹

자세한 내용은 그룹 주제 참고 자료를 참조하세요.

구독 필드동작

posts

그룹에서 게시물이 추가, 업데이트 또는 삭제되었을 때 트리거됩니다.

comments

그룹 내 게시물에서 새로운 댓글이 추가, 업데이트 또는 삭제될 때마다 트리거됩니다.

membership

그룹의 멤버 현황이 변경될 때 트리거됩니다.

membership_requests

사용자가 그룹 멤버 현황을 요청할 때 트리거됩니다.

사용자

자세한 내용은 사용자 주제 참고 자료를 참조하세요.

구독 필드동작

status

사용자가 프로필에서 상태 업데이트를 게시하거나 수정할 때 트리거됩니다. 여기에는 사용자 타임라인의 게시물이 포함됩니다.

events

사용자가 이벤트를 만들거나 수락, 거부할 때마다 트리거됩니다.

message_sends

사용자가 Workplace Chat 메시지를 전송할 때마다 트리거됩니다.

message_unsends

사용자가 스레드에 있는 모든 사람에 대해 Workplace Chat 메시지를 삭제할 때마다 트리거됩니다.

timeline_comments

사용자의 타임라인에 있는 게시물에 댓글이 달릴 때마다 트리거됩니다.

보안

자세한 내용은 보안 주제 참고 자료를 참조하세요.

admin_activity

Workplace 커뮤니티에서 관리자가 추가되거나 삭제될 때 트리거되는 이벤트입니다.

이벤트동작

admin_set_to_unclaimed

관리자가 관리자 패널이나 계정 관리 API를 통해 사용자의 계정 상태를 클레임되지 않음으로 설정했습니다.

admin_force_log_out

관리자가 관리자 패널에서 사용자를 모든 기기로부터 강제 로그아웃했습니다.

admin_deactivate

관리자가 관리자 패널이나 계정 관리 API를 통해 계정을 비활성화했습니다.

admin_activate_account

관리자가 관리자 패널이나 계정 관리 API를 통해 계정을 활성화했습니다.

force_password_reset

관리자가 관리자 패널에서 사용자가 강제로 비밀번호를 재설정하도록 했습니다.

admin_create_account

관리자가 관리자 패널에서 계정을 만들었습니다.

compromised_credentials

커뮤니티 내 일부 사용자 계정의 Workplace 비밀번호가 위험한 것으로 예상할 때 트리거되는 이벤트입니다.

이벤트동작

found_compromised_credentials

Workplace가 유출된 자격 증명을 찾았습니다.

files

Workplace 파일 활동 시 트리거되는 이벤트입니다.

이벤트동작

group_file_upload

사용자가 그룹에 파일을 업로드했습니다.

group_file_download

사용자가 그룹에서 파일을 다운로드했습니다.

file_upload_malware_found

업로드된 파일에서 악성 코드가 발견되었습니다.

groups

사용자가 Workplace 기업 간 협력 그룹(MCG)을 만들거나 해당 그룹에 참여할 때 트리거되는 이벤트입니다.

이벤트동작

mcg_join

커뮤니티의 사용자가 MCG에 가입했습니다.

mcg_create

커뮤니티의 사용자가 MCG를 만들었습니다.

integrations

관리자가 통합 속성을 만들거나 변경할 때 트리거되는 이벤트입니다.

이벤트동작

custom_integration_create

관리자가 맞춤 통합을 만들었습니다.

custom_integration_edit

관리자가 맞춤 통합을 수정했습니다.

custom_integration_delete

관리자가 맞춤 통합을 삭제했습니다.

custom_integration_token_reset

관리자가 맞춤 통합에 대한 새로운 액세스 토큰을 생성했습니다.

content_app_install

사용자가 콘텐츠 통합을 만들었습니다.

content_app_uninstall

사용자가 콘텐츠 통합을 삭제했습니다.

invites

사용자가 직접 초대를 통해 Workplace에 가입할 때 트리거되는 이벤트입니다.

이벤트동작

coworker_invite_sent

사용자가 동료를 커뮤니티에 가입하도록 초대했습니다.

self_invite_sent

사용자가 자신을 위한 초대 이메일을 요청했습니다.

passwords

사용자가 비밀번호를 변경하거나 비밀번호 재설정을 요청할 때 트리거되는 이벤트입니다.

이벤트동작

password_change

비밀번호 복구 또는 계정 설정을 통해 사용자의 비밀번호가 변경되었습니다.

password_reset_request

사용자의 비밀번호 복구 플로가 시작되었고 코드가 사용자 이메일 주소로 전송되었습니다.

password_reset_wrong_code

사용자가 잘못된 비밀번호 재설정 복구 코드를 입력했습니다.

password_reset_success

사용자의 비밀번호 복구 플로가 완료되었습니다.

sessions

사용자가 Workplace에 로그인하거나 로그아웃할 때 트리거되는 이벤트입니다.

이벤트동작

log_in

사용자가 www 또는 모바일 앱에서 비밀번호나 SSO를 사용하여 Workplace에 로그인했습니다.

log_out

사용자가 www 또는 모바일 앱에서 비밀번호나 SSO를 사용하여 Workplace에서 로그아웃했습니다.

관리자가 시작한 강제 로그아웃은 포함하지 않습니다(admin_force_log_out 참조).

two_factor

사용자가 2단계 인증을 활성화하거나 비활성화할 때 트리거되는 이벤트입니다.

이벤트동작

two_factor_enable

사용자가 설정 탭에서 2단계 인증을 활성화했습니다. 이는 누군가가 특정 휴대폰을 인증했는지 여부가 아니라, 해당 기능이 활성화되었다는 의미입니다.

two_factor_disable

사용자가 설정 탭에서 2단계 인증을 비활성화했습니다. 사용자가 특정 휴대폰에 대해 2단계 인증을 비활성화했는지 여부가 아니라, 해당 기능이 비활성화되었다는 의미입니다.

add_two_factor_phone

사용자가 2단계 인증에 사용한 휴대폰을 추가하고 인증했습니다.

two_factor_code_success

사용자가 Workplace 웹사이트 또는 모바일 웹사이트에 로그인할 때 유효한 2단계 인증 코드를 입력했습니다.

two_factor_code_failure

사용자가 Workplace 웹사이트 또는 모바일 웹사이트에 로그인할 때 잘못된 2단계 인증 코드를 입력했습니다.

two_factor_code_success_m

사용자가 Workplace iOS 또는 Android 모바일 앱에 로그인할 때 유효한 2단계 인증 코드를 입력했습니다.

two_factor_code_failure_m

사용자가 Workplace iOS 또는 Android 모바일 앱에 로그인할 때 잘못된 2단계 인증 코드를 입력했습니다.

reseller_events

리셀러와 관련된 이벤트입니다.

이벤트동작

reseller_user_added

리셀러 기업에서 관리자 외의 사용자가 리셀러 콘솔을 확인하도록 허용합니다.

reseller_user_removed

리셀러 기업에서 관리자 외의 사용자가 리셀러 콘솔을 확인하지 못하도록 합니다.

reseller_invite_sent

리셀러가 링크 대상인 다른 기업을 초대합니다.

reseller_invite_accepted

어떤 회사가 링크를 위한 리셀러 초대를 수락합니다.

reseller_invite_declined

어떤 회사가 링크를 위한 리셀러 초대를 거부합니다.

링크

자세한 내용은 링크 주제 참고 자료를 참조하세요.

이벤트동작

preview

공유 가능한 링크에 대한 액세스를 요청하는 사용자에 대한 메타데이터입니다.

collection

미리 보기를 생성하기 위한 Workplace에서 공유된 링크에 대한 메타데이터입니다.

지식 라이브러리

자세한 내용은 지식 라이브러리 카테고리 그래프 API 문서를 참조하세요.

구독 필드동작

categories

지식 라이브러리 콘텐츠가 추가, 업데이트 또는 삭제되거나 독자가 업데이트되었을 때 트리거됩니다.

comments

지식 라이브러리에 새로운 댓글이 추가, 업데이트 또는 삭제될 때마다 트리거됩니다.

quicklinks

지식 라이브러리 빠른 링크가 추가, 업데이트 또는 삭제될 때 트리거됩니다.