使用webhooks以POST请求的形式接收关于在Lokalise中发生的事件的即时通知。

当一个事件发生时,webhook就会被发送出去,它期待你方的回答2 xx状态码。我们没有签署请求,所以你可能想限制来自IP的159.69.72.82,94.130.129.39,195.201.158.210和94.130.129.237的传入请求。

要为您的项目设置集成:

  1. 导航到项目设置>集成

  2. 点击连接按钮的Webhook集成

  3. 输入配置参数:发送事件到的URL和分支(如果分支为您的项目启用)

  4. 选择所需的事件

  5. 点击使集成

Webhook秘密

一旦集成启用,Webhook秘密就会自动生成。这个秘密被表示为一个随机的字母数字字符串:

每个请求都将秘密发送到指定的webhook。通过检查secret的值,可以确保请求不是来自恶意源。

秘密随时都可能被重新发现。要做到这一点,打开项目设置>集成> Webhooks,找到想要的webhook,然后点击刷新图标:

变化

我们已经完全重写了webhook实现。使用旧webhook系统的项目将有webhook(遗留)集成,这里有记录.以下是当前版本的新内容:

  • 您可以通过编程方式订阅和退订webhooks,使用我们的API

  • 重试机制(见下文)。

  • Secret在报头中发送,因此您可以验证请求。

  • 某些事件的有效负载已更新。

需求

  • 接受POST请求

  • 返回2 xx状态码(200、201、202等)

重试机制

如果webhook没有被发送,我们的系统将重试发送它最多4次:

  • 在第一次重试后的±10分钟内。

  • 在第一次重试后的±40分钟内。

  • 在±3小时内,首次重试后。

  • 再试后的±24小时内。

每个webhook都是独立的,并且是单独发送的。

可用webhook事件

  • project.imported

  • project.exported

  • project.deleted

  • project.snapshot

  • project.languages.added

  • project.language.removed

  • project.language.settings_changed

  • project.key.added

  • project.key.modified

  • project.keys.deleted

  • project.key.comment.added

  • project.translation.updated

  • project.translation.proofread

  • project.contributor.added

  • project.contributor.deleted

  • project.task.created

  • project.task.closed

  • project.task.deleted

  • project.task.language.closed

  • project.task.initial_tm_leverage.calculated

  • team.order.created

  • team.order.completed

  • team.order.deleted

Webhook负载的例子

  • project.imported


“事件”:“project.imported”,
“导入”:{
“文件名”:“en.json”,
“格式”:“json”,
“插入”:231年,
“更新”:0,
“跳过”:0
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.exported


“事件”:“project.exported”,
"出口":{
“类型”:“json”,
“文件名”:“文件/出口/ 138 c1ffa0ad94848f01f980e7f2f2af19d1bd553/67d1a7ff9cab3a57e32ea71c4561a58d / locales.zip”,
“平台”:“网络”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.deleted


“事件”:“project.deleted”,
"项目":{
123.“id”:“abc”,
“名称”:“示例项目”
},
"用户":{
“full_name”:“John Doe”,
“电子邮件”:“joh.doe@example.com”
},
"created_at => "2019-07-29 12:18:31",
“created_at_timestamp = > 1564395511
  • project.snapshot


“事件”:“project.snapshot”,
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.languages.added


“事件”:“project.languages.added”,
“语言”:(

“id”:734年,
“iso”:“它”,
“名称”:“意大利”

],
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.language.removed


“事件”:“project.language.removed”,
"语言":{
“id”:734年,
“iso”:“它”,
“名称”:“意大利”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.language.settings_changed


“事件”:“project.language.settings_changed”,
"语言":{
“id”:734年,
“iso”:“它”,
“名称”:“意大利”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.key.added


“事件”:“project.key.added”,
“关键”:{
“id”:16307699,
“名称”:“test.title”,
“base_value”:“Hello, world !”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.key.modified


“事件”:“project.key.modified”,
“关键”:{
“id”:16307699,
“名称”:“test.title_modified”,
:“previous_name test.title”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.keys.deleted


“事件”:“project.keys.deleted”,
“钥匙”:(

“id”:16307699,
“名称”:“test.title_modified”
},

“id”:16307700,
“名称”:“test.to_delete”

],
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.key.comment.added


“事件”:“project.key.comment.added”,
"评论":{
value:要测试的注释。标题的关键”
},
“关键”:{
“id”:16307701,
“名称”:“test.title”,
"文件名":{
“android”:“filename1”,
:“ios filename2”,
“其他”:“filename3”,
“网络”:“filename4”

},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.translation.updated


“事件”:“project.translation.updated”,
"翻译":{
“id”:84835169,
“价值”:“你好,% s !”
“previous_value”:“嗨!”
},
"语言":{
“id”:640年,
“iso”:“en”,
“名称”:“英语”
},
“关键”:{
“id”:16307701,
“名称”:“test.title”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.translation.proofread


“事件”:“project.translation.proofread”,
"翻译":{
“id”:84835169,
“价值”:“你好,% s !”
“is_proofread”:真的
},
"语言":{
“id”:640年,
“iso”:“en”,
“名称”:“英语”
},
“关键”:{
“id”:16307701,
“名称”:“test.title”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.contributor.added


“事件”:“project.contributor.added”,
“贡献者”:{
“电子邮件”:“contributor@mycompany.com”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.contributor.deleted


“事件”:“project.contributor.deleted”,
“贡献者”:{
“电子邮件”:“contributor@mycompany.com”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.task.created


“事件”:“project.task.created”,
"任务":{
“id”:5022年,
"type": "translation", //支持的类型是"translation"和"review"
“标题”:“标题翻译”,
“due_date”:“2019-08-01”就是,
“描述”:“工作描述”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.task.closed


“事件”:“project.task.closed”,
"任务":{
“id”:5022年,
"type": "translation", //支持的类型是"translation"和"review"
“标题”:“标题翻译”,
“due_date”:“2019-08-01”就是,
“描述”:“工作描述”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.task.deleted


“事件”:“project.task.deleted”,
"任务":{
“id”:5022年,
“标题”:“标题翻译”,
“due_date”:“2019-08-01”就是,
“描述”:“工作描述”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.task.language.closed


“事件”:“project.task.language.closed”,
"语言":{
“id”:640年,
“iso”:“en”,
“名称”:“英语”
},
"任务":{
“id”:5022年,
"type": "translation", //支持的类型是"translation"和"review"
“标题”:“标题翻译”,
“due_date”:“2019-08-01”就是,
“描述”:“工作描述”
},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511


  • team.order.created


“事件”:“team.order.created”,
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
“订单”:{
“id”:“20101010 d85”,
“提供者”:“lokalise”,
“货币”:“美元”,
“总”:10.00
},
"用户":{
“电子邮件”:“jdoe@mycompany.com”,
“full_name”:“John Doe”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • team.order.deleted


“事件”:“team.order.deleted”,
"项目":{
123.“id”:“abc”,
“名称”:“示例项目”
},
"用户":{
“full_name”:“John Doe”,
“电子邮件”:“john.doe@example.com”
},
"created_at => "2019-07-29 12:18:31",
“created_at_timestamp = > 1564395511
  • team.order.completed


“事件”:“team.order.completed”,
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”
},
“订单”:{
“id”:“20101010 d85”,
“提供者”:“lokalise”
},
“created_at”:“2019-07-29 12:18:31”,
“created_at_timestamp”:1564395511
  • project.task.initial_tm_leverage.calculated


“事件”:“project.task.initial_tm_leverage.calculated”,
"任务":{
“id”:12345年,
“标题”:“新任务”,
“描述”:“请尽快翻译”,
" initial_tm_leverage ": {
" 600 ": {
“0”:154年,
“50”:5
“75”:4
“85”:11,
“95”:0,
“100%”:6
},
" 1056 ": {
“0”:158年,
“50”:17日
“75”:0,
“85”:0,
“95”:2
“100%”:3


},
"项目":{
“id”:“138 c1ffa0ad94848f01f980e7f2f2af19d1bd553”,
“名称”:“TheApp项目”,
“分支”:“大师”
},
“created_at”:“2021-03-30 16:01:11”,
“created_at_timestamp”:1617112871

在PHP中接收webhooks(示例)

输入=美元@file_get_contents(“php: / /输入”);
$data = json_decode($input, true);
http_response_code (200);
这回答了你的问题了吗?