ウェブフックは、チャットクライアントやその他の外部APIなどの外部サービスにイベントを通知します。ウェブフックは、特定のイベントが発生したときに URL を設定できます。
File uploads only trigger the uploads:作成
および uploads:処理
ウェブフック イベント。
ウェブフック履歴には 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)); $hmac == $signatureheader; }
イベント名 |
概要 |
---|---|
|
ブランチが作成されました。 |
|
ブランチがマージされました。 |
|
翻訳キーのコメントが追加されました。 |
|
カスタム メタデータ フィールドの値が複数のキーで更新されました。 |
|
カスタムメタデータフィールドの値がキーで更新されました。 |
|
ジョブが完了済になりました。 |
|
ジョブが作成されます。 |
|
ジョブのロケールが完了済になりました。 |
|
ジョブのロケールが再度開かれました。 |
|
ジョブのロケールがレビュー済かつ完了済になりました。 |
|
ジョブのロケールがレビュー済で再度開かれました。 |
|
ジョブが再度開かれました。 |
|
ジョブが開始されました。 |
|
ジョブが更新されました。 |
|
複数のキーが削除されました。 |
|
キーが作成されました。 |
|
キーが削除されました。 |
|
キーが名前または変更されました。 |
|
プロジェクトで新しい言語バージョンが作成されました。 |
|
言語バージョンが削除されました。 |
|
言語バージョンが変更、名前変更、または再設定されました。 |
|
プロジェクトが変更または再構成されました。 |
|
OTA リリースが作成されました。 |
|
OTA リリースは削除されました。 |
|
スクリーンショットを作成しました。 |
|
スクリーンショットが削除されました。 |
|
スクリーンショットが変更または名前が変更された。 |
|
翻訳の一覧は削除されました。 |
|
翻訳の一覧がレビュー済です。 |
|
翻訳の一覧が未レビューになりました。 |
|
翻訳の一覧が未検証です。 |
|
翻訳の一覧は検証済みです。 |
|
特定の言語バージョンのキーの翻訳が追加されました。 |
|
特定の言語バージョンのキーの翻訳が言語サービスプロバイダによって納品されました。 |
|
特定の言語バージョンのキーの翻訳がレビュー済です。 |
|
特定の言語バージョンでのキーの翻訳が未レビューになりました。 |
|
特定の言語バージョンのキーの翻訳が未検証です。 |
|
特定の言語バージョンのキーの翻訳が編集されました。 |
|
特定の言語バージョンのキーの翻訳は検証済みです。 |
|
ロケール ファイルは正常に処理されました。 |
|
ロケールファイルを処理しています。 |
ウェブフックの追加手順は、次のとおりです。
-
[Configure]をクリックします。
ページから[ までスクロールし、ページが開きます。
-
ウェブフック追加をクリックします。
のウィンドウが開きます。
-
ウェブフックの詳細を入力します。
-
オプションで
こともできます。 -
保存 をクリックします。指定したウェブフックが
ページの一覧に追加されます。
ウェブフックは、特定のウェブフックの
] メニューから無効化できます。ウェブフックをテストするには:
RequestBin などのサービスを使用してウェブフックのコンテンツを取得します。RequestBin は、検査のためにリクエストデータを収集する URL を提供します。
特定のタイプのイベントが発生するたびに、特定のコールバック URL に POST 要求が送信されます。要求の POST ペイロードは、イベントの関連データを含む JSON 暗号化ドキュメントです。属性のイベント
とメッセージ
は常に含まれ、ウェブフックがトリガーされた ユーザー 、 プロジェクト 、ブランチ など、イベントに関連する追加の属性も含まれます。
Reponse ヘッダー
コールバック URL に対する HTTP リクエストには、いくつかの特殊なヘッダーが含まれます。
-
X-PhraseApp-Event
:ウェブフックをトリガーしたイベントのタイプ。 -
X-PhraseApp-Signature
:フックの秘密をキーとして使用した、ペイロードの HMAC 16 進ダイジェスト。
例:
コンテンツタイプ: 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":"マイ Android プロジェクト", "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" } }