OpenClaw技能配置实战:从零实现weather查天气功能

1次阅读
没有评论

共计 1407 个字符,预计需要花费 4 分钟才能阅读完成。

image.webp

天气查询是智能助手的刚需功能,比如出门前询问 ” 今天会下雨吗 ”,或是旅行时查询目的地天气。下面我会手把手带你在 OpenClaw 平台上实现这个功能。

OpenClaw 技能配置实战:从零实现 weather 查天气功能

一、技术背景扫盲

OpenClaw 的技能系统像乐高积木,分为三层:

  1. 交互层 :处理用户语音 / 文本输入(比如 ” 北京明天天气 ”)
  2. 逻辑层 :通过意图识别和槽位填充理解用户需求(识别出 location= 北京,date= 明天)
  3. 服务层 :调用天气 API 并格式化返回结果

天气 API 选型建议:

  • 和风天气:免费版支持 3 天预报,响应速度快
  • 心知天气:数据源丰富但免费额度较少
  • 阿里云天气:企业级服务,适合高并发场景

推荐新手先用和风天气练手,注册后能立即拿到 API 密钥。

二、手把手配置流程

1. 技能注册

  1. 登录 OpenClaw 开发者平台
  2. 进入「技能工作室」点击「新建技能」
  3. 技能类型选择「自定义技能」
  4. 填写基础信息(名称填 weather,调用词填天气)

2. 意图配置

新建 weather_query 意图,添加以下槽位:

  • location(城市名,必填)
  • date(日期,默认 today)
  • unit(温度单位,默认 celsius)

记得给每个槽位配置同义词,比如 location 可以映射 ” 帝都 -> 北京 ”。

3. API 对接

在代码配置区粘贴这个模板(关键字段已加注释):

{
  "version": "1.0",
  "api": {
    "endpoint": "https://free-api.heweather.com/s6/weather",
    "method": "GET",
    "params": {
      "location": "$slot.location",  // 动态替换用户输入的城市
      "key": "YOUR_API_KEY"         // 这里填和风天气的密钥
    },
    "responseMapping": {"weather": "$.HeWeather6[0].now.cond_txt",  // 提取天气状况
      "temp": "$.HeWeather6[0].now.tmp"          // 提取当前温度
    }
  }
}

4. 测试验证

在模拟器中输入 ” 查询上海天气 ”,应该能看到类似这样的返回:

{
  "response": {
    "text": "上海当前晴转多云,温度 28 摄氏度",
    "card": {
      "title": "上海天气",
      "content": "湿度:65%\n 风速:3 级"
    }
  }
}

三、避坑指南

高频错误 TOP3

  1. 密钥未生效 :和风天气新注册的 API 需要 10 分钟生效
  2. 城市名解析失败 :记得在槽位配置里添加 ” 魔都 -> 上海 ” 这类映射
  3. API 限流 :免费版每分钟只能请求 5 次,建议加延迟重试逻辑

缓存优化建议

在代码里添加这段逻辑可以大幅降低 API 调用:

# 用城市 + 日期作为缓存键
cache_key = f"{location}_{date}"
if cache.has(cache_key):
    return cache.get(cache_key)
else:
    data = call_weather_api()
    cache.set(cache_key, data, ttl=3600)  # 缓存 1 小时
    return data

四、进阶思考

现在你的天气技能已经能跑通了,但如果用户问 ” 北京空气质量怎么样 ” 该怎么扩展?提示:和风天气的 air 接口可以获取 AQI 数据,需要新增 air_quality 意图和 pm2.5 槽位。

整个配置过程最花时间的是调试 API 返回数据的解析逻辑,建议先用 Postman 测试清楚数据结构。如果遇到卡点,OpenClaw 的开发者社区有很多现成的解决方案可以参考。

正文完
 0
评论(没有评论)