返回顶部
f

fb-hotel-skill

分贝通酒店预定助手,实时查询搜索酒店、展示酒店列表、查询酒店房型、展示房型产品和报价、预定酒店、查看订单、取消订单、查看酒店基础信息和酒店评论信息。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
80
下载量
0
收藏
概述
安装方式
版本历史

fb-hotel-skill

# 分贝通酒店预定助手 (fb-hotel-skill) ## 技能描述 分贝通酒店预定助手,实时查询搜索酒店、展示酒店列表、查询酒店房型、展示房型产品和报价、预定酒店、查看订单、取消订单、查看酒店基础信息和酒店评论信息。 --- ## 🔐 鉴权流程(必须先完成) **重要**:使用任何功能前,用户必须先完成鉴权流程。鉴权成功后获得的 `identity_code`(access-token)会自动保存在 `~/.fbt-auth.json` 文件中,新会话会自动沿用。 ### 鉴权步骤 #### 步骤 1:发送验证码 ``` 用户回复: 分贝通登录 AI: 请输入您的手机号以接收验证码(例如:13800138000) 用户输入: 13800138000 AI: ✅ 验证码已发送到 138****8000,请在5分钟内输入验证码 ``` **API调用**: ```python from scripts.fb_hotel_api import send_verification_code result = send_verification_code("13800138000") # 成功响应: {"code": 0, "msg": "success", "data": true} ``` #### 步骤 2:验证并获取 identity_code ``` 用户输入: 1234 AI: 🎉 认证成功!身份编码已保存到 ~/.fbt-auth.json,有效期90天 现在可以使用分贝通企业接口了 ``` **API调用**: ```python from scripts.fb_hotel_api import verify_and_get_token success, result = verify_and_get_token("13800138000", "1234") if success: access_token = result # fbsk-xxx # token 已自动保存到 ~/.fbt-auth.json else: print(f"验证失败: {result}") ``` #### 步骤 3:自动注入(后续调用) 后续所有 API 调用会自动从 `~/.fbt-auth.json` 读取 token: ```python from scripts.fb_hotel_api import FbHotelApi # 无需传入 token,自动从文件读取 api = FbHotelApi() result = api.search_hotel_list(city_name="北京市", keywords="国贸") ``` ### Token 存储管理 | 文件 | 路径 | 说明 | |-----|------|------| | 鉴权文件 | `~/.fbt-auth.json` | 保存 identity_code 和手机号 | **文件格式**: ```json { "identity_code": "fbsk-2db251f6c8d74ce69ae3dcb82ed1055b", "mobile": "138****8000", "created_at": "2026-03-25T09:48:00", "updated_at": "2026-03-25T09:48:00" } ``` ### API 函数 ```python from scripts.fb_hotel_api import ( save_auth_token, # 保存 token load_auth_token, # 读取 token get_auth_info, # 获取完整认证信息 clear_auth_token # 清除认证信息 ) # 保存 token save_auth_token("fbsk-xxx", "13800138000") # 读取 token token = load_auth_token() # 获取完整信息 info = get_auth_info() # {"identity_code": "...", "mobile": "..."} # 清除认证 clear_auth_token() ``` ### 接口鉴权说明 | skill_type | 接口名称 | 需要认证 | |------------|---------|---------| | `getMobileCaptcha` | 获取手机号验证码 | ❌ 否 | | `getIdentityCode` | 获取身份编码 | ❌ 否 | | `searchHotelList` | 搜索酒店列表 | ✅ 是 | | `queryHotelPrice` | 查询酒店价格详情 | ✅ 是 | | `queryHotelDetail` | 查询酒店扩展详情 | ✅ 是 | | `queryHotelComment` | 查询酒店评论 | ✅ 是 | | `createOrder` | 酒店下单 | ✅ 是 | | `cancelOrder` | 取消订单 | ✅ 是 | | `queryOrder` | 查询订单 | ✅ 是 | --- ⚠️ 【重要约束】 - 必须调用 `scripts/fb_hotel_api.py` 中的函数获取数据 - 禁止自行编造酒店信息、价格或评论 - 接口返回什么数据就展示什么,不要修改 - **首次使用必须先完成分贝通企业认证** --- ## 对接信息 ### 环境配置 | 环境 | 域名 | |-----|------| | **FAT 测试环境** | `https://app-gate.fenbeitong.com` | | **线上环境** | `https://app-gate.fenbeitong.com` | ### 统一接口入口 **所有接口统一使用同一入口**: ``` POST /business/hotel/open/push/skill/access ``` 通过 `skill_type` 参数区分不同操作。 ### 请求格式 **Headers**: ``` Content-Type: application/json access-token: fbsk-xxx (认证类接口除外) ``` **Body**: ```json { "skill_type": "searchHotelList", // 其他参数... } ``` --- ## 核心接口列表 ### 一、认证类接口 #### 1. 获取手机号验证码 **skill_type**: `getMobileCaptcha` **请求示例**: ```bash curl --location 'https://app-gate.fenbeitong.com/business/hotel/open/push/skill/access' \ --header 'Content-Type: application/json' \ --data '{ "skill_type":"getMobileCaptcha", "mobile":"18301187051" }' ``` **响应示例**: ```json { "request_id": "nQabT9pHt5u5m0mA", "code": 0, "msg": "success", "data": true } ``` #### 2. 获取身份编码 **skill_type**: `getIdentityCode` **请求示例**: ```bash curl --location 'https://app-gate.fenbeitong.com/business/hotel/open/push/skill/access' \ --header 'Content-Type: application/json' \ --data '{ "skill_type":"getIdentityCode", "mobile":"18301187051", "captcha":"1234" }' ``` **响应示例**: ```json { "request_id": "oKXv9eCYuFIXoxRn", "code": 0, "msg": "success", "data": { "identity_code": "fbsk-2db251f6c8d74ce69ae3dcb82ed1055b" } } ``` --- ### 二、酒店查询接口 #### 1. 搜索酒店列表 **skill_type**: `searchHotelList` **请求参数**: | 参数 | 类型 | 必填 | 说明 | |-----|------|-----|------| | city_name | string | 是 | 城市名称(如"北京市") | | keywords | string | 否 | 关键词(用户输入原样传递) | | hotel_name | string | 否 | 酒店名称 | | page_index | int | 否 | 页码,默认1 | | page_size | int | 否 | 每页数量,默认5 | **请求示例**: ```bash curl --location 'https://app-gate.fenbeitong.com/business/hotel/open/push/skill/access' \ --header 'access-token: fbsk-2db251f6c8d74ce69ae3dcb82ed1055b' \ --header 'Content-Type: application/json' \ --data '{ "skill_type":"searchHotelList", "city_name":"北京市", "keywords":"预订北京国贸附近1公里的酒店", "page_index":1, "page_size":5 }' ``` **响应字段**: | 字段 | 说明 | |-----|------| | hotel_id | 酒店ID | | name | 酒店名称 | | star_level_name | 星级类型(高档型、豪华型等) | | address | 地址 | | district_name | 区域 | | business_zone_name | 商圈 | | score | 评分 | | min_price | 最低价 | | main_logo | 酒店图片 | #### 2. 查询酒店价格详情 **skill_type**: `queryHotelPrice` **请求参数**: | 参数 | 类型 | 必填 | 说明 | |-----|------|-----|------| | hotel_id | string | 是 | 酒店ID | | check_in_date | string | 是 | 入住日期 yyyy-MM-dd | | check_out_date | string | 是 | 退房日期 yyyy-MM-dd | | payment_type | string | 否 | 支付方式 PP=预付 SP=现付 | | nation_type | int | 否 | 1=国内 2=国际 | **请求示例**: ```bash curl --location 'https://app-gate.fenbeitong.com/business/hotel/open/push/skill/access' \ --header 'access-token: fbsk-2db251f6c8d74ce69ae3dcb82ed1055b' \ --header 'Content-Type: application/json' \ --data '{ "skill_type":"queryHotelPrice", "nation_type":1, "payment_type":"PP", "hotel_id":"5a39df2fbbfdc4732360eaa9", "check_in_date":"2026-03-27", "check_out_date":"2026-03-28" }' ``` **响应字段**: | 字段 | 说明 | |-----|------| | hotel | 酒店基本信息 | | rooms[] | 房型列表 | | rooms[].room_id | 房型ID | | rooms[].room_name | 房型名称 | | rooms[].bed_type | 床型 | | rooms[].window_type | 窗户类型 | | rooms[].area | 面积 | | rooms[].status | 是否可预订 | | rooms[].plan_list[] | 产品列表 | | plan_list[].plan_id | 产品ID | | plan_list[].plan_name | 产品名称 | | plan_list[].breakfast | 早餐 | | plan_list[].cancel_type | 取消政策类型 | | plan_list[].cancel_rule | 取消政策详情 | | plan_list[].total_price | 总价 | | plan_list[].status | 是否可预订 | #### 3. 查询酒店扩展详情 **skill_type**: `queryHotelDetail` **请求参数**: | 参数 | 类型 | 必填 | 说明 | |-----|------|-----|------| | hotel_id | string | 是 | 酒店ID | #### 4. 查询酒店评论 **skill_type**: `queryHotelComment` **请求参数**: | 参数 | 类型 | 必填 | 说明 | |-----|------|-----|------| | hotel_id | string | 是 | 酒店ID | | page_index | int | 否 | 页码 | | page_size | int | 否 | 每页数量 | **请求示例**: ```bash curl --location 'https://app-gate.fenbeitong.com/business/hotel/open/push/skill/access' \ --header 'access-token: fbsk-2db251f6c8d74ce69ae3dcb82ed1055b' \ --header 'Content-Type: application/json' \ --data '{ "skill_type":"queryHotelComment", "hotel_id":"8502475", "page_size":5 }' ``` --- ### 三、订单接口 #### 1. 酒店下单 **skill_type**: `createOrder` **请求参数**: | 参数 | 类型 | 必填 | 说明 | |-----|------|-----|------| | nation_type | int | 是 | 1=国内 2=国际 | | payment_type | string | 是 | PP=预付 SP=现付 | | hotel_id | string | 是 | 酒店ID | | check_in_date | string | 是 | 入住日期 | | check_out_date | string | 是 | 退房日期 | | room_id | string | 是 | 房型ID | | plan_id | string | 是 | 产品ID | | total_price | float | 是 | 总价 | | room_count | int | 是 | 房间数 | | contact | object | 是 | 联系人信息 | | guestList1 | array | 是 | 入住人列表(二维数组) | **请求示例**: ```bash curl --location 'https://app-gate.fenbeitong.com/business/hotel/open/push/skill/access' \ --header 'access-token: fbsk-2db251f6c8d74ce69ae3dcb82ed1055b' \ --header 'Content-Type: application/json' \ --data '{ "skill_type":"createOrder", "nation_type":1, "payment_type":"PP", "hotel_id":"5a39df2fbbfdc4732360eaa9", "check_in_date":"2026-03-27", "check_out_date":"2026-03-28", "room_id":"7617d7bbb3a94537a58bb3d33108b429", "plan_id":"69c23ae4e37c7d156e3e0c01", "total_price":280, "room_count":1, "contact":{ "name":"周聪", "phone":"18301187051" }, "guestList1":[ [ { "name":"周聪", "phone":"13126525502" } ] ] }' ``` **重要**:`guestList1` 参数必须为二维数组格式! #### 2. 取消订单 **skill_type**: `cancelOrder` **请求参数**: | 参数 | 类型 | 必填 | 说明 | |-----|------|-----|------| | order_id | string | 是 | 订单ID | | cancel_reason | string | 否 | 取消原因 | **请求示例**: ```bash curl --location 'https://app-gate.fenbeitong.com/business/hotel/open/push/skill/access' \ --header 'access-token: fbsk-2db251f6c8d74ce69ae3dcb82ed1055b' \ --header 'Content-Type: application/json' \ --data '{ "skill_type":"cancelOrder", "order_id": "69c23b67e37c7d156e3e0c1b", "cancel_reason":"取消原因" }' ``` #### 3. 查询订单 **skill_type**: `queryOrder` **请求参数**: | 参数 | 类型 | 必填 | 说明 | |-----|------|-----|------| | order_id | string | 是 | 订单ID | **请求示例**: ```bash curl --location 'https://app-gate.fenbeitong.com/business/hotel/open/push/skill/access' \ --header 'access-token: fbsk-2db251f6c8d74ce69ae3dcb82ed1055b' \ --header 'Content-Type: application/json' \ --data '{ "skill_type":"queryOrder", "order_id": "69c23b67e37c7d156e3e0c1b" }' ``` --- ### 四、收银台支付 订单创建成功后,通过以下链接引导用户完成支付: | 类型 | 链接格式 | |-----|---------| | 立即支付 | `{域名}/business/hotel/open/push/redirect?orderId={order_id}&type=0&token={access_token}` | | 查看订单 | `{域名}/business/hotel/open/push/redirect?orderId={order_id}&type=1&token={access_token}` | **FAT环境示例**: - 支付:`https://app-gate.fenbeitong.com/business/hotel/open/push/redirect?orderId={order_id}&type=0&token=fbsk-xxx` - 订单:`https://app-gate.fenbeitong.com/business/hotel/open/push/redirect?orderId={order_id}&type=1&token=fbsk-xxx` --- ## 使用流程 ### 1. 酒店搜索 **触发条件**:用户输入「酒店搜索/订酒店/找酒店/搜酒店」+ 城市/关键词 **步骤**: 1. 检查用户认证状态 2. 调用 `search_hotel_list()` 获取酒店列表 3. 格式化展示酒店列表(表格形式) **展示格式**: ``` 🏨 北京国贸附近酒店 | 序号 | 酒店名称 | 星级 | 区域 | 最低价 | |:---:|---------|:---:|------|---:| | 1 | 北京建国饭店 | 高档型 | 朝阳区 | ¥572 | | 2 | 北京共享际5L饭店 | 高档型 | 朝阳区 | ¥712 | 💡 回复序号查看房型价格,如"1" 💡 回复"序号-详情"查看酒店信息和评论,如"1-详情" ``` ### 2. 查看房型价格 **触发条件**:用户回复序号(如"1") **步骤**: 1. 获取酒店ID(从之前的搜索结果) 2. 调用 `query_hotel_price()` 获取房型和产品 3. 过滤 status=false 的房型和产品 4. 展示前5个房型,每个房型展示前5个产品 **展示格式**: ``` 🏨 汉庭酒店(北京长虹桥店) 📍 农展馆南里12号院5号楼 | ⭐4.8分 | 经济型 📅 入住:2026-03-27 → 退房:2026-03-28 **房型1:测试房型** 床型:2张1.80m大床 | 窗户:有窗 | 面积:22㎡ | 序号 | 价格 | 早餐 | 取消政策 | 取消详情 | |:---:|---:|:---:|:---:|---| | 1-1 | ¥1 | 单早 | ✅限时取消 | 3月26日 12:00前免费取消... | 💡 回复"房型序号-产品序号"预订,如"1-1" ``` ### 3. 创建订单 **触发条件**:用户回复"房型序号-产品序号"(如"1-1") **步骤**: 1. 收集入住人信息(姓名、手机号) 2. 构建请求参数(注意 guestList1 为二维数组) 3. 调用 `create_order()` 创建订单 4. 展示订单信息和支付链接 **展示格式**: ``` ✅ 订单创建成功! 🏨 订单号:69c23b67e37c7d156e3e0c1b 📅 入住:2026-03-27 → 退房:2026-03-28 🛏️ 房型:测试房型 💰 价格:¥280 📋 最晚取消时间:2026-03-26 12:00:00 🔗 [立即支付](https://app-gate.fenbeitong.com/...) 🔗 [查看订单详情](https://app-gate.fenbeitong.com/...) ``` --- ## Python API 参考 ```python from scripts.fb_hotel_api import FbHotelApi, send_verification_code, verify_and_get_token # 初始化(使用默认token或指定token) api = FbHotelApi(access_token="fbsk-xxx") # 发送验证码 result = send_verification_code("13800138000") # 验证并获取token success, token = verify_and_get_token("13800138000", "1234") # 搜索酒店 result = api.search_hotel_list( city_name="北京市", keywords="国贸附近", page_size=5 ) # 查询酒店价格 result = api.query_hotel_price( hotel_id="5a39df2fbbfdc4732360e860", check_in_date="2026-03-27", check_out_date="2026-03-28" ) # 查询酒店扩展详情 result = api.query_hotel_detail(hotel_id="5a39df2fbbfdc4732360e860") # 查询酒店评论 result = api.query_hotel_comment(hotel_id="8502475", page_size=5) # 创建订单 result = api.create_order( hotel_id="5a39df2fbbfdc4732360eaa9", room_id="7617d7bbb3a94537a58bb3d33108b429", plan_id="69c23ae4e37c7d156e3e0c01", check_in_date="2026-03-27", check_out_date="2026-03-28", total_price=280, contact={"name": "张三", "phone": "13800138000"}, guest_list=[[{"name": "张三", "phone": "13800138000"}]] ) # 查询订单 result = api.query_order(order_id="69c23b67e37c7d156e3e0c1b") # 取消订单 result = api.cancel_order(order_id="69c23b67e37c7d156e3e0c1b", cancel_reason="不想要了") # 格式化输出 print(api.format_hotel_list(result)) print(api.format_hotel_price(result, "2026-03-27", "2026-03-28")) ``` --- ## 📝 格式化输出模块 **文件位置**:`scripts/formatter.py` ### 展示配置 | 配置项 | 默认值 | 说明 | |-------|-------|------| | HOTEL_LIST_LIMIT | 5 | 酒店列表展示数量 | | ROOM_LIST_LIMIT | 5 | 房型展示数量 | | PLAN_LIST_LIMIT | 5 | 每个房型展示的产品数量 | ### 格式化函数 ```python from scripts.formatter import ( format_hotel_list, # 酒店列表格式化 format_hotel_rooms, # 房型价格格式化 format_order_result, # 订单创建结果格式化 format_trip_plan, # 行程规划格式化 format_order_confirmation, # 订单确认格式化 format_order_detail_full # 完整订单详情格式化 ) ``` ### 展示字段规范 **酒店列表必须包含**: - 序号、酒店名称、评分、星级、地址、最低价 **房型价格必须包含**: - 序号、房型名称、床型、面积、窗户类型 - 价格、早餐、取消政策类型、取消详情 **订单详情必须包含**: - 订单号、酒店信息、房型信息 - 床型、面积、窗户、早餐、价格 - 取消政策类型和详情 - **[立即支付]** 按钮(不是"查看订单详情") --- ## 版本历史 | 版本 | 日期 | 变更说明 | |-----|------|---------| | 3.1.0 | 2026-03-25 | 新增格式化输出模块,固化展示逻辑 | | 3.0.0 | 2026-03-25 | 统一接口入口,新增认证流程,重构API | | 2.9.1 | 2026-03-20 | 修复订单创建问题 | | 1.9.1 | 2026-03-15 | 新增酒店评论查询 |

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 fbt-hotel-1775988370 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 fbt-hotel-1775988370 技能

通过命令行安装

skillhub install fbt-hotel-1775988370

下载 Zip 包

⬇ 下载 fb-hotel-skill v1.0.0

文件大小: 24.08 KB | 发布时间: 2026-4-13 10:15

v1.0.0 最新 2026-4-13 10:15
分贝通酒店预定助手,实时查询搜索酒店、展示酒店列表、查询酒店房型、展示房型产品和报价、预定酒店、查看订单、取消订单、查看酒店基础信息和酒店评论信息。

---

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部