asundust/wechat-work-push

利用企业微信应用消息向微信发送通知(无需公众号,不需要安装企业微信客户端,低成本推送消息解决方案)

2.0.0 2023-02-11 02:27 UTC

This package is auto-updated.

Last update: 2024-04-04 15:27:39 UTC


README

无需公众号,不需要安装企业微信客户端,低成本推送消息解决方案

另有 Dcat-Admin版

StyleCI build status

Total Downloads Latest Stable Version

前言

灵感启发Server酱,这边只是一个简单的实现。

声明

  • 目前貌似不再支持在微信中接受新消息且调用接口需要Ip白名单,限制很多,除非是老应用(很早时期申请的并已经设置好相关设置)否则本消息通道体验会变差。

客户端支持

功能介绍

目前版本支持灵活设置

  • 支持入参标题、内容、链接、链接标题
  • 一个【企业微信应用】的消息可推送【单个账号/全部人员】)
  • 【单个账号/全部人员】可设置独立的【企业微信应用】配置

另外

  • 目前版本不支持内容文本markdown等格式,仅支持简单文本,后期开发
  • 目前版本无日志功能,后期开发

截图

  • 能直接在通知里看到消息内容

通知效果

安装

安装

composer require asundust/wechat-work-push

配置文件

'wechat-work-push' => [
    'enable' => true,
    // 'config_table' => 'wechat_work_push_configs', // 自定义配置表表名,可不填写,默认wechat_work_push_configs
    // 'user_table' => 'wechat_work_push_users', // 自定义用户表表名,可不填写,默认wechat_work_push_users
    // 'middleware' => 'web', // 自定义中间件组,可不填写,默认web
],

迁移

php artisan migrate

发布菜单

php artisan admin:import wechat-work-push

会生成如下的菜单

  • 企业微信消息推送
  • └用户配置
  • └默认配置

配置

大致流程

  • 在企业微信注册一个企业(无需企业认证)
  • 创建一个内部应用
  • 配置相关配置
  • 开启微信插件
  • 在微信里收到消息

申请流程

申请企业微信

  • 注册成功后,点【管理企业】进入管理界面,选择【应用管理】-【自建】-【创建应用】。

创建应用

  • 应用名称自行想一个,图片Logo自行上传一个,可见范围选择公司名。

填写信息

  • 创建好后复制【AgentId】和【Secret】出来到网站后台的【企业微信应用消息】-【默认配置】填写对应的那一栏上。

  • 进入【我的企业】页面,拉到最下边,可以看到企业ID,复制并填到对应那一栏上,记得保存。

企业ID

  • 如果是用户自定义企业记得是编辑用户填入对应的三栏里。

  • 在列表可以发送测试消息,如果企业微信接收到了消息就成功了。

  • 进入【我的企业】-【微信插件】, 拉到下边扫描二维码,关注以后即可收到推送的消息(可能需要先下载一次企业微信绑定一下微信),此时企业微信和微信应该能同时收到消息。

二维码

设置企业微信不接收消息,微信接收消息。

【企业微信APP】-【左上角三横线】-【右下角齿轮设置】-【新消息通知】-【仅在企业微信中接收消息】-【应用消息】关闭

如果有多个企业身份,【企业微信APP】-【左上角三横线】-【右下角齿轮设置】-【新消息通知】-【其他企业消息提醒】-选择神申请的企业名字改成【仅接收特别提醒的消息】或者【不提醒】-然后切换回自己常用的企业消息。

然后去发送测试通知,应该没什么问题。

这边关于消息通知的设置教程有误,如有问题请联系我。

如果遇到问题的话可以到刚刚创建的应用里发个测试消息(选择【应用管理】-【自建】-【应用名称】-【功能】-【发送消息】)。

另外如果出现接口请求正常,企业微信接受消息正常,个人微信无法收到消息的情况

PC后台管理端:进入【我的企业】-【微信插件】,拉到最下方,勾选【允许成员在微信插件中接收和回复聊天消息 】

另外检查一下上述的【仅在企业微信中接收消息】相关设置

使用

  • 默认路由支持getpost,记得在VerifyCsrfToken里的except添加push/*,以便支持post接口请求。

  • 接口地址为http://{www.abc.com}/push/{推送密钥},标题为title不可空,内容为content可不传,链接为url可不传,链接标题为url_title可不传。 示例:get 地址为http://{www.abc.com}/push/我是密钥?title=测试标题&content=测试内容&url=https://www.baidu.com&url_title=我是百度的测试链接

  • 传入不合法的url可能会导致发送请求超时,不知为何,建议自行测试。

内部调用支持

  • 引用此Trait类\Asundust\WechatWorkPush\Http\Traits\WechatWorkPushSendMessageTrait
  • 使用默认配置发送defaultSend(),使用自定配置发送send(),具体入参看方法。

未来

  • 将开发新包用于支持多个渠道的消息发送

支持

如果觉得这个项目帮你节约了时间,不妨支持一下呗!

alipay wechat

License

The MIT License (MIT)