使用企业微信发送应用消息中的小程序通知消息(只允许绑定了小程序的应用发送)。
目录
请求方式
请求地址
发送通知
参数说明
请求实例
返回
返回示例
返回参数说明
实现效果
总结
请求方式
POST
请求地址
https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
此处的access_token为企业凭证,可查看《企业微信应用文本消息》中企业凭证。
发送通知
参数说明
参数 | 是否必须 | 说明 |
touser | 否 | 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个) |
toparty | 否 | 部门ID列表,多个接收者用‘|’分隔,最多支持100个。 |
totag | 否 | 标签ID列表,多个接收者用‘|’分隔,最多支持100个。 |
msgtype | 是 | 消息类型,此时固定为:miniprogram_notice |
appid | 是 | 小程序appid,必须是与当前应用关联的小程序 |
page | 否 | 点击消息卡片后的小程序页面,最长1024个字节,仅限本小程序内的页面。该字段不填则消息点击后不跳转。 |
title | 是 | 消息标题,长度限制4-12个汉字(支持id转译) |
description | 否 | 消息描述,长度限制4-12个汉字(支持id转译) |
emphasis_first_item | 否 | 是否放大第一个content_item |
content_item | 否 | 消息内容键值对,最多允许10个item |
key | 否 | 长度10个汉字以内 |
value | 否 | 长度30个汉字以内(支持id转译) key和value两个字段同时为空时,该键值对将被忽略 |
enable_id_trans | 否 | 表示是否开启id转译,0表示否,1表示是,默认0 |
enable_duplicate_check | 否 | 表示是否开启重复消息检查,0表示否,1表示是,默认0 |
duplicate_check_interval | 否 | 表示是否重复消息检查的时间间隔,默认1800s,最大不超过4小时 |
请求实例
根据实际情况去掉了一些非必传的参数。
代码如下:
/**
* 小程序通知消息(必须是绑定的小程序)
* @return array|bool|mixed|string
*/
public function sendMinAppMsg()
{
$get_token = $this->getCompanyToken('授权企业corpid', '授权企业permanent_code');
if ($get_token['status'] != 1) {
return $get_token;
}
$access_token = $get_token['data']['token'] ?? '';
$url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' . $access_token;
// 参数设置
$params = json([
"touser" => "YuanLaiShiNi",
"msgtype" => "miniprogram_notice",
"miniprogram_notice" => [
"appid" => "wx0d12144a427b7567",
"page" => "pages/index/index",
"title" => "合同生成成功",
"emphasis_first_item" => true,
"content_item" => [
[
"key" => "消息内容",
"value" => "您的合同模板已生成成功,点击查看详情"
],
[
"key" => "合同名称",
"value" => "电子签合同"
],
[
"key" => "我方企业",
"value" => "甲方"
]
]
]
]);
return $this->linkCurl($url, 'POST', $params);
}
/**
* 请求接口返回内容
* @param $url : 请求的URL地址
* @param $method : 请求方式POST|GET
* @param bool $params : 请求的参数
* @param bool $header : 请求头
* @return bool|string
*/
protected function linkCurl($url, $method, $params = false, $header = false)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_FAILONERROR, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if (strpos("$" . $url, "https://") == 1) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
if ($method == "POST") {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
} else if ($params) {
curl_setopt($ch, CURLOPT_URL, $url . '?' . http_build_query($params));
}
$response = curl_exec($ch);
if ($response === FALSE) return false;
curl_close($ch);
return $response;
}
返回
返回示例
{
"errcode":0,
"errmsg":"ok",
"invaliduser":"",
"invalidparty":"",
"invalidtag":"",
"msgid":"WpLDpQFMGSE843kRbNhgXVKhR9MTTv16t9nfcFZtpE-B8hfbwPfoWFO4IUU1yQwDq05FcCTKlOM023m5M49PyA"
}
返回参数说明
参数 | 说明 |
errcode | 返回码 |
errmsg | 对返回码的文本描述内容 |
invaliduser | 不合法的userid,不区分大小写,统一转为小写 |
invalidparty | 不合法的partyid |
invalidtag | 不合法的标签id |
unlicenseduser | 没有基础接口许可(包含已过期)的userid |
msgid | 消息id,用于撤回应用消息 |
response_code | 仅消息类型为“按钮交互型”,“投票选择型”和“多项选择型”的模板卡片消息返回,应用可使用response_code调用更新模版卡片消息接口,72小时内有效,且只能使用一次 |
实现效果
点击可进入相应小程序设置的页面,第一次会需要微信扫码授权。
总结
小程序通知消息是发送企业应用消息中的一种消息类型,接口是相同的,实现步骤都需要获取授权企业的凭证,之后传入相应的参数(参数与文本消息不同)发送消息。