使用shell通過微信公衆號發送模板消息

如下通過shell腳本實現,通過微信公衆號發送模板消息到個人微信號。

1.配置微信公衆號

由於沒有認證的公衆號,只能通過自己申請的個人訂閱號(可以自行申請),併到開發者工具中開通公衆平臺測試帳號實現該功能。
1.獲取測試公衆號appID和appsecret
這裏寫圖片描述
*2.關注測試號二維碼獲取用戶openid
這裏寫圖片描述
3.新增模板獲取模板ID
這裏寫圖片描述
這裏寫圖片描述
得到模板id: OA0PX8pqc2X7t_y05y5GxZ8LutBpu341FIYSeQOkno

2.通過腳本實現消息發送

這裏就不囉嗦了,直接上shell腳本代碼,具體看註釋

#!/bin/sh

# 微信消息發送腳本 zhutw

#全局配置--
#微信公衆號appID
appID=wx*******0ebde756

#微信公衆號appsecret
appsecret=138********0446e9ae04f2

#微信公衆號發送消息模板
tpl_id=OA0PX8pqc2X7t_-y05y5GxZ8LutBpu341FIYSeQOkno
#消息模板:
#   {{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"

這裏寫圖片描述
點擊消息,打開百度鏈接。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章