Интеграции

Вебхуки (Strings)

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

Доступно для

  • планов: Team, Professional, Business- и Enterprise

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

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

ВАЖНО:

Загрузка файлов запускает только загрузки:создание и загрузка:обработка событий вебхука.

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

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

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

Конечная точка вебхука должна вернуть код статуса HTTP в диапазоне 200—299 в течение 5 секунд после получения обратного звонка. Другие коды статуса и тайм-ауты запросов считаются ошибками при доставке. Вебхук будет отключен, если не удается доставить более 10 событий подряд. Обратные вызовы не повторяются.

Если вы получите ответный звонок, ответьте в течение 5-секундного периода тайм-аута запроса. Чтобы приложения случайно не запускали тайм-аут, отложите обработку до отправки ответа HTTP.

Запрос вебхуков на целостность

Каждый запрос вебхука включает заголовок X-PhraseApp-Signature, который генерируется с использованием токена подтверждения вебхука в качестве секрета вместе с данными, отправленными в запросе. Подтвердите происхождение запроса, вычислив дайджест HMAC тела запроса и сравнив его со значением в заголовке X- PhraseApp-Signature.

Примеры:

Рубин

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. На странице «Интеграции» прокрутите вниз вебхуки и нажмите «Настроить».

    Открывается страница Webhooks.

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

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

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

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

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

Веб-хук можно отключить в меню Еще определенного вебхука.

Проверить вебхук

Для тестирования вебхука:

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

    Представлено уведомление об успешном проведении теста.

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

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

Каждый раз, когда происходит событие указанного типа, на указанный URL обратного вызова отправляется запрос POST. Полезная нагрузка POST в запросе – это закодированный в JSON документ с соответствующими данными для мероприятия. Событие с атрибутами и сообщение всегда будут включены вместе с дополнительными атрибутами, относящимися к событию, такими как пользователь, проект и ветвь, из которых был запущен вебхук.

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

Запросы 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.",
  "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.