当前位置: 首页 > news >正文

白城学习做网站的学校做西点网站

白城学习做网站的学校,做西点网站,公司网站需要备案么,内部搜索引擎优化本篇文章聊聊轻量的网络钩子#xff08;WebHook#xff09;工具#xff1a;歪脖虎克。 写在前面 这是一篇迟到很久的文章#xff0c;在 21 年和 22 年的时候#xff0c;我分享过两篇关于轻量的计划任务工具 Cronicle 的文章#xff1a;《轻量的定时任务工具 CronicleWebHook工具歪脖虎克。 写在前面 这是一篇迟到很久的文章在 21 年和 22 年的时候我分享过两篇关于轻量的计划任务工具 Cronicle 的文章《轻量的定时任务工具 Cronicle前篇》、《使用 Docker 和 Traefik 搭建轻量美观的计划任务工具》。随后在文章的评论区和聊天群里以及一些关联的开源项目 issue 区里我总是能够收到关于最佳使用实践的问题。 我一般都会推荐将 Cron 工具和 WebHook 工具结合使用说到具体的 WebHook 的时候我当时一般都推荐“GitHub 上我 fork 的那个开源软件”soulteary/webhook。 四年前在我 fork 的软件仓库几乎不在更新后原始项目的技术债务堆积越来越严重。 最近正好在折腾异步流程比较多的模型应用正好把这个项目也顺带做一个翻新开源分叉。关于项目具体分叉的原因我会在文末再做详细展开。 好啦让我们开始折腾。 前置知识 鉴于文章的读者可能是新用户那么让我们从前置知识的展开开始吧。 什么是 WebHook WebHook 是一种常见的网络软件功能通常用于连接异步的处理过程。直接介绍 WebHook 是什么会比较无趣我们不妨参考 zapier 的 “WebHook 和 API 的异同” 来更直观的了解下 WebHook 的工作模式。 相比较我们熟悉的 API 调用尽管他们都能够将数据从一个地方发送到另外一个地方完成数据的交互但是通常 WebHook 都是异步、单向的不强制要求即刻返回数据结果。 通常情况下支持 WebHook 的功能的软件中能够定义一些自定义回调函数Custom Callback Function来让其他的外部程序在合适的时候调用这些函数让一些被预先定义好的程序被调用特别适合一些场景 比如常见的耗时比较久的程序执行完毕推送信息到用户可以回调一个通知接口。比如常见的多次跳转的支付过程当用户扫码授权后银行接口会回调我们购买商品的平台告诉平台用户付款了。 歪脖虎克soulteary/WebHook是什么 歪脖虎克WebHook是一个用 Go 语言编写的轻量可配置的实用工具它允许你轻松、快速的创建 HTTP 服务钩子。 你可以使用它来执行配置好的命令。并且还能够将 HTTP 请求中的数据如请求头内容、请求体以及请求参数灵活的传递给你配置好的命令、程序。当然它也允许根据具体的条件规则来便触发钩子。 举个例子如果你使用的是 GitHub 或 Gitea可以使用歪脖虎克设置一个钩子在每次你推送更改到项目的某个分支时这个钩子会在你运行服务的设备上运行一个“更新程序部署内容”的脚本。 如果你使用飞书、钉钉、企业微信或者 Slack你也可以设置一个“传出 Webhook 集成”或“斜杠命令”来在你的服务器上运行各种命令。我们可以通过聊天工具的“传入 Webhook 集成”功能处理接口的响应内容直接向你或你的 IM 会话或频道报告执行结果。 歪脖虎克WebHook的项目目标非常简单只做它应该做的事情 接收请求解析请求头、请求体和请求参数检查钩子指定的运行规则是否得到满足最后通过命令行参数或环境变量将指定的参数传递给指定的命令 至于具体的命令从处理数据、存储数据到用远程命令打开空调、关闭电脑一些都由你做主你可以实现任何你想要的事情它只负责在合适的时间点接受执行指令。 准备工作 开始实战之前需要先获取程序文件。 下载“歪脖虎克”程序 目前下载程序有两个方法下载在 GitHub 上通过自动化构建工具构建完毕的内容。 或者使用 Docker 来快速下载程序。 # 下载最新的版本 docker pull soulteary/webhook:latest # 下载指定版本的镜像 docker pull soulteary/webhook:3.4.5 # 下载包含了常用工具的镜像 docker pull soulteary/webhook:extend-3.4.5当我们完成程序下载后就可以开始使用啦。 查看软件文档可选 你可以在开源代码仓库的 docs 目录找到软件的中文使用文档里面记录了钩子的定义方法、具体的配置参数、如何解析和对请求参数进行调用命令参数绑定、各种常见的调用示例方法。 接下来我们以一个简单的日常场景进行配置说明使用 WebHook 和聊天工具进行联动推送通知信息。 设置飞书的 WebHook 功能 其实我们日常使用的各种聊天工具基本都支持使用 WebHook 方式进行交互。 我这里以飞书为例来实现一个能够从外部调用飞书 WebHook 发送消息的机器人。 和其他的聊天软件类似在飞书里创建机器人的最简方案是先创建一个“聊天群组”。 创建完毕后戳开右上角的下拉菜单找到“设置”选项。 进入设置选项后能够看到群组的详细设置。 点击“机器人”设置能够看到一个新的弹出框包含了许多不同类型的机器人。 这里我们选择自定义机器人WebHook。 在机器人配置界面中进行详细的自定义配置比如可以设置个好看的头像或者起个有趣的名字。 点击确定我们就能够得到 WebHook 程序调用所需要的接口地址啦。保存好地址我们一会要用到。 点击完成机器人就被添加到群组中啦。 到这里为止飞书的配置就完啦。 我们可以使用下面的命令来验证接口是否能够被正确调用。 curl -X POST -H Content-Type: application/json --data {msg_type:text,content:{text:嘿你好呀}} \https://open.feishu.cn/open-apis/bot/v2/hook/6dca9854-381a-4bb9-a87b-33a222833e04调用完毕会出现类似下面的返回结果 {StatusCode:0,StatusMessage:success,code:0,data:{},msg:success}在飞书的界面中我们能够看到新出现的消息内容。 接下来我们来把“歪脖虎克”和飞书连接在一起让程序内容能够动态化。 实战开始 在本文中歪脖虎克可以将上面我们调用飞书 WebHook 接口的命令赋予动态化调用的能力并且提供更简单的调用接口甚至提供额外的“接口验证”、关联的自动化处理信息能力。比如当程序被调用的时候能够根据具体的输入信息结合上下文相关的资料调用大模型接口发送一段有趣的故事到群里。 考虑到复现的方便我使用 Docker 环境的 “歪脖虎克”直接使用二进制文件类似只需要调整命令在次不做赘述。 编写调用程序 我们先实现一个简单的程序能够接收来自环境变量中的参数 $TEXT并将参数中的内容传递到上面的飞书调用命令中soulteary/webhook/example/lark/send-lark-message.sh #!/bin/shif [ -n $TEXT ]; thencurl -X POST -H Content-Type: application/json --data {\msg_type\:\text\,\content\:{\text\:\$TEXT\}} \https://open.feishu.cn/open-apis/bot/v2/hook/6dca9854-381a-4bb9-a87b-33a222833e04echo Send message successfully. elseecho TEXT is empty fi将上面的程序保存为 send-lark-message.sh 替换为你自己的飞书 API 地址。然后我们对这个脚本赋予可执行权限 chmod x send-lark-message.sh这里我们也可以将上面的脚本程序替换成某些具备特定功能的程序比如进行数据处理的程序查询或者导出数据库文件的程序调用大模型的能力等等。 编写配置文件 接下来我们来编写一个让“歪脖虎克”来调用这个脚本的程序soulteary/webhook/example/lark/hook-lark.yaml - id: larkexecute-command: ./send-lark-message.shcommand-working-directory: /appinclude-command-output-in-response: trueinclude-command-out-in-response-on-error: truepass-environment-to-command:- source: urlname: textenvname: TEXT我们将上面的内容保存为 hook-lark.yaml“歪脖虎克” 的基本配置就准备完毕啦。 在上面的程序配置中我们做了两件事分别是 创建一个用于触发远程接口飞书API的脚本程序 send-lark-message.sh能够在用户设置环境变量 TEXT 的时候将环境变量内容传递到飞书发送消息参数中。创建了一个 id 是 lark 的 WebHook 配置当 WebHook 被调用时会自动调用位于 /app 目录的 send-lark-message.sh 脚本程序将 URL 请求参数中的 text 内容转换为环境变量传递给脚本程序然后将脚本程序的执行结果展示给调用的用户。 编写容器配置文件或直接调用程序 为了稳定复现我们再编写一个 docker-compose.yml 配置文件 version: 2services:webhook:image: soulteary/webhook:extend-3.4.5ports:- 9000:9000environment:HOST: 0.0.0.0PORT: 9000VERBOSE: trueHOOKS: /app/hook-lark.yamlvolumes:- ./hook-lark.yaml:/app/hook-lark.yaml- ./send-lark-message.sh:/app/send-lark-message.sh保存这个配置文件和上面的两个配置到相同的目录后我们执行 docker compose up程序将运行在本机的 9000 端口。 如果你想直接运行程序可以使用下面的命令 ./webhook --hooks ./example/lark/hook-lark.yaml --verbose 一切顺利你将看到类似下面的日志内容 lark-webhook-1 | [webhook] 2024/04/06 07:52:11 version [3.4.5] starting lark-webhook-1 | [webhook] 2024/04/06 07:52:11 setting up os signal watcher lark-webhook-1 | [webhook] 2024/04/06 07:52:11 attempting to load hooks from /app/hook-lark.yaml lark-webhook-1 | [webhook] 2024/04/06 07:52:11 os signal watcher ready lark-webhook-1 | [webhook] 2024/04/06 07:52:11 found 1 hook(s) in file lark-webhook-1 | [webhook] 2024/04/06 07:52:11 loaded: lark lark-webhook-1 | [webhook] 2024/04/06 07:52:11 serving hooks on http://0.0.0.0:9000/hooks/{id}我们打开浏览器访问 http://0.0.0.0:9000/hooks/lark?texthey将会很快得到下面的内容命令行执行返回 当我们再次打开飞书的界面能够看到消息已经发送到飞书中啦。当然这个工具并非只能连接一个 API 你可以通过它将一堆服务都关联起来进行一些自动化操作或者做一些需要定时、被动触发自动化处理的工作。 还记得之前文章提到的实现“计划任务”的 Cronicle 小工具吗你可以通过类似这样的方法将计划任务中的具体实现都使用“歪脖虎克”来实现而将任务调度和编排交给 Cronicle这样的话你可以分别维护不同的程序甚至在合适的情况下灵活的切换程序为其他的组件。 其他为什么要进行开源分叉 在项目的文档中我提到了主要有两个原因 第一个是原作者维护的 webhook 程序版本是从比较陈旧的 Go 程序版本慢慢升级上来的。 其中包含了许多不再被需要的内容以及非常多的安全问题亟待修正。 第二个是我在几年前曾经提交过一个改进版本的 PR但是因为种种原因被作者忽略与其继续使用明知道不可靠的程序不如将它变的可靠。 这样除了更容易从社区合并未被原始仓库作者合并的社区功能外还可以快速对有安全风险的依赖作更新。除此之外我希望这个程序接下来能够中文更加友好包括文档。 当然开源软件世界里talk is cheap, code is everything.目前看来这个硬分叉项目应该是及格的吧 最后 好啦这篇文章就先写到这里后面相关的文章中我会试着分享一些更有趣的具体偷懒实践。 下篇文章再见。 –EOF 我们有一个小小的折腾群里面聚集了一些喜欢折腾、彼此坦诚相待的小伙伴。 我们在里面会一起聊聊软硬件、HomeLab、编程上、生活里以及职场中的一些问题偶尔也在群里不定期的分享一些技术资料。 关于交友的标准请参考下面的文章 苏洋致新朋友为生活投票不断寻找更好的朋友 当然通过下面这篇文章添加好友时请备注实名和公司或学校、注明来源和目的珍惜彼此的时间 苏洋关于折腾群入群的那些事 本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议欢迎转载、或重新修改使用但需要注明来源。 署名 4.0 国际 (CC BY 4.0) 本文作者: 苏洋 创建时间: 2024年04月06日 统计字数: 7549字 阅读时间: 16分钟阅读 本文链接: https://soulteary.com/2024/04/06/lightweight-webhook-tool.html
http://www.pierceye.com/news/486723/

相关文章:

  • 如何做天猫网站医学ppt模板免费下载网站
  • 网站上的通话功能怎么做网站用不用备案
  • 信誉好的模板网站建设wordpress 伪静态设置
  • wordpress主题外贸网站wordpress检查php版本号
  • 便宜电商网站建设找平面图的网站
  • 大型网站建设制作平台东莞南城房价
  • 360免费视频网站建设mvc网站开发之美
  • 武宁县建设工程招标公告门户网站设计一个网站先做哪些构造
  • 公司网站免费建设2023设计院裁员惨烈程度
  • 别人做的网站不能用设计网站教程
  • 设计师发布作品的网站wordpress仿
  • 品牌微信网站建设柳州做网站制作的公司有哪些
  • 买域名做网站推广都是些什么网站点击后的loading是怎么做的
  • 北京网站优化技术泰州自助建站软件
  • 公司企业网站建设目的站长统计官方网站
  • 集团公司网站模板wordpress更换主题方法
  • 临沂网站建设电话建设网站审批手续
  • 国外做健康的网站专门做鞋子的网站吗
  • 手机网站支持微信支付吗北京短视频拍摄
  • 做静态网站工资多少网站前期推广
  • 做预算查价格的网站是哪个好网站开发维护多少钱
  • 个人互动网站365建筑人才网
  • 天津外贸公司网站制作淘客cms网站建设
  • 怎样做微网站网站建设pc指什么软件
  • 四川 网站建设wordpress腾讯地图插件下载
  • 宁波网站公司哪家好百度关键词搜索量排名
  • 北京国税局网站做票种核定时眉山网站优化
  • 网站备案授权书成都网站建设十强企业
  • 网站流量图怎么做的wordpress单号管理系统
  • 生活服务网站建设方案天猫店铺装修做特效的网站