-
планов: 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; }
Название события |
Описание |
---|---|
|
Была создана ветвь. |
|
Ветвь была объединена. |
|
Добавлен комментировать к ключ перевода. |
|
Пользовательское значение поля метаданных обновлено в нескольких ключах. |
|
Пользовательское значение поля метаданных обновлено на уровне ключей. |
|
Задание было отмечено как Завершенное. |
|
Задание создано. |
|
Языковой стандарт задания отмечен как выполненный. |
|
Вновь открыт языковой стандарт задания. |
|
Языковой стандарт задания был проверен и помечен как Завершенный. |
|
Языковой стандарт задания был проверен и открыт повторно. |
|
Вновь открыто задание. |
|
Задание было запущено. |
|
Задание обновляется. |
|
Было удалено несколько ключей. |
|
Ключ создан. |
|
Ключ был удален. |
|
Ключ был переименован или изменен. |
|
В проекте была создана новая версия на языке. |
|
Версия на языке была удалена. |
|
Версия языка была изменена, переименована или настроена заново. |
|
Проект был изменен или изменен. |
|
Создан релиз обновления по воздуху (OTA). |
|
Обновление по воздуху (OTA) было удалено. |
|
Был создан скриншот. |
|
Скриншот был удален. |
|
Скриншот был изменен или переименован. |
|
Список переводов был удален. |
|
Список переводов был проверено. |
|
Список переводов не проверен. |
|
Список переводов не проверено. |
|
Список переводов подтвержден. |
|
Добавлен перевод ключа в определенной версии на язык. |
|
Перевод ключа в определенной версии на язык был доставлен поставщиком услуги языка. |
|
Перевод ключа в определенной версии на язык был проверено. |
|
Перевод ключа в определенной версии на язык не проверялся. |
|
Перевод ключа в определенной версии на язык не проверено. |
|
Перевод ключа в определенной версии на язык был отредактирован. |
|
Подтвержден перевод ключа в определенной версии на язык. |
|
Успешно обработан файл языкового стандарта. |
|
Обрабатывается файл языковых стандартов. |
Чтобы добавить вебхук, выполните следующие действия:
-
На странице «Настроить».
прокрутите вниз и нажмите «Открывается страница
. -
Нажмите Добавить вебхук.
Откроется окно
. -
Укажите сведения о вебхуке.
-
При необходимости
. -
Нажмите Сохранить. Указанный вебхук добавлен в список на странице
.
Веб-хук можно отключить в меню
определенного вебхука.Для тестирования вебхука:
-
На странице «отправить тестовое уведомление.
» выберите вебхук и выберите в меню « »Представлено уведомление об успешном проведении теста.
Используйте такую услугу как 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" } }