WebHooks实践
in PHPlinux with 0 comment

WebHooks实践

in PHPlinux with 0 comment

WebHook实践

webhook介绍

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

其实说白了就是钩子,通常由一些事件触发。

例如 Github码云 的 webhook ,你可以自定义:当你本地的代码 push 时,就会自动触发这个钩子,它会向你指定的 URL 发送一个请求。假设请求由服务器接受后并由脚本自动 pull,由此就可以实现代码本地提交,服务器自动部署。

免去了 提交代码后还得再 SSH 到服务器只为了 pull 一下代码的功夫了。

又或者其他用户在你的项目下提出 Issue 或评论时,自动触发钩子,发送请求到 sm ,消息将由此接口主动推送到你的微信中。

如图:
Github 中 webhook 的请求和响应详情 ↓
enter image description here

我自己在服务器上脚本的日志记录 ↓
enter image description here

通过 sm 推送到微信中的截图 ↓
enter image description here
enter image description here

使用

文档和帮助

详细的帮助和文档见:

大概就是这样的:
在项目的 Setting 中找到左侧的 Webhooks ,按照提示填写你的接口 URL,需要在什么时候发送请求,ContentType 等参数。
然后你就在你的服务器配置这么一个简单的接口,接收来自 Github 和码云的请求,并处理就可以了。怎么处理那就是你自己的事情了。

如果你懒得写接口。这里推荐使用的我的接口:ServerMessenger ,绑定微信后可以将消息推送到你的微信上,当然这样的话只能起到通知的作用。详情可以去参考 ServerMessenger - Help

脚本

接口如何实现我就不写了。网上一抓一大把。还有现成的第三方服务可以选择。

我服务器上处理请求的脚本,仅供参考:

DATE=`date '+%Y-%m-%d %T'`
echo '======================================================================'
echo $DATE
cd /path/to/your/project/
A=$(sudo -u www git pull)
echo '——————————————————接口返回结果———————————————————————'
#发送curl请求到sm,将结果通知到我的微信上
curl -d "title=webhook_result&body=$A&app_key=your_app_key" "http://sm.rooot.me/send"
echo ''
echo '——————————————————git pull结果———————————————————————'
echo $A

最后

Responses
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif