名称: tfl-journey-disruption
描述: 根据起点/终点/时间规划TfL行程,解析地点(优先使用邮政编码),并预警服务中断;在遇到中断时提供替代方案建议。
当用户需要规划TfL行程并希望了解服务中断情况时,请使用此技能。
参考:https://tfl.gov.uk/info-for/open-data-users/api-documentation
使用 scripts/tfl_journey_disruptions.py 可快速进行行程规划和中断检查。
示例:
python3 scripts/tfl_journey_disruptions.py \"940GZZLUSTD\" \"W1F 9LD\" --depart-at 0900
python3 scripts/tfl_journey_disruptions.py --from \"Stratford\" --to \"W1F 9LD\" --arrive-by 1800
注意:
- 如果API返回了多个匹配选项,请选择一个并使用其 parameterValue 重新尝试。
- 如果你有TfL API密钥,请在环境变量中设置 TFL_APP_ID 和 TFL_APP_KEY。
如果以上任何信息缺失或模糊不清,请向用户询问以澄清。
优先使用邮政编码。否则,解析地名和车站:
{from} 或 {to}。StopPoint/Search/{query},并选择一个枢纽站或相关的NaPTAN ID。调用:
/Journey/JourneyResults/{from}/to/{to}?date=YYYYMMDD&time=HHMM&timeIs=Depart|Arrive
指导原则:
- 如果用户说“在……时间前到达”,使用 timeIs=Arrive;否则默认使用 Depart。
- 如果未提供日期,请询问。如果用户暗示“现在”,可以省略日期/时间。
从响应中,提取前1-3个行程方案。对于每个方案,记录:
- 总时长和到达时间
- 公共交通路段(出行模式、线路名称、方向)
- 用于中断检查的线路ID
线路ID通常出现在 leg.routeOptions[].lineIdentifier.id 或 leg.line.id 中。忽略步行路段。
对于每个行程方案,收集唯一的线路ID并调用:
/Line/{ids}/Status
如果任何线路状态不是“Good Service”或包含中断原因,则将该路线视为受中断影响。总结中断的严重程度和原因。
在相关时,也可以选择性地使用 /StopPoint/{id}/Disruption 检查特定车站的问题。