Web开发人员通常使用webhook来调用另一个系统中的行为。例如,你可以使用webhook来:
您必须是一个管理员或代理自定义角色拥有创建webhook的权限。试用账户被限制为最多10个webhook和每分钟60次调用的速率限制。
对人
有两种方法可以将webhook连接到Zendesk支持中的活动:亚博
- 为webhook订阅一个或多个Zendesk事件。亚博使用此连接方法可以根据组织或用户活动发送请求。有关支持的事件类型列表,请参见Webhook事件类型在API参考中。
- 将网钩连接到a触发或自动化.使用此连接方法根据票据活动发送请求。
订阅了Zendesk事件的webhook无法连接到触发器或自动化。亚博同样,连接到触发器或自动化的webhook也不能订阅Zendesk事件。亚博你不能改变一个已经存在的webhook的连接方法。
订阅Zendesk活动亚博
订阅了一个或多个Zendesk事件的webhook总是使用POST HTTP方法发送请亚博求。请求包括一个JSON有效负载,其中包含事件的数据。您不能更改请求的HTTP方法或有效负载。有关事件有效负载模式的详细信息,请参见Webhook事件类型在API参考中。
连接到触发器或自动化
JSON
XML
表单编码的内容
当您将webhook连接到触发器或自动化时,您定义请求的内容。对于使用JSON或XML请求格式的POST、PUT或PATCH HTTP方法的webhook,内容就是请求有效负载。使用其他HTTP方法或格式的webhook不包含请求有效负载。相反,您可以将自定义URL参数添加为两个键-值字符串的数组。
在定义请求的有效负载或URL参数时,您可以使用可用的内容占位符将票证数据插入请求。
Webhook排序和重试
当事件、触发器或自动化调用webhook时,它将webhook作业排在队列中等待运行,但实际上不会立即运行作业。因为webhook作业是独立运行的,所以不能保证webhook以特定的顺序执行。
如果端点返回某些HTTP响应代码,Webhook请求将自动重试三次。与目标不同,连续失败的请求不会停用webhook。有关重试方案的详细信息和示例,请参见监控的人在我们的开发人员文档中。
创建webhook
您可以在Admin Center中创建webhook。
创建webhook
- 在管理中心,点击应用程序和集成在侧边栏中,然后选择Webhooks > Webhooks.
- 点击创建webhook.
- 若要将webhook订阅到一个或多个Zendesk事件,请选择亚博亚博Zendesk事件并从下拉列表中选择一个或多个事件类型。
- 若要将网络钩子连接到触发器或自动化,请选择触发或自动化.
- 点击下一个.
- 选择webhook的连接方法。
- 配置webhook与第三方服务或系统集成。有关更多信息,请参见Webhook端点和验证您的webhook.
当设置webhook与第三方集成时,您可能需要查阅他们的文档。
- (可选)单击测试webhook以确保它按预期工作。
- 点击创建webhook创建webhook。
- 对于触发器和自动化webhook,您必须将webhook连接到触发器或自动化。看到将webhook连接到支持触发器或自动化.
连接触发器或自动化后,返回到创建webhook页面并点击完成设置.
创建webhook后,您可以从Admin Center的Webhooks页面查看其详细信息、订阅和活动。看到管理的人.
Webhook端点
webhook将请求发送到您在创建它们时指定的端点URL。端点URL使用以下格式:https://www.yourdomain.com/path
.
虽然不是必需的,但建议使用安全的HTTP (HTTPS)。通过提供一个安全的端点URL,您可以启用身份验证安全地传递数据。
验证您的webhook
如果您的webhook与安全端点集成,您有三种选项来验证webhook及其发送的数据。您可能需要参考有关端点身份验证需求的第三方文档,或者与团队中的开发人员一起确定webhook的正确身份验证方法。
- 没有要求:不配置或不需要认证。
- 基本身份验证:使用用户名和密码对webhook进行认证。
- 不记名的令牌:使用OAuth访问令牌对webhook进行身份验证。
如果您的开发人员需要有关webhook身份验证的更多信息,请参见Webhook安全性和身份验证.
为了提高安全性,您还可以验证webhook的签名。有关更多信息,请参见验证webhook的真实性.
将网钩连接到触发器或自动化
要调用触发器和自动化webhook,必须首先将其连接到触发器或自动化。触发器和自动化指定webhook应该在什么情况下被调用。
将webhook连接到支持触发器
测试webhook
在Admin Center中,您可以选择使用不同的事件源和请求来测试webhook。除了为了测试而访问现有的webhook,你还可以在创建或编辑的过程中测试webhook。
测试一个webhook
- 在管理中心,点击应用程序和集成在侧边栏中,然后选择Webhooks > Webhooks.
- 在列表中找到该网络钩子,单击选项菜单图标(),然后单击测试webhook.
- 在测试webhook面板,选择要测试的事件。这是一个示例请求,您可以使用它来测试端点URL。
- 输入测试请求的详细信息——请求主体、参数或报头。
- 点击发送测试.响应在测试请求下面的面板中可见。
61条评论
非常令人兴奋的东西!
在测试中,我期望在票证事件日志中看到一个事件,对于触发器运行webhook动作的票证,但事实并非如此。这是故意的吗?
嗨,雅各。谢谢你的问题。这是意料之中的。webhook运行是为了响应其他发生的事情,比如票证事件。触发webhook运行的事件可能会在票证事件日志中被捕获,但是所有的webhook日志记录都在Webhook活动日志.
谢谢杰奎琳·。我知道webhook特定的日志记录是在Webhook活动日志但是,由于触发器是在票据事件上触发的,所以我希望看到该操作登录到该票据上——就像任何其他触发器一样。
我们如何在URL中引用上下文票证ID ?
使用Targets,我们可以像这样引用一个票据:
https://ourdomain.亚博zendesk.com/api/v2/tickets/ {{ticket.id}} . json
这样我们的自动化系统就可以更新门票了。我不知道如何用webhook模型做到这一点。
@……
支持……
现在看起来webhook URL是静态的。
这将需要使用第三方服务器将所有这些目标重写为应用程序,或者创建Zendesk Apps来实现这一目的。亚博
@……
我们也使用相同的模型来更新门票。
我们的用例:每个用户都有一个自定义字段:“抄送电子邮件”。当该用户创建票据时,将该抄送添加到票据的电子邮件抄送中。(即。将您的经理添加到您的门票中)
现在我们的布局是:触发器使用JSON (PUT到email_ccs)激活票证更新。
触发器通知HTTPs目标https://ourdomain.亚博zendesk.com/api/v2/tickets/ {{ticket.id}} . json更新票证。
看看我们如何用webhook实现这一点。谢谢!
我和克里斯有同样的问题。我发现我可以使用Update Many API端点,只传递单个票证id。占位符在触发器JSON中用于设置票证ID。
@……我们使用这些目标,我们如何使用webhook呢?
/ api / v2 /票/ {{ticket.id}} . json
/ api / v2 /票/ {{ticket.id}} / {{ticket.latest_comment.id}} / make_private评论
是否计划在HTTP目标被弃用之前在端点URL中启用占位符?
@……,@……
看看这篇文章,还有我的评论:
https://support.亚博zendesk.com/hc/en-us/articles/1260803041889?page=2#comment_4404887963418
BR, P。
在“测试webhook”一节中,第4步意味着我们应该能够向webhook添加请求头?当我创建webhook时,我没有看到在webhook中创建header的选项。这是一种选择吗?
是否有预期有效载荷结构的参考?
嗨@……
由于webhook将替换目标(此时,仅替换http目标),因此负载没有在webhook定义中定义,而是在webhook的触发器或自动化执行中定义。
在这里,您可以定义有效负载(作为json)。
我能够得到我以前的触发器工作通过使用更新许多端点像@……提及。
对我来说,我的最终结果是这样的:
创建了新的Webhook命名更新许多票端点“https://[域].zendesk.com/api/v2/tickets/update_many”,PUT(亚博不是POST),和JSON。
触发动作->通知活动Webhook ->更新多个票证
JSON身体:
在这些变化之后,一切似乎都起作用了。
我可以为webhook创建自定义请求头吗?
你好,马特,
目前还不可能这样做,但我们的产品管理团队正在进行积极的讨论。我建议将您的用例添加到此讨论中,因为这有助于指导未来的平台改进!https://support.亚博zendesk.com/hc/en-us/community/posts/115009370628-Passing-API-Header-in-HTTP-Target
Beau |客户倡导者
问我们的亚博Zendesk社区
如果端点返回某些HTTP响应代码,Webhook请求将自动重试三次。与目标不同,连续失败的请求不会停用webhook。"
什么是“某些HTTP响应代码”?这在什么地方有记录吗?
嗨@……,
是的,这是有记录的创建和监控webhook在我们的开发人员文档中。
克里斯
我对自定义请求头特性也很感兴趣
嗨,布鲁诺,
转到在HTTP目标中传递API头,为其投票,并将您的用例添加到评论线程中。你需要的信息越多越好。谢谢!
你好,
我们使用web hook在内部系统中为某些类型的支持请求创建一个ticket。在活动日志中,我可以看到有一个来自内部系统的响应,其中包含一个我希望能够添加到Zendesk票证的ID。亚博是否有任何方法可以读取每个响应并将其添加到票据中的表单字段中?
嗨卡梅隆Rigatuso,
除非Zende亚博sk添加了一些新功能,否则您能够填充票证字段的唯一方法是让您的内部系统在发送响应之外使用Zendesk API来更新字段。
KF
你好,
我想把机票信息发送到我的概念数据库。所以我试着做webhook,但是我做不到,因为错误提示
{"object":"error","status":400,"code":"missing_version","message":"概念版本头验证失败:应该定义概念版本头,而不是' undefined '。"“}”
我怎么能添加概念版本的标题zendesk webhook??亚博
目前,在创建webhook时不可能提供自定义标头。我们的产品管理团队正在考虑将额外的认证方法作为未来可能的功能增强。请随意在a中分享您的用例的细节产品反馈帖.它可以帮助我们以及其他用户深入了解您想要解决的问题。
最好的
你可以通过网络钩子创建一个侧面对话吗?
我尝试了以下方法,但没有成功:
https://mydomain.亚博zendesk.com/api/v2/tickets/ {ticket_id} / side_conversations
这是导火索:
{
"信息":{
"body": "我正在打印电子邮件,打印机突然烧坏了",
"从":{
“电子邮件”:“myemail@something.com",
"name": "Johnny Agent"
},
"html_body": "我正在打印电子邮件,打印机突然启动\u003cstrong\u003eburning\u003c/strong\u003e",
"preview_text": "我正在打印一封电子邮件,打印机突然坏了",
"主题":"救命,我的打印机着火了!"
”到“:(
{
“电子邮件”:“bob@example.com",
“名称”:“bob”
}
]
}
}
我发现我在端点url中使用了错误的占位符。应该是{{ticket.id}}
你好,
我能够使用目标url和触发器在门票上添加私人评论,但是当我尝试使用类似的webhook登录时,只有标签从触发器中添加,但评论没有添加,所以有人可以帮助:
触发:
试着像下面这样修改你的webhook URL。并使用JSON作为注释主体。
嗨,所有
webhooks是否支持令牌的基本认证,即在名称中添加/token并指定在管理中心,应用程序和集成,API, Zendesk API,设置中生成的令牌,而不是密码?亚博
彼得Hochstrasser是的,似乎您可以通过设置基本身份验证并使用下面的格式来使用/token身份验证。
用户:email@site.com/令牌
密码(令牌):
这实际上解决了我遇到的一个问题,所以谢谢你的提问。
请登录留下评论。