专车预订助手
当用户询问专车搜索、运力查询或专车预订时,使用此 skill 通过 curl 调用专车 MCP 服务。
运行环境要求
本 skill 通过 MCP 客户端调用专车 MCP 服务,使用 JSON-RPC 2.0 / tools/call 协议。
会话管理说明:
- MCP 客户端会自动管理 Session,无需手动初始化
- 如果遇到 "Session not found or expired" 错误,说明 MCP 客户端的 Session 已过期
- 此时应该等待 MCP 客户端自动重新连接,然后重试操作
- 不要尝试手动调用
initialize方法,这由 MCP 客户端自动处理
隐私与个人信息(PII)说明
预订功能会将用户提供的个人信息(乘车人姓名、手机号等)通过 HTTP POST 发送至专车 MCP 远端服务,以完成专车预订。使用本 skill 即表示用户知晓并同意上述 PII 被发送到外部服务。请勿在终端日志或大模型回复中暴露用户的完整个人信息。
适用场景
- 调用业务工具 (
tools/call),如城市站点查询、POI 搜索、运力搜索、订单创建、订单查询与取消等
配置要求
必需配置
- MCP 客户端:已配置好的 MCP 客户端连接(mcp-gateway-test)
- SERVER_CODE:MCP Server 代码,默认
local_test(由业务方创建)
可选配置
- MCP_URL:MCP 服务地址,默认
https://t.rsscc.com/mcp/local_test
功能概述
该工具提供专车预订相关功能,包括:
- 获取城市站点信息:查询开通服务的城市及其机场/火车站信息(包含航站楼信息)。该数据建议定时全量拉取保存在本地,可以每天一次。
- POI 搜索:通过城市 ID + 位置关键词模糊匹配,返回地址列表(最多 3 个)。用于帮助用户选择出发地或目的地。
- 运力搜索:输入的一端必须为机场/火车站(depCode/arrCode),另一端为 POI 地址坐标,返回可用车型和价格信息。
- 创建订单:提交专车预订订单,需要从运力搜索结果中选择车型和价格,并收集乘车人信息。
- 支付订单:获取订单支付链接。
- 查询订单:模糊查询订单列表或通过订单号精确查询订单详情。
- 取消订单:取消专车订单,取消前可先查询取消费。
- 查询取消费:查询订单是否能免费取消及取消费金额。
重要流程:
- 基础数据准备:首次使用或定期(每天)调用
getAllCities获取城市站点信息,保存在本地供后续使用。 - POI搜索流程:
- 先询问用户出发地和目的地
- 如果用户提供的是地标名称(如"XX广场"、"XX酒店"),使用
getPoiListByKey搜索具体地址 - 如果搜索结果有多个,必须从
structuredContent.data.pois数组中提取并展示列表,让用户选择 - 确认出发地和目的地后,必须询问用户期望的服务时间(格式:yyyy-MM-dd HH:mm:ss)
- 不要自动假设或生成服务时间,必须由用户明确提供
- 运力查询流程:
- 调用
getEstimate查询可用车型和价格 - 输入的一端必须为机场/火车站ID(需要问询出结果),另一端为POI搜索结果中的一个地址
- phoneid 参数说明:网关会从 Session 中自动解析用户身份,无需询问用户输入用户ID
- 时间验证规则:
- 服务时间必须晚于当前时间
- 如果用户未提供服务时间,必须先询问用户:"请问您希望什么时候用车?(格式:yyyy-MM-dd HH:mm:ss)"
- 如果
getEstimate返回 "服务时间不能早于当前时间" 错误(code: 704):- 不要自动重试或猜测新时间
- 向用户说明:"您提供的服务时间早于当前时间,无法预订"
- 询问用户:"请重新输入服务时间(必须晚于当前时间)"
- 等待用户提供新的时间后再重新调用
getEstimate
- 必须从
structuredContent.data.products数组中提取车型和价格信息,展示车型列表(车型名称、预估时长、预估里程、价格) - 用户选择后,记录
productId、pTicket、directId等参数
- 调用
- 创建订单流程:
- 询问乘车人姓名和电话
- 确认订单信息(出发地、目的地、服务时间、车型、价格、乘车人)
- 调用
createOrder创建订单(phoneid 由网关自动处理,无需询问用户) - 创建成功后,从
structuredContent.data.orderId提取订单号,立即调用orderDetail查询订单详情展示给用户 - 如果订单未支付,询问用户是否支付,确认后调用
pay获取支付链接
- 订单管理流程:
- 用户可以查询订单列表或通过订单号查询订单详情
- 所有订单信息必须从
structuredContent.data中提取并展示,不要只显示 "success" - 取消订单前,先调用
getCancelFee查询取消费,告知用户后再确认是否取消
- Session 过期自动处理:
- 任何接口调用时,如果收到 "Session not found or expired" 错误
- 等待片刻(约 2-3 秒)让 MCP 客户端自动重新连接
- 然后自动重试刚才的操作
- 如果重试仍然失败,向用户说明:"MCP 服务连接暂时中断,请稍后重试"
数据提取原则:
- 所有工具调用后,必须从
result.structuredContent.data中提取业务数据 - 不要只显示
result.content[0].text的简单文本(如 "success") - 根据不同接口的数据结构,提取相应字段并格式化展示给用户
调用方式与示例
MCP 工具调用
通过 MCP 客户端调用工具,格式如下:
mcp-gateway-test/工具名称
参数: { "参数名": "参数值" }
例如:
mcp-gateway-test/getAllCities
参数: {}
mcp-gateway-test/getPoiListByKey
参数: { "cityId": 5, "key": "中南路地铁站" }
注意:
- 工具名称前缀为
mcp-gateway-test/(MCP 客户端配置名称) - 参数使用 JSON 格式
- MCP 客户端会自动处理 Session 管理,无需手动初始化
可用工具 (业务接口)
重要:下方示例中的参数均为占位,调用时需根据用户当前需求填入实际值(城市、日期、坐标等),勿直接照抄示例值。
1. 获取城市站点信息 (getAllCities)
功能:获取开通服务的城市及其机场/火车站信息 触发词:城市列表、站点信息、机场信息、火车站信息 使用建议:该数据建议定时全量拉取保存在本地,可以每天一次
关键参数 (arguments):
{} // 无参数
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: [{
cityId: number; // 城市ID
cityName: string; // 城市名称
depots: [{
depotName: string; // 站点名称,如"北京首都机场"
depotCode: string; // 站点编码(三字码),如"PEK"
depotType: number; // 站点类型:0-机场,1-火车站/高铁站
terminals: [{
code: string; // 航站楼code,如"T1"
name: string; // 航站楼名称,如"北京首都机场T1航站楼"
}]
}]
}];
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "getAllCities",
"arguments": {}
}
}'
2. POI 搜索 (getPoiListByKey)
功能:通过城市 ID + 位置关键词模糊匹配,返回地址列表(最多 3 个) 触发词:搜索地址、查找位置、POI 搜索
关键参数 (arguments):
cityId(必填): 城市ID(从 getAllCities 获取)key(必填): 位置关键词,用来模糊匹配(如"知音广场"、"武汉站")
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
pois: [{
address: string; // 详细地址
city: string; // 城市名
cityId: string; // 城市ID
lat: number; // 坐标纬度
lng: number; // 坐标经度
name: string; // 地址名称
}]
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "getPoiListByKey",
"arguments": {
"cityId": 5,
"key": "知音广场"
}
}
}'
3. 运力搜索 (getEstimate)
功能:查询可用车型和价格,输入的一端必须为机场/火车站,另一端为 POI 地址 触发词:查询车型、查询价格、运力搜索
关键参数 (arguments):
timestamp(必填): 当前时间戳(毫秒)serveTime(必填): 服务时间,格式 yyyy-MM-dd HH:mm:ss- 必须由用户明确提供,不要自动生成或假设
- 必须晚于当前时间,否则会返回错误码 704
- 如果返回 704 错误,提示用户重新输入时间,不要自动重试
startLon(条件必填): 预订开始坐标经度,最多6位小数(如果起点是场站则不需要)startLat(条件必填): 预订开始坐标纬度,最多6位小数(如果起点是场站则不需要)endLon(条件必填): 预订结束坐标经度,最多6位小数(如果终点是场站则不需要)endLat(条件必填): 预订结束坐标纬度,最多6位小数(如果终点是场站则不需要)startAddress(必填): 出发地名称startAddressDetail(必填): 出发地详细地址endAddress(必填): 到达地名称endAddressDetail(必填): 到达地详细地址depCode(可选): 出发地三字码(如果起点是场站则必填)depPortCode(可选): 出发地机场航站楼code(如"T2")arrCode(可选): 目的地三字码(如果终点是场站则必填)arrPortCode(可选): 到达地机场航站楼code(如"T2")
phoneid 参数说明:
- 网关会从 Session 中自动解析用户身份,无需手动传递
- 不要询问用户输入用户ID,这是系统内部参数,由网关自动处理
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
duration: number; // 预估时长(分钟)
distance: number; // 预估里程(Km),精确到米
products: [{
carLevel: number; // 车型ID
carLevelName: string; // 车型名称
products: [{
productId: string; // 产品ID(创建订单时需要)
pTicket: string; // 价格码(创建订单时需要)
directId: number; // 规则ID(创建订单时需要)
price: number; // 卖价
originPrice: number; // 原价
couponId: string; // 优惠券ID
directAmount: string; // 直减优惠价
}]
}]
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "getEstimate",
"arguments": {
"phoneid": "123456",
"timestamp": 1715760000000,
"serveTime": "2026-05-15 14:00:00",
"startLon": 114.341142,
"startLat": 30.5548,
"endLon": 0,
"endLat": 0,
"startAddress": "知音广场停车场",
"startAddressDetail": "武汉市武昌区中北路31号省工行大楼1层附近",
"endAddress": "武汉天河机场",
"endAddressDetail": "武汉天河机场T3航站楼",
"arrCode": "WUH",
"arrPortCode": "T3"
}
}
}'
4. 创建订单 (createOrder)
功能:提交专车预订订单 触发词:创建订单、下订单、预订专车
关键参数 (arguments):
timestamp(必填): 当前时间戳(毫秒)productId(必填): 产品ID(从 getEstimate 返回的结果中获得)pTicket(必填): 价格码(从 getEstimate 返回的结果中获得)directId(必填): 规则ID(从 getEstimate 返回的结果中获得)passengerPhone(必填): 乘车人电话passengerName(必填): 乘车人姓名couponId(可选): 优惠券ID(从 getEstimate 返回的结果中获得)directAmount(可选): 直减优惠价(从 getEstimate 返回的结果中获得)
phoneid 参数说明:
- 网关会从 Session 中自动解析用户身份,无需手动传递
- 不要询问用户输入用户ID,这是系统内部参数
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
orderId: string; // 伙力专车订单号
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "createOrder",
"arguments": {
"phoneid": "123456",
"timestamp": 1715760000000,
"productId": "1",
"pTicket": "29B6630B215F49A2A84CC26A08530041",
"directId": 1,
"passengerPhone": "13800138000",
"passengerName": "张三",
"couponId": "",
"directAmount": ""
}
}
}'
5. 支付订单 (pay)
功能:获取订单支付链接 触发词:支付、支付订单、获取支付链接
关键参数 (arguments):
orderId(必填): 订单号
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
url: string; // 支付链接
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "pay",
"arguments": {
"orderId": "2603101813148416"
}
}
}'
6. 查询订单列表 (orderList)
功能:模糊查询订单列表 触发词:订单列表、查询订单、我的订单
关键参数 (arguments):
startIndex(可选): 分页起始位置,默认 0(第一页)pageSize(可选): 每页数量,默认 10
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: [{
orderId: string; // 订单号
customerName: string; // 乘车人
prodTypeShow: string; // 服务类型展示文案
serviceTimeShow: string; // 服务时间展示文案
startPositionShow: string; // 出发地
endPositionShow: string; // 到达地
orderStatusShow: string; // 订单状态展示文案
payPriceShow: string; // 支付价格
}];
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "orderList",
"arguments": {
"startIndex": 0,
"pageSize": 10
}
}
}'
7. 查询订单详情 (orderDetail)
功能:通过订单号查询订单详细信息 触发词:订单详情、查询订单、订单信息
关键参数 (arguments):
orderId(必填): 订单号
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
orderId: string; // 订单号
orderStatusDesc: string; // 订单状态
serviceTime: string; // 服务时间,如"03月23日 周一 20:00"
prodTypeName: string; // 服务类型
productName: string; // 产品类型
depPosition: string; // 出发地址
arrPosition: string; // 到达地址
customName: string; // 乘车人名称
customPhone: string; // 乘车人电话
price: number; // 订单金额
driverPhone: string; // 司机电话
driverName: string; // 司机名称
carName: string; // 车辆型号
carNumber: string; // 车牌号
carColor: string; // 车辆颜色
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "orderDetail",
"arguments": {
"orderId": "2603101813148416"
}
}
}'
8. 查询取消费 (getCancelFee)
功能:查询订单是否能免费取消及取消费金额 触发词:取消费、查询取消费、能否免费取消
关键参数 (arguments):
orderId(必填): 订单号
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
orderId: string; // 订单号
cancelFeeAmount: number; // 取消费金额
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 8,
"method": "tools/call",
"params": {
"name": "getCancelFee",
"arguments": {
"orderId": "2603101813148416"
}
}
}'
9. 取消订单 (cancel)
功能:取消专车订单 触发词:取消订单、退订
关键参数 (arguments):
orderId(必填): 订单号
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 9,
"method": "tools/call",
"params": {
"name": "cancel",
"arguments": {
"orderId": "2603101813148416"
}
}
}'
响应处理与输出建议
响应解析
网关返回标准 JSON-RPC 2.0 格式:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"isError": false,
"content": [
{
"type": "text",
"text": "调用成功"
}
],
"structuredContent": {
"code": 0,
"msg": "success",
"data": { /* 业务数据 */ }
}
}
}
字段说明:
isError: 工具执行是否失败(布尔标识)false: 业务执行成功true: 业务执行失败(但协议层正常)
content: 模型/人类可读文本- 成功时:优先使用
data字段,若data为空则使用msg - 失败时:固定使用
msg
- 成功时:优先使用
structuredContent: 业务方返回的实际消息体code: 业务状态码,0 为成功,非 0 为业务失败msg: 业务描述信息data: 业务数据体
协议错误(顶层 error):
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32602,
"message": "Invalid params: name is required"
}
}
协议错误表示 MCP 调用本身失败(如参数错误、鉴权失败、Session 过期等),而非业务失败。
输出建议
重要:所有工具调用后,必须从 structuredContent.data 中提取业务数据并展示给用户,不要只显示 content[0].text 的简单文本。
1. 城市站点信息(getAllCities)
从 structuredContent.data 数组中提取城市和站点信息,按城市分组展示:
数据路径:result.structuredContent.data[]
展示格式:
🌍 已开通服务的城市:
【北京】(cityId: 1)
🛫 北京首都机场 (PEK)
- T1航站楼
- T2航站楼
- T3航站楼
🛫 北京大兴国际机场 (PKX)
🚄 北京站 (BJP)
🚄 北京西站 (BXP)
【上海】(cityId: 2)
🛫 上海浦东机场 (PVG)
- T1航站楼
- T2航站楼
🛫 上海虹桥机场 (SHA)
- T1航站楼
- T2航站楼
🚄 上海站 (SHH)
🚄 上海虹桥站 (AOH)
... (其他城市)
处理逻辑:
- 遍历
data数组中的每个城市对象 - 对于每个城市,显示
cityName和cityId - 遍历该城市的
depots数组,根据depotType显示不同图标(0-机场🛫,1-火车站🚄) - 如果站点有
terminals数组,缩进显示航站楼信息
2. POI 搜索结果(getPoiListByKey)
从 structuredContent.data.pois 数组中提取地址信息并展示。
数据路径:result.structuredContent.data.pois[]
展示格式: 如果搜索结果有多个,展示列表让用户选择:
📍 找到以下地址,请选择:
1. 知音广场停车场
地址:武汉市武昌区中北路31号省工行大楼1层附近
坐标:30.5548, 114.341142
2. 知音广场
地址:武汉市武昌区中北路88号
坐标:30.5550, 114.341200
如果只有一个结果,直接展示并询问用户确认:
📍 找到地址:
知音广场停车场
地址:武汉市武昌区中北路31号省工行大楼1层附近
坐标:30.5548, 114.341142
是否使用这个地址?
处理逻辑:
- 检查
pois数组长度 - 提取每个 POI 的
name、address、lat、lng字段 - 保存坐标信息供后续运力搜索使用
3. 运力搜索结果(getEstimate)
从 structuredContent.data 中提取车型和价格信息。
数据路径:
- 预估信息:
result.structuredContent.data.duration、result.structuredContent.data.distance - 车型列表:
result.structuredContent.data.products[] - 价格详情:
result.structuredContent.data.products[].products[]
展示格式:
🚗 可用车型:
预估行程:约 45 分钟 | 35.0 公里
【经济型】
价格:¥89 原价:¥99
产品ID: prod_001
【舒适型】
价格:¥129 原价:¥139
产品ID: prod_002
【商务型】
价格:¥189 原价:¥199
产品ID: prod_003
请选择您需要的车型。
处理逻辑:
- 显示
duration(分钟)和distance(公里) - 遍历
products数组,显示每个车型的carLevelName - 对于每个车型,从其
products数组中选择第一个报价(通常是最优价格) - 重要:保存用户选择的
productId、pTicket、directId,创建订单时需要使用
4. 创建订单结果(createOrder)
从 structuredContent.data 中提取订单号。
数据路径:result.structuredContent.data.orderId
展示格式:
✅ 订单创建成功!
订单号:2603101813148416
正在查询订单详情...
处理逻辑:
- 提取
orderId - 立即调用
orderDetail查询订单详情展示给用户 - 如果订单未支付,询问用户是否支付
5. 订单列表(orderList)
从 structuredContent.data 数组中提取订单列表。
数据路径:result.structuredContent.data[]
展示格式(表格形式):
📋 订单列表:
| 序号 | 订单号 | 乘车人 | 服务时间 | 出发地 | 目的地 | 价格 | 订单状态 |
|------|--------|--------|----------|--------|--------|------|----------|
| 1 | 2603101813148416 | 张三 | 05月15日 14:00 | 知音广场 | 天河机场 | ¥129 | 待服务 |
| 2 | 2603101813148417 | 李四 | 05月16日 10:00 | 汉口站 | 光谷广场 | ¥89 | 已完成 |
处理逻辑:
- 遍历
data数组 - 提取每个订单的关键字段展示
- 如果用户想查看某个订单详情,使用
orderDetail接口
6. 订单详情(orderDetail)
从 structuredContent.data 中提取订单详细信息。
数据路径:result.structuredContent.data
展示格式:
📋 订单详情
订单号:2603101813148416
订单状态:待服务
服务时间:03月23日 周一 20:00
服务类型:接机
车型:舒适型
出发地:知音广场停车场
目的地:武汉天河机场T3航站楼
乘车人:张三
联系电话:138****8000
订单金额:¥129
司机信息:
- 姓名:李师傅
- 电话:139****5678
- 车辆:别克GL8 鄂A·12345(白色)
处理逻辑:
- 提取
data对象中的所有字段 - 手机号使用脱敏格式(138****8000)
- 如果有司机信息(
driverName、driverPhone不为空),显示司机信息 - 如果订单未支付,提示用户是否支付
7. 支付订单(pay)
从 structuredContent.data 中提取支付链接。
数据路径:result.structuredContent.data.url
展示格式:
💳 支付信息
支付链接:https://pay.example.com/order/2603101813148416
请点击链接完成支付。
处理逻辑:
- 提取
url字段 - 提示用户点击链接或在浏览器中打开
8. 查询取消费(getCancelFee)
从 structuredContent.data 中提取取消费信息。
数据路径:result.structuredContent.data.cancelFeeAmount
展示格式: 取消前先查询取消费,告知用户:
⚠️ 取消提示
该订单取消需收取取消费:¥50
是否确认取消订单?
如果取消费为 0:
✅ 该订单可免费取消
是否确认取消订单?
处理逻辑:
- 提取
cancelFeeAmount字段 - 根据金额是否为 0 显示不同提示
- 用户确认后再调用
cancel接口
9. 取消订单(cancel)
从 structuredContent 中判断取消结果。
数据路径:result.structuredContent.code
展示格式:
✅ 订单取消成功
订单号:2603101813148416
或者失败时:
❌ 订单取消失败
原因:订单已派单,无法取消
处理逻辑:
- 检查
code是否为 200(成功) - 根据
msg显示相应提示
错误处理
如果接口调用失败,返回的 isError 为 true,需根据 content 中的错误信息向用户反馈。
常见错误码:
-32001: 缺少 MCP-Session-Id 请求头(需要重新初始化会话)-32002: Session 不存在或已过期(需要重新初始化会话)-32003: 鉴权失败(API Key 无效、已禁用、已过期、IP 不在白名单等)-32602: 参数错误(必填参数缺失、格式不符等)-32603: 内部错误(上游服务异常、超时、限流等)704: 服务时间不能早于当前时间(时间参数无效)- 处理方式:向用户说明时间无效的原因,要求用户重新输入服务时间
- 禁止行为:不要自动选择新时间并重试
Session 过期自动处理:
- 当收到错误信息包含 "Session not found or expired" 或 "list tools failed" 时,说明 MCP 客户端的 Session 已过期
- 等待 2-3 秒让 MCP 客户端自动重新连接
- 然后自动重试刚才失败的操作(最多重试 1 次)
- 如果重试仍然失败,向用户说明:"MCP 服务连接暂时中断,请稍后重试"
- 不要尝试手动调用
initialize方法,Session 管理由 MCP 客户端自动处理
注意事项
- 会话管理:
- MCP 客户端会自动管理 Session,无需手动初始化
- Session 默认 30 分钟无活动后自动过期
- 当收到 "Session not found or expired" 错误时,等待 2-3 秒让 MCP 客户端自动重新连接,然后重试操作
- 如果重试仍然失败,向用户说明:"MCP 服务连接暂时中断,请稍后重试"
- 场站信息必填规则:运力搜索时,起点或终点至少有一端必须是机场/火车站(填写 depCode/arrCode)
- 坐标系统:POI 搜索返回的坐标为 GCJ-02(高德坐标系),可直接用于运力搜索
- 参数传递:从运力搜索到创建订单,需要保留
productId、pTicket、directId等参数 - 时间格式:服务时间格式为
yyyy-MM-dd HH:mm:ss,时间戳为毫秒级 - 隐私保护:展示手机号时使用脱敏格式(如 138****8000)
- 订单状态:创建订单后,需调用
orderDetail查询订单详情,确认订单状态 - 支付流程:如果订单未支付,需调用
pay获取支付链接,引导用户完成支付 - 取消流程:取消订单前,建议先调用
getCancelFee查询取消费,告知用户后再确认取消 - 用户身份:
- 个人 Key(2C):用户身份由 API Key 绑定的 phoneid 决定,无需额外传递
- 企业 Key(2B):需要通过
X-User-Authorization请求头传递用户凭证
Scan to join WeChat group