创建和监控webhook
webhook发送一个HTTP请求到一个指定的URL,以响应Zendesk支持中的活动。亚博例如,你可以配置webhook在删除用户或创建新票据时发送请求。你可以使用管理中心或者是人的API.
的连接方法
在Zendesk支持中有两种方法来连接一个webhook到activity:亚博
订阅webhook到一个或多个Zendesk事件。亚博使用此连接方法可以基于组织或用户活动发送请求。有关受支持的事件类型的列表,请参见Webhook事件类型在API参考中。
重要的是:订阅Zendesk事件的webhook不能连接到触发器或自动化。亚博类似地,连接到触发器或自动化的webhook不能订阅Zendesk事件。亚博你不能改变现有webhook的连接方法。
创建网页链接
要使用API创建webhook,请向创建或克隆Webhook端点。在请求体中,指定以下参数:
- 一个
的名字
对于webhook。名称不需要是唯一的 - 一个
状态
指示webhook是“活动”还是“非活动” - 事件数组
订阅
对于webhook。要订阅Zendesk事件的webhook,请指定一个或多亚博个事件类型。有关支持的事件类型值,请参见Webhook事件类型.要将webhook连接到触发器或自动化,在数组中只指定"conditional_ticket_events"。 - 一个
端点
URL。webhook向这个URL发送请求 - 一个
http_method
用于网络钩子的请求。订阅Zendesk事件的webhook必须是“POST”亚博 - 一个
request_format
用于网络钩子的请求。要订阅Zendesk事件的webhook,必须是“jso亚博n”
您还可以指定一个可选的身份验证
参数。参数为webhook的请求添加基本或承载身份验证。有关更多信息,请参见Webhook安全性和身份验证.
下面的请求创建了一个订阅了两个Zendesk事件的webhook:亚博用户创建而且组织创建的.请求的订阅
参数将高亮显示。
curl -X POST https://{subdomain}.亚博zendesk.com/api/v2/webhooks \
-u {email_address}:{password} \
-H "Content-Type:application/json" \
- d”{
“webhook ": {
“名称”:“WEBHOOK_NAME”,
“状态”:“活跃”,
“端点”:“DESTINATION_URL”,
“http_method”:“文章”,
:“request_format json”,
“订阅”:(
“禅:事件类型的:user.created”,
“战:事件类型的:organization.created”
),
"验证":{
“类型”:“bearer_token”,
"数据":{
“令牌”:“令牌”
},
“add_position”:“头”
}
}
}'
下面的请求创建一个可以连接到触发器或自动化的webhook。
curl -X POST https://{subdomain}.亚博zendesk.com/api/v2/webhooks \
-u {email_address}:{password} \
-H "Content-Type:application/json" \
- d”{
“webhook ": {
“名称”:“WEBHOOK_NAME”,
“状态”:“活跃”,
“端点”:“DESTINATION_URL”,
“http_method”:“文章”,
:“request_format json”,
“订阅”:(
“conditional_ticket_events”
),
"验证":{
“类型”:“bearer_token”,
"数据":{
“令牌”:“令牌”
},
“add_position”:“头”
}
}
}'
如果成功,请求的响应包含webhook的唯一id。
{
“webhook”:{
“id”:“01 gd0nsm4fv0yvj535xba3x0xv”,
“名称”:“WEBHOOK_NAME”,
...
}
}
将网络钩子连接到触发器或自动化
要将网络钩子连接到触发器或自动化,请使用相应的触发或自动化行动
属性的“notification_webhook”字段。这个字段的值是两个字符串的数组,指定webhook的id和请求的内容。
对于使用POST、PUT或PATCH HTTP方法和JSON或XML请求格式的webhook,其内容是请求有效负载。以下行动
属性添加JSON请求有效负载。
{
“行动”:[
{
“字段”:“notification_webhook”,
“价值”:[“123”美国广播公司,“{\“foo \”,\“酒吧\”}\ n”]
}
]
}
使用其他HTTP方法或格式的webhook不包括请求有效负载。相反,您可以将自定义URL参数添加为包含两个键值字符串的数组。例如行动
属性将? foo = bar baz = qux
URL参数。
{
“行动”:[
{
“字段”:“notification_webhook”,
“价值”:[
“123”美国广播公司,
[
[“foo”,“酒吧”],
[“记者”,“qux”]
]
]
}
]
}
有关的更多信息行动
属性,请参见操作参考.
克隆网络钩子
要使用API克隆一个现有的webhook,请创建一个创建或克隆Webhook请求。在请求中,使用clone_webhook_id
URL参数指定要克隆的webhook。不要包含请求体。
curl -X POST 'https://{subdomain}.亚博zendesk.com/api/v2/webhooks?clone_webhook_id={webhook_id}' \
密码- u {email_address}: {}
克隆的webhook有唯一的id,但使用相同的id的名字
作为最初的webhook。您可以指定一个新的的名字
使用一个更新Webhook请求。克隆的webhook在创建时不连接到任何触发器或自动化。
监控的人
请注意: webhooks的活动日志处于公开测试中。如果你的帐户移动到不同的pod由于任何原因,最近7天的所有webhook活动日志都将被删除。
活动日志记录了过去七天内每个webhook的所有活动和每次调用的状态:
GET / api / v2 /人/ / {webhook_id} /调用
您可以用多种方式筛选列表。例如,要查看过去7天内所有失败调用的记录,可以添加参数过滤器(状态)
根据您的要求:
GET / api / v2 /人/ {webhook_id}} /调用吗?过滤器[状态]=失败了
Webhook重试逻辑
如果第一次尝试不成功,如果接收请求的服务器返回一个HTTP错误码响应409,webhook调用将被重试最多三次。此外,如果HTTP错误代码响应429和503包含retry-after
头,其值距离接收到响应的时间小于60秒。超时的Webhook请求最多重试五次。连续失败的请求不会停用webhook,但会触发网钩断路器.
webhook的每次调用都有一个唯一的id,可以用来获取关于该调用的详细信息:
GET / api / v2 /人/ / {invocation_id} / {webhook_id} /调用尝试
网钩断路器
webhook断路器的设计目的是避免请求对断开的端点进行轰炸,在以下情况下触发:
- 在5分钟的时间内,70%的webhook请求会导致错误。
- 一个webhook在5分钟内收到超过1000个错误响应。
注意:不管错误率如何,如果网络钩子在5分钟内发送的请求少于100个,断路器就不会触发。
当断路器触发webhook时,webhook在5秒内不能发送请求,即使有事件或业务规则触发它。5秒钟后,webhook可以被触发,将其请求发送到目标端点。如果该请求收到错误响应,断路器将再次触发,持续5秒。这个循环一直持续到成功发送请求,此时断路器复位。
在5秒断路器暂停期间的每次调用尝试都记录为状态电路坏了
.