创建和更新票据
本文解释了在创建和更新票据时如何设置票据属性和指定操作。有关参考信息,请参见票资源中的票务API参考。
创建后续票据
一旦一张票被关闭(与解决不同),它就不能重新打开。但是,您可以创建一个引用已关闭票据的新票据。要创建后续票据,请包含via_followup_source_id
参数,该参数指定封闭票据。例子:
旋度https://{子域名}.亚博.com/api/v2/票.json \
-d'{"ticket": {"via_followup_source_id": 103, "comment": {"body": "我的打印机还是太热了!"”}}}\
-v-u{email_address}:{密码}-X帖子-H“application / json内容类型:
该参数仅适用于已关闭的票据。对其他票无效。
默认情况下,第一个注释作者是发出API请求的经过身份验证的用户。若要设置不同的作者,请包含author_id
属性。
异步创建票据
由于复杂的业务规则,创建票据有时需要一段时间。异步创建允许您快速返回响应,并将后台作业排队以完成实际工作。
要发出异步请求,只需添加参数异步
在您的请求中:
发布api / v2 / tickets.json吗?异步= true
一旦收到请求,它就返回一个202年接受
.响应包括新票据id
与一个job_status
JSON对象.然而,在工作完成之前,你可能无法取到票。
请注意:如果创建票据失败,可能会跳过部分票据id号。
设置的合作者
请注意:如果cc和追随者该功能为帐户启用,使用电子邮件cc和关注者是首选。看到设置邮件cc而且设置的追随者.属性仍然可以设置协作者合作者
而且additional_collaborators
本节描述的票据属性。他们会自动让终端用户成为CCs,让代理成为追随者。
在创建或更新票据时,您可以使用以下三个属性之一在票据上设置协作者:collaborator_ids
,合作者
或additional_collaborators
.的合作者
属性提供了更大的灵活性,如下所述。
当创建或更新票据时,将向协作者发送电子邮件通知。
设置合作者
或collaborator_ids
更新票据时,将替换现有的协作者。如果您希望在票据上保留现有的合作者,请确保在更新请求中包含他们。如果您只想添加更多的合作者,请使用additional_collaborators
代替。
的collaborator_ids
属性是一个基本选项,它接受用户id数组。
例子
{
“票”:{
“collaborator_ids”:[562624,624562,243642]
}
}
的合作者
房产是一个更灵活的选择。它接受一个数组,该数组由用户id、电子邮件地址或包含的名字
而且电子邮件
财产。例如:
使用一个对象在Zendesk Support中使用适当的名称动态地创建用户。亚博
例子
的additional_collaborators
属性用于添加其他协作者。它保留现有的合作者,并将新的合作者添加到票据中。它接受一个数组,该数组由用户id、电子邮件地址或包含的名字
而且电子邮件
财产。
例子
即使你使用合作者
属性中的用户id数组,JSON响应将指定新的或更新的合作者collaborator_ids
财产。响应没有a合作者
财产。
设置的追随者
方法在创建或更新票据时,可以在票据上设置关注者追随者
财产。
当创建或更新票据时,将向关注者发送电子邮件通知。
的追随者
属性接受表示代理的对象数组。每个对象必须有一个标识符,可以是用户ID (user_id
)或电邮地址(user_email
)。如果一个user_email
或user_id
则该用户对象将被忽略。此外,行动
Key可以设置为“put”或“delete”,以指示是否应该将用户添加到关注者列表中。如果行动
Key没有给出,默认值是“put”。
例子
设置邮件cc
方法在创建或更新票据时,可以在票据上设置电子邮件ccemail_ccs
财产。
根据触发器设置,当票据被创建或更新时,单个电子邮件通知将被发送给请求者和cc。
的email_ccs
属性接受表示用户的对象数组。每个对象必须有一个标识符,可以是用户ID (user_id
)或电邮地址(user_email
)。如果指定了电子邮件地址,而该用户在该帐户中不存在,则创建一个新用户。此外,关键行动
可以设置为“放”或“删除”,以指示是否应该将用户添加到或从电子邮件抄送列表中删除。如果行动
Key没有给出,默认值是“put”。如果创建了新用户,可以指定user_name
命令,设置新用户名。如果用户是隐式创建的,并且user_name
如果未给出,则用户名是从电子邮件地址的本地部分派生的。属性的值,如果包含未与用户关联的电子邮件地址(例如,意图隐式创建用户),则行动
键为“delete”,该邮件地址不会被创建或添加为邮件抄送。
一张票只能有48个邮件cc。如果请求中包含超过48个电子邮件cc,则会返回“400个坏请求”。如果现有的电子邮件cc和通过请求添加的额外电子邮件cc加起来超过48个,则电子邮件cc将被截断为48个,并且不会报告错误。
如果在同一更新中还将内部说明添加到票据中,则不会更新电子邮件cc。
例子
{
“票”:{
“email_ccs”:[
{“user_id”:“562624”,“行动”:“把”},
{“user_id”:“243642”:“行动”:“删除”},
{“user_email”:"(电子邮件保护)",“user_name”:“别人”,“行动”:“把”}
]
}
}
设置元数据
当您创建或更新一个票据时,一个审计如果票据属性已更改,则生成。在每次这样的审计中,您可以添加最多1千字节的自定义元数据。您可以使用它来构建自己的集成或应用程序。请注意:如果您的更新没有更改票据,则不会创建Audit,也不会保存元数据。
例子
{
“票”:{
“元数据”:{“time_spent”:“4 m12”,“账户”:“集成”},
“评论”:{“身体”:"请立即按播放"},
“状态”:“等待”
}
}
请注意,元数据只能设置为与之关联的其他常规票据更新的一部分,而不仅仅是票据。亚博Zendesk Support还在每次票据更新中添加元数据,生成的审计JSON结构如下所示:
{
“审计”:{
“id”:35436,
“ticket_id”:47,
“created_at”:“2012 - 04 - 20 - t22:55:29z”,
“author_id”:35436,
“元数据”:{
“自定义”:{
“time_spent”:“4 m12”,
“账户”:“集成”
},
“系统”:{
“ip_address”:“184.106.40.75”,
“位置”:“美国”,
“经”:-97,
“人肉搜索”:38,
“客户端”:“Mozilla / 5.0(麦金塔电脑;英特尔Mac OS X 10_7_3)"
}
},
“通过”:{
“通道”:“网络”
},
“事件”:[
{
“id”:1564245,
“类型”:“评论”
“身体”:"请立即按播放",
“公共”:真正的,
“附件”:[]
},
...
]
}
}
附加文件
在创建和更新票据时,您可以通过包含从上载文件中接收到的令牌来将文件附加到注释。
详细信息和示例请参见使用API附加票据附件.
例子
{
“票”:{
“评论”:{“身体”:"请立即按播放",“上传”:[“vz7ll9ud8oofowy”]}
}
}
用一个新的请求者创建一个票据
您可以在创建票据时指定请求者。可以为请求者设置名称、电子邮件和区域id。姓名和电子邮件是必需的。有关区域设置id,请参见地区API。
例子
{
“票”:{
“主题”:“你好”,
“评论”:{“身体”:“有些问题”},
“请求者”:{“locale_id”:8,“名称”:“毕加索”,“电子邮件”:"(电子邮件保护)"}
}
}
如果请求者的身份在Zendesk中不存在,则会为用户创建一个新的用户配置文件。亚博用户需要验证他们的身份才能查看他们的请求。
如果Zendesk中存在具有指定电子邮件亚博地址的用户,则Zendesk将使用该用户,并且在票据创建过程中不会对现有用户进行更新。在这种方法中,只需要email属性。
设置自定义字段值
要设置票据中一个或多个自定义字段的值,请指定由以下对象组成的数组id
而且价值
属性。控件的文本或数字字段,请指定文本或数字价值
属性:
“custom_fields”:[{“id”:25356371,“价值”:“我在买多多买的。”},...]
对于日期字段,仅指定日期(格式为ISO 8601字符串)并省略时间:
“custom_fields”:[{“id”:25356634,“价值”:“2020-02-24”},...]
属性的选项的标记名称,用于具有由标记(例如下拉列表)定义值的字段价值
属性,而不是列表中显示的选项文本。例如,如果该选项的显示文本是“HD 3000彩色打印机”,其标签是hd_3000,则自定义字段的值设置如下:
“custom_fields”:[{“id”:21938362,“价值”:“hd_3000”}]
多选字段值也由标记定义。然而,value属性是一个逗号分隔的列表。例如,标签的值为hd_3000和hd_5555,则自定义字段的值为:
“custom_fields”:[{“id”:21938362,“价值”:[“hd_3000”,“hd_5555”]}]
有关更多信息,请参见票字段.
例子
{
“票”:{
“主题”:“你好”,
“评论”:{“身体”:“有些问题”},
“custom_fields”:[{“id”:34,“价值”:“我需要帮助!”}]
}
}
防止票证更新冲突
与任何数据库应用程序一样,防止记录更新冲突是一种很好的实践。如果对同一票据的多个更新几乎同时执行,更新可能会发生冲突并导致数据丢失。例如,拿一张有两个标签的票,“红色”和“蓝色”。一个更新尝试将“green”附加到标签列表中。一个单独的更新尝试添加“yellow”。如果两个更新几乎同时进行,则可能会出现以下顺序:
- 更新A为["红","蓝"]
- 更新B为[“红”,“蓝”]
- 更新A为["红","蓝","绿"]
- 更新B写入["红","蓝","黄"]
数据“绿色”丢失,因为更新B被允许继续处理过期的数组。
你可以做出安全更新以防止更新B之类的更新继续进行。在安全更新中,您在请求中包含了最新的已知票据更新,以检查最近的更新。如果系统检测到一个比上一次已知更新更近的票据更新,它会阻止您继续更新,并发送一个响应,让您知道票据没有更新。作为开发人员,您应该考虑这个结果,并获得票据数据的新副本,并再次尝试更新。看到检查票据是否没有更新在下面。
要启用安全更新,请包含safe_update
而且updated_stamp
中的ticket对象中的属性PUT请求查看最新的更新。例子:
{
“票”:{
“主题”:“更新主题”,
“updated_stamp”:“2021 - 08 - 24 - t16:53:51z”,
“safe_update”:真正的,
...
}
}
的价值updated_stamp
是在您提出更新请求时更新票据的最后已知时间。最后已知的时间是票证当前指定的时间updated_at
财产。提出初步请求演出门票得到这个值。对于webhook工作流中的占位符,已知的最后更新时间为ticket.updated_at_with_timestamp
.
当一次更新许多票,也可以指定safe_update
而且updated_stamp
每个票据对象的属性。但是,这些更新是自动安全的,并且当作业开始后对同一票据进行另一次更新时,票据更新将被取消。
检查票据是否没有更新
当进行安全更新时,请求返回409状态代码或“UpdateConflict”作业状态,以让您知道由于最近的更新而没有更新票据。这是获取最新票据数据并重试更新的信号。
当更新单个票据时,让您的代码在响应中查找409状态代码并相应地处理它。例409响应:
状态:409冲突
{
“描述”:"安全更新由于过期的票据数据,阻止了更新.
请获取最新的票据数据和试一试再一次.",
“错误”:“UpdateConflict”
}
在批量或批处理更新票据时,将您的代码用于监视工作的状态UpdateConflict错误,并相应地处理它。例如作业状态:
{
“job_status”:{
“结果”:[
{
“指数”:0
“错误”:“UpdateConflict”,
“id”:9999,
“细节”:“安全更新由于票务数据过期而阻止了更新。请获取最新的票务数据,然后重试。”
}
],
...
}
}