向票务API发出请求
您可以使用Zendesk RES亚博T API来读取、更新和创建Zendesk产品中的数据。本教程向您展示如何开始使用API。它提供了使用API完成以下常见任务的示例:
确保在Admin Center下启用对API的密码或令牌访问应用程序和集成>api>亚博Zendesk api.有关更多信息,请参见使用API仪表板.
本文使用Python是因为它的语法相对清晰易读。如果你用另一种语言工作,或者你刚刚开始学习,你应该仍然能够跟上。
如果您只是想跟随教程,而不想自己尝试这些请求,您可以跳过。
如果您想自己尝试这些请求,则需要使用Python版本3。要在系统上安装它,请参见http://www.python.org/download/.
同时下载并安装请求图书馆如果你还没有的话。Requests库极大地简化了Python中的HTTP请求。安装方法:在Mac的终端或Windows的命令提示符中执行如下命令:
$ pip3安装请求
注意:美元符号($)表示命令提示符。不要进去。
如果您使用Python 3.3或更早版本,请参见这些指令安装库。然后使用皮普
而不是pip3
在命令行上。
最后,在复制本教程中的示例时,请确保按照所示的方式缩进行。缩进在Python中很重要。
免责声明:亚博Zendesk提供本文仅用于指导目的。亚博Zendesk不支持或保证代码。亚博Zendesk也不能为Python等第三方技术提供支持。
从Zendesk产品获取数据亚博
方法获取Zendesk Support实例中的所有组亚博组API.
在试用该脚本之前,请确保在Zendesk Support实例中定义了几个组。亚博看到创建、管理和使用组.将脚本中的以下占位符替换为您的信息:your_subdomain,your_email_address,your_password.要了解脚本的工作原理,请参阅内联注释(在Python中以#开头)以及后面的解释。
进口请求
#集请求参数
url=“https://your_subdomain.亚博zendesk.com/api/v2/groups.json”
用户=“your_email_address”
松材线虫病=“your_password”
#做的HTTP得到请求
响应=请求.得到(url,身份验证=(用户,松材线虫病))
#检查为HTTP其他代码200
如果响应.status_code! =200:
打印(的状态:,响应.status_code,“请求有问题。退出。”)
退出()
#解码的JSON响应到字典并使用数据
数据=响应.json()
#例子1:打印这个名字的第一组在列表
打印('第一组= ',数据[“组织”][0][“名字”])
#例子2:打印这个名字的每组在列表
group_list=数据[“组织”]
为集团在group_list:
打印(集团[“名字”])
你可以使用API的令牌而不是使用密码来发出API请求。从Zendesk Admin Center界面获取一个亚博API令牌应用程序和集成>api>亚博Zendesk api.要在脚本中使用标记,请附加字符串“/令牌”
(不是实际的令牌值)到您的电子邮件地址用户变量,并将令牌值赋给松材线虫病变量,如下:
用户=“your_email_address”+“/令牌”
松材线虫病=“your_api_token”
将脚本保存在一个文件夹中,使用命令行导航到该文件夹,然后从命令行运行脚本。例子:
python3 get_groups.py
例子:
它是如何工作的
脚本使用以下URL进行API调用:
url=“https://your_subdomain.亚博zendesk.com/api/v2/groups.json”
看到清单组获取有关API的详细信息。
脚本使用请求库进行身份验证并发出HTTP get请求:
响应=请求.得到(url,身份验证=(用户,松材线虫病))
接下来,脚本解码API返回的JSON并将数据打包到Python字典中:
数据=响应.json()
一个字典只是键/值对的集合。将JSON解码为字典,可以使用常规Python操作符和表达式处理数据。
查阅Zendesk RE亚博ST API文档,了解字典中有什么。例如,根据组列表文档中,调用API返回的JSON具有以下结构:
解码这个JSON会生成一个Python字典,其中包含一个名为“groups”的键。doc中的方括号告诉您的值组是一个列表。列表中的每一项都是组属性的字典。有了这些信息,就可以访问字典中的数据了。例如,下面的语句访问并打印字典中第一个组的名称:
打印('第一组= ',数据[“组织”][0][“名字”])
下面的语句遍历字典中的所有组并输出每个组的名称:
group_list=数据[“组织”]
为集团在group_list:
打印(集团[“名字”])
还可以将数据写入文件。用下面的代码片段替换脚本中前面的示例:
group_list=数据[“组织”]
输出=''
为集团在group_list:
输出+ =集团[“名字”]+' \ n '#将每个名称添加到输出变量中
与开放(“groups.txt”,模式=' w ',编码=“utf - 8”)作为f:
f.写(输出)
打印(“完成”。)
该代码片段在与脚本相同的文件夹中创建了一个名为groups.txt的文件,并在文件的一列中写入组名。
本节中描述的脚本可以很好地从Zendesk获取多达24条左右的记录。亚博但是,为了检索几百条或几千条记录,必须修改脚本以执行更多的任务。想知道怎么做,请看使用Zendesk API和Python获取大型数据集亚博.
要探索如何从Zendesk产品获取其他类型的数据,请参阅亚博亚博Zendesk REST API文档.
更新Zendesk产品中的数据亚博
下面的示例在Zendesk Support中使用亚博票API.
在尝试脚本之前,更改id变量的值并替换以下占位符:your_subdomain,your_email_address,your_password.要了解脚本的工作原理,请参阅内联注释以及后面的解释。
进口json
进口请求
#票更新
id=“103”
身体=感谢您选择Acme喷气发动机公司
#包的数据在匹配期望的字典JSON
数据={“票”:{“评论”:{“身体”:身体}}}
#编码要创建的数据JSON有效载荷
有效载荷=json.转储(数据)
#集请求参数
url=“https://your_subdomain.亚博zendesk.com/api/v2/tickets/”+id+. json的
用户=“your_email_address”
松材线虫病=“your_password”
头={“内容类型”:“application / json”}
#做的HTTPput请求
响应=请求.把(url,数据=有效载荷,身份验证=(用户,松材线虫病),头=头)
#检查为HTTP其他代码200
如果响应.status_code! =200:
打印(的状态:,响应.status_code,“请求有问题。退出。”)
退出()
#报告成功
打印(“成功向票证#{}添加注释”.格式(id))
将脚本保存在一个文件夹中,使用命令行导航到该文件夹,然后从命令行运行脚本。例子:
python3 put_comment.py
在Zendesk Support中打开亚博票证以查看新评论。
它是如何工作的
除了导入请求库,脚本还导入了一个名为json的库:
进口json
您将使用该库将脚本中的数据转换为用于put请求的JSON。json库是标准的Python库。您不需要下载并安装它。
接下来,脚本将数据打包到与API期望的JSON结构相匹配的Python字典中。参考REST API文档获取预期的JSON。例如,如果你想给票据添加注释,API需要以下JSON:
{
“票”:{
“评论”:{
“身体”:“新发表评论。”
}
}
}
因此,在Python中,将数据打包为与JSON匹配的嵌套字典:
数据={“票”:{“评论”:{“身体”:身体}}}
对数据进行编码以创建JSON有效负载:
有效载荷=json.转储(数据)
如果打印负载变量,将得到以下结果:
{“票”:{“评论”:{“身体”:“感谢您选择Acme喷气发动机公司。”}}}
您应该始终对数据进行编码,以防止引号等字符破坏JSON。例如,下面语句体中的引号会提前结束字符串并导致错误:
“身体”:"学习常见问题解答" > < / >。”
对数据进行编码,转义引号。例如:"Learn more."
接下来,设置请求参数。下面的URL是用来调用API的:
url=“https://your_subdomain.亚博zendesk.com/api/v2/tickets/”+id+. json的
看到更新票获取有关API的详细信息。
将JSON有效负载传递给put请求,以及其他请求参数:
响应=请求.把(url,数据=有效载荷,身份验证=(用户,松材线虫病),头=头)
提示如果您希望在脚本中重复调用API——例如,更新票证集合——您可以创建请求会话并在请求之间持久化某些参数。例如,用下面的代码片段替换上面的put请求,它会创建并配置一个会话:
会话=请求.会话()
会话.身份验证=(用户,松材线虫病)
会话.头=头
重复请求与会话.把(),不是请求.把()
...响应=会话.把(url,数据=有效载荷)
要探索在Zendesk产品中更新其他类型的数据,请参阅亚博亚博Zendesk REST API文档.
创建数据
的方法创建一个票据票API.
在试用脚本之前,用您的信息替换以下占位符:your_subdomain,your_email_address,your_password.使用API创建内容与更新内容几乎相同,不同之处在于使用post请求而不是put请求。
进口json
进口请求
#新机票信息
主题=“我的打印机着火了!”
身体=“烟的颜色很鲜艳。”
#包的数据在匹配期望的字典JSON
数据={“票”:{“主题”:主题,“评论”:{“身体”:身体}}}
#编码要创建的数据JSON有效载荷
有效载荷=json.转储(数据)
#集请求参数
url=“https://your_subdomain.亚博zendesk.com/api/v2/tickets.json”
用户=“your_email_address”
松材线虫病=“your_password”
头={“内容类型”:“application / json”}
#做的HTTPpost请求
响应=请求.帖子(url,数据=有效载荷,身份验证=(用户,松材线虫病),头=头)
#检查为HTTP其他代码201(创建)
如果响应.status_code! =201:
打印(的状态:,响应.status_code,“请求有问题。退出。”)
退出()
#报告成功
打印(“成功创建门票。”)
将脚本保存在一个文件夹中,使用命令行导航到该文件夹,然后从命令行运行脚本。例子:
python3 post_ticket.py
转到Zendesk支持的未分配票证视图查看新票证。亚博
它是如何工作的
脚本使用以下URL进行API调用:
url=“https://your_subdomain.亚博zendesk.com/api/v2/tickets.json”
看到创建门票获取有关API的详细信息。
要了解脚本的工作原理,请参阅中的解释更新Zendesk产品中的数据亚博.它们基本上是一样的,除了post request。
要探索在Zendesk产品中添加其他类型的数据,请参阅亚博亚博Zendesk REST API文档.