分贝通酒店预定助手 (fb-hotel-skill)
技能描述
分贝通酒店预定助手,实时查询搜索酒店、展示酒店列表、查询酒店房型、展示房型产品和报价、预定酒店、查看订单、取消订单、查看酒店基础信息和酒店评论信息。
🔐 鉴权流程(必须先完成)
重要:使用任何功能前,用户必须先完成鉴权流程。鉴权成功后获得的 identity_code(access-token)会自动保存在 ~/.fbt-auth.json 文件中,新会话会自动沿用。
鉴权步骤
步骤 1:发送验证码
CODEBLOCK0
API调用:
CODEBLOCK1
步骤 2:验证并获取 identity_code
CODEBLOCK2
API调用:
CODEBLOCK3
步骤 3:自动注入(后续调用)
后续所有 API 调用会自动从 ~/.fbt-auth.json 读取 token:
CODEBLOCK4
Token 存储管理
| 文件 | 路径 | 说明 |
|---|
| 鉴权文件 | INLINECODE3 | 保存 identity_code 和手机号 |
文件格式:
CODEBLOCK5
API 函数
CODEBLOCK6
接口鉴权说明
| skill_type | 接口名称 | 需要认证 |
|---|
| INLINECODE4 | 获取手机号验证码 | ❌ 否 |
| INLINECODE5 |
获取身份编码 | ❌ 否 |
|
searchHotelList | 搜索酒店列表 | ✅ 是 |
|
queryHotelPrice | 查询酒店价格详情 | ✅ 是 |
|
queryHotelDetail | 查询酒店扩展详情 | ✅ 是 |
|
queryHotelComment | 查询酒店评论 | ✅ 是 |
|
createOrder | 酒店下单 | ✅ 是 |
|
cancelOrder | 取消订单 | ✅ 是 |
|
queryOrder | 查询订单 | ✅ 是 |
⚠️ 【重要约束】
- - 必须调用
scripts/fb_hotel_api.py 中的函数获取数据 - 禁止自行编造酒店信息、价格或评论
- 接口返回什么数据就展示什么,不要修改
- 首次使用必须先完成分贝通企业认证
对接信息
环境配置
| 环境 | 域名 |
|---|
| FAT 测试环境 | INLINECODE14 |
| 线上环境 |
https://app-gate.fenbeitong.com |
统一接口入口
所有接口统一使用同一入口:
CODEBLOCK7
通过 skill_type 参数区分不同操作。
请求格式
Headers:
CODEBLOCK8
Body:
{
"skill_type": "searchHotelList",
// 其他参数...
}
核心接口列表
一、认证类接口
1. 获取手机号验证码
skill_type: INLINECODE17
请求示例:
CODEBLOCK10
响应示例:
CODEBLOCK11
2. 获取身份编码
skill_type: INLINECODE18
请求示例:
CODEBLOCK12
响应示例:
{
"request_id": "oKXv9eCYuFIXoxRn",
"code": 0,
"msg": "success",
"data": {
"identity_code": "fbsk-2db251f6c8d74ce69ae3dcb82ed1055b"
}
}
二、酒店查询接口
1. 搜索酒店列表
skill_type: INLINECODE19
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
| city_name | string | 是 | 城市名称(如"北京市") |
| keywords |
string | 否 | 关键词(用户输入原样传递) |
| hotel_name | string | 否 | 酒店名称 |
| page_index | int | 否 | 页码,默认1 |
| page_size | int | 否 | 每页数量,默认5 |
请求示例:
CODEBLOCK14
响应字段:
酒店名称 |
| star
levelname | 星级类型(高档型、豪华型等) |
| address | 地址 |
| district_name | 区域 |
| business
zonename | 商圈 |
| score | 评分 |
| min_price | 最低价 |
| main_logo | 酒店图片 |
2. 查询酒店价格详情
skill_type: INLINECODE20
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
| hotelid | string | 是 | 酒店ID |
| checkin_date |
string | 是 | 入住日期 yyyy-MM-dd |
| check
outdate | string | 是 | 退房日期 yyyy-MM-dd |
| payment_type | string | 否 | 支付方式 PP=预付 SP=现付 |
| nation_type | int | 否 | 1=国内 2=国际 |
请求示例:
CODEBLOCK15
响应字段:
房型列表 |
| rooms[].room_id | 房型ID |
| rooms[].room_name | 房型名称 |
| rooms[].bed_type | 床型 |
| rooms[].window_type | 窗户类型 |
| rooms[].area | 面积 |
| rooms[].status | 是否可预订 |
| rooms[].plan_list[] | 产品列表 |
| plan
list[].planid | 产品ID |
| plan
list[].planname | 产品名称 |
| plan_list[].breakfast | 早餐 |
| plan
list[].canceltype | 取消政策类型 |
| plan
list[].cancelrule | 取消政策详情 |
| plan
list[].totalprice | 总价 |
| plan_list[].status | 是否可预订 |
3. 查询酒店扩展详情
skill_type: INLINECODE21
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
| hotel_id | string | 是 | 酒店ID |
4. 查询酒店评论
skill_type: INLINECODE22
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
| hotelid | string | 是 | 酒店ID |
| pageindex |
int | 否 | 页码 |
| page_size | int | 否 | 每页数量 |
请求示例:
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: INLINECODE23
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
| nationtype | int | 是 | 1=国内 2=国际 |
| paymenttype |
string | 是 | PP=预付 SP=现付 |
| hotel_id | string | 是 | 酒店ID |
| check
indate | string | 是 | 入住日期 |
| check
outdate | string | 是 | 退房日期 |
| room_id | string | 是 | 房型ID |
| plan_id | string | 是 | 产品ID |
| total_price | float | 是 | 总价 |
| room_count | int | 是 | 房间数 |
| contact | object | 是 | 联系人信息 |
| guestList1 | array | 是 | 入住人列表(二维数组) |
请求示例:
CODEBLOCK17
重要:guestList1 参数必须为二维数组格式!
2. 取消订单
skill_type: INLINECODE25
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
| orderid | string | 是 | 订单ID |
| cancelreason |
string | 否 | 取消原因 |
请求示例:
CODEBLOCK18
3. 查询订单
skill_type: INLINECODE26
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
| order_id | string | 是 | 订单ID |
请求示例:
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"
}'
四、收银台支付
订单创建成功后,通过以下链接引导用户完成支付:
| 类型 | 链接格式 |
|---|
| 立即支付 | INLINECODE27 |
| 查看订单 |
{域名}/business/hotel/open/push/redirect?orderId={order_id}&type=1&token={access_token} |
FAT环境示例:
- - 支付: INLINECODE29
- 订单: INLINECODE30
使用流程
1. 酒店搜索
触发条件:用户输入「酒店搜索/订酒店/找酒店/搜酒店」+ 城市/关键词
步骤:
- 1. 检查用户认证状态
- 调用
search_hotel_list() 获取酒店列表 - 格式化展示酒店列表(表格形式)
展示格式:
CODEBLOCK20
2. 查看房型价格
触发条件:用户回复序号(如"1")
步骤:
- 1. 获取酒店ID(从之前的搜索结果)
- 调用
query_hotel_price() 获取房型和产品 - 过滤 status=false 的房型和产品
- 展示前5个房型,每个房型展示前5个产品
展示格式:
CODEBLOCK21
3. 创建订单
触发条件:用户回复"房型序号-产品序号"(如"1-1")
步骤:
- 1. 收集入住人信息(姓名、手机号)
- 构建请求参数(注意 guestList1 为二维数组)
- 调用
create_order() 创建订单 - 展示订单信息和支付链接
展示格式:
✅ 订单创建成功!
🏨 订单号: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 参考
CODEBLOCK23
📝 格式化输出模块
文件位置: INLINECODE34
展示配置
| 配置项 | 默认值 | 说明 |
|---|
| HOTELLISTLIMIT | 5 | 酒店列表展示数量 |
| ROOMLISTLIMIT |
5 | 房型展示数量 |
| PLAN
LISTLIMIT | 5 | 每个房型展示的产品数量 |
格式化函数
CODEBLOCK24
展示字段规范
酒店列表必须包含:
房型价格必须包含:
- - 序号、房型名称、床型、面积、窗户类型
- 价格、早餐、取消政策类型、取消详情
订单详情必须包含:
- - 订单号、酒店信息、房型信息
- 床型、面积、窗户、早餐、价格
- 取消政策类型和详情
- [立即支付] 按钮(不是"查看订单详情")
版本历史
| 版本 | 日期 | 变更说明 |
|---|
| 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 | 新增酒店评论查询 |
分贝通酒店预定助手 (fb-hotel-skill)
技能描述
分贝通酒店预定助手,实时查询搜索酒店、展示酒店列表、查询酒店房型、展示房型产品和报价、预定酒店、查看订单、取消订单、查看酒店基础信息和酒店评论信息。
🔐 鉴权流程(必须先完成)
重要:使用任何功能前,用户必须先完成鉴权流程。鉴权成功后获得的 identity_code(access-token)会自动保存在 ~/.fbt-auth.json 文件中,新会话会自动沿用。
鉴权步骤
步骤 1:发送验证码
用户回复: 分贝通登录
AI: 请输入您的手机号以接收验证码(例如:13800138000)
用户输入: 13800138000
AI: ✅ 验证码已发送到 1388000,请在5分钟内输入验证码
API调用:
python
from scripts.fbhotelapi import sendverificationcode
result = sendverificationcode(13800138000)
成功响应: {code: 0, msg: success, data: true}
步骤 2:验证并获取 identity_code
用户输入: 1234
AI: 🎉 认证成功!身份编码已保存到 ~/.fbt-auth.json,有效期90天
现在可以使用分贝通企业接口了
API调用:
python
from scripts.fbhotelapi import verifyandget_token
success, result = verifyandget_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.fbhotelapi import FbHotelApi
无需传入 token,自动从文件读取
api = FbHotelApi()
result = api.search
hotellist(city_name=北京市, keywords=国贸)
Token 存储管理
| 文件 | 路径 | 说明 |
|---|
| 鉴权文件 | ~/.fbt-auth.json | 保存 identity_code 和手机号 |
文件格式:
json
{
identity_code: fbsk-2db251f6c8d74ce69ae3dcb82ed1055b,
mobile: 1388000,
created_at: 2026-03-25T09:48:00,
updated_at: 2026-03-25T09:48:00
}
API 函数
python
from scripts.fbhotelapi import (
saveauthtoken, # 保存 token
loadauthtoken, # 读取 token
getauthinfo, # 获取完整认证信息
clearauthtoken # 清除认证信息
)
保存 token
save
authtoken(fbsk-xxx, 13800138000)
读取 token
token = load
authtoken()
获取完整信息
info = get
authinfo() # {identity_code: ..., mobile: ...}
清除认证
clear
authtoken()
接口鉴权说明
| skill_type | 接口名称 | 需要认证 |
|---|
| getMobileCaptcha | 获取手机号验证码 | ❌ 否 |
| getIdentityCode |
获取身份编码 | ❌ 否 |
| searchHotelList | 搜索酒店列表 | ✅ 是 |
| queryHotelPrice | 查询酒店价格详情 | ✅ 是 |
| queryHotelDetail | 查询酒店扩展详情 | ✅ 是 |
| queryHotelComment | 查询酒店评论 | ✅ 是 |
| createOrder | 酒店下单 | ✅ 是 |
| cancelOrder | 取消订单 | ✅ 是 |
| queryOrder | 查询订单 | ✅ 是 |
⚠️ 【重要约束】
- - 必须调用 scripts/fbhotelapi.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
}
响应字段:
酒店名称 |
| star
levelname | 星级类型(高档型、豪华型等) |
| address | 地址 |
| district_name | 区域 |
| business
zonename | 商圈 |
| score | 评分 |
| min_price | 最低价 |
| main_logo | 酒店图片 |
2. 查询酒店价格详情
skill_type: queryHotelPrice
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
| hotelid | string | 是 | 酒店ID |
| checkin_date |
string | 是 | 入住日期 yyyy-MM-dd |
| check
outdate | string | 是 | 退房日期 yyyy-MM-dd |
| payment_type | string | 否 | 支付方式 PP=预付 SP=现付 |
| nation_type | int | 否 | 1=国内 2=国际 |
请求示例:
bash
curl --location