통합

웹 후크 (Strings)

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

사용 가능

  • Team, Professional, Business 및 Enterprise 요금제

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

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

중요 사항

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

키: 생성, 키: 업데이트, 번역: 생성번역: 업데이트 웹 후크 이벤트는 다음을 통해 파일 업로드 또는 자동 가져오기로 트리거되지 않습니다:

웹 후크 기록에 대한 보존 기간은 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;
}

웹 후크 이벤트

이벤트 이름

설명

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: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_review

번역 목록 검토됨.

translations:batch_unreview

번역 목록 검토되지 않았습니다.

translations:batch_unverify

번역 목록 확인되지 확인되지 않음.

translations:batch_verify

번역 목록 확인됨.

translations:create

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

translations:deliver

특정 언어 버전의 키 대한 번역이 언어 서비스 공급자 제공했으나

translations:review

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

translations:unreview

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

translations:unverify

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

translations:update

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

translations:verify

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

uploads:create

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

uploads:processing

로캘 파일이 처리되고 있습니다.

웹 후크 추가

웹 후크 후크를 추가 다음 단계를 수행하십시오.

  1. 통합 페이지에서 웹 후크으로 스크롤하여 설정을 클릭합니다.

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

  2. 추가 웹 후크를 클릭합니다.

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

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

  4. 선택적으로 분기 포함

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

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

웹 후크 테스트

웹 후크 후크를 테스트하려면 다음과 같이 하십시오.

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

    테스트가 성공했다는 알림이 표시됩니다.

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

웹 후크 데이터 사용

지정된 유형의 이벤트가 발생할 때마다 POST 요청이 특정 콜백 URL로 전송됩니다. 요청의 POST 페이로드는 이벤트와 관련된 데이터가 포함된 JSON 인코딩된 문서. 사례메시지 속성은 항상 해당 이벤트와 관련된 속성과 함께 포함됩니다(예: 사용자, 프로젝트 및 웹 후크가 트리거된 분기).

번역 머리글

콜백 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.",
  "user": {
    "id": "abcd1234cdef1234abcd1234cdef1234",
    "username": "joe.doe",
    "name": "조 도우",
    "email": "joe@phrase.com",
    "position": "수석 개발자",
    "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": "내 번역",
    "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.