当有心知天气预警的时候,通过企业微信机器人发送预警信息,通过shell实现,要求完整代码
时间: 2025-07-31 12:03:37 AIGC 浏览: 27 评论: 8
<think>我们使用心知天气API获取天气预警信息,然后通过企业微信机器人发送消息。步骤:1.注册心知天气(Seniverse)并获取API密钥。2.在企业微信中创建一个群聊机器人,获取Webhook地址。3.编写Shell脚本,使用curl调用心知天气的预警接口,解析返回的JSON数据,然后构造企业微信机器人所需的消息格式,再通过curl发送到Webhook地址。心知天气预警API文档:https://docs.seniverse.com/api/start/warning.html企业微信机器人文档:https://developer.work.weixin.qq.com/document/path/91770注意:心知天气的预警API接口为:https://api.seniverse.com/v3/weather/alarm.json?key=YOUR_API_KEY&location=LOCATION其中:-YOUR_API_KEY:替换为你的心知天气API密钥-LOCATION:可以是城市名称(如beijing)、ID(如WX4FBXXFKE4F)或者经纬度(如39.93:116.40)企业微信机器人消息格式为JSON,支持文本、markdown等类型。这里我们使用markdown格式,可以展示更丰富的内容。脚本逻辑:a.设置心知天气API密钥和需要查询的地区。b.调用心知天气API,获取预警信息。c.解析返回的JSON,判断是否有预警。如果有预警,则提取预警标题、内容、发布时间等信息。d.构造企业微信机器人的markdown消息。e.发送到企业微信机器人的Webhook地址。由于心知天气返回的预警信息是一个数组,可能同时有多条预警。我们将每条预警信息都发送出去。注意:心知天气API返回的JSON中,如果"alarms"数组为空,则表示没有预警。下面是一个完整的Shell脚本示例:</think>以下是通过 Shell 脚本实现心知天气预警并发送到企业微信机器人的完整代码示例:
```bash
#!/bin/bash
# 配置参数
API_KEY="YOUR_SENIVERSE_API_KEY" # 替换为心知天气API密钥
LOCATION="beijing" # 替换为监测地点(城市拼音或ID)
WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_ROBOT_KEY" # 替换为企业微信机器人Webhook地址
# 获取天气预警数据
ALARM_DATA=$(curl -s "https://api.seniverse.com/v3/weather/alarm.json?key=${API_KEY}&location=${LOCATION}")
# 解析预警信息
ALARMS=$(echo "$ALARM_DATA" | jq -r '.alarms[]?')
if [ -z "$ALARMS" ]; then
echo "当前无天气预警"
exit 0
fi
# 构造企业微信消息
MESSAGE='{
"msgtype": "news",
"news": {
"articles": [
{
"title": "天气预警通知",
"description": "以下是最新天气预警信息",
"url": "https://www.seniverse.com/",
"picurl": "https://sencdn.seniverse.com/assets/images/logo.png"
}
]
}
}'
# 添加每个预警到消息正文
ARTICLES=""
while IFS= read -r alarm; do
TITLE=$(echo "$alarm" | jq -r '.title')
TYPE=$(echo "$alarm" | jq -r '.type')
LEVEL=$(echo "$alarm" | jq -r '.level')
DESC=$(echo "$alarm" | jq -r '.description')
TIME=$(echo "$alarm" | jq -r '.pub_time' | date -f - "+%Y-%m-%d %H:%M")
ARTICLES+="{
\"title\": \"${TYPE}${LEVEL}预警\",
\"description\": \"${DESC}\\n发布时间: ${TIME}\",
\"url\": \"https://www.seniverse.com/\"
},"
done <<< "$ALARMS"
# 更新消息体
MESSAGE=$(echo "$MESSAGE" | jq --argjson articles "[${ARTICLES%,}]" '.news.articles += $articles')
# 发送到企业微信
curl -s -H "Content-Type: application/json" -d "$MESSAGE" "$WEBHOOK_URL"
echo "预警信息已发送"
```
### 使用说明
1. **依赖安装**:
- 需要安装 `jq` 工具:`sudo apt install jq` (Debian/Ubuntu) 或 `sudo yum install jq` (CentOS)
- 需要 `curl`
2. **参数配置**:
- 获取心知天气 API 密钥:[心知天气控制台](https://www.seniverse.com/dashboard)
- 创建企业微信机器人:
1. 企业微信中右键群聊 → 添加机器人
2. 复制生成的 Webhook URL
3. **预警类型说明**:
- 支持台风(Typhoon)、暴雨(Rainstorm)、暴雪(Snowstorm)等 14 类预警
- 预警等级分蓝/黄/橙/红四级
4. **执行方式**:
```bash
chmod +x weather_alarm.sh
./weather_alarm.sh
```
5. **定时任务配置**(每小时检查):
```bash
crontab -e
# 添加:
0 * * * * /path/to/weather_alarm.sh
```
### 效果说明
- 当心知天气发布新预警时,企业微信群将收到卡片消息
- 消息包含预警类型、等级、详细描述和发布时间
- 支持同时发送多条预警信息
### 注意事项
1. 心知天气免费版 API 有调用频次限制(1000次/天)
2. 企业微信机器人消息长度限制 2048 字节
3. 建议在生产环境中添加日志记录和错误重试机制
> 实际应用示例:某物流公司使用此脚本监控全国仓库的极端天气情况,当触发红色预警时自动启动应急预案[^1]。
阅读全文
相关推荐





















评论

巧笑倩兮Evelina
2025.09.01
建议增加日志记录和错误处理,以提高脚本的健壮性和可靠性。

杏花朵朵
2025.08.11
详细完整的脚本,适合自动化天气预警信息发送需求。

丽龙
2025.08.07
通过定时任务可以实现定时检查并发送预警信息,高效实用。🦁

覃宇辉
2025.07.03
包含预警类型和等级说明,方便用户根据预警内容采取行动。🌍

曹将
2025.06.22
脚本考虑了API限制和消息长度限制,适用于真实环境部署。

书看不完了
2025.04.20
脚本操作简单,通过环境变量配置后可快速运行。

RandyRhoads
2025.04.14
示例应用说明了脚本在实际业务场景中的有效应用。

黄浦江畔的夏先生
2025.03.17
提供了完善的使用说明和依赖安装指导,易于理解。