PGYER文件中心

蒲公英 Webhook 介绍

Webhook 功能介绍

Webhook 就是用户通过自定义回调的方式来改变 Web 应用的一种行为,这些回调可以由不是该 Web 应用官方的第三方用户或者开发人员来维护,修改。通过 Webhook,你可以自定义一些行为通知到指定的 URL 去。

在蒲公英中,使用 Webhook 功能,开发者可以将蒲公英上的部分事件消息,同步到另一个平台(或网站)上去。例如:开发者在蒲公英平台中,上传了一个应用版本、或者收到一条用户反馈时,蒲公英都会将这个消息推送到开发者制定的一个指定 URL 上去。

目前,蒲公英支持如下三种事件类型:

  1. 应用上传事件(包括后续的新版本上传)
  2. 应用收到新的用户反馈
  3. 应用收到 Crash Log

在蒲公英上开启 Webhook 功能

首先进入 应用管理,点击一个 应用名称,之后在点击 设置 -> Webbook 中,即可看到针对该应用的 Webhook 设置。第一次进入该页面时,会直接显示出创建 Webhook 的页面。

按照提示填写以下内容:

  • Webhook 名称 给即将创建的 Webhook 起一个名字。例如:WebhookTest 等
  • URL 设置蒲公英在发生事件时,将事件的消息推送到哪里。也就是说,接受蒲公英事件的 URL。如果是需要集成纷纭或 HiWork 等服务 ,该 URL 由纷纭或 HiWork 提供。
  • 选择要推送的功能 设置蒲公英将哪些事件消息发送给上面填写的 URL
  • Webhook 状态 可以打开或者关闭蒲公英发送事件

填写好之后,点击 保存信息 按钮,即可成功创建一条 Webhook 。这样,蒲公英就会在上述相关事件发生时,将消息推送到刚刚设置的 URL 上。

Webhook 的注意事项和调试方式

蒲公英支持对同一个应用设置多个 Webhook,开发者可以重复上述过程,再次创建即可。但是同一个应用最多只能添加 3 个 Webhook。

如果开发者是自己开发 Webhook 服务或者仅仅想测试,推荐使用 Request 服务(http://request.lesschat.com/)。

第三方 Webhook 服务开发

蒲公英针对第三方的 Webhook 服务,当蒲公英发送事件时,使用 HTTP POST 请求,Content-Typeapplication/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 <redacted> 146 CoreFoundation 0x21edddb9 <redacted> 1016 ..."
}

第三方 Webhook 服务可以使用获取 POST RAW 数据的方式来获取消息数据。例如,在 PHP 中可以用如下方式获取数据:

$data = file_get_contents('php://input');

或者:

$data = $HTTP_RAW_POST_DATA;

获取到数据之后,再进行 JSON DECODE 即可解析出具体的数据,例如:

$info = json_decode($data, true);

之后,第三方 Webhook 服务即可将获取到的消息数据,根据自身的业务逻辑进行相应处理,例如可以显示在自己平台的消息流、或通知中心等。