蒲公英文档中心
webhook 就是用户通过自定义回调的方式来改变 web 应用的一种行为,这些回调可以由不是该 web 应用官方的第三方用户或者开发人员来维护,修改。通过 webhook,你可以自定义一些行为通知到指定的 url 去。
在蒲公英中,使用 webhook 功能,开发者可以将蒲公英上的部分事件消息,同步到另一个平台(或网站)上去。例如:开发者在蒲公英平台中,上传了一个应用版本、或者收到一条用户反馈时,蒲公英都会将这个消息推送到开发者制定的一个指定 url 上去。
目前,蒲公英支持如下三种事件类型:
首先进入 应用管理
,点击一个 应用名称
,之后在点击 设置
-> webbook
中,即可看到针对该应用的 webhook 设置。第一次进入该页面时,会直接显示出创建 webhook 的页面,如图所示:
在图中,按照提示填写以下内容:
webhook 名称
给即将创建的 webhook 起一个名字。例如:webhooktest 等url
设置蒲公英在发生事件时,将事件的消息推送到哪里。也就是说,接受蒲公英事件的 url。如果是需要集成纷纭或 hiwork 等服务 ,该 url 由纷纭或 hiwork 提供。选择要推送的功能
设置蒲公英将哪些事件消息发送给上面填写的 urlwebhook 状态
可以打开或者关闭蒲公英发送事件填写好之后,点击 保存信息
按钮,即可成功创建一条 webhook 。这样,蒲公英就会在上述相关事件发生时,将消息推送到刚刚设置的 url 上。
蒲公英支持对同一个应用设置多个 webhook,开发者可以重复上述过程,再次创建即可。但是同一个应用最多只能添加 3 个 webhook。
如果开发者是自己开发 webhook 服务或者仅仅想测试,推荐使用 request
服务(http://request.lesschat.com/)。
蒲公英针对第三方的 webhook 服务,当蒲公英发送事件时,使用 http post
请求,content-type
为 application/json
,数据格式为 json
。 例如,有应用的新版本上传时,蒲公英发送的数据格式类似如下形式(实际情况下会有稍许不同):
{
"action": "应用更新",
"title": "oooplay",
"link": "https://www.pgyer.com/oooplay_test",
"message": "您的应用oooplay有了新的版本(2.4)更新。",
"type": "updateversion",
"os_version": "2.4",
"build_version": "139",
"created": "2015-10-09 11:25:16",
"updated": "2015-10-09 11:25:16",
"timestamp": 1444361118,
"appsize": "2238036",
"device_type": 'ios',
"notes": "修复了一些小弱智的小bug"
}
当应用收到『摇一摇反馈』信息时,蒲公英会发送如下类似格式的数据(实际情况下会有稍许不同):
{
"action": "应用反馈",
"title": "oooplay",
"link": "https://www.pgyer.com/oooplay_test",
"message": "您的应用oooplay收到一条新的反馈信息",
"type": "feedback",
"os_version": "2.4",
"build_version": "139",
"created": "2015-10-09 11:25:16",
"updated": "2015-10-09 11:25:16",
"timestamp": 1444361118,
"appsize": "2238036",
"device_type": 'ios',
"notes": "修复了一些小弱智的小bug"
}
当应用收到 crash log 信息时,蒲公英会发送如下类似格式的数据(实际情况下会有稍许不同):
{
"action": "crash log",
"title": "oooplay",
"link": "https://www.pgyer.com/oooplay_test",
"message": "您的应用oooplay收到了新的crash log",
"type": "crashlog",
"os_version": "2.4",
"build_version": "139",
"created": "2015-10-09 11:25:16",
"updated": "2015-10-09 11:25:16",
"timestamp": 1444361118,
"appsize": "2238036",
"device_type": 'ios',
"notes": "libsystem_kernel.dylib 0x3094c49c mach_msg_trap 20 corefoundation 0x21edf7f3 146 corefoundation 0x21edddb9 1016 ..."
}
第三方 webhook 服务可以使用获取 post raw 数据的方式来获取消息数据。例如,在 php 中可以用如下方式获取数据:
$data = file_get_contents('php://input');
或者:
$data = $http_raw_post_data;
获取到数据之后,再进行 json decode 即可解析出具体的数据,例如:
$info = json_decode($data, true);
之后,第三方 webhook 服务即可将获取到的消息数据,根据自身的业务逻辑进行相应处理,例如可以显示在自己平台的消息流、或通知中心等。