이 페이지에는 GTFS 티켓 판매 사양의 세부 항목이 정의되어 있습니다(사양은 본 문서 작성 시 제안 단계에 있음). 또한 Google의 추가 제한사항도 포함되어 있습니다.
요구사항
stop_times.txt
의 departure_time
필드는 필수 항목입니다.
추가 필드 유형
이 섹션에서는 추가 필드 유형과 Google의 확장 프로그램 유형을 설명합니다. 일부 필드에는 URI 형식의 값이 필요합니다.
- URI: 스키마가 포함된 정규화된 URI(Uniform Resource Identifier)입니다. URI의 특수문자는 올바른 이스케이프를 사용해야 합니다. 정규화된 URI 값을 만드는 방법에 대한 설명은 RFC 3986 URI(Uniform Resource Identifier): 일반 구문을 참고하세요.
파일 확장 또는 추가
확장 상태의 텍스트 파일은 이미 존재하며 확장해야 하는 파일입니다. 다음 표에 정의된 새 필드를 추가해야 합니다.
추가 상태의 텍스트 파일은 Google 대중교통 티켓 판매 확장에서 도입한 새로운 파일입니다. 이러한 파일은 다음 표 다음에 나오는 필드 정의에 따라 만들어야 합니다. 이러한 파일을 피드에 포함해야 합니다.
파일 이름 | 상태 | 정의 |
---|---|---|
agency.txt |
확장 | agency.ticketing_deep_link_id 를 추가합니다. |
routes.txt |
확장 | routes.ticketing_deep_link_id 를 추가합니다. |
trips.txt |
확장 | trips.trip_ticketing_id 및 trips.ticketing_type 을 추가합니다. |
stop_times.txt |
확장 | stop_times.ticketing_type 을 추가합니다. |
ticketing_identifiers.txt |
추가 | 새 파일입니다. 자세한 내용은 필드 정의를 참고하세요. |
ticketing_deep_links.txt |
추가 | 새 파일입니다. 자세한 내용은 필드 정의를 참고하세요. |
필드 정의
agency.txt
(파일 확장됨)
필드 이름 | 상태 | 세부정보 |
---|---|---|
ticketing_deep_link_id |
선택사항 |
( |
routes.txt
(파일 확장됨)
필드 이름 | 상태 | 세부정보 |
---|---|---|
ticketing_deep_link_id |
선택사항 | (ticketing_deep_links.txt 의 ID) 특정 경로에 사용할 딥 링크를 정의합니다. 있는 경우, agency.txt 에 있는 필드를 덮어씁니다. |
trips.txt
(파일 확장됨)
필드 이름 | 상태 | 세부정보 |
---|---|---|
ticketing_trip_id |
선택사항 |
(ID) 딥 링크에서 전달할 식별자입니다. 고유한 식별자가 아니어도 됩니다.
|
ticketing_type |
선택사항 |
(enum) 이 여정에 대해 딥 링크를 통한 티켓 판매가 가능한지 정의합니다.
|
stop_times.txt
(파일 확장됨)
필드 이름 | 상태 | 세부정보 |
---|---|---|
ticketing_type |
선택사항 |
(enum) 이 정차 시간에 대해 딥 링크를 통한 티켓 판매가 가능한지 정의합니다.
|
ticketing_identifiers.txt
(파일 추가됨)
티켓 판매에서 가장 일반적인 사례는 모든 정류장에 결제 처리를 위한 식별자가 있는 것입니다. 여러 기관에서 특정 정류장에 동일한 식별자를 사용할 수 있습니다. 여러 기관이 같은 정류장에서 서비스를 제공하는 경우 각 기관에 대해 이 매핑을 반복하세요.
필드 이름 | 상태 | 세부정보 |
---|---|---|
ticketing_stop_id |
필수 | (ID) 특정 기관에 대해 해당 정류장의 기본 티켓 판매 ID를 정의합니다. |
stop_id |
필수 | (stops.txt 의 ID) 기본 ticketing_stop_id 가 정의된 정류장입니다. |
agency_id |
필수 | (agency.txt 의 ID) 기본 ticketing_stop_id 가 정의된 정류장의 기관입니다. |
ticketing_deep_links.txt
(파일 추가됨)
필드 이름 | 상태 | 세부정보 |
---|---|---|
ticketing_deep_link_id |
필수 | (ID) 딥 링크의 ID를 정의합니다. |
web_url |
선택사항 |
(URL) 딥 링크의 방문 URL입니다. 이 필드는 |
android_intent_uri |
선택사항 |
(URI) 비어 있으면 네이티브 Android 앱에 딥 링크할 수 없습니다. Android의 딥 링크에 관한 자세한 내용은 앱 콘텐츠 딥 링크 만들기를 참고하세요. 이 필드는 |
ios_universal_link_url |
선택사항 |
(URL) iOS에서 호출할 범용 링크 URL입니다. 비어 있으면 iOS에 딥 링크가 표시되지 않습니다. 자세한 내용은 iOS의 범용 링크를 참고하세요. 이 필드는 |
API 호출의 필드 자리표시자
Google은 다음 매개변수를 사용하여 ticketing_deep_links.txt
에 정의된 URL을 호출합니다.
필드 이름 | 세부정보 |
---|---|
service_date |
(날짜, 반복 가능) 여정의 서비스 일자입니다. 이 필드의 형식은 JSON 배열입니다. |
ticketing_trip_id |
( 이 필드의 형식은 JSON 배열입니다. |
from_ticketing_stop_time_id |
(반복 가능) 구간이 시작되는 특정 정차 시간의 값은 다음과 같습니다.
이 필드의 형식은 JSON 배열입니다. |
|
(반복 가능) 구간이 끝나는 값 파생에 대한 설명은 이 필드의 형식은 JSON 배열입니다. |
boarding_time |
(ISO 8601, 반복 가능) 구간이 시작되는 이 필드의 시간 값은 ISO 8601을 준수하며 다음과 같은 문자열 형식으로 표시됩니다.
다음은 모두 동일한 시간을 나타내며 시간대만 다릅니다.
이 필드의 형식은 JSON 배열입니다. |
arrival_time |
(ISO 8601, 반복 가능) 구간이 끝나는 stop_time의 도착 시간(arrival_time)입니다. 이 필드의 시간 값은 ISO 8601을 준수하며 다음과 같은 문자열 형식으로 표시됩니다.
다음은 모두 동일한 시간을 나타내며 시간대만 다릅니다.
이 필드의 형식은 JSON 배열입니다. |
예
이 예에서 승객 여정의 구간은 다음과 같습니다.
- 서비스 날짜
20190716
, 정차 시간 티켓 판매 ID11
에서 정차 시간 티켓 판매 ID12
까지 여정 티켓 판매 IDti1
이 시작됩니다. 승객은 오후 2시(UTC)에 탑승하고 오후 2시 50분(UTC)에 도착합니다. - 서비스 날짜
20190716
, 정차 시간 티켓 판매 ID21
에서 정차 시간 티켓 판매 ID22
까지 여정 티켓 판매 IDti2
가 시작됩니다. 승객은 오후 3시(UTC)에 탑승하고 오후 3시 50분(UTC)에 도착합니다.
이 예에서 web_url
은 https://examplepetstore.com
입니다.
이 모든 정보를 고려하여 이 여정의 피드 매개변수에 다음 값을 사용하세요.
필드 이름 | 세부정보 |
---|---|
service_date |
["20190716" , "20190716"] |
ticketing_trip_id |
["ti1" , "ti2"] |
from_ticketing_stop_time_id |
["11" , "21"] |
to_ticketing_stop_time_id |
["12" , "22"] |
boarding_time |
["2019-07-16T14:00:00+00:00" , "2019-07-16T15:00:00+00:00"] |
arrival_time |
["2019-07-16T14:50:00+00:00" , "2019-07-16T15:50:00+00:00"] |
다음은 인코딩 후 최종 URI입니다.
https://examplepetstore.com?service_date=%5B%2220190716%22,%2220190716%22%5D
&ticketing_trip_id=%5B%22ti1%22,%22ti2%22%5D&from_ticketing_stop_time_id=%5B%2211%22,%2221%22%5D
&to_ticketing_stop_time_id=%5B%2212%22,%2222%22%5D&boarding_time=%5B%222019-07-16T14:00:00%2B00:00
%22,%222019-07-16T15:00:00%2B00:00%22%5D&arrival_time=%5B%222019-07-16T14:50:00%2B00:00 %22,%222019-07-16T15:50:00%2B00:00%22%5D
다른 ticketing_stop_id
값의 예
티켓 판매의 목적에 따라 ticketing_identifiers.txt
필드를 사용해 정류장의 ID를 서로 다르게 할 수 있습니다. 굵게 표시된 값은 파일 뒤에 설명되는 웹 호출에서 확인할 수 있는 값입니다.
stop.txt |
---|
|
routes.txt |
---|
|
trips.txt |
---|
ti1,everyday,ri1,"TGV INOUI 6603",FR_SNCF_6603 ti2,everyday,ri1,"TGV INOUI 6681",FR_SNCF_6681 ti3,everyday,ri1,"TGV INOUI 6607",FR_SNCF_6607 |
stop_times.txt |
---|
ti1,1,si1,06:59:00,06:59:00 ti1,2,si2,08:56:00,08:56:00 ti2,1,si1,07:53:00,07:53:00 ti2,2,si2,10:00:00,10:00:00 ti3,1,si1,08:59:00,08:59:00 ti3,2,si2,10:56:00,10:56:00 |
ticketing_identifiers.txt |
---|
si1,agency1,4924 si2,agency1,4676 |
ticketing_deep_links.txt |
---|
tdl1, https://examplepetstore.com/api/gtfs/web, https://examplepetstore.com/api/gtfs/android, https://examplepetstore.com/api/gtfs/ios |
요청이 2019-07-19에 발생하고 GTFS 시간이 UTC+1 시간대인 경우 웹 호출은 다음과 같습니다.
https://examplepetstore.com/api/gtfs/web?service_date=%5B%2220190719%22%5D&ticketing_trip_id=
%5B%22FR_SNCF_6603%22%5D&from_ticketing_stop_time_id=%5B%224924%22%5D&to_ticketing_stop_time_id=
%5B%224676%22%5D&boarding_time=%5B%222019-07-19T05:59:00%2B00:00%22%5&arrival_time=%5B%222019-07-19T07:56:00%2B00:00%22%5D
권장사항
Google 대중교통 티켓 판매 확장을 구현하려면 다음 권장사항을 따르세요.
가이드라인 | |
---|---|
가능하면 기관 또는 경로 간에 딥 링크를 공유합니다. |
정적 피드에서 여러 기관 또는 경로의 딥 링크 URL이 동일한 경우 |
ticketing_type 에 대해 일관된 값을 설정합니다. |
특정 정류장의 |
상위 정류장과 하위 정류장 모두의 ticketing_stop_id 를 매핑합니다. |
티켓 판매가 필요한 모든 상위 및 하위 정류장에 대해 매핑을 실행합니다. ticketing_identifiers.txt 파일에서 ticketing_stop_id 값은 상위 정류장과 하위 정류장 사이에 반영되지 않습니다. |
피드에서 동일한 정류장을 사용하는 각 기관에 대해 ticketing_stop_id 를 매핑합니다. |
정적 피드에서 티켓 판매를 사용 설정한 여러 기관이 동일한 정류장을 공유하는 경우 각 기관에 대한 매핑이 있어야 합니다. 자세한 내용은 |
Android 앱으로 연결되는 딥 링크가 필요한 경우 Android App Links를 사용합니다. |
파트너가 딥 링크에서 Android 앱을 열려고 하는 경우 딥 링크를 Android 앱 링크로 설정합니다. |
iOS 앱으로 연결되는 딥 링크가 필요한 경우 iOS 범용 링크를 사용합니다. | 파트너가 딥 링크에서 iOS 앱을 열려고 하는 경우 딥 링크를 iOS 범용 링크로 설정합니다. |