Avvio del processo

Selezionare un metodo di invio dei dati

Una volta che disponi di un feed Realtime valido (anche se non contiene dati), puoi specificare il metodo che utilizzerai per inviare i dati a Google.

Puoi fornire dati di trasporto pubblico in tempo reale in due modi:

  • Recupero, che consente a Google di recuperare i dati da una posizione sul web.
  • Push, che consente di caricare i dati tramite richiesta POST HTTP.

Per i dati degli avvisi di servizio, se non puoi fornire questi avvisi utilizzando i metodi push o di recupero, puoi creare manualmente gli avvisi di servizio tramite l'Editor avvisi di servizio.

Pubblicare avvisi di servizio

Se non puoi fornire gli avvisi di servizio utilizzando i metodi push o di recupero, puoi crearli manualmente tramite l'Editor avvisi di servizio.

Recupero

Puoi ospitare ciascuno dei tuoi feed Realtime nella relativa posizione sul web, mentre Google richiama (o "recupera") i dati da queste posizioni ogni 30 secondi.

Per consentire il recupero dei dati da parte di Google in modo sicuro, puoi utilizzare una delle seguenti opzioni di autenticazione:

  • Autenticazione di base (nome utente e password)
  • Intestazioni specifiche da aggiungere alla richiesta
Se scegli di utilizzare l'autenticazione di base, fornisci le credenziali appropriate al team di assistenza di Transit.

Push

Puoi trasferire attivamente i tuoi dati a Google tramite l'invio push. Con l'invio push, puoi configurare i caricamenti automatici dei tuoi dati GTFS Realtime tramite richiesta POST HTTP, utilizzando l'autenticazione OAuth2.0 per garantire la sicurezza del tuo feed di dati Realtime.

Per fornire agli utenti le informazioni sul trasporto pubblico più precise e aggiornate possibili, ti consigliamo di inviare spesso aggiornamenti dei dati in tempo reale. Idealmente, sarebbe opportuno eseguire il push dei dati di aggiornamento della corsa e relativi alla posizione del veicolo ogni 30 secondi e dei dati di avviso del servizio da ogni 30 secondi a ogni due minuti.

Se hai configurato l'invio push prima del 2023, la configurazione utilizzerà un altro metodo OAuth. Per assicurarti che il push dei feed continui a funzionare, aggiorna la configurazione del push al nuovo metodo descritto di seguito.
Prima di iniziare
Prima di effettuare qualsiasi test o implementazione, assicurati di disporre di quanto segue:
  • Un Account Google registrato nella Dashboard Partner di Google Transit
  • Un unico Account Google che può aprire Google Cloud
  • Il file del feed in tempo reale da inviare alla Dashboard Partner di Google Transit
Crea un progetto cloud.google.com
Importante: per creare un progetto cloud.google.com, devi avere un account Google Cloud.
In cloud.google.com, crea un nuovo progetto Cloud. Non è necessario pagare per condividere i tuoi dati, ma devi fornire un metodo di pagamento per motivi di sicurezza.
Crea un account di servizio e una chiave dell'account di servizio
  1. A sinistra, nella scheda "API e servizi", fai clic su Credenziali.
  2. In alto, fai clic su Crea credenziali e poi Account di servizio.
  3. Inserisci un nome nel campo "Nome account di servizio".
  4. Fai clic su Crea e continua e poi Fine.

Puoi scegliere qualsiasi nome per il nome dell'account di servizio. Questo esempio prende il nome di "caricamenti push". Questo passaggio crea un indirizzo email per l'account di servizio. Viene utilizzato in seguito nella Dashboard Partner di Google Transit per autorizzare la modifica dell'account di servizio. Se questo indirizzo email non richiede alcuna autorizzazione e nessun accesso utente alla dashboard, puoi saltare i passaggi 2 e 3.
Per creare una chiave per le richieste push autenticate:
  1. Nella console Google Cloud, fai clic su Menu Altro e poi IAM e amministrazione.
  2. A sinistra, fai clic su Account di servizioe poi Aggiungi chiave.
  3. Nella sezione "Tipo di chiave", seleziona JSON.
  4. Fai clic su Crea.

Autorizzare l'account di servizio
  1. Per aggiungere l'account di servizio come utente alla Dashboard Partner di Google Transit, fai clic su Apri finestra di dialogo di invito in alto a destra nella pagina.
  2. Nella finestra di dialogo, inserisci l'indirizzo email dell'account di servizio.
  3. Nell'angolo in alto a destra, fai clic sul pulsante Apri finestra di dialogo di invito, poi inserisci l'indirizzo email del tuo account di servizio.
  4. Per consentire il push di nuovi feed in tempo reale, assicurati che il tuo account di servizio disponga dell'autorizzazione "Accesso" (impostazione predefinita).
  5. Fai clic su Invita.

Per ulteriori informazioni sull'aggiunta di utenti, consulta l'articolo Accedere alla Dashboard Partner di Google Transit

Autenticare le richieste di caricamento
Per effettuare richieste server-to-server autorizzate tramite Python, Java e REST, scopri come utilizzare OAuth 2.0 per le applicazioni server-to-server.
Con la chiave dell'account di servizio scaricata (service-account-key.json), puoi eseguire una richiesta POST autorizzata nella Dashboard Partner di Google Transit. Per l'ambito richiesto, utilizza https://www.googleapis.com/auth/partnerdash.upload. La richiesta contiene un modulo HTML (Tipo di contenuti: multipart/form-data) con 2 campi:
  • real_feed_id: l'ID del feed in tempo reale che stai caricando
  • file: i contenuti del file GTFS-RT caricato
Di seguito è riportato un esempio di implementazione del codice di caricamento del feed in Python:

#!/usr/bin/env python3

import requests

from google.oauth2 import service_account

from google.auth.transport.requests import AuthorizedSession

SCOPES = ["https://www.googleapis.com/auth/partnerdash.upload"]

SERVICE_ACCOUNT_FILE = 'service-account-key.json'

credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)

form = {'realtime_feed_id': '[REALTIME_FEED_NAME]'}

files = {'file': open("feed_version.pb", 'rb')}

req = requests.Request( 'POST', 'https://partnerdash.google.com/push-upload',data=form, files=files).prepare()

authed_session = AuthorizedSession(credentials)

resp = authed_session.request(url="https://partnerdash.google.com/push-upload",method="POST",

data=req.body,

headers={

'Content-Length': req.headers["Content-Length"],

'Content-Type': req.headers["Content-Type"]})

print(resp.headers)

print(resp.reason)

print(resp.raise_for_status())

Hai bisogno di ulteriore assistenza?

Prova i passaggi successivi indicati di seguito:

Ricerca
Cancella ricerca
Chiudi ricerca
Menu principale
15754191057877278118
true
Cerca nel Centro assistenza
true
true
true
true
true
82656
false
false