把请求
您可以提供一个端点,让Zendesk Support定期查询原始系统中的新外亚博部资源,例如Instagram中的新评论。亚博电脑端查询称为拉请求或简单地拉。亚博Zendesk Support大约每2分钟进行一次pull请求。
要启用此功能,必须构建一个拉取端点并在集成清单。例子:
“url”:{
“pull_url”:“https://omniwear.com/integrations/instagram/pull”,
…
}
端点必须实现本文档中描述的请求和响应格式。端点负责检索源系统中的资源。亚博电脑端
请求格式
亚博Zendesk Support大约每2分钟向pull_url
集成清单中指定的端点。亚博Zendesk Support在每个POST请求的正文中包含以下查询字符串参数。
例子
POST请求的主体可以包含Instagram集成服务的以下数据:
元数据=%7B%5C%22instagram_username%5C%22%3.一个%5C%22omniwear%5C%22%2C%5C%22instagram_oauth_token%5C%22%3.一个%5C%22xyzabc%5C%22%7D&状态=%7B%5C%22last_message_id%5C%22%3.一个%5C%2220151210082800-艾丽卡%5C%22%7D
url编码的查询字符串有点难以阅读。解码后的字符串如下所示:
元数据={instagram_username \“\”:omniwear \“\”,instagram_oauth_token \“\”:xyzabc \“\”}&状态={last_message_id \“\”:\”20151210082800-erika \”}
如果你的集成服务没有使用Zendesk Support来存储状态,pull请求可亚博能如下所示:
https://omniwear。com/集成/instagram/拉?元数据=%7B%5C%22integration_service_info_id%5C%22%3.一个%5C%22123%5C%22%7D&状态=
解码字符串:
元数据={integration_service_info_id \“\”:\”123\”}&状态=
响应格式
发送带有以下JSON对象的响应,其中包含最多200个外部资源的有序数组。亚博电脑端亚博Zendesk Support将按顺序处理。
名字 | 类型 | 最大字符 | 强制性的 | 评论 |
---|---|---|---|---|
external_亚博电脑端resources | 数组 | 是的 | 外部资源数组,最多200个。亚博电脑端看到external_亚博电脑端resources数组下面 | |
状态 | 字符串 | 5000 | 没有 | 关于新状态的字符串化数据。如果没有返回,则保留先前存在的状态值。看到元数据和状态。 |
metadata_needs_update | 布尔 | 没有 | 是否要求Zendesk亚博 Support管理员重新访问集成帐户的UI以重置元数据? | |
元数据 | 字符串 | 5000 | 没有 | 关于集成实例的字符串化数据。看到元数据和状态 |
external_亚博电脑端resources数组
数组中的每个外部资源都由一个具有以下属性的对象组成:
名字 | 类型 | 最大字符 | 强制性的 | 评论 |
---|---|---|---|---|
external_id | 字符串 | 255 | 是的 | 外部资源的唯一标识符(字符串)。可能不包括前导或尾随空格。必须为ASCII字符 |
消息 | 字符串 | 65535 | 是的 | 要转换为票据或评论的文本 |
html_message | 字符串 | 65535 | 没有 | HTML版本的消息 |
parent_id | 字符串 | 511 | 没有 | 为其响应的外部资源的唯一标识符。用于选择正确的螺纹。回答可能包括parent_id 或thread_id ,但不是两者都有。看到对话线程 |
thread_id | 字符串 | 511 | 没有 | 此项所属的线程的任意标识符。回答可能包括parent_id 或thread_id ,但不是两者都有。看到对话线程 |
created_at | datetime | 是的 | 当资源在源系统中创建时,使用RFC 3339格式date-time。例子:2015 - 09 - 08 - t22:48:09z” | |
作者 | 对象 | 是的 | 看到作者对象下面 | |
display_info | 数组 | 没有 | 应用程序用于修改代理UI的特定于集成的数据数组。看到display_info对象下面 | |
allow_channelback | 布尔 | 没有 | 如果假 ,可以防止代理对Zendesk Support界面中的消息做额外的注释亚博 |
|
字段 | 数组 | 没有 | 描述票据字段的对象数组。看到领域对象在下面。 | |
file_urls | 数组 | 没有 | 要导入Zendesk支持的文件数组。亚博看到文件的url在下面。 |
作者对象
名字 | 类型 | 最大字符 | 强制性的 | 评论 |
---|---|---|---|---|
external_id | 字符串 | 255 | 是的 | 源服务中用户的唯一标识符。可能不包括前导或尾随空格。 |
名字 | 字符串 | 255 | 没有 | 如果没有提供,默认为外部id |
image_url | 字符串 | 255 | 没有 | URL转换为用户的图像 |
语言环境 | 字符串 | 255 | 没有 | 用户的区域设置。必须是Zendesk支持之一亚博地区。 |
字段 | 数组 | 没有 | 描述用户字段的对象数组。看到领域对象在下面。 |
display_info对象
名字 | 类型 | 最大字符 | 强制性的 | 评论 |
---|---|---|---|---|
类型 | 字符串 | 255 | 是的 | 由集成服务定义的全局唯一类型标识符。例如:GUID或URI |
数据 | 对象 | 65535 | 是的 | 包含显示提示的JSON数据 |
领域对象
字段对象包含字段ID和值。当Zend亚博esk Support代表集成服务创建新票据或用户时,Zendesk将尝试为该对象指定的项设置字段值。在现有的票据上创建注释时,Zendesk Support将忽略字段对象。亚博
字段对象看起来如下所示:
名字 | 评论 |
---|---|
id | 要指定的字段的ID。字符串表示系统字段,字符串或整数表示自定义字段。 |
价值 | 要分配给字段的值 |
ID可以引用一个系统字段。如果是,则ticket支持以下值:
ID | 价值 |
---|---|
主题 | 要创建的票据的主题 |
状态 | 要创建的票据的状态(例如。“开放”)。值应该是识别Zendesk支持亚博状态字符串。 |
类型 | 要创建的票据的类型(例如。“问题”)。值应该是recognized 亚博Zendesk支持类型字符串。 |
优先级 | 要创建的票据的优先级(例如;“高”)。值应该是Zendesk支持优先亚博级字符串。 |
集团 | 应该分配到的Zend亚博esk支持组的ID |
受让人 | 应该分配票据的Zen亚博desk Support用户的ID |
标签 | 应用于票据的标记字符串数组 |
此外,用户还支持如下值:
ID | 价值 |
---|---|
笔记 | 用户须知 |
细节 | 用户详细信息 |
或者,ID可以引用自定义字段。如果是,它可以通过ID或名称引用自定义字段:
ID | 描述 | 价值 |
---|---|---|
任何整数 | 要设置的自定义字段的ID | 应用于自定义字段的值(允许的值因字段而异) |
任何字符串 | 要设置的自定义字段的名称 | 应用于自定义字段的值(允许的值因字段而异) |
文件的url
file urls数组包含将附加到Zendesk Support票据或注释的文件的url。亚博文件url受到一些限制:
- url必须是HTTPS
- url可能是相对url。如果是相对的,则它们将相对于集成服务的清单URL进行解析。
- 文件必须托管在与清单相同的子域上
- 每个外部资源最多支持10个文件
- 每个Zendesk Support帐户的文件最大大小不同亚博
- 文件下载受到超时的影响。亚博Zendesk对整个转换过程施加了超时,包括API调用和文件下载。这意味着缓慢的API调用将限制执行下载的可用时间。
当Zend亚博esk导入外部资源时,它会对每个文件url执行POST请求。请求的主体是一个JSON对象,其中包含关键“元数据”处的集成实例元数据(参见元数据和状态)。文件下载失败并不致命——它们不会停止导入过程。下载和处理一个文件的失败不会影响对同一外部资源的其他文件的处理。
例子
{
“external_亚博电脑端resources”:[
{
“external_id”:“20151210083000 -艾米”,
“消息”:“请帮助。我的打印机着火了。”,
“html_message”:“请帮助。My printer is on fire.",
“created_at”:“2015 - 09 - 08 - t22:48:09z”,
“作者”:{
“external_id”:“a2466”,
“名称”:“艾米”,
“image_url”:“https://scontent.cdninstagram.com/hphotos-xap1/t51.2885-19/s150x150/12424615_209564492716268_42714239_a.jpg”,
“场所”:“德”,
“字段”:[
{“笔记”:喜欢在沙滩上漫步的处女座}
]
},
“display_info”:[{
“类型”:“omniwear.com/integrations/instagram/display/comment/v1”,
“数据”:“{\“优先\”,\“高\“}”
}],
“allow_channelback”:假
},
{
“external_id”:“20151210083200 -鲍勃”,
“消息”:“附近没有沙子、毯子或灭火器。”,
“created_at”:“2015 - 09 - 08 - t22:48:12z”,
“parent_id”:“20151210083000 -艾米”,
“作者”:{
“external_id”:“a2466”,
“名称”:“艾米”,
“image_url”:“https://scontent.cdninstagram.com/hphotos-xap1/t51.2885-19/s150x150/12424615_209564492716268_42714239_a.jpg”,
},
“display_info”:[{
“类型”:“omniwear.com/integrations/instagram/display/comment/v1”,
“数据”:“{\“优先\”,\“中等\“}”
}],
“allow_channelback”:假
}
],
“状态”:“{\“last_message_id \”,\“20151210083200 -鲍勃\“}”
}
对话线程
亚博Zendesk支持使用parent_id
或thread_id
将外部系统中的多个资源链接到会话线亚博电脑端程中,会话线程大致等同于票证。集成服务可以发送任何一个参数,也可以不发送参数。不支持同时提供两者。
- parent_id这描述了一个“回复到”关系。
例子:弗兰克给鲍勃发了一封电子邮件。这个邮件的ID是123。鲍勃回答弗兰克。他的回复ID是234。将有关Bob的电子邮件的数据发送给Zendesk Support时,亚博external_id
是234,而parent_id
是“123”
- thread_id这允许集成服务在相同的Zendesk Support票据中指定多个外部资源。亚博电脑端亚博
例如,如果客户想要在同一个票据中出现“Endgame”字样的所有外部资源,集成服务可以提供“th亚博电脑端read_endgame”作为thread_id
所有符合描述的外部资源。亚博电脑端亚博Zendesk Support会把所有这些都放到同一个票中。
如果没有parent_id
也没有thread_id
时,外部资源成为Zendesk Support中的新票据。亚博
如果有parent_id
并且Ze亚博ndesk Support已经有了一个包含来自父元素内容的票据,外部资源就变成了该票据的注释。如果Z亚博endesk Support没有看到parent_id
在此之前,外部资源将成为一个新票据。
如果有thread_id
Zend亚博esk Support已经为此开了罚单thread_id
,外部资源就变成了该票据的注释。如果Z亚博endesk Support没有看到thread_id
在此之前,外部资源将成为一个新票据。
当Zend亚博esk Support为外部资源创建一个新线程时,该外部资源不具有thread_id
时,新线程的ID为external_id
资源的。例如,假设Zendesk Support处亚博理以下数据:
{“external_id”:“234”,“parent_id”:“123”,“消息”:“嘿,怎么了?”}
Zend亚博esk Support没有看到第123项。它会为“Hey, what's up?”创建一个新票,然后thread_id
将是“234”。
如果Z亚博endesk Support随后进行了以下处理:
{“external_id”:“345”,“thread_id”:“234”,“消息”:“没什么,你呢?”}
然后Zen亚博desk Support将在票据上创建一条评论,“不多,你呢?”
重复的项目
如果Z亚博endesk Support接收到带有external_id
如果它已经看到,它会忽略复制或修改的外部资源。当出现通信故障时,集成服务可以自由地重新发送外部资源。亚博电脑端
然而,多次发送相同的资源不仅会使API负载变大,还意亚博电脑端味着Zendesk Support需要做更多的工作来消除资源重复。亚博出于性能原因,强烈建议集成服务在正常操作中只发送一次每个外部资源。
亚博Zendesk Support还可以识别由channelback创建的外部资源。亚博电脑端集成服务不需要任何逻辑来区分Zendesk Support创建的外部资源与任何其他外部资源。亚博电脑端亚博看后面的通道响应格式获取更多信息。
识别的错误响应
在处理通道集成时,有两种错误。
可恢复的-这些错误是像节流错误或超时错误。亚博Zendesk支持将重试多达5次,并将在下一个周期到来时继续轮询。以下响应码被视为可恢复错误:请求超时(408),内部服务器错误(500),坏网关(502),服务不可用(503)和网关超时(504)
不能挽回的-这包括诸如身份验证或版本不再支持的错误。例子:401年未经授权。亚博Zendesk Support将停止与集成服务通信。亚博Zendesk Support将联系管理员,要求他们升级或重新授权集成服务。
并发性
亚博Zendesk Support按顺序进行轮询调用。集成服务通常不需要担心特定实例中的并发轮询或channelback请求。但是,超时或网络错误可能会导致集成服务并发地为单个集成实例处理多个请求的情况。
超时
亚博Zendesk Support在从集成服务中提取内容时设置了20秒的超时。如果pull调用超时,Zendesk Support亚博将在下次轮询时发送相同的pull状态参数。
幂等性
亚博Zendesk Support定期对集成服务进行API调用。这些呼叫可能由于网络问题或其他问题而失败。亚博Zendesk支持将处理失败,并在适当的情况下重试失败的呼叫。如果集成服务是幂等的,那么这些重试将确保Zendesk Support接收到所有内容。亚博
亚博Zendesk并不要求集成服务API是严格幂等的。具有相同实参的重复调用不需要产生完全相同的响应。为了防止丢失外部资源,对重复调用的每个响应都应该包含前一亚博电脑端个响应返回的所有外部资源(但可以包含更多)。
在本地存储状态的集成服务需要小心确保不会因为集成服务上的状态更改而删除外部资源。亚博电脑端例如,假设集成服务跟踪最近返回的外部资源时间戳的时间戳。它在每次向Zendesk Support返回数据时都会重置这个时间戳。亚博后续响应只包括在该时间戳之后创建的外部资源。亚博电脑端如果集成服务返回外部资源,但Zendesk Support没有记录它们,那么这些外部资源亚博电脑端将永远丢失。亚博亚博Zendesk建议集成服务将版本或时间戳存储在Zendesk Support状态数据中,而不是本地。这样,当Zendesk Sup亚博port重试调用时,集成服务就知道哪些外部资源还没有在Zendesk Support中。亚博电脑端