优点:
- 一次配置,持续使用
- 配置好以后,只需要微信就能收消息,不再需要安装企业微信客户端
PS:消息接口无需认证即可使用,个人用微信就可以注册
具体操作
第一步,注册企业
用电脑打开企业微信官网,注册一个企业
第二步,创建应用
注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」
应用名称填入「Server酱」,可见范围选择公司名。
创建完成后进入应用详情页,可以得到应用ID(
agentid
)①,应用Secret( secret
)②。
注意:secret
推送到手机端时,只能在企业微信客户端
中查看。
第三步,添加可信IP
2022年6月20日之后创建的应用,需要额外配置可信IP。
在「应用详情页」的最下方,开发者接口分类中,找到「企业可信IP」,点击「配置」,并填入服务器IP即可。
第四步,获取企业ID
进入「我的企业」页面,拉到最下边,可以看到企业ID③,复制并填到上方。
推送UID直接填 @all
,推送给公司全员。
第五步,推送消息到微信
进入「我的企业」 → 「微信插件」,拉到下边扫描二维码,关注以后即可收到推送的消息。
PS:如果出现接口请求正常,企业微信接受消息正常,个人微信无法收到消息
的情况:
-
进入「我的企业」 → 「微信插件」,拉到最下方,勾选 “允许成员在微信插件中接收和回复聊天消息”
-
在企业微信客户端 「我」 → 「设置」 → 「新消息通知」中关闭 “仅在企业微信中接受消息” 限制条件
第六步,通过以下函数发送消息:
PS:为使用方便,以下函数没有对 access_token
进行缓存。对于个人低频调用已经够用。带缓存的实现可查看 index.php
中的示例代码(依赖Redis实现)。
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
<?php // config // ====================================== define('SENDKEY', 'set_a_sendkey'); define('WECOM_CID', '企业微信公司ID'); define('WECOM_SECRET', '企业微信应用Secret'); define('WECOM_AID', '企业微信应用ID'); define('WECOM_TOUID', '@all'); // 以下配置需要有 redis 服务和 phpredis 扩展 define('REDIS_ON', false); define('REDIS_HOST', '127.0.0.1'); define('REDIS_PORT', '6379'); define('REDIS_EXPIRED', '7000'); define('REDIS_KEY', 'wecom_access_token'); // code // ====================================== if (strlen(@$_REQUEST['sendkey']) < 1 || strlen(@$_REQUEST['text']) < 1 || @$_REQUEST['sendkey'] != SENDKEY ) { die('bad params'); } header("Content-Type: application/json; charset=UTF-8"); echo send_to_wecom(@$_REQUEST['text'], WECOM_CID, WECOM_SECRET, WECOM_AID, WECOM_TOUID); function redis() { if (!isset($GLOBALS['REDIS_INSTANCE']) || !$GLOBALS['REDIS_INSTANCE']) { $GLOBALS['REDIS_INSTANCE'] = new Redis(); $GLOBALS['REDIS_INSTANCE']->connect(REDIS_HOST, REDIS_PORT); } return $GLOBALS['REDIS_INSTANCE']; } function send_to_wecom($text, $wecom_cid, $wecom_secret, $wecom_aid, $wecom_touid = '@all') { $access_token = false; // 如果启用redis作为缓存 if (REDIS_ON) { $access_token = redis()->get(REDIS_KEY); } if (!$access_token) { $info = @json_decode(file_get_contents("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=".urlencode($wecom_cid)."&corpsecret=".urlencode($wecom_secret)), true); if ($info && isset($info['access_token']) && strlen($info['access_token']) > 0) { $access_token = $info['access_token']; } } if ($access_token) { $url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='.urlencode($access_token); $data = new \stdClass(); $data->touser = $wecom_touid; $data->agentid = $wecom_aid; $data->msgtype = "text"; $data->text = ["content"=> $text]; $data->duplicate_check_interval = 600; $data_json = json_encode($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); if ($response !== false && REDIS_ON) { redis()->set(REDIS_KEY, $access_token, ['nx', 'ex'=>REDIS_EXPIRED]); } return $response; } return false; } |
安装条件
- PHP7.4+
- JSON &&CURL 模块
- 可访问外部网络的运行环境
安装说明
- 用编辑器打开
index.php
,按提示修改头部 define 的值( sendkey自己随意写,其他参见企业微信配置文档 ) - 将
index.php
上传运行环境 - 通过
http://指向运行环境的域名/?sendkey=你设定的sendkey&text=你要发送的内容
即可发送内容
评论前必须登录!
立即登录 注册