shell使用微信公众号发送模板消息

1.配置微信公众号

由于没有认证的公众号,只能通过自己申请的个人订阅号(可以自行申请),并到开发者工具中开通公众平台测试帐号实现该功能。
1.获取测试公众号appID和appsecret

*2.关注测试号二维码获取用户openid

3.新增模板获取模板ID

得到模板id: OA0PX8pqc2X7t_y05y5GxZ8LutBpu341FIYSeQOkno

2.通过脚本实现消息发送

#!/bin/sh

# 微信消息发送脚本 zhutw

#全局配置--
#微信公众号appID
appID=wxe14bed8b9882c259

#微信公众号appsecret
appsecret=f97826cd18236872b07e53e330ae02b6

#微信公众号发送消息模板
tpl_id=0P67Th60_C_xExoCIdDJyEUap26r_-MR5VJ1g1qBNjw
#消息模板:
#   {{first.DATA}}
#   项目名称:{{name.DATA}}
#   报警时间:{{date.DATA}}
#
#   {{remark.DATA}}

#获取微信公众号AccessToken,并缓存到本地 函数
getAccessToken(){
    if [ -f "$HOME/.wechat_accesstoken" ]; then
        access_token=`cat $HOME/.wechat_accesstoken | awk -F":" ‘{print $1}‘`
        expires_in=`cat $HOME/.wechat_accesstoken | awk -F":" ‘{print $2}‘`
        time=`cat $HOME/.wechat_accesstoken | awk -F":" ‘{print $3}‘`
            if [ -z $access_token ] || [ -z $expires_in ] || [ -z $time ]; then
            rm -f $HOME/.wechat_accesstoken
            getAccessToken
        fi
    else
        content=$(curl "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appID&secret=$appsecret")
        echo "get content: $content"
        access_token=`echo $content | awk -F "\"" ‘{print $4}‘`
        expires_in=`echo $content | awk -F "\"" ‘{print $7}‘ | cut -d"}" -f1|cut -c2-`
        echo "access_token = $access_token"
        echo "expires_in = $expires_in"
        time=$(date +%s)
        echo "$access_token:$expires_in:$time" > $HOME/.wechat_accesstoken

        if [ -z $access_token ] || [ -z $expires_in ] || [ -z $time ]; then
                    echo "not get access_token"
                    exit 0
        fi
        fi

    remain=$[$(date +%s) - $time]
    limit=$[$expires_in - 60]
    if [ $remain -gt $limit ]; then
        rm -f $HOME/.wechat_accesstoken
        getAccessToken
    fi
}
#发送消息函数
sendMessage(){
    #消息json体
    message=`cat << EOF
    {
    "touser":"$openid",
    "template_id":"$tpl_id",
    "url":"$url",
    "data":{
            "first": {
                    "value":"$first",
                    "color":"#FF0000"
            },
            "name":{
                    "value":"$name",
                    "color":"#173177"
            },
            "date": {
                    "value":"$date",
                    "color":"#173177"
            },
            "remark":{
                    "value":"$remark",
                    "color":"#FF0000"
            }
    }
     }
EOF
`
   echo "send message : $message"
   curl -X POST -H "Content-Type: application/json"  https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=$access_token -d "$message"
}

#帮助信息函数
usage(){
    cat <<EOF
usage: $0 [-u openids -s summary -n name -t time -d detail -l link] [-h]
    u   wechat user openid , multiple comma separated
    s   message summary
    n   project name
    t   alarm time
    d   message detail
    l   link address
    h   output this help and exit
EOF
}

#获取脚本执行参数
while getopts ":u:s:n:t:d:h:l:" op; do
    case $op in
        u)
        openids="$OPTARG"
        ;;
        s)
        first="$OPTARG"
        ;;
            n)
               name="$OPTARG"
        ;;
            t)
        date="$OPTARG"
        ;;
            d)
        remark="$OPTARG"
        ;;
        l)
        url="$OPTARG"
        ;;
        *)
        usage
        exit 0
        ;;
    esac
done

#判断条件满足发送消息
if [[ -n $openids && -n $first && -n $name && -n $date ]]; then
    getAccessToken
    OLD_IFS="$IFS"
    IFS=","
    arr=($openids)
    IFS="$OLD_IFS"
    for openid in ${arr[@]}
    do
        sendMessage
    done
    exit $?
else
    echo "params error."
    usage
    exit 1
fi

关于微信公众号接口说明查看如下接口wiki:

https://mp.weixin.qq.com/wiki
1.开始开发->获取access_token
2.消息管理->模板消息接口

3.接收到消息

执行命令脚本即上述shell脚本内容。记得设置脚本执行权限 chmod +x sendMessageForWechat
shell
./sendMessageForWechat -u o4bHbvjL9aWoRCa29vdOQ9aJMq0w -s "192.168.1.90磁盘空间不足" -n 测试系统 -t "2017-01-15 13:00:10" -d "磁盘已使用超过80%,剩余5G,请及时处理" -l "http://m.baidu.com"

点击消息,打开百度链接。。。
---------------------
作者:slimina
来源:CSDN
原文:https://blog.csdn.net/zhu_tianwei/article/details/71246627
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/5ifbk/p/11115092.html

时间: 2024-10-10 10:21:40

shell使用微信公众号发送模板消息的相关文章

.net微信公众号开发——模板消息

本文介绍微信公众号中的模板消息,包括以下内容:(1)TemplateMessage类简介:(2)设置所属行业:(3)获得模板id:(4)发送模板消息:(5)接收推送模板消息发送结果事件.    本文演示地址:http://xrwang.net/Example/TemplateMessage.aspx    本文源代码地址:    http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount/tree/master/PublicAccount

微信公众号 发送图文消息

介绍被动回复消息中的图文消息,发送客服消息及高级群发消息接口的发送的图文消息与本文介绍的图文消息的各情况基本一致. 本文分为以下四个部分: 图文消息的定义 图文消息的实现 图文消息的类型 图文消息的回复 一.图文消息的定义 在微信公众平台消息中,发送被动响应消息中的图文消息的XML结构如下所示. <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[

微信公众号平台群发消息限制怎么解决?

1.微信公众号模板消息群发 不限制群发次数,不占用微信公众号群发次数,但是对群发的内容有一定限制,不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息,不然会被微信停止使用!!! 2.48小时信息推送解决订阅号一天只能群发一次,服务号一个月只能群发四次:48小时内不限制次数信息推送给粉丝,只要48小时内粉丝与微信公众号互动(操作)统统都可以接受到推送信息 #微号帮功能 不限制次数模板消息群发.48小时信息推送print('微信公众号平台群发消息限制')sleep.time(1) 原文地址:

微信公众号推送消息给用户?

1.公众号群发不管是订阅号服务号,还是服务器,每天都有数量限制,重要活动优惠无法及时推送,存在限制 48小时信息推送与微信公众号在48小时内互动的用户都可以接收到信息,不限次数推送,及时把信息推送给用户.两天内不限制次数都可以推送给用户,解决了公众号群发的限制3.模板消息群发公众号固定模板消息群发,没有限制次数,展现形式类似卡片,不支持显示图片,模板消息内容可以指向链接.小程序 推送信息类型文本图片图文:仅支持一条图文(从2018-10-12日20时起,公众号除素材群发外,不再支持多图文)小程序

向微信公众号发送么个特地消息给么个人

package com.YY.tuling; import java.io.UnsupportedEncodingException; import net.sf.json.JSONArray; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.ht

微信小程序-发送模板消息(C#)

步骤一:获取模板ID 有两个方法可以获取模版ID 通过模版消息管理接口获取模版ID 在微信公众平台手动配置获取模版ID 步骤二:页面的 <form/> 组件,属性report-submit为true时,可以声明为需发模板消息,此时点击按钮提交表单可以获取formId,用于发送模板消息.或者当用户完成支付行为,可以获取prepay_id用于发送模板消息. 步骤三:调用接口下发模板消息 今天重要的说第三步怎么实现,前面的步骤比较简单就略过. ----------------------------

.net微信公众号开发——群发消息

作者:王先荣    本文将介绍微信公众号开发中用于群发消息的类MassMessage,包括:(1)MassMessage类:(2)群发:(3)删除:(4)预览:(5)查询发送状态:(6)接收推送群发结果事件.    源代码地址:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount/tree/master/PublicAccount/MassMessage    演示地址:http://www.xrwang.net/Example/M

微信小程序发送模板消息(最通俗易懂)

公司需要用到微信小程序推送   经过一下午的资料查阅,得出以下经验. 首先得去微信公众平台小程序的模板消息  创建模板  也能通过接口去创建,但是我觉得挺麻烦的  还不如去后台创建 下面是我写的测试代码,只有具体数据都是测试的模拟数据,实际业务肯定需要拿到业务数据,大家后面可以自我发挥. 对了,还有一点,电脑的小程序的开发工具是拿不到formid 的  会提示 the formId is a mock one ,只能用手机测试才能拿到formid 下面看代码吧: 这个是前台页面 1 <butto

微信公众号发送消息之发送客服消息基类封装

当用户主动发消息给公众号的时候(包括发送信息.点击自定义菜单.订阅事件.扫描二维码事件.支付成功事件.用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数.此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务. http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/custom/