Webhook 就是用户通过自定义回调的方式来改变 Web 应用的一种行为,这些回调可以由不是该 Web 应用官方的第三方
用户或者开发人员来维护,修改。通过 Webhook,你可以自定义一些行为通知到指定的 URL 去。
在蒲公英中,使用 Webhook 功能,开发者可以将蒲公英上的部分事件消息,同步到另一个平台(或网站)上去。例如:
开发者在蒲公英平台中,上传了一个应用版本、或者收到一条用户反馈时,蒲公英都会将这个消息推送到开发者制定的
一个指定 URL 上去。
目前,蒲公英支持如下6种事件类型:
填写Webhook名称,选择Webhook类型,如需要将消息通知至企业OA系统,现支持企业微信群,钉钉群,飞书群;
如需要发送消息至其他URL,请选择“其他指定URL”。
如选择企业OA办公系统,如:已选择“企业微信群”,请打开企业微信,找到需要接受消息的群组;
(1)打开群组的操作菜单,选择“添加群机器人”
(2)点击“添加机器人”,输入机器人名称并添加
(3)返回至蒲公英Webhook创建也面,将获取到的URL地址,复制输入至“Webhook URL”
(1)点击群组回话页右上角设置,打开“智能群助手”
(2)点击添加“自定义机器人”,输入机器人名称及设置“安全设置—自定义关键词”为“应用”,点击完成
(3)返回至蒲公英消息机器人创建也面,将获取到的URL地址,复制输入至“Webhook URL”
(1)打开群组设置,找到群机器人,点击“添加机器人”,选择“自定义机器人”并添加
(2)输入机器人名称及描述,点击“下一步”:
(3)配置飞书群机器人“安全设置—自定义关键词”为“应用”,并复制Webhook 地址,点击“完成”;将复制的Webhook URL输入至蒲公英Webhook URL。
如选择“其他指定URL”,请输入接收推送消息的URL;这里如果是需要集成纷纭或 HiWork 等服务 ,该 URL 由纷纭或
HiWork 提供。如果需要开发Webhook服务,请查阅文档末尾“其他事项—Webhook服务开发“。
选择需要订阅的应用消息内容;设置“Webhook状态”为“开启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 <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 服务即可将获取到的消息数据,根据自身的业务逻辑进行相应处理,例如可以显示在自己平台的消息流、或通知中心等。