发送报警信息到微信公众号
#!/bin/sh
# 微信消息发送脚本
#全局配置--
#微信公众号appID
appID=xxxxxxxxxxxxxx
#微信公众号appsecret
appsecret=xxxxxxxxxxxxxxxxx
#微信公众号发送消息模板
tpl_id=xxxxxxxxxxxxxxxxxxxxxxxxx
#消息模板:
# {{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
发送报警信息到微信公众号相关推荐
- 发布文章的php模板,PHP实现发送模板消息(微信公众号版)
以下为开发步骤: 1.微信公众号为服务号且开通微信认证(其他类型账号不能发送) 2.ip白名单设置你的服务器ip(用于获取access_token) 3.网页授权你的域名(用于获取用户的openid) ...
- php获取微信公众号用户信息头像,微信公众号的web页面如何获取微信用户名和头像?...
首先,你的网站入口必须是微信服务号(开通认证.拥有获取用户openid权限:订阅号是不行的). 方法:网页通过微信的Oauth2认证链接.(必须是微信的内置浏览器,通过微信服务号进入) 操作:通过服务 ...
- 小程序发送订阅消息,微信公众号发送消息模板
首先讲两个注意事项 1.小程序和微信公众号的用户openid是不同的. 2.小程序需要用户手动授权订阅消息通知(一次性订阅是订阅一次发一次,长期订阅可以多发). 关于小程序和公众号AppID和AppS ...
- java如何监听微信关注事件,Java后端接收用户关注以及发送消息或者取消微信公众号的操作...
请求的Controller import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import ...
- 公众号PHP模板修改,PHP 实现发送模板消息(微信公众号版)
``` $ACCESS_TOKEN = "";//ACCESS_TOKEN //openid数组 $touser = [ 'ovMzR1HD6LOcbcWLw-Xn9eKOyG1U ...
- java_微信公众号扫码绑定个人信息(微信公众号场景值二维码的使用)
看了一下网上关于公众号场景值二维码这方面的教程,基本上是微信官方开发文档的复制,没有具体实例.这里给出实例,并附加二维码url转文件流的方法. 思路: 1.后台传入个人信息保存,以个人信息的" ...
- php订阅号发送消息,php实现微信公众号主动推送消息
通过学习借鉴朋友的实现方法进行整理,实现了PHP版的微信公共平台消息主动推送,分享给大家供大家参考,具体内容如下 此方法是通过模拟登录微信公共平台的方法来实现的. 代码如下: 一.登录接口部分代码 / ...
- SAP系统和微信集成的系列教程之九:如何将微信用户发送给微信公众号的内容自动转存到SAP C4C系统
本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 最近有不少朋友在微信上向我咨询SAP系统和微信公众号集成的问题,因此我把当时写的英文版翻译成中文,重新发布在我 ...
- sap 发送mesage_SAP系统和微信集成的系列教程之九:如何将微信用户发送给微信公众号的内容自动转存到SAP C4C系统...
本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 最近有不少朋友在微信上向我咨询SAP系统和微信公众号集成的问题,因此我把当时写的英文版翻译成中文,重新发布在我 ...
最新文章
- Kubernetes — PV、PVC
- LOJ#162. 快速幂 2(分块)
- 为静态博客生成器WDTP移植了一款美美哒主题
- 第一章 | 使用python机器学习
- Posftix邮箱服务
- 从Maven远程存储库下载
- js中的关键子in的使用方法
- java实现rabbitmq路由模型(routing/topic queues), 生产者 消费者 交换机 消息队列
- webpack4.0版本中的js压缩问题
- aiml简介+源代码解析+中文分词(java)
- 基于k8s的CICD实现
- VBA字典对象操作技巧
- yum 下载并切换到本地源(银河麒麟V10,中标麒麟V5)
- saas商业模式和架构设计
- Thunderbolt3 方案介绍及应用案例介绍
- linux安装软件之./configure、make、make install 命令含义
- RK3399-商显广告机主板方案
- 文本内容相似度计算方法:simhash
- 【PaLM2】PaLM2 大语言模型与 Bard 使用体验
- npm run dev报错:getaddrinfo ENOTFOUND localhost