AI机票助手
当用户询问航班搜索、舱位查询、机票预订、机票改期或机票退票时,使用此 skill 调用AI机票服务。
运行环境要求
本 skill 通过 python3 执行 HTTP POST 请求调用AI机票服务。运行环境必须提供 python3。
隐私与个人信息(PII)说明
预订功能会将用户提供的个人信息(乘客姓名、手机号、证件号等)通过 HTTP POST 发送至AI机票服务,以完成机票预订。使用本 skill 即表示用户知晓并同意上述 PII 被发送到外部服务。请勿在日志或回复中暴露用户个人信息。
可用工具
重要:下方示例中的参数均为占位,调用时需根据用户当前需求填入实际值(城市、日期、航班号、乘机人、联系方式等),勿直接照抄示例值。
适用场景
- - 按出发/到达城市、日期搜索航班列表
- 查看指定航班的舱位价格详情
- 用户确认后创建机票预订订单
- 查询已创建订单的详细信息
- 用户确认后改期或退票已创建订单的航班
鉴权流程(必须先完成)
重要:使用任何功能前,用户必须先完成鉴权流程。鉴权成功后获得的 apiKey 会自动保存在用户主目录的 ~/.fbt_auth.json 文件中,新会话会自动沿用。
鉴权步骤
- 1. 发送验证码:用户提供手机号,系统发送验证码到手机
- 验证并获取 apiKey:用户输入验证码,验证成功后获得 apiKey
- 自动注入:后续所有 API 调用会自动携带 apiKey
鉴权命令
1. 发送验证码
CODEBLOCK0
示例:
CODEBLOCK1
2. 验证并获取 apiKey
CODEBLOCK2
示例:
CODEBLOCK3
3. 查看鉴权状态
CODEBLOCK4
鉴权检查规则
- - 在执行任何航班查询、预订、改期、退票操作前,必须先检查鉴权状态
- 如果未鉴权或 apiKey 已过期,必须引导用户完成鉴权流程
- 鉴权成功后,所有 API 调用会自动携带 apiKey,无需手动传递
1. 航班搜索 (searchFlight)
功能:查询国内航班列表
必填参数:
- -
start_code: 出发城市名称(如 北京、上海、广州) - INLINECODE2 : 到达城市名称
- INLINECODE3 : 出发日期(格式 YYYY-MM-DD)
触发词:某地到某地航班、查机票、搜航班、机票价格
执行命令:
CODEBLOCK5
示例:
CODEBLOCK6
返回结果:航班列表(航班号、航空公司、起降时间、机型、机场、最低价等)
上下文检查规则:
- - 如果用户在当前或之前的消息中已经提供了某个参数,则无需再次询问该参数
- 只向用户询问尚未提供的参数
- 如果所有参数都已提供,直接发起请求
展示要求:
- - 必须使用代码块包裹脚本输出的表格
- 必须展示完整表格
- 参考"输出格式要求"章节的标准格式
2. 舱位详情查询 (searchPrice)
功能:查询特定航班的详细价格信息
必填参数:
- -
start_code: 出发机场三字码(从 searchFlight 响应结果中获取) - INLINECODE5 : 到达机场三字码(从 searchFlight 响应结果中获取)
- INLINECODE6 : 出发日期(格式 YYYY-MM-DD)
- INLINECODE7 : 航班号
触发词:查看航班详情、这个航班的舱位价格
执行命令:
CODEBLOCK7
示例:
CODEBLOCK8
返回结果:该航班的各舱位价格、折扣、退改签规则等详细信息,并将舱位信息保存到 /tmp/flight_seat_items.json 供下单使用
使用场景:用户先使用航班搜索查询航班列表,从返回的航班列表中选择某个航班后,使用此功能查询该航班的详细价格信息
展示要求:
- - 必须使用代码块包裹脚本输出的表格
- 必须展示完整表格
- 参考"输出格式要求"章节的标准格式
3. 退改规则和行李额查询 (searchGuestRule)
功能:查询指定舱位的详细退改签规则和行李额
必填参数:
- -
seat_index: 舱位编号(从舱位详情查询结果中选择,如 1、2、3)
触发词:退改规则、退票规则、改签规则、这个舱位的退改政策、行李额、客规
执行命令:
CODEBLOCK9
示例:
CODEBLOCK10
返回结果:该舱位的退票、改签、行李额等详细规则说明
重要说明:
- - 此功能为可选流程,仅在用户明确询问退改规则时调用
- INLINECODE10 必须来自最近一次舱位详情查询的结果
- 舱位信息从
/tmp/flight_seat_items.json 文件中读取 - 如果文件不存在或舱位编号无效,会提示用户先执行舱位详情查询
4. 机票下单 (createOrder)
功能:创建机票订单
必填参数:
- -
seat_index: 舱位编号(从上一步舱位详情查询结果中选择,如 1、2、3) - INLINECODE13 : 乘客姓名
- INLINECODE14 : 乘客手机号
- INLINECODE15 : 乘客证件号
触发词:订这个、预订、下单
执行命令:
CODEBLOCK11
示例:
CODEBLOCK12
返回结果:订单号、支付链接、订单详情链接等
重要说明:
- -
seat_index 必须来自最近一次舱位详情查询的结果 - 舱位信息从
/tmp/flight_seat_items.json 文件中读取 - 如果文件不存在或舱位编号无效,会提示用户先执行舱位详情查询
- 必须向用户索取乘客姓名、手机号和证件号,不可使用默认值或跳过
5. 订单详情查询 (orderDetail)
功能:查询已创建订单的详细信息
必填参数:
- -
order_id: 订单号(从下单接口返回的订单号中获取)
触发词:订单详情、查看订单、查询订单、订单状态
执行命令:
CODEBLOCK13
示例:
CODEBLOCK14
返回结果:订单的详细信息,包括航班信息、乘客信息、支付状态等
重要说明:
- - 订单号可以从下单接口的返回结果中获取
- 此功能可用于查询订单的实时状态和详细信息
6. 取消订单 (cancelOrder)
功能:取消待支付状态的订单
必填参数:
- -
order_id: 订单号(从下单接口返回的订单号中获取)
触发词:取消订单、不要了、取消这个订单
执行命令:
CODEBLOCK15
示例:
CODEBLOCK16
返回结果:取消成功或失败
重要说明:
- - 此功能仅适用于待支付状态的订单
- 订单号可以从下单接口的返回结果中获取
- 已支付或已出票的订单无法通过此接口取消,需要使用退票功能
7. 改期航班搜索 (endorseSearchFlight)
功能:查询可改期的航班列表
必填参数:
- -
order_id: 订单号(从订单详情或下单接口返回的订单号中获取) - INLINECODE21 : 改期日期(格式 YYYY-MM-DD,需要向用户索取)
触发词:改期、改签、换航班、查改期航班
执行命令:
CODEBLOCK17
示例:
CODEBLOCK18
返回结果:可改期的航班列表(航班号、航空公司、起降时间、机场、最低价等)
重要说明:
- - 订单号可以从订单详情接口获取
- 改期日期需要向用户索取
- 此接口会自动从订单详情中提取 flightno(从 segmentInfo.flightno 获取)和 ticket_ids(从 passengerList[0].productId 获取)
- 返回的航班列表格式与航班搜索接口一致,方便用户选择
展示要求:
- - 必须使用代码块包裹脚本输出的表格
- 必须展示完整表格
- 参考"输出格式要求"章节的标准格式
8. 改期舱位详情查询 (endorseSearchPrice)
功能:查询指定改期航班的舱位价格详情(改期费、机票差价费等)
必填参数:
- -
order_id: 订单号(从订单详情或下单接口返回的订单号中获取) - INLINECODE23 : 改期日期(格式 YYYY-MM-DD,与改期航班搜索时使用的日期一致)
- INLINECODE24 : 航班号(从改期航班搜索结果中选择)
触发词:查看改期价格、这个航班的改期费、改期舱位详情
执行命令:
CODEBLOCK19
示例:
CODEBLOCK20
返回结果:该航班的各舱位改期费、机票差价费、预估总改期费等详细信息,并将舱位信息保存到 /tmp/endorse_seat_items.json 供改期下单使用
重要说明:
- - 此接口必须在改期航班搜索之后调用
- flightno 必须来自改期航班搜索返回的航班列表,需要用户选择
- 此接口会自动从订单详情中提取 ticketids(从 passengerList[0].productId 获取)
- 展示的改期费用信息包括:改期费、机票差价费、预估总改期费
- 舱位信息会保存到临时文件供后续改期下单使用
展示要求:
- - 必须使用代码块包裹脚本输出的表格
- 必须展示完整表格
- 参考"输出格式要求"章节的标准格式
9. 提交改期申请 (endorseApply)
功能:提交改期申请,创建改期订单
必填参数:
- -
seat_index: 舱位编号(从改期舱位详情查询结果中选择,如 1、2、3) - INLINECODE27 : 原订单号(从订单详情或下单接口返回的订单号中获取)
触发词:确认改期、提交改期申请、改期下单
执行命令:
CODEBLOCK21
示例:
CODEBLOCK22
返回结果:改期单订单号、支付链接、订单详情链接等
重要说明:
- -
seat_index 必须来自最近一次改期舱位详情查询的结果 - 舱位信息从
/tmp/endorse_seat_items.json 文件中读取 - 如果文件不存在或舱位编号无效,会提示用户先执行改期舱位详情查询
- 改期申请成功后会返回新的改期单订单号,需要用户完成支付
10. 预估退票费查询 (refundFeeDetail)
功能:查询退票费用详情
必填参数:
- -
order_id: 订单号(从订单详情或下单接口返回的订单号中获取)
触发词:查询退票费、退票费用、预估退票费
执行命令:
CODEBLOCK23
示例:
CODEBLOCK24
返回结果:预估退票费(单票)
重要说明:
- - 此接口用于在退票前预估退票费用
- 用户需要确认退票费用后才能提交退票申请
- 返回的 refund_amount 需要在提交退票申请时使用
11. 提交退票申请 (refundApply)
功能:提交退票申请
必填参数:
- -
order_id: 订单号(从订单详情或下单接口返回的订单号中获取) - INLINECODE32 : 预估退票费(从预估退票费查询接口返回的 refund_amount 获取)
触发词:确认退票、提交退票申请、退票
执行命令:
CODEBLOCK25
示例:
CODEBLOCK26
返回结果:退票申请结果、退票单号
重要说明:
- - 此接口必须在预估退票费查询之后调用
- refundamount 必须来自预估退票费查询接口返回的 refundamount
- product_ids 会自动从订单详情中获取(从 passengerList 中提取 productId)
- 退票申请提交后需要等待审核
完整流程示例
用户:3月15号北京到上海的航班
AI 执行:
- 1. 检查上下文,发现用户已提供出发城市(北京)、到达城市(上海)、日期(3月15号)
- 调用 INLINECODE33
- 展示航班列表
用户:看一下 CA1501 这个航班的舱位
AI 执行:
- 1. 从上一轮结果确认航班号 CA1501,连同城市和日期
- 调用 INLINECODE34
- 展示舱位列表(价格、退改签规则等)
- 提示用户可选择舱位编号进行预订
用户:第1个舱位的退改规则是什么?(可选步骤)
AI 执行:
- 1. 调用 INLINECODE35
- 展示该舱位的详细退改签规则
用户:订第1个,乘客张三 13800138000 110101199001011234
AI 执行:
- 1. 从用户输入提取:seatindex=1、passengername=张三、passengerphone=13800138000、passengerid=110101199001011234
- 调用 INLINECODE36
- 展示订单号、支付链接等信息
- 提醒用户完成支付
用户:查看订单详情
AI 执行:
- 1. 从上一轮结果获取订单号(如:69a677bee4b0252bd532e35c)
- 如果用户没有提供手机号,向用户索要创建订单时使用的乘机人手机号
- 调用 INLINECODE37
- 展示订单的详细信息
用户:取消订单
AI 执行:
- 1. 从上一轮结果获取订单号和手机号
- 调用 INLINECODE38
- 展示取消订单成功或失败的信息
用户:我想改期到3月20号
AI 执行:
- 1. 从上一轮订单详情中获取订单号和手机号
- 向用户确认改期日期(3月20号,格式化为 2026-03-20)
- 调用 INLINECODE39
- 展示可改期的航班列表
用户:看一下 HU7603 这个航班的改期价格
AI 执行:
- 1. 从上一轮改期航班搜索结果中确认航班号 HU7603
- 调用 INLINECODE40
- 展示该航班的改期舱位价格详情(改期费、机票差价费、预估总改期费等)
- 提示用户可选择舱位进行改期
用户:确认改期第1个舱位
AI 执行:
- 1. 从上一轮改期舱位详情查询结果中确认舱位编号 1
- 调用 INLINECODE41
- 展示改期单订单号、支付链接、订单详情链接等信息
- 提醒用户完成支付
用户:我要退票
AI 执行:
- 1. 从上一轮订单详情中获取订单号、手机号和票号
- 调用 INLINECODE42
- 展示退票费详情
- 必须强制用户确认退票费用,无论退票费是多少(包括¥0),都不得擅自提交退票申请
用户:确认退票
AI 执行:
- 1. 从上一轮退票费查询结果中获取退款金额
- 调用 INLINECODE43
- 展示退票状态、退票单号等信息
- 提醒用户等待审核
输出格式要求
🚨 强制要求:
- 1. 禁止用自然语言改写表格内容
- 所有表格必须用``
plaintext``代码块包裹 - 不得省略或截断任何航班/舱位信息
航班列表展示
查询结果以表格形式平铺展示,每个航班一行,只显示最低价:
CODEBLOCK27
舱位详情展示
展示各舱位价格、折扣等详细信息,并标注舱位编号供用户选择:
CODEBLOCK28
退改规则展示
展示选定舱位的详细退改签规则和行李额:
CODEBLOCK29
订单结果展示
展示订单号、支付链接、航班信息等关键信息:
CODEBLOCK30
订单详情展示
展示订单的完整信息,包括航班信息、乘客信息、支付状态等:
CODEBLOCK31
改期航班搜索展示
展示可改期的航班列表,格式与航班搜索一致:
CODEBLOCK32
改期舱位详情展示
展示指定改期航班的各舱位改期费用详情:
CODEBLOCK33
改期申请结果展示
展示改期申请成功后的关键信息:
CODEBLOCK34
退票费详情展示
展示退票费用详情:
CODEBLOCK35
退票申请结果展示
展示退票申请结果:
CODEBLOCK36
注意事项
- 1. PII 安全:乘客姓名、手机号、证件号等仅在预订时发送至服务,勿在日志或回复中暴露
- 日期格式:所有日期均为 YYYY-MM-DD
- 下单前:必须先执行舱位详情查询,获取舱位信息后才能下单
- 强制索取信息:下单时必须向用户索取乘客姓名、手机号和证件号,不可使用默认值或跳过
- 数据准确性:展示结果时必须基于脚本输出的原始数据,不得修改、添加或删除任何数据
- 禁止幻想:不得添加任何脚本输出中不存在的航班信息、价格或推荐内容
- 强制确认退票:退票时必须强制用户确认退票费用,无论退票费是多少(包括¥0),都不得擅自提交退票申请
AI机票助手
当用户询问航班搜索、舱位查询、机票预订、机票改期或机票退票时,使用此 skill 调用AI机票服务。
运行环境要求
本 skill 通过 python3 执行 HTTP POST 请求调用AI机票服务。运行环境必须提供 python3。
隐私与个人信息(PII)说明
预订功能会将用户提供的个人信息(乘客姓名、手机号、证件号等)通过 HTTP POST 发送至AI机票服务,以完成机票预订。使用本 skill 即表示用户知晓并同意上述 PII 被发送到外部服务。请勿在日志或回复中暴露用户个人信息。
可用工具
重要:下方示例中的参数均为占位,调用时需根据用户当前需求填入实际值(城市、日期、航班号、乘机人、联系方式等),勿直接照抄示例值。
适用场景
- - 按出发/到达城市、日期搜索航班列表
- 查看指定航班的舱位价格详情
- 用户确认后创建机票预订订单
- 查询已创建订单的详细信息
- 用户确认后改期或退票已创建订单的航班
鉴权流程(必须先完成)
重要:使用任何功能前,用户必须先完成鉴权流程。鉴权成功后获得的 apiKey 会自动保存在用户主目录的 ~/.fbt_auth.json 文件中,新会话会自动沿用。
鉴权步骤
- 1. 发送验证码:用户提供手机号,系统发送验证码到手机
- 验证并获取 apiKey:用户输入验证码,验证成功后获得 apiKey
- 自动注入:后续所有 API 调用会自动携带 apiKey
鉴权命令
1. 发送验证码
bash
python3 scripts/auth.py send
示例:
bash
python3 scripts/auth.py send 13800138000
2. 验证并获取 apiKey
bash
python3 scripts/auth.py verify
示例:
bash
python3 scripts/auth.py verify 13800138000 123456
3. 查看鉴权状态
bash
python3 scripts/auth.py status
鉴权检查规则
- - 在执行任何航班查询、预订、改期、退票操作前,必须先检查鉴权状态
- 如果未鉴权或 apiKey 已过期,必须引导用户完成鉴权流程
- 鉴权成功后,所有 API 调用会自动携带 apiKey,无需手动传递
1. 航班搜索 (searchFlight)
功能:查询国内航班列表
必填参数:
- - startcode: 出发城市名称(如 北京、上海、广州)
- endcode: 到达城市名称
- date: 出发日期(格式 YYYY-MM-DD)
触发词:某地到某地航班、查机票、搜航班、机票价格
执行命令:
bash
python3 scripts/searchflights.py code>
示例:
bash
python3 scripts/search_flights.py 北京 上海 2026-03-15
返回结果:航班列表(航班号、航空公司、起降时间、机型、机场、最低价等)
上下文检查规则:
- - 如果用户在当前或之前的消息中已经提供了某个参数,则无需再次询问该参数
- 只向用户询问尚未提供的参数
- 如果所有参数都已提供,直接发起请求
展示要求:
- - 必须使用代码块包裹脚本输出的表格
- 必须展示完整表格
- 参考输出格式要求章节的标准格式
2. 舱位详情查询 (searchPrice)
功能:查询特定航班的详细价格信息
必填参数:
- - startcode: 出发机场三字码(从 searchFlight 响应结果中获取)
- endcode: 到达机场三字码(从 searchFlight 响应结果中获取)
- date: 出发日期(格式 YYYY-MM-DD)
- flight_no: 航班号
触发词:查看航班详情、这个航班的舱位价格
执行命令:
bash
python3 scripts/searchprice.py code> code> no>
示例:
bash
python3 scripts/search_price.py PEK PVG 2026-03-15 CA1501
返回结果:该航班的各舱位价格、折扣、退改签规则等详细信息,并将舱位信息保存到 /tmp/flightseatitems.json 供下单使用
使用场景:用户先使用航班搜索查询航班列表,从返回的航班列表中选择某个航班后,使用此功能查询该航班的详细价格信息
展示要求:
- - 必须使用代码块包裹脚本输出的表格
- 必须展示完整表格
- 参考输出格式要求章节的标准格式
3. 退改规则和行李额查询 (searchGuestRule)
功能:查询指定舱位的详细退改签规则和行李额
必填参数:
- - seat_index: 舱位编号(从舱位详情查询结果中选择,如 1、2、3)
触发词:退改规则、退票规则、改签规则、这个舱位的退改政策、行李额、客规
执行命令:
bash
python3 scripts/searchguestrule.py
示例:
bash
python3 scripts/searchguestrule.py 1
返回结果:该舱位的退票、改签、行李额等详细规则说明
重要说明:
- - 此功能为可选流程,仅在用户明确询问退改规则时调用
- seatindex 必须来自最近一次舱位详情查询的结果
- 舱位信息从 /tmp/flightseat_items.json 文件中读取
- 如果文件不存在或舱位编号无效,会提示用户先执行舱位详情查询
4. 机票下单 (createOrder)
功能:创建机票订单
必填参数:
- - seatindex: 舱位编号(从上一步舱位详情查询结果中选择,如 1、2、3)
- passengername: 乘客姓名
- passengerphone: 乘客手机号
- passengerid: 乘客证件号
触发词:订这个、预订、下单
执行命令:
bash
python3 scripts/createorder.py index> name> phone>
示例:
bash
python3 scripts/create_order.py 1 张三 13800138000 110101199001011234
返回结果:订单号、支付链接、订单详情链接等
重要说明:
- - seatindex 必须来自最近一次舱位详情查询的结果
- 舱位信息从 /tmp/flightseat_items.json 文件中读取
- 如果文件不存在或舱位编号无效,会提示用户先执行舱位详情查询
- 必须向用户索取乘客姓名、手机号和证件号,不可使用默认值或跳过
5. 订单详情查询 (orderDetail)
功能:查询已创建订单的详细信息
必填参数:
- - order_id: 订单号(从下单接口返回的订单号中获取)
触发词:订单详情、查看订单、查询订单、订单状态
执行命令:
bash
python3 scripts/orderdetail.py id>
示例:
bash
python3 scripts/order_detail.py 69a677bee4b0252bd532e35c
返回结果:订单的详细信息,包括航班信息、乘客信息、支付状态等
重要说明:
- - 订单号可以从下单接口的返回结果中获取
- 此功能可用于查询订单的实时状态和详细信息
6. 取消订单 (cancelOrder)
功能:取消待支付状态的订单
必填参数:
- - order_id: 订单号(从下单接口返回的订单号中获取)
触发词:取消订单、不要了、取消这个订单
执行命令:
bash
python3 scripts/cancelorder.py id>
示例:
bash
python3 scripts/cancel_order.py 69a677bee4b0252bd532e35c
返回结果:取消成功或失败
重要说明:
- - 此功能仅适用于待支付状态的订单
- 订单号可以从下单接口的返回结果中获取
- 已支付或已出票的订单无法通过此接口取消,需要使用退票功能
7. 改期航班搜索 (endorseSearchFlight)
功能:查询可改期的航班列表
必填参数:
- - order_id: 订单号(从订单详情或下单接口