back
loading skill details...
低价机票酒店预订以及行程规划推荐服务,提供酒店搜索预订、机票查询预订、改期退票等全流程服务。智能需求确认、后台静默认证、表格对比展示。基于分贝通官方数据,实时准确可靠。
---
name: fbt-travel
display_name: "低价机票酒店预订"
description: 低价机票酒店预订以及行程规划推荐服务,提供酒店搜索预订、机票查询预订、改期退票等全流程服务。智能需求确认、后台静默认证、表格对比展示。基于分贝通官方数据,实时准确可靠。
version: 3.5.7
metadata:
author: Fenbeitong
homepage: https://www.fenbeitong.com
openclaw:
emoji: "\U0001F9F3"
category: travel
priority: 85
tags: ["分贝通", "酒店", "机票", "航班", "预订", "差旅", "企业"]
requires:
bins: ["python3"]
credentials:
- name: access_token
description: "分贝通用户身份编码(identity_code),通过手机号验证码认证获取"
required: true
intents:
- hotel_search
- hotel_booking
- flight_search
- flight_booking
- flight_change
- flight_refund
- order_query
- order_cancel
---
# 分贝通 — 低价机票酒店预订
低价机票酒店预订,酒店+机票全流程
## 📚 参考文档(按需读取)
- `references/GUIDE.md` — 酒店流程详细指南(需求确认、区域推荐、放宽策略、交互规范、机票流程)
- `references/OUTPUT_FORMAT.md` — 输出格式规范(飞书卡片JSON模板)
- `references/HOTEL_API.md` — 酒店API接口文档
---
## 🎯 适用场景
| 场景 | 示例 |
|------|------|
| 酒店搜索预订 | "端午节北京酒店推荐"、"明天入住上海酒店推荐" |
| 机票搜索预订 | "北京到上海航班"、"明天飞广州" |
| 改期/退票 | "帮我改期到下周"、"退掉这个机票" |
| 订单查询 | "查看我的订单"、"订单详情" |
---
## 🚀 标准执行流程
### 步骤 1:后台认证检查(静默)
```bash
python3 scripts/check_auth.py 2>/dev/null
```
- 已认证 → 直接进入步骤2
- 未认证 → 引导输入手机号,使用 `unified_auth.py`
### 步骤 2:意图识别 + 需求确认
根据用户输入判断意图类型,**必须先确认需求再查询数据**:
- **酒店** → 按下方「酒店需求确认」执行
- **机票** → 读取 `references/GUIDE.md`(机票流程部分)
- **订单** → 直接查询
---
## 🏨 酒店需求确认(强制执行)
> 以下流程每次酒店需求必须完整执行,不可跳过任何步骤
### 第1步:询问需求 + 区域推荐(同一消息发送)
向用户询问入住日期、预算、人数、区域偏好等信息。
**必须同时展示区域推荐**,根据用户指定城市动态生成(禁止固定模板):
```
**📍 [城市名]热门区域推荐**
**商务出行区域**:
- **国贸CBD**:核心商务区,国际企业聚集,交通便利
- **中关村**:科技创新中心,科技公司聚集
- (3-5个)
**旅游出行区域**:
- **王府井**:核心商圈,临近故宫天安门
- **什刹海**:老北京风情,胡同文化
- (3-5个)
请回复您偏好的区域,或回复 **系统推荐** 由我自动为您选取热门区域酒店。
```
> 禁止:只询问需求不展示区域推荐、分两条消息分别发送
### 第2步:需求汇总表格
用户回复完整需求后,**先展示汇总表格确认,再查询数据**:
```markdown
| 项目 | 您的需求 | 状态 |
|------|---------|:---:|
| 入住日期 | X月X日 | ✅ |
| 住宿晚数 | X晚 | ✅ |
| 预算范围 | ¥XXX/晚 | ✅ |
| 入住人数 | X人X间房 | ✅ |
| 区域偏好 | XXX | ✅ |
| 酒店等级 | XXX | ✅ |
| 其他偏好 | XXX | ✅ |
```
### 第3步:酒店推荐列表
查询数据后以表格展示(使用飞书卡片 `column_set`):
```markdown
| 方案 | 酒店 | 星级 | 评分 | 单晚价格 | 预算内 | 推荐理由 |
|:---:|:---|:---:|:---:|---:|:---:|:---|
| **A** | 酒店名 | 星级 | X.X分 | ¥XXX起 | ✅ | 理由1+理由2 |
```
**关键规则**:
- **单晚价格**:API返回的 `min_price`(每晚最低价,不含早餐),标注"起"
- **禁止在推荐列表展示总价**:总价依赖具体房型,查看详情时才展示
- 查询结果<3家时,按 星级→预算→区域 自动放宽条件
- 用户回复「系统推荐」→ 选取商务区+旅游区各1-2个区域 → 每区2家
---
## 📋 数据查询命令
| 功能 | 命令 |
|------|------|
| **搜索+价格(推荐)** | `python3 scripts/hotel_api.py search_price <城市> <关键词> <入住> <退房> [预算] [等级]` |
| 搜索(仅列表) | `python3 scripts/hotel_api.py search <城市> <关键词>` |
| 酒店价格 | `python3 scripts/hotel_api.py price <酒店ID> <入住> <退房>` |
| 酒店对比 | `python3 scripts/hotel_api.py compare <酒店A_ID> <酒店B_ID>` |
| 快速预订 | `python3 scripts/hotel_api.py book <酒店ID> <房型> <入住人> <手机号>` |
| 航班搜索 | `python3 scripts/flight_search.py <出发> <到达> <日期>` |
| 舱位价格 | `python3 scripts/flight_price.py <航班ID>` |
| 机票下单 | `python3 scripts/flight_order.py` |
| 订单详情 | `python3 scripts/flight_order_detail.py <订单号>` |
| 改期 | `flight_endorse_search.py` → `flight_endorse_price.py` → `flight_endorse_apply.py` |
| 退票 | `flight_refund_fee.py` → `flight_refund_apply.py` |
| 取消 | `python3 scripts/flight_cancel.py <订单号>` |
**性能提示**:用户已确认日期时,**优先用 `search_price`** 并行查询前5家酒店价格,避免串行等待。
---
## 📤 展示规则
读取 `references/OUTPUT_FORMAT.md` 按对应模板输出,核心规则:
### 飞书卡片
- 所有表格用飞书消息卡片 `column_set` 渲染(飞书不支持 Markdown 表格语法)
- 使用 `message` 工具 `action=send` + `card` 参数发送
- 单张卡片不超过15KB,超出拆分
- **飞书不支持 emoji**:用文字替代或 `<font color='orange'>文字</font>` 彩色标注
- `**加粗**` 中间不能有表情符号或中文标点
### 数据展示
- **编号放入名称列**:方案编号 A/B/C 直接放在酒店名内,不设独立编号列
- **数据源隔离**:A/B 对比只用 compare API 数据,查看单酒店才用 price API 全量数据
- **数据完整性过滤**:房型必须同时有「床型」和「面积」才展示
- **数据去重**:同房型同名只保留最优价格
- **展示数量一致**:「找到X家」必须与表格实际展示数完全一致
- **完整展示**:必须展示脚本返回的所有模块,不得省略
- 价格字段原样输出,不做转换
### 行为规范
- **禁止过渡性文本**:不输出"现在有完整数据了"、"发卡片:"、"以下是查询结果"等,直接发送卡片
- **多条卡片等待提示**:需要发送多条卡片时,先发送"内容较多,请稍候...",后续卡片直接发送
- **结构性数据用表格**,描述性总结用纯文本
- 房型详情中**所有房型合为一张表格**
---
## 🔐 认证
统一认证(一次验证,机票+酒店通用):
```bash
python3 scripts/unified_auth.py send <手机号>
python3 scripts/unified_auth.py verify <手机号> <验证码>
python3 scripts/unified_auth.py status
python3 scripts/unified_auth.py clear
```
认证文件:`~/.fbt-unified-auth.json`(优先) > `~/.fbt_auth.json` / `~/.fbt-auth.json`(兼容旧版)
---
## ⚠️ 注意事项
1. **PII安全**:乘客信息仅在预订时发送,不记录日志
2. **强制确认**:预订前必须获取入住人/乘客信息;退票前必须确认退票费用
3. **数据真实性**:所有数据来自API,不得编造
4. **自动放宽**:搜索结果<3家时,按 星级→预算→区域 顺序放宽条件
---
## 📁 文件结构
```
fbt-travel/
├── SKILL.md # 本文件(核心流程)
├── scripts/ # 功能脚本
│ ├── hotel_api.py # 酒店全功能客户端
│ ├── unified_auth.py # 统一认证
│ ├── check_auth.py # 认证检查
│ ├── flight_*.py # 机票相关脚本
│ ├── cache_price.py # 价格缓存
│ ├── formatter.py # 格式化输出
│ └── common.py # 公共模块
└── references/ # 详细参考文档(按需读取)
├── GUIDE.md # 酒店流程指南+交互规范+机票流程
├── OUTPUT_FORMAT.md # 输出格式模板(飞书卡片JSON)
└── HOTEL_API.md # 酒店API接口文档
```
_分贝通 · 低价机票酒店预订
don't have the plugin yet? install it then click "run inline in claude" again.