企业微信小程序通知消息

使用企业微信发送应用消息中的小程序通知消息(只允许绑定了小程序的应用发送)。

目录

请求方式

请求地址

发送通知

参数说明

请求实例

返回

返回示例

返回参数说明

实现效果

总结


请求方式

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小时内有效,且只能使用一次

实现效果

点击可进入相应小程序设置的页面,第一次会需要微信扫码授权。

总结

小程序通知消息是发送企业应用消息中的一种消息类型,接口是相同的,实现步骤都需要获取授权企业的凭证,之后传入相应的参数(参数与文本消息不同)发送消息。

猜你喜欢

转载自blog.csdn.net/json_ligege/article/details/134709009