통합

웹 후크 (Strings)

컨텐츠는 영어 텍스트를 Phrase Language AI를 이용해 기계 번역한 것입니다.

사용 가능:

  • Team, Professional, Business, Enterprise 및 Software UI/UX 플랜

라이센스 질문은 영업팀에 문의하십시오.

웹 후크는 채팅 클라이언트나 기타 외부 API와 같은 외부 서비스에 이벤트를 알립니다. 웹 후크는 특정 이벤트가 발생할 때 URL을 설정할 수 있습니다.

중요 사항

파일 업로드는 uploads:createuploads:processing 웹 후크 이벤트만 트리거합니다.

keys:create, keys:update, translations:createtranslations:update 웹 후크 이벤트는 다음을 통한 파일 업로드나 자동화된 가져오기에 의해 트리거되지 않습니다:

웹 후크 기록은 30일 동안 보관됩니다.

웹 후크 응답

웹 후크 엔드포인트는 콜백을 받은 후 5초 이내에 200~299 범위의 HTTP 상태 코드를 반환해야 합니다. 기타 상태 코드 및 요청 시간 초과는 전송 실패로 간주됩니다. 10회 연속으로 전송에 실패하면 웹 후크가 비활성화됩니다. 콜백은 반복되지 않습니다.

콜백을 수신하는 경우 5초의 요청 시간 초과 기간 내에 응답하십시오. 애플리케이션이 실수로 시간 초과를 유발하지 않도록 하려면 HTTP 응답이 전송된 후까지 처리를 지연시키십시오.

웹 후크 요청 무결성

각 웹 후크 요청에는 웹 후크 확인 토큰을 비밀로 사용하고 요청에 전송된 데이터와 함께 생성되는 X-PhraseApp-Signature 헤더가 포함되어 있습니다. 요청 본문의 HMAC 다이제스트를 계산하고 이를 X-PhraseApp-Signature 헤더의 값과 비교하여 요청 출처를 확인하십시오.

예:

Ruby

def verify_webhook(signatureheader)
  digest = OpenSSL::Digest::Digest.new('sha256')
  hmac = OpenSSL::HMAC.digest(digest, VERIFICATION_TOKEN, request.body)
  hmac = Base64.encode64(hmac).strip
  hmac == signatureheader
end

PHP

function verify_webhook($signatureheader){
  $hmac = hash_hmac('sha256', $requestBody, $verificationToken, true);
  $hmac = trim(base64_encode($hash));
  return $hmac == $signatureheader;
}

웹 후크 이벤트

각 웹 후크 페이로드의 구조는 https://app.phrase.com/webhook_schemas/<event_underscored_name>.json에서 제공되는 스키마 파일에 정의되어 있으며, 여기서 <event_underscored_name>는 밑줄이 포함된 웹 후크 이벤트의 이름에 해당합니다.

branches:createhttps://app.phrase.com/webhook_schemas/branches_create.json을 통해 액세스할 수 있습니다.

이벤트 이름

설명

branches:create

분기가 생성되었습니다.

branches:merge

분기가 병합되었습니다.

comments:create

번역 키에 대한 주석이 추가되었습니다.

custom_metadata_values:batch_update

사용자 지정 메타데이터 필드 값이 여러 키에서 업데이트되었습니다.

custom_metadata_values:update

사용자 지정 메타데이터 필드 값이 키 수준에서 업데이트되었습니다.

jobs:complete

작업이 완료됨으로 표시되었습니다.

jobs:create

작업이 생성되었습니다.

jobs:locale:complete

작업의 로캘이 완료됨으로 표시되었습니다.

jobs:locale:reopened

작업의 로캘이 다시 열렸습니다.

jobs:locale:review:complete

작업의 로캘이 검토되고 완료됨으로 표시되었습니다.

jobs:locale:review:reopen

작업의 로캘이 검토되고 다시 열렸습니다.

jobs:reopened

작업이 다시 열렸습니다.

jobs:start

작업이 시작되었습니다.

jobs:update

작업이 업데이트되었습니다.

keys:batch_delete

여러 키가 삭제되었습니다.

keys:create

키가 생성되었습니다.

keys:delete

키가 삭제되었습니다.

keys:tags:batch_create

여러 키에 태그가 추가되었습니다.

키:태그:생성

키에 태그가 추가되었습니다.

keys:update

키의 이름이 변경되거나 키가 변경되었습니다.

locales:create

프로젝트에 새 언어 버전이 생성되었습니다.

locales:delete

언어 버전이 삭제되었습니다.

locales:update

언어 버전이 변경, 이름 변경 또는 재구성되었습니다.

project:update

프로젝트가 변경되거나 재구성되었습니다.

releases:create

OTA 릴리스가 생성되었습니다.

releases:delete

OTA 릴리스가 삭제되었습니다.

screenshots:create

스크린샷이 생성되었습니다.

screenshots:delete

스크린샷이 삭제되었습니다.

screenshots:update

스크린샷이 변경되거나 이름이 변경되었습니다.

translations:batch_delete

번역 목록이 삭제되었습니다.

translations:batch_include

번역 목록이 포함되었습니다.

translations:batch_review

번역 목록이 검토됨 상태가 되었습니다.

translations:batch_unreview

번역 목록이 검토되지 않음 상태가 되었습니다.

translations:batch_unverify

번역 목록이 확인되지 않음 상태가 되었습니다.

translations:batch_verify

번역 목록이 확인됨.

translations:create

특정 언어 버전의 키에 대한 번역이 추가되었습니다.

translations:deliver

특정 언어 버전의 키에 대한 번역이 언어 서비스 공급자에 의해 전달되었습니다.

translations:exclude

특정 언어 버전의 키에 대한 번역이 제외되었습니다.

translations:include

특정 언어 버전의 키에 대한 번역이 포함되었습니다.

translations:review

특정 언어 버전의 키에 대한 번역이 검토됨.

translations:unreview

특정 언어 버전의 키에 대한 번역이 검토되지 않았습니다.

translations:unverify

특정 언어 버전의 키에 대한 번역이 확인되지 않음.

translations:update

특정 언어 버전의 키에 대한 번역이 편집되었습니다.

translations:verify

특정 언어 버전의 키에 대한 번역이 확인됨.

uploads:create

로캘 파일이 성공적으로 처리되었습니다.

uploads:processing

로캘 파일이 처리 중입니다.

웹 후크 추가

웹 후크를 추가하려면 다음 단계를 따르십시오:

  1. 통합 페이지에서 웹 후크까지 아래로 스크롤한 다음 구성을 클릭하십시오.

    웹 후크 페이지가 열립니다.

  2. 웹 후크 추가를 클릭하십시오.

    웹 후크 추가 창이 열립니다.

  3. 웹 후크 세부 정보를 제공하십시오.

  4. 선택적으로 분기 포함을 수행합니다.

  5. 저장을 클릭합니다. 지정된 웹 후크가 웹 후크 페이지의 목록에 추가됩니다.

웹 후크는 특정 웹 후크의 더 보기 메뉴에서 비활성화할 수 있습니다.

웹 후크 테스트

웹 후크를 테스트하려면:

  • 웹 후크 페이지에서 웹 후크를 선택하고 더 보기 메뉴에서 알림 테스트 보내기를 선택합니다.

    테스트가 성공했음을 나타내는 알림이 표시됩니다.

RequestBin과 같은 서비스를 사용하여 웹 후크의 내용을 캡처합니다. RequestBin은 검사를 위해 요청 데이터를 수집하는 URL을 제공합니다.

웹 후크 데이터 사용

지정된 유형의 이벤트가 발생할 때마다 지정된 콜백 URL로 POST 요청이 전송됩니다. 요청의 POST 페이로드는 이벤트 관련 데이터가 포함된 JSON 인코딩된 문서입니다. event, messagesent_at 속성은 항상 포함되며, 웹 후크가 트리거된 사용자, 프로젝트분기와 같이 이벤트와 관련된 추가 속성도 함께 포함됩니다.

응답 헤더

콜백 URL로 전송되는 HTTP 요청에는 몇 가지 특수 헤더가 포함됩니다.

  • X-PhraseApp-Event: 웹 후크를 트리거한 이벤트 유형입니다.

  • X-PhraseApp-Signature: 웹 후크의 비밀을 키로 사용하여 생성된 페이로드의 HMAC 16진수 다이제스트입니다.

예:

Content-Type: application/json
X-PhraseApp-Event: translation:create
X-PhraseApp-Signature: abc123

{
  "event": "translations:create",
  "message": "Peter translated page.help.title in fr.",
  "sent_at": "2015-01-29T09:52:53Z"   
  "user": {
    "id": "abcd1234cdef1234abcd1234cdef1234",
    "username": "joe.doe",
    "name": "Joe Doe",
    "email": "joe@phrase.com",
    "position": "Lead Developer",
    "created_at": "2015-01-28T09:52:53Z",
    "updated_at": "2015-01-28T09:52:53Z"
  },
  "project": {
    "id": "abcd1234cdef1234abcd1234cdef1234",
    "name": "My Android Project",
    "main_format": "xml",
    "project_image_url": "http://assets.phrase.com/project.png",
    "account": "account",
    "created_at": "2015-01-28T09:52:53Z",
    "updated_at": "2015-01-28T09:52:53Z"
  },
  "branch": {
  "name": "branch_name"
  },
  "translation": {
    "id": "abcd1234cdef1234abcd1234cdef1234",
    "content": "My translation",
    "unverified": false,
    "excluded": false,
    "plural_suffix": "",
    "key": {
      "id": "abcd1234cdef1234abcd1234cdef1234",
      "name": "home.index.headline",
      "plural": false
    },
    "locale": {
      "id": "abcd1234cdef1234abcd1234cdef1234",
      "name": "de",
      "code": "de-DE"
    },
    "placeholders": [
      "%{count}"
    ],
    "created_at": "2015-01-28T09:52:53Z",
    "updated_at": "2015-01-28T09:52:53Z"
  }
}
도움이 되었습니까?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.