webhook 是处理 HTTP POST 请求的任意 URL,允许将指定事件的通知发送给第三方系统。
Phrase 会监控 webhook 回调是否成功接收。如果 webhook 接收失败 3000 次,它将被停用,并向账户管理员发送通知,且该失败记录会显示在页面的特定 webhook 上。重试机制最多有 10 次重试机会,重试间隔计算最长为 30 分钟。
可以通过在 webhook 页面选择单个 webhook 来显示工具栏,从而禁用/启用、显示历史记录、测试或删除 webhook。功能提供了过去 14 天的调用概览,并且可以重放失败的 webhook。
可以为以下事件选择 webhook:
-
Job status changed
-
工作已创建
-
Job assigned
-
工作截止日期已更改
-
工作原文已更新
-
工作译文已更新(指工作上的操作)
-
连续工作已更新
-
项目已创建
-
项目状态已更改
-
项目截止日期已更改
-
项目模板已创建
-
项目模板已更改
-
项目模板已删除
-
Shared project assigned
-
项目元数据已更新
-
预翻译完成
-
分析报告已创建
-
工作已删除
-
项目已删除
-
已导出的工作
-
未导出的工作
-
Language AI 导入已完成
-
Language AI 翻译已完成
要配置 webhook,请按照以下步骤操作:
一个名为 RequestBin 的网站将提供一个在创建 webhook 时使用的 URL。
下一次在账户中更改工作状态或创建工作时,该 URL 将从系统接收相应的响应。实际使用可能更为复杂,接收响应应被视为连接的应用程序执行某些操作的信号。
活动
工作状态更改、工作分配、工作创建以及工作截止日期更改的示例。
工作状态已更改
{
"jobParts": [
{
"id": 9,
"uid": "ipmdz5p0sagqcOYaijTZU2",
"internalId": "4",
"task": "SEfSaenvqFgctE1I0_dc1",
"fileName": "en.txt",
"targetLang": "af",
"workflowLevel": 1,
"status": "NEW",
"wordsCount": 2,
"beginIndex": 0,
"endIndex": 1,
"isParentJobSplit": false,
"dateDue": null,
"dateCreated": "2016-11-02T17:06:54Z",
"project": {
"id": 2,
"uid": "4RvyVbwX00KerkomA7kpT9",
"lastWorkflowLevel": 1
},
"assignedTo": [
{
"vendor": {
"id": 1,
"name": "Abc",
"vendorToken": "4-ifos0-CAqPo"
}
},
{
"linguist": {
"id": 3,
"firstName": "Admin",
"lastName": "Admin",
"userName": "admin",
"email": "admin@example.com",
"role": "ADMIN",
"timezone": "Europe/London",
"active": true,
"deleted": false,
"terminologist": false,
"dateCreated": "2016-10-11T07:43:22Z"
}
}
]
}
],
"event": "JOB_STATUS_CHANGED"
}
Job Assigned
{
"jobParts": [
{
"id": 9,
"uid": "ipmdz5p0sagqcOYaijTZU2",
"internalId": "4",
"task": "SEfSaenvqFgctE1I0_dc1",
"fileName": "en.txt",
"targetLang": "af",
"workflowLevel": 1,
"status": "NEW",
"wordsCount": 2,
"beginIndex": 0,
"endIndex": 1,
"isParentJobSplit": false,
"dateDue": null,
"dateCreated": "2016-11-02T17:06:54Z",
"project": {
"id": 2
"uid": "4RvyVbwX00KerkomA7kpT9",
"lastWorkflowLevel": 1
},
"assignedTo": [
{
"vendor": {
"id": 1,
"name": "Abc",
"vendorToken": "4-ifos0-CAqPo"
}
},
{
"linguist": {
"id": 3,
"firstName": "Admin",
"lastName": "Admin",
"userName": "admin",
"email": "admin@example.com",
"role": "ADMIN",
"timezone": "Europe/London",
"active": true,
"deleted": false,
"terminologist": false,
"dateCreated": "2016-10-11T07:43:22Z"
}
}
]
}
],
"event": "JOB_ASSIGNED"
}
工作已创建
{
"jobParts": [
{
"id": 9,
"uid": "ipmdz5p0sagqcOYaijTZU2",
"internalId": "4",
"task": "SEfSaenvqFgctE1I0_dc1",
"fileName": "en.txt",
"targetLang": "af",
"workflowLevel": 1,
"status": "NEW",
"wordsCount": 2,
"beginIndex": 0,
"endIndex": 1,
"isParentJobSplit": false,
"dateDue": null,
"dateCreated": "2016-11-02T17:06:54Z",
"project": {
"id": 2,
"uid": "4RvyVbwX00KerkomA7kpT9",
"lastWorkflowLevel": 1
},
"assignedTo": [
{
"vendor": {
"id": 1,
"name": "Abc",
"vendorToken": "4-ifos0-CAqPo"
}
},
{
"linguist": {
"id": 3,
"firstName": "Admin",
"lastName": "Admin",
"userName": "admin",
"email": "admin@example.com",
"role": "ADMIN",
"timezone": "Europe/London",
"active": true,
"deleted": false,
"terminologist": false,
"dateCreated": "2016-10-11T07:43:22Z"
}
}
]
}
],
"event": "JOB_CREATED"
}
工作截止日期已更改
{
"jobParts": [
{
"id": 127865777,
"uid": "ElTXvXnNIHEN2xgL5sU2L2",
"internalId": "1",
"task": "LvkAHilgobApeoVm_dc4",
"fileName": "EU White Paper Edited.doc",
"targetLang": "de",
"workflowLevel": 1,
"status": "NEW",
"wordsCount": 204,
"beginIndex": 0,
"endIndex": 16,
"isParentJobSplit": false,
"dateDue": "2018-09-11T22:00:00Z",
"dateCreated": "2018-09-10T06:25:41Z",
"project": {
"id": 12277756,
"uid": "4RvyVbwX00KerkomA7kpT9
"lastWorkflowLevel": 1
},
"assignedTo": []
}
],
"event": "JOB_DUE_DATE_CHANGED"
}
在使用 API、webhook 和 UI 时,状态的命名可能会略有不同。