Интеграции

вебхуки (Strings)

Контент автоматически переведен с английского языка с помощью Phrase Language AI.

Доступно для

  • Планы Team, Professional, Business, Enterprise и Software UI/UX

Свяжитесь с отделом продаж по вопросам лицензирования.

Вебхуки уведомляют внешние службы, такие как чат-клиенты или другие внешние API, о событиях. Вебхук может задать URL-адрес, когда происходит определенное событие.

Важно

Загрузка файлов запускает только события вебхука uploads:create и uploads:processing.

События вебхука keys:create, keys:update, translations:create и translations:update не запускаются при загрузке файлов или автоматизированном импорте через:

Для истории вебхуков установлен 30-дневный срок хранения.

Ответ вебхука

Конечная точка вебхука должна возвращать HTTP статус в диапазоне 200–299 в течение 5 секунд после получения обратного вызова. Другие коды статус и тайм-ауты запросов считаются сбоями доставки. Вебхук будет деактивирован, если доставка не удалась для более чем 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:создать можно получить через https://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:tags: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:review

Перевод ключа на определенном языке был проверено.

translations:unreview

Перевод ключа на определенном языке был не проверено.

translations:unverify

Перевод ключа на определенном языке был не проверено.

translations:update

Перевод ключа на определенном языке был отредактирован.

translations:verify

Перевод ключа на определенном языке был подтверждено.

uploads:create

Файл языкового стандарта был успешно обработан.

uploads:processing

Файл языкового стандарта обрабатывается.

добавить вебхук

Чтобы добавить вебхук, выполните следующие действия:

  1. На странице Integrations прокрутите вниз до Webhooks и нажмите Configure.

    Откроется страница «Вебхуки».

  2. Нажмите «Добавить вебхук».

    Откроется окно «Добавить вебхук».

  3. Укажите сведения о вебхуке.

  4. При необходимости «Включить ветви».

  5. Нажмите «Сохранить». Указанный вебхук будет добавлен в список на странице «Вебхуки».

Вебхук можно деактивировать в меню «Еще» конкретного вебхука.

Тестирование вебхука

Чтобы протестировать вебхук:

  • На странице «Вебхуки» Выбрать вебхук и Выбрать «Отправить тестовое уведомление» в меню «Еще».

    Отобразится уведомление о том, что тест прошел успешно.

Использовать такую услугу, как RequestBin, для захвата содержимого вебхука. RequestBin предоставляет URL-адрес, который собирает данные запроса для проверки.

Использование данных вебхука

POST-запрос отправляется на указанный URL-адрес обратного вызова каждый раз, когда происходит событие указанного типа. POST-полезная нагрузка запроса представляет собой документ в кодировке JSON с соответствующими данными о событии. Атрибуты event, message и sent_at будут включены всегда, наряду с дополнительными атрибутами, относящимися к событию, такими как пользователь, проект и ветвь, из которых был запущен вебхук.

Заголовки ответа

HTTP-запросы, отправленные на URL-адрес обратного вызова, будут содержать несколько специальных заголовков.

  • X-PhraseApp-Event: Тип события, которое вызвало вебхук.

  • X-PhraseApp-Signature: HMAC-дайджест полезной нагрузки в шестнадцатеричном формате, использующий секрет хука в качестве ключа.

Например:

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.