无需公众号,不需要安装企业微信客户端,低成本推送消息解决方案
另有 Dcat-Admin版
灵感启发Server酱,这边只是一个简单的实现。
- 目前貌似不再支持在微信中接收新消息且调用接口需要IP白名单,只能在企业微信APP收消息的样子,限制很多,除非是老应用(很早时期申请的并已经设置好相关设置)否则本消息通道体验会变差。
目前版本支持灵活设置
- 支持入参标题、内容、链接、链接标题
- 一个【企业微信应用】的消息可推送【单个账号/全部人员】)
- 【单个账号/全部人员】可设置独立的【企业微信应用】配置
另外
- 目前版本不支持内容文本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,复制并填到对应那一栏上,记得保存。
-
如果是用户自定义企业记得是编辑用户填入对应的三栏里。
-
在列表可以发送测试消息,如果企业微信接收到了消息就成功了。
-
进入【我的企业】-【微信插件】, 拉到下边扫描二维码,关注以后即可收到推送的消息(可能需要先下载一次企业微信绑定一下微信),此时企业微信和微信应该能同时收到消息。
设置企业微信不接收消息,微信接收消息。
【企业微信APP】-【左上角三横线】-【右下角齿轮设置】-【新消息通知】-【仅在企业微信中接收消息】-【应用消息】关闭
如果有多个企业身份,【企业微信APP】-【左上角三横线】-【右下角齿轮设置】-【新消息通知】-【其他企业消息提醒】-选择神申请的企业名字改成【仅接收特别提醒的消息】或者【不提醒】-然后切换回自己常用的企业消息。
然后去发送测试通知,应该没什么问题。
这边关于消息通知的设置教程有误,如有问题请联系我。
如果遇到问题的话可以到刚刚创建的应用里发个测试消息(选择【应用管理】-【自建】-【应用名称】-【功能】-【发送消息】)。
另外如果出现接口请求正常,企业微信接受消息正常,个人微信无法收到消息的情况
PC后台管理端:进入【我的企业】-【微信插件】,拉到最下方,勾选【允许成员在微信插件中接收和回复聊天消息 】
另外检查一下上述的【仅在企业微信中接收消息】相关设置
-
默认路由支持
get
和post
,记得在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()
,具体入参看方法。
- 将开发新包用于支持多个渠道的消息发送
如果觉得这个项目帮你节约了时间,不妨支持一下呗!