Realtime 驗證錯誤和警告

本頁面提供 Realtime 大眾運輸動態饋給的驗證錯誤和警告清單,以及排解這些問題的訣竅。

Realtime 驗證錯誤

為了向乘客提供準確資訊,請務必修正 Realtime 動態饋給中的任何驗證錯誤。

如要對 Realtime 驗證錯誤進行偵錯,請使用下表中的資訊。

  • 「列舉值」欄提供 Realtime 動態饋給問題的簡稱,這項資訊會顯示在大眾運輸合作夥伴資訊主頁的驗證報表中。
  • 「錯誤訊息」欄提供的訊息會顯示在大眾運輸合作夥伴資訊主頁的驗證報表中,亦即錯誤的摘要。
  • 「疑難排解訣竅」欄提供解決錯誤所需採取的主要步驟。
列舉值 錯誤訊息 疑難排解訣竅
PROTO_MISSING_FIELDS_ERROR 二進位通訊協定緩衝區缺少 %(field) 欄位。 使用文字編輯器開啟檔案,並確認動態饋給包含 FeedMessage 通訊協定緩衝區中標示為必要的所有欄位。
PROTO_ASCII_ERROR 無法剖析 ASCII 通訊協定緩衝區。錯誤:%(field) 使用文字編輯器開啟檔案,並確認動態饋給包含所有必要欄位,且使用正確的語法。
PROTO_PARSE_ERROR 無法剖析二進位通訊協定緩衝區。 使用文字編輯器開啟檔案,並確認動態饋給可剖析為 FeedMessage。您可以在「動態饋給範例」一文中找到程式碼範例。
URL_DNS_ERROR 網址發生 DNS 錯誤。 檢查網路連線和 DNS 設定。
FETCHER_CONNECTION_ERROR 無法連線至網址。 檢查指定用於擷取的網址,必須正確無誤。
CUSTOM_PARSE_ERROR 無法剖析自訂格式動態饋給:%(value_string) 使用文字編輯器檢查檔案內容,確認產生的檔案正確無誤,在傳輸過程中未損毀。如果錯誤持續發生,請聯絡 Google 大眾運輸代表尋求協助。
FEED_TOO_OLD 動態饋給時間戳記 %(timestamp) (%(timestamp_string)) 比現在早 %(diff_time) 秒 (%(difftime_string))。目前時間是 %(localtime) (%(localtime_string))。已捨棄動態饋給。 確認沒有與擷取動態饋給相關的其他問題。定期產生動態饋給並持續更新資料。確認動態饋給時間戳記正確代表從 Epoch 紀元時間 (時區以世界標準時間為準) 起算的動態饋給建立時間 (以秒為單位)。
FETCHER_HTTP_ERROR HTTP 錯誤:%(value) 檢查傳回的 HTTP 錯誤代碼,並據此調查問題。
FULL_DATASET_REQUIRED 僅支援 FULL_DATASET 動態饋給。 incrementality 的值設為 FULL_DATASET
FEED_TIMESTAMP_CONSISTENTLY_IN_THE_FUTURE 動態饋給時間戳記持續比現在晚 %(diff_time) 秒 (%(difftime_string))。 請務必提供時區以世界標準時間為準的時間戳記 (從 Epoch 紀元時間起算,以秒為單位)。檢查伺服器的時鐘並確認皆已同步,例如與 NTP 同步。
INVALID_TIMESTAMP_RANGE 動態饋給時間戳記值超出範圍 (%(timestamp))。 提供的動態饋給時間戳記,必須能代表從 Epoch 紀元時間 (時區以世界標準時間為準) 起算的動態饋給建立時間 (以秒為單位)。
PROTO_ENCODING_UNKNOWN 動態饋給編碼不明。 使用正確編碼設定動態饋給。最終動態饋給必須是二進位格式,但您可以使用 ASCII 格式進行測試。
VEHICLE_POSITION_INTERNAL_ERROR %(trip_id)VehiclePosition 無法轉換為 TripUpdate,發生一般錯誤「%(value_string)」。 這項錯誤代表沒有使用 VehiclePosition 來預估 TripUpdate。請聯絡 Google 大眾運輸代表尋求協助。

Realtime 驗證警告

如要提高動態饋給資料品質,請務必修正指出 Realtime 動態饋給可能發生問題的驗證警告。

如要對 Realtime 驗證警告進行偵錯,請搜尋下表中的項目。

  • 「列舉值」欄提供 Realtime 動態饋給問題的簡稱,這項資訊會顯示在大眾運輸合作夥伴資訊主頁的驗證報表中。
  • 「警告或資訊訊息」欄提供的訊息會顯示在大眾運輸合作夥伴資訊主頁的驗證報表中,亦即警告或資訊的摘要。
  • 「疑難排解訣竅」欄提供解決警告所需採取的主要步驟。
列舉值 警告或資訊訊息 疑難排解訣竅
TRIP_UPDATE_SOME_STU_NOT_MATCHED 有效 StopTimeUpdates%(value) (已指定 trip_id%(trip_id)」) 無法與 GTFS 行程比對。舉例來說,position:%(index) stop_sequence:%(next_seq) stop_id:「%(stop_id)」。 確認以正確順序提供 StopTimeUpdates
VEHICLE_POSITION_DUPLICATE_TRIP_BLOCK_TRANSFER 許多車輛回報排程轉乘行程 $(trip_id)start_time $(timestamp_string) 確認某個特定開始時間的某趟行程,只有一輛車運行。
INVALID_ALERT_ROUTE_NOT_MATCHED 已捨棄快訊:route_id%(route_id)」無法與 GTFS 動態饋給比對。 確認靜態時間表正確無誤,並補上缺少的路線資訊。新的靜態時間表上線後,請修正 Realtime 動態饋給中的 route_id 參照。
INVALID_ALERT_STOP_NOT_MATCHED 已捨棄快訊:stop_id%(stop_id)」無法與 GTFS 動態饋給比對。 確認靜態時間表正確無誤,並補上缺少的停靠站資訊。新的靜態時間表上線後,請修正 Realtime 動態饋給中的 stop_id 參照。
INVALID_ALERT_TRIP_NOT_MATCHED 已捨棄快訊:trip_id%(trip_id)」無法與 GTFS 動態饋給比對。 確認靜態時間表正確無誤,並補上缺少的行程資訊。新的靜態時間表上線後,請修正 Realtime 動態饋給中的 trip_id 參照。
STOP_TIME_UPDATE_PREMATURE_ARRIVAL 行程「%(trip_id)」(stop_id%(stop_id)」和 stop_sequence %(next_seq)) 的 StopTimeUpdate 抵達時間,比先前的 StopTimeUpdate (stop_id%(other_id)」和 stop_sequence %(prev_seq)) 早了 %(value) 秒。 檢查指定 stop_id 或先前 ID 的抵達和出發時間,並修正不正確的值,確保時間不會減少。
INVALID_ALERT_NO_INFORMED_ENTITIES 請至少提供一個知情實體。 在快訊中加入相關的 informed_entity
PROTO_ENCODING_MISMATCH 設定的 proto 編碼與收到的編碼不同。 使用正確的格式提供動態饋給。如果問題仍未解決,請聯絡 Google 大眾運輸代表尋求協助。
STOP_TIME_UPDATE_PREMATURE_DEPARTURE 行程「%(trip_id)」(stop_id%(stop_id)」和 stop_sequence %(next_seq)) 的 StopTimeUpdate 出發時間,比先前的 StopTimeUpdate (stop_id%(other_id)」和 stop_sequence %(prev_seq)) 早了 %(value) 秒。 檢查指定 stop_id 或先前 ID 的出發時間,並修正不正確的值,確保出發時間不會減少。
DETOUR_MUST_SPECIFY_TIME 行程「%(trip_id)」(通過停靠站「%(stop_id)」) 的改道必須指定絕對時間。 針對指定的 trip_id,在受影響的 stop_id 加入確切時間。
ENTITY_MUST_HAVE_ALERTS 實體必須有快訊。 確認動態饋給內容完整,且每則 FeedEntity 訊息都含有服務快訊的相關資訊。
ENTITY_MUST_HAVE_POSITIONS 實體必須有位置。 確認動態饋給內容完整,且每則 FeedEntity 訊息都含有車輛位置資訊。
ENTITY_MUST_HAVE_UPDATES 實體必須有行程更新。 確認動態饋給內容完整,且每則 FeedEntity 訊息都含有行程更新的相關資訊。
TIMESTAMP_FUTURE 動態饋給時間戳記「%(timestamp)」(%(timestamp_string)) 比現在晚 %(diff_time) 秒 (%(difftime_string))。目前使用 %(localtime) (%(localtime_string)) 的擷取時間戳記。 請務必提供時區以世界標準時間為準的時間戳記 (從 Epoch 紀元時間起算,以秒為單位)。檢查伺服器的時鐘並確認皆已同步,例如與 NTP 同步。
TIMESTAMP_PAST 動態饋給時間戳記「%(timestamp)」(%(timestamp_string)) 比現在早 %(diff_time) 秒 (%(difftime_string))。目前使用 %(localtime) (%(localtime_string)) 的擷取時間戳記。 更頻繁地重新產生 Realtime 動態饋給,即使內容維持不變或空白也一樣。
NO_VALID_TEXT 欄位「%(field)」沒有有效的翻譯。 檢查 TranslatedString 訊息並修正任何相關問題,例如 HTML_TAGS_FOUNDINVALID_URL_LENGTHINVALID_TEXT_LENGTHINVALID_URL
HTML_TAGS_FOUND 欄位「%(field)」(%(index)) 含有 HTML 標記。 移除欄位中的任何 HTML 標記。
INVALID_LANGUAGE 欄位「%(field)」(%(index)) 的語言代碼「%(language)」無效。 將語言欄位設為有效的 BCP-47 語言代碼
INVALID_URL 欄位「%(field)」(%(index)) 的網址無效 (應為絕對 HTTP 或 HTTPS)。 在快訊中加入有效網址。
INVALID_TEXT_LENGTH 欄位「%(field)」(%(index)) 的長度為 %(length) (上限為 %(max_length))。 縮短提供的文字,這些文字通常會顯示在手機之類的小螢幕上。如要為使用者提供更多詳細資料,請改為提供網址參照。
INVALID_URL_LENGTH 欄位「%(field)」(%(index)) 的網址長度為 %(length) (上限為 %(max_length))。 提供限制以內的網址。
MULTIPLE_UNSPECIFIED_LANGUAGE 欄位「%(field)」(%(index)) 是重複翻譯,未設定任何語言。 檢查 TranslatedString 訊息,並為指定多個翻譯的 language 欄位設定正確的值。
INVALID_TRIP_UPDATE_DELAY 行程更新內的延遲時間無效:%(value) 檢查指定 entity_iddelay 欄位,並修正不正確的值。
INVALID_TRIP_UPDATE_EVENT_TIME 停靠事件時間無效:%(timestamp) 僅為正在進行或即將進行的行程加入 TripUpdates
INVALID_TRIP_UPDATE_DEPARTURE_NO_TIME 沒有提供出發所需的 timedelay 在每則 StopTimeEvent 訊息中加入 time 和/或 delay 欄位。如果沒有可用的資訊,請略過 departure 欄位。
INVALID_TRIP_UPDATE_ARRIVAL_NO_TIME 沒有提供抵達所需的 timedelay 在每則 StopTimeEvent 訊息中加入 time 和/或 delay 欄位。如果沒有可用的資訊,請略過 arrival 欄位。
MISSING_CONTENT_AND_EFFECT 沒有有效內容或影響。 在快訊中加入 effectheader_textdescription_text。如果沒有可用資訊,請改為移除 alert
CUSTOM_PARSE_WARNING 剖析自訂格式動態饋給時部分失敗:%(value_string) 這項錯誤代表系統無法剖析一部分的 Realtime 動態饋給。請使用文字編輯器檢查動態饋給內容,或是重新上傳動態饋給。如果錯誤持續發生,請聯絡 Google 大眾運輸代表尋求協助。
VEHICLE_POSITION_BAD_START_TIME 指定的行程 $(trip_id) 開始時間與實際發車時間相差 %(diff_time) 秒。 指定接近行程實際開始時間的發車時間。
INVALID_TRIP_UPDATE_INCONSISTENT_IDS stop_sequence %(value) 與行程「%(trip_id)」的停靠站「%(stop_id)」不符。目前使用靜態索引中的 stop_sequence %(next_seq) 覆寫。 確認 stop_sequence 欄位的值正確無誤,且與目前 Static 動態饋給中同一個 stop_idtrip_idstop_sequence 相符。
INVALID_STOP_STOP_ID 已捨棄 StopTimeUpdate:行程「%(trip_id)」的 stop_id%(stop_id)」無法與 GTFS 動態饋給比對。stop_sequence [如有] %(value) 檢查靜態動態饋給是否正確。如有需要,請修正行程中 stop_times.txtstop_id 的值,等待新版 Static 動態饋給上線,然後更新 Realtime 動態饋給中的 stop_id 參照。
INVALID_STOP_SEQUENCE_ID 已捨棄 StopTimeUpdate:行程「%(trip_id)」內的 stop_sequence %(value) 無法與 GTFS 動態饋給比對。 檢查靜態動態饋給是否正確。如有需要,請修正 stop_sequence 的值,等待新版 Static 動態饋給上線,然後更新 Realtime 動態饋給中的 stop_sequence 參照。
INVALID_TRIP_UPDATE_ORDER 已捨棄 StopTimeUpdatetrip_id%(trip_id)」違反 stop_sequence 順序 (stop_id [如有]「%(stop_id)」、stop_sequence %(prev_seq) 後面接著 %(next_seq))。 請務必使用 stop_sequence 設定 StopTimeUpdates 的順序。
FEED_TIMESTAMP_CONSISTENTLY_IN_THE_PAST 動態饋給時間戳記持續比現在早 %(diff_time) 秒 (%(difftime_string))。 確認時間戳記值是在以世界標準時間為準的時區 (從 Epoch 紀元時間起算,以秒為單位)。確認伺服器的時鐘保持同步,例如與 NTP 同步。請務必定期更新動態饋給。
TIMESTAMP_MISSING 動態饋給的 FeedHeader 缺少 timestamp 欄位。 設定 FeedHeader 中的 timestamp 欄位 (時區以世界標準時間為準,從 Epoch 紀元時間起算,以秒為單位)。時間戳記必須正確代表動態饋給產生時間。
ENTITY_MORE_THAN_ONCE FeedEntity 的 ID 在動態饋給中重複出現。 確認動態饋給中的所有實體 ID 皆不重複。
PROTO_ASCII_HAS_BOM 提供的動態饋給是以位元組順序標示 (BOM) 開頭。 移除位元組順序標示。確認文字格式的通訊協定緩衝區採用 UTF-8 編碼,且不含 BOM。建議您改以二進位格式提供通訊協定緩衝區。
TRIP_UPDATE_TIMESTAMP_CONSISTENTLY_IN_THE_FUTURE 某項行程更新的 timestamp 持續比現在晚 %(diff_time) 秒 (%(difftime_string))。 確認 timestamp 值採用時區以世界標準時間為準的格式 (從 Epoch 紀元時間起算,以秒為單位)。確認伺服器的時鐘保持同步,例如與 NTP 同步。針對超過一小時前完成的行程,從動態饋給中移除 TripUpdates
VEHICLE_POSITION_TIMESTAMP_CONSISTENTLY_IN_THE_FUTURE 時間戳記持續比現在晚 %(diff_time) 秒 (%(difftime_string))。 確認 timestamp 值採用時區以世界標準時間為準的格式 (從 Epoch 紀元時間起算,以秒為單位)。確認伺服器的時鐘保持同步,例如與 NTP 同步。
VEHICLE_POSITION_TIMESTAMP_CONSISTENTLY_IN_THE_PAST timestamp 持續比現在早 %(diff_time) 秒 (%(difftime_string))。 確認 timestamp 值採用時區以世界標準時間為準的格式 (從 Epoch 紀元時間起算,以秒為單位)。確認伺服器的時鐘保持同步,例如與 NTP 同步。針對超過一小時前完成的行程,從動態饋給中移除 VehiclePositions
UNKNOWN_TRIP_ID GTFS Static 動態饋給無法辨識行程 ID「%(trip_id)」。 檢查 Static 動態饋給,確認其中包含正確的最新資訊。確認使用正確版本的 Static 動態饋給,必要時也可以上傳正確版本。在 TripDescriptor 中提供正確的現有 trip_id
TRIP_OUTSIDE_SERVICE_WINDOW ID 為「%(trip_id)」的行程在指定時間不提供服務。 檢查靜態動態饋給是否正確。請補上缺少的行程資訊,等待新版靜態動態饋給上線,然後修正 Realtime 動態饋給中的 trip_id 參照。
AMBIGUOUS_TRIP_DESCRIPTOR TripDescriptor 模稜兩可,無法解析特定時間的單一行程。 如果行程以頻率為準,請務必在 TripDescriptor 中提供有效的 start_time 值和 start_date 值。
INVALID_TRIP_UPDATE_FUTURE_TIMESTAMP TripUpdate 時間戳記 %(timestamp) (%(timestamp_string)) 比現在晚 %(diff_time) 秒 (%(difftime_string)),而動態饋給時間戳記是 %(localtime) (%(localtime_string))。 確認時鐘來源已設定正確的時間,且所有時區轉換程序都正確執行。Vehicle.Position.timestamp 欄位必須採用時區以世界標準時間為準的格式 (從 Epoch 紀元時間起算,以秒為單位)。
INVALID_VEHICLE_POSITION_FUTURE_TIMESTAMP VehiclePosition 時間戳記 %(timestamp) (%(timestamp_string)) 比現在晚 %(diff_time) 秒 (%(difftime_string)),而動態饋給時間戳記是 %(localtime) (%(localtime_string))。 確認時鐘來源已設定正確的時間,且所有時區轉換程序都正確執行。Vehicle.Position.timestamp 欄位必須採用時區以世界標準時間為準的格式 (從 Epoch 紀元時間起算,以秒為單位)。
INVALID_VEHICLE_POSITION_STALE_TIMESTAMP VehiclePosition 時間戳記 %(timestamp) (%(timestamp_string)) 比現在早 %(diff_time) 秒 (%(difftime_string)),而動態饋給時間戳記是 %(localtime) (%(localtime_string))。 從動態饋給中移除不提供服務的車輛,並確認時鐘已同步,且時區轉換正確無誤。
INVALID_ALERT_TIME_RANGE_END_PAST 時間範圍已於超過一個月前結束:%(time_end) 移除結束時間在過去且不再使用的快訊 (或 active_periods)。
INVALID_ALERT_TIME_RANGE_ORDER 時間範圍順序相反:(%(time_start)%(time_end))。 檢查 active_period 欄位的值。這些欄位的順序可能相反。
INVALID_ALERT_TIME_RANGE_START_FUTURE 時間範圍的開始時間在即刻起的超過一年後:%(time_start) 在快訊中加入近期的 active_period 開始時間。
STOP_TIME_AND_DELAY_MISMATCH 停靠站「%(stop_id)」的行程「%(trip_id)」指定時間戳記 %(timestamp) 和延遲時間 %(delay),而兩者相牴觸。請將延遲時間設為 %(value) 檢查 Realtime 動態饋給與目前上線的 Static 動態饋給是否相符。確認 StopTimeEvent 中的 delay 欄位和 time 欄位正確無誤且一致。您也可以完全略過 delay 欄位,改為只提供 time 欄位。
INVALID_START_DATE 行程「%(trip_id)」的開始日期「%(value_string)」無效 (假定為今天)。格式應為「YYYYMMDD」。 檢查指定行程的 start_date 值。確認值正確無誤。
INVALID_START_TIME 行程「%(trip_id)」的開始時間「%(value_string)」無效。格式應為「HH:MM:SS」。 檢查特定行程的 start_time 值和格式。確認值和格式正確無誤。
VEHICLE_POSITION_DUPLICATE_TRIP 許多車輛回報行程 $(trip_id)start_time $(timestamp_string) 變更行程的 start_time,並針對非以頻率為準的行程將 ScheduleRelationship 變更為 ADDED
VEHICLE_POSITION_CONVERTED_TO_ADDED 行程 $(trip_id) 時間表關係已變更為 ADDED 行程。 這項錯誤是另一個問題所造成的副作用。如要修正,請先解決該問題。
INVALID_TRIP_UPDATE_MISSING_IDS 行程更新內含的 stop_update 沒有 stop_sequence,也沒有 stop_id StopTimeUpdate 訊息中加入 stop_id 和/或 stop_sequence
MULTIPLE_ENTITIES_PER_TRIP 已捨棄行程更新:表示 trip_id%(trip_id)」和開始時間與 ID 為 %(value_string) 的其他實體相同。 確認每趟實際旅程最多只能有一個 TripUpdate,且動態饋給內的 TripDescriptor 不得重複。
INVALID_TRIP_UPDATE_MISSING_CONTENT 已排定 trip_id%(trip_id)」的行程更新,必須指定至少一項包含資料的停靠時間更新,或是指定延遲時間。

提供下列其中一項資訊:

  • 包含資料的 StopTimeUpdate
  • TripUpdate.delay
TRIP_UPDATE_SUSPICIOUS_DELAY trip_id%(trip_id)」的行程含有疑似不合理的延遲時間 (%(difftime_string))。 確認已明確定義 TripDescription,必須設有 trip_idstart_datestart_time。確認 StopTimeUpdates 的時間值與指定行程相符。檢查是否有任何時區不符的問題,例如 start_datestart_time 是否位於當地時區,但 FeedMessage 中的所有整數時間欄位都是從 Epoch 紀元時間起算,且以秒為單位。
TRIP_UPDATE_OBSOLETE trip_id%(trip_id)」的行程已於 %(difftime_string) 前結束。 在行程抵達最終停靠站的幾分鐘後,從動態饋給中移除行程。
UNSUPPORTED_ADDED_WITH_BLOCK_TRANSFER 在設有排程轉乘的行程 %(trip_id) 中,系統不支援 schedule_relationshipADDEDTripDescriptor 只有在表示獨立行程時,才能在 ScheduleRelationship 中使用 ADDED 值。
UNSUPPORTED_ADDED_WITHOUT_TIMES 在未指定時間的行程 %(trip_id) 中,TripDescriptorschedule_relationshipADDED 提供 start_datestart_time 來表示新增的行程何時開始。
TRIP_UPDATE_TOO_OLD TripUpdate 時間戳記 %(timestamp) (%(timestamp_string)) 比現在早 %(diff_time) 秒 (%(difftime_string))。目前時間是 %(localtime) (%(localtime_string))。已捨棄 TripUpdate 定期產生動態饋給並持續更新資料。確認 TripUpdate 時間戳記正確無誤,從 Epoch 紀元時間起算,以秒為單位,且採用時區以世界標準時間為準的格式。在行程抵達最終停靠站的幾分鐘後,從動態饋給中移除行程。
INVALID_TRIP_UPDATE_DELAY_USAGE TripUpdatedelay 欄位與 StopTimeUpdates 中的時間一併指定。

僅使用下列其中一個選項提供時間資訊,不要兩者並用:

  • StopTimeUpdates
  • TripUpdate.delay
INVALID_VEHICLE_POSITION_VEHICLE_ID_MISSING VehiclePosition 缺少車輛 ID。 提供車輛 ID。確認在車輛提供服務的所有動態饋給版本中,這個值保持不變。
INVALID_VEHICLE_POSITION_INVALID_POSITION VehiclePosition 缺少有效的位置資訊。 latitudelongitude 欄位中提供有效的值。
INVALID_VEHICLE_POSITION_TIMESTAMP_MISSING 缺少 VehiclePosition 時間戳記。 提供 VehiclePosition 資訊收集時間的時間戳記值 (從 Epoch 紀元時間起算,以秒為單位,且採用時區以世界標準時間為準的格式)。