使用webhooks以POST请求的形式接收关于在Lokalise中发生的事件的即时通知。
当一个事件发生时,webhook就会被发送出去,它期待你方的回答2 xx
状态码。我们没有签署请求,所以你可能想限制来自IP的159.69.72.82,94.130.129.39,195.201.158.210和94.130.129.237的传入请求。
要为您的项目设置集成:
导航到项目设置>集成
点击连接按钮的Webhook集成
输入配置参数:发送事件到的URL和分支(如果分支为您的项目启用)
选择所需的事件
点击使集成
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);