转载于地址:
Kayako是PHP中非常流行的客服处理系统,包含工单模板、在线聊天模块、新闻模板、知识库模块、疑难解答模块以及电邮处理模块。
为什么REST API?
REST 是英文 Representational State Transfer 的缩写,是近年来迅速兴起的,一种基于 HTTP,URI,以及 XML 这些现有协议与标准的,针对网络应用的设计和开发方式。它可以降低开发的复杂度,提高系统的可伸缩性。
在 REST 中,开发人员显式地使用 HTTP 方法,对系统资源进行创建、读取、更新和删除的操作:
- 使用 POST 方法在服务器上创建资源
- 使用 GET 方法从服务器检索某个资源或者资源集合
- 使用 PUT 方法对服务器的现有资源进行更新
- 使用 DELETE 方法删除服务器的某个资源
简单的说就是提供REST的系统以资源为中心,构建并提供一系列的Web服务、数据交互作用。让资源可以被读取、添加、更新和删除。
Kayako REST API
Kayako REST API可让您快速开发应用程序连接和整合Kayako客服系统。
建立一个自定义插件时,Kayako连接到另一个应用程序或者从Kayako提取数据到其他内部系统中,REST API可让您检索,添加和修改数据在Kayako客服系统。在Kayako中几乎每一个对象(无论是工单,用户,员工等)都可以使用API来操作。
命令 | 动作 | 描述 |
POST | 创建 | 创建一个项目(例如工单) |
GET | 读取 | 获取一个项目或项目列表(例如工单列表) |
PUT | 修改 | 修改一个现有的项目或项目列表(例如改变一个存在的工单的拥有者) |
DELETE | 删除 | 永久删除一个项目或一组项目(比如删除一个用户) |
启用Kayako REST API
在Kayako后台启用API:
Settings -> General -> API Settings -> Enable API Interface
启用后,通过左侧菜单查看API信息:
Options -> Rest API -> API Information
API信息中的,API URL就是作为接受URL的网址。例如:
http://yourkayakodomain.com/path-to-helpdesk/api/
Kayako REST API 验证签名
每一次请求都必须带有每个请求的API公钥和API密钥,以及随机生成的salt字符串和签名。
参数 | 如何得到? | 信息 |
API key 公钥 | 后台管理员控制面板(REST API 信息中)。 | |
Salt 随机字符串 | 为API的每个请求随机生成的字符串。 | |
Signature 签名 | 为API的每个请求通过Salt 随机字符串和Secret key 密钥作为Hash散列键计算出的签名字符串。 | 签名是通过Salt 随机字符串和Secret key 密钥作为Hash散列键的SHA256散列方法计算得出。 |
Secret key 密钥 | 后台管理员控制面板(REST API 信息中)。 | Secret key 密钥不需要出现在API请求中。它只是用作键来计算签名。 |
请求的URL就想这样:
https://yourkayakodomain.com/api/index.php ?/Module/Controller/Action ¶meterA=valueA ¶meterB=valueB ¶meterC=valueC &apikey=95fdbc1c-0f5b-6914-05b6-5ee357a02c52 &salt=1212713324 &signature=utG63XYZi4ZKwdDVhxQQEB3yAmsw7F1lII7jMmiPlbw%3D
Kayako REST API 生成签名
提供PHP代码:
转载于:<?php $apiKey = "95fdbc1c-0f5b-6914-05b6-5ee357a02c52";$secretKey = "Mjk0OTY0M2QtOGQzYy1hNjk0LWI1OTEtMmJlNTkyOTlkMzgxNDllY2FmNTAtMDRjZS0xZGE0LThkOWQtZTBhYWRlNDFlMGEw";// Generates a random string of ten digits$salt = mt_rand();// Computes the signature by hashing the salt with the secret key as the key$signature = hash_hmac(‘sha256′, $salt, $secretKey, true);// base64 encode…$encodedSignature = base64_encode($signature);// urlencode…$encodedSignature = urlencode($encodedSignature);echo "Voila! A signature: " . $encodedSignature;echo "<br>Salt: ".$salt;?>