企业微信消息推送(推送给个人)
短信预约 -IT技能 免费直播动态提醒
官方开发文档:文档 - 企业微信开发者中心
获取access_token
请求方式 | GET | |
请求地址 | https://qyapi.weixin.qq.com/cgi-bin/gettoken | |
请求参数 | 是否必填 | 说明 |
corpid | 是 | 企业ID,参考:术语说明-corpid |
corpsecret | 是 | 应用密钥,参考:术语说明-secret |
获取到的access_token用户后续的操作,作为鉴权调用者的身份。获取到的access_token在有效期内无需重复获取(注意:不能频繁调用gettoken接口,否则会受到频率拦截),待到失效或过有效期,需要重新获取(access_token的有效期通过返回的expires_in来传达)。
public function __construct(){ if (Cache::has('access_token')) { $this->access_token = Cache::get('access_token'); } else { $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s"; $response = $this->curlAll(sprintf($url,$this->corpid,$this->secret)); $response = json_decode($response,true); if($response['errcode'] != 0){ return false; }else{ Cache::put('access_token', $response['access_token'], $response['expires_in']); $this->access_token = $response['access_token']; } }}public function curlAll($url, $post_arr = []){ if ($post_arr) { $post_string = json_encode($post_arr); //参数 } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=utf-8')); if ($post_arr) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); curl_close($ch); return $data;}
返回值说明:
参数 | 说明 |
---|---|
errcode | 出错返回码,为0表示成功,非0表示调用失败。 错误码参考:全局错误码 - 接口文档 - 企业微信开发者中心 |
errmsg | 返回码提示语 |
access_token | 获取到的凭证,最长为512字节 |
expires_in | 凭证的有效时间(秒) |
通过手机号获取用户userId
请求方式 | POST | |
请求地址 | https://qyapi.weixin.qq.com/cgi-bin/user/getuserid | |
请求参数 | 是否必填 | 说明 |
access_token | 是 | 刚获取到的access_token |
mobile | 是 | 用户在企业微信通讯录中的手机号码。长度为5~32个字节 |
public function getUserIdByMobile($mobile){ $url = 'https://qyapi.weixin.qq.com/cgi-bin/user/getuserid?access_token='.$this->access_token; $params = [ 'mobile' => $mobile ]; $response = $this->curlAll($url,$params); $response = json_decode($response,true); if($response['errcode'] != 0){ return false; }else{ return $response['userid']; }}
返回值说明:
errcode | 返回码0表示成功,非0表示失败 错误码参考:全局错误码 - 接口文档 - 企业微信开发者中心 |
errmsg | 对返回码的文本描述内容 |
userid | 成员UserID。对应管理端的帐号,企业内必须唯一。 注意:第三方应用获取的值是密文的userid |
消息发送(发送文本消息)
此接口为发送给个人可以批量发送给多个用户
请求方式 | POST | |
请求地址 | https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN | |
请求参数 | 是否必填 | 说明 |
touser | 否 | 指定接收消息的成员,成员ID列表(多个接收者用‘|’分隔,最多支持1000个)。 特殊情况:指定为"@all",则向该企业应用的全部成员发送 |
toparty | 否 | 指定接收消息的部门,部门ID列表,多个接收者用‘|’分隔,最多支持100个。 当touser为"@all"时忽略本参数 |
totag | 否 | 指定接收消息的标签,标签ID列表,多个接收者用‘|’分隔,最多支持100个。 当touser为"@all"时忽略本参数 |
msgtype | 是 | 消息类型,此时固定为:text |
agentid | 是 | 企业应用的id,整型。企业内部开发,可在应用的设置页面查看;第三方服务商,可通过接口 获取企业授权信息 获取该参数值 |
content | 是 | 消息内容,最长不超过2048个字节,超过将截断(支持id转译) |
safe | 否 | 表示是否是保密消息,0表示可对外分享,1表示不能分享且内容显示水印,默认为0 |
enable_id_trans | 否 | 表示是否开启id转译,0表示否,1表示是,默认0。仅第三方应用需要用到,企业自建应用可以忽略。 |
enable_duplicate_check | 否 | 表示是否开启重复消息检查,0表示否,1表示是,默认0 |
duplicate_check_interval | 否 | 表示是否重复消息检查的时间间隔,默认1800s,最大不超过4小时 |
public function sendTextMsg(array $userIds){ $params = [ "touser" => implode('|',$userIds), "msgtype" => "text", "agentid" => $this->AgentId, "text" => [ "content" => '消息本体', ], ]; $url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='.$this->access_token; $response = $this->curlAll($url,$params); $response = json_decode($response,true); if($response['errcode'] != 0){ return false; } return true; }
返回值说明:
参数 | 说明 |
---|---|
errcode | 返回码 |
errmsg | 对返回码的文本描述内容 |
invaliduser | 不合法的userid,不区分大小写,统一转为小写 |
invalidparty | 不合法的partyid |
invalidtag | 不合法的标签id |
unlicenseduser | 没有基础接口许可(包含已过期)的userid |
msgid | 消息id,用于撤回应用消息 |
response_code | 仅消息类型为“按钮交互型”,“投票选择型”和“多项选择型”的模板卡片消息返回,应用可使用response_code调用更新模版卡片消息接口,24小时内有效,且只能使用一次 |
消息发送支持:文本消息、图片消息、语音消息、视频消息、文件消息、文本卡片消息、图文消息、markdown消息、小程序通知消息这几种应用消息。
来源地址:https://blog.csdn.net/weixin_47407120/article/details/126380535
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341