工作流介绍
Telegram 天气工作流分析
此 N8n 工作流模板,标题为 “Telegram 天气工作流”,是一个实用的自动化工具,旨在通过 Telegram 回复用户消息,提供实时天气更新。它利用 n8n 的集成能力,将 Telegram 消息与 OpenWeatherMap 的实时天气数据连接起来,使用户无需离开聊天界面即可接收即时、个性化的天气报告。
工作流功能
该工作流会监听 Telegram 机器人上的入站消息,并在收到消息后,自动从 OpenWeatherMap API 中检索预设城市(在此案例中为德国柏林)的当前天气信息。然后,它将这些数据格式化为自然语言消息,并将其发送回触发对话的用户,使其成为一个交互式、响应迅速的天气助手。
主要功能和能力
- 事件驱动触发: 由任何入站 Telegram 消息激活,确保响应能力。
- 实时天气数据: 获取最新的天气状况和温度读数。
- 动态消息个性化: 使用数据表达式自定义包含实际天气值的回复。
- 无缝聊天集成: 使用发送者的聊天 ID 自动回复。
- 低维护和全自动化: 一旦部署,即可持续运行,无需手动干预。
主要节点及其用途
-
Telegram 触发器
- 类型:
n8n-nodes-base.telegramTrigger - 用途: 作为工作流的入口点。它监听入站的 Telegram 更新,并在收到新消息时触发工作流。
- 配置: 设置为仅捕获“消息”更新,这意味着发送到机器人的任何文本都将激活流程。
- 凭据: 连接到名为“Telegram”的预配置 Telegram 机器人 API 凭据。
- 类型:
-
OpenWeatherMap
- 类型:
n8n-nodes-base.openWeatherMap - 用途: 获取指定位置的当前天气数据。
- 配置: 硬编码为检索德国柏林 (
"berlin,de") 的天气,包括温度、体感温度和天气描述等详细信息。 - 凭据: 使用存储在“OpenWeatherMap”下的已认证 OpenWeatherMap API 密钥。
- 类型:
-
Telegram (发送)
- 类型:
n8n-nodes-base.telegram - 用途: 将格式化的消息发送回发起对话的用户。
- 配置:
text参数使用 n8n 的表达式语法将天气数据动态插入到友好的消息中。chatId动态设置为与发送原始消息的人的 ID 匹配,确保正确的回复路由。- 包括表情符号以增强可读性和用户参与度。
- 类型:
用例和优势
- 个人助理机器人: 非常适合创建提供天气预报等有用日常信息的简单聊天机器人。
- 客户支持工具: 可以扩展以支持旅行或活动规划服务,其中天气背景很重要。
- 教育项目: 非常适合教授 API 集成、基于事件的工作流和动态数据处理。
- 家庭自动化集成: 可以成为一个更大的智能家居系统的一部分,用户可以通过聊天查询环境条件。
优势包括:
- 使用真实 API 的快速响应时间。
- 高可重用性——可适应其他城市或附加天气指标。
- 用户友好的输出提高了交互质量。
- 由于节点分离清晰且逻辑直观,设置要求极低。
分步工作流逻辑
-
触发阶段:
- 用户向连接的 Telegram 机器人发送任何消息(例如,“你好”或“获取天气”)。
- Telegram 触发器节点检测到此消息并激活工作流,传递完整的消息对象,包括发送者的聊天 ID。
-
数据检索阶段:
- 工作流继续到 OpenWeatherMap 节点。
- 该节点向 OpenWeatherMap API 发出 HTTPS 请求,请求德国柏林的当前天气数据。
- 收到响应后,它输出包含温度 (
main.temp)、体感温度 (main.feels_like) 和天气状况 (weather[0].description) 等字段的结构化 JSON。
-
响应生成与交付阶段:
- Telegram (发送) 节点接下来执行,使用来自前两个节点的数据:
- 它使用表达式构建一个人类可读的消息:
- 插入天气描述(例如,“小雨”)。
- 以摄氏度添加实际温度和体感温度。
- 包括一个友好的表情符号以增强语气。
- 使用
={{$node["Telegram Trigger"].json["message"]["chat"]["id"]}}动态设置收件人,确保回复发送给正确的用户。
- 它使用表达式构建一个人类可读的消息:
- 消息通过同一个 Telegram 机器人发送,完成交互循环。
- Telegram (发送) 节点接下来执行,使用来自前两个节点的数据:
总而言之,此工作流例证了 n8n 如何通过将外部 API 与消息平台连接,实现强大、对话式的自动化——将简单的触发器转变为智能、数据驱动的响应系统。
使用方法:下载 JSON 文件,然后在 n8n 中选择“从文件导入”。