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

Posted 5ifbk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
版权声明:本文为博主原创文章,转载请附上博文链接!

 

以上是关于shell使用微信公众号发送模板消息的主要内容,如果未能解决你的问题,请参考以下文章

微信公众平台的模板消息如何发送?

JAVA微信公众号通过openid发送模板消息~

微信公众号模板消息推送

php之微信公众号发送模板消息

微信公众号模板消息无法跳转到指定小程序页面

PHP实现发送模板消息(微信公众号版)