Vtrip AI 定制 · 火车票
用户用自然语言表达查票 / 订票意向时,整理出发、到达、日期后调用本 Skill 脚本,输出车次摘要,并以 CTA 跳转 Vtrip 定制火车详情页。
预订 CTA 只透传接口 showData.jumpUrl(见 references/h5-url-template.md),Skill 不本地拼链、不硬编码鉴权 query。
何时使用
- 查火车票、高铁、动车、余票、车次
- 「明天上海到杭州的票」「帮我订 G 字头」
- 定制游 / 自由行场景下单独买火车票
凭证(ApiKey)
- 脚本自行读取访问密钥,放入
X-Api-Key;禁止把 Key 写入config.json。不要向用户讲解.env、环境变量或技能配置填写方式。 - 没有 ApiKey:stdout 为
status: requires_api_key。只引导用户打开视旅开放平台网页申请密钥(本 Skill 业务场景为「AI定制」):https://open.visiotrip.com.cn/ 。不要展示.env/ 环境变量 / 临时会话等配置方式。申请完成后由 Agent 内部验证并重试原问题。不要空跑查票脚本。 - 有 ApiKey:再进入下方 Quick start;请求头只用
X-Api-Key(禁止把 ApiKey 放进Authorization: Bearer)。不要把完整密钥发到聊天里。 - 401/403:提示 Key 无效或未授权当前业务场景,请到开放平台重新申请或核对是否选择了「AI定制」。
正常查询直接执行,凭据由脚本读取,不要阅读 scripts/。
Quick start(两阶段:模型选车)
- 先完成上方「凭证」检查;无密钥则只引导开放平台网页申请,不空查。
- 凑齐
--from/--to/--date(缺则追问,不空查)。 - 先向用户说明等待:
> 正在为您查询车次与余票,请稍候。 - 阶段 A · catalog:拉全量目录(脚本不替模型截成 5 班):
node scripts/train-search.js \
--from "<出发>" --to "<到达>" --date "YYYY-MM-DD" \
--phase catalog
- 解析
TRAIN_CATALOG_JSON_START/END。由你(模型)按用户偏好从trains[].trainNo选定约meta.pick趟(建议 3–8),禁止编造车次。 - 阶段 B · present:只渲染选定车次:
Markdown
node scripts/train-search.js \
--from "…" --to "…" --date "YYYY-MM-DD" \
--phase present \
--train-nos "G7301,G7501,D3125"
WorkBuddy(HTML,每班可预订)
node scripts/train-search.js \
--from "…" --to "…" --date "YYYY-MM-DD" \
--phase present \
--train-nos "G7301,G7501,D3125" \
--render-mode workbuddy \
--output-dir "$PWD/outputs"
WorkBuddy 后处理:原样 markdown → 必须 present_files(不调用 show_widget)。
可选:--seat、--pick(建议选几趟,默认 5)、--limit(catalog 安全上限,默认 80)。
查票请求生产 Open SSO Agent:POST https://apa-api.visiotrip.com.cn/api/agent/train/search/listDetail(实现见 scripts/api-client.js);「去预订」只透传接口 jumpUrl,「更多班次」只透传 jumpUrlList.listSearch。
定制边界
- 不要要求或解释
travelNo/ 差标 - 行程 Skill 内的火车节点展示 ≠ 本 Skill;独立查订走本 Skill
输出后处理
- catalog:只供你选车;不要把整份 catalog JSON 当作用户最终回复。
- present:将脚本 Markdown 原样作为回复(表不含预订列);WorkBuddy 按契约
present_files,预订只在 HTML「去预订」。 - 禁止在 Markdown 表里补「预订 / 打开」列,禁止编造车次 / 价格 / URL。
- 不要追加「还需要什么帮助」等引导下一轮问询的话术。
硬性规则
- 无访问密钥(
VTRIP_OPEN_API_KEY)→ 只引导打开 https://open.visiotrip.com.cn/ 申请,不跑查票脚本;有密钥后仅用X-Api-Key调 listDetail(禁止用 Bearer 传 ApiKey)。 - 禁止编造车次、余票、价格、URL;present 的
--train-nos必须来自 catalog。 - Markdown 主表不要「预订」列;预订只在 HTML「去预订」,
jumpUrl/jumpUrlList.listSearch只原样透传,禁止本地拼或手改 URL。 - WorkBuddy:有
htmlFilePath时必须present_files。 - 失败时不输出假列表(见 references/error-handling.md)。
- 预订落地由接口
jumpUrl决定;Skill 不关心、不写死 H5 域名。
参考文档
| 文档 | 内容 |
|---|---|
| references/configure-api-key.md | ApiKey 仅引导开放平台网页申请 |
| references/api-adapter.md | 查票接口 |
| references/output-format.md | Markdown / CTA |
| references/h5-url-template.md | jumpUrl 透传约定 |
| references/workbuddy-contract.md | present_files |
| references/error-handling.md | 错误处理 |