Proceso de lanzamiento

Elegir un método de envío de datos

Una vez que tengas un feed en tiempo real válido (incluso uno que no contenga datos), podrás especificar el método que utilizarás para enviar datos a Google.

Puedes enviar datos de transporte público en tiempo real de dos formas:

  • Por extracción, lo que permite que Google obtenga los datos desde una ubicación web.
  • Por inserción, lo que te permite subirlos por HTTP POST.

En el caso de los datos de alertas de servicio, si no puedes proporcionar alertas de servicio por los métodos de recogida o inserción, puedes crear alertas de servicio manualmente con el Editor de alertas de servicio.

Publicar alertas de servicio

Si no puedes proporcionar alertas de servicio por los métodos de recogida o inserción, puedes crear alertas de servicio manualmente con el Editor de alertas de servicio.

Recogida

Con este método de envío, cada feed en tiempo real se aloja en su propia ubicación web y Google obtiene (extrae) los datos desde allí cada 30 segundos.

Para permitir que Google obtenga los datos de forma segura, puedes utilizar una de las siguientes opciones de autenticación:

  • Autenticación básica (nombre de usuario y contraseña)
  • Encabezados específicos que se deben añadir a la solicitud
Si decides utilizar la autenticación básica, proporciona las credenciales adecuadas al equipo de Asistencia de Google Transit.

Inserción

Este método te permite transferir los datos a Google, o "insertarlos", de forma activa. Con el envío por inserción, puedes definir subidas automáticas de los feeds GTFS en tiempo real por HTTP POST. Se usa la autenticación OAuth2.0 para garantizar la seguridad de los feeds en tiempo real.

Para proporcionar a los usuarios información precisa y actualizada sobre el transporte público, te recomendamos que insertes actualizaciones en tiempo real con frecuencia. Lo ideal es insertar los datos de actualización de los viajes y de la posición de los vehículos cada 30 segundos, y los datos de las alertas de servicio en intervalos de entre 30 segundos y 2 minutos.

Si configuraste el envío por inserción antes del 2023, tu configuración usa un método OAuth diferente. Para asegurarte de que tus inserciones de feeds siguen funcionando correctamente, cambia la configuración de la inserción de forma que use el nuevo método que se describe abajo.
Antes de empezar
Antes de hacer cualquier prueba o implementación, verifica que se cumplen estas condiciones:
  • Tienes una cuenta de Google registrada en el panel de control de Transit Partners
  • Tienes una cuenta de Google que puede acceder a Google Cloud
  • Tienes el archivo de feed en tiempo real que quieres transferir al panel de control de Transit Partners
Crear un proyecto de cloud.google.com
Importante: Para crear un proyecto de cloud.google.com, necesitas una cuenta de Google Cloud.
En cloud.google.com, crea un proyecto de Google Cloud. No tienes que pagar nada para compartir tus datos, pero deberás proporcionar un método de pago por motivos de seguridad.
Crear una cuenta de servicio y una clave de cuenta de servicio
  1. En la parte izquierda, en la pestaña "APIs y servicios", haz clic en Credenciales.
  2. En la parte superior, haz clic en Crear credenciales y luego Cuenta de servicio.
  3. En el campo "Nombre de la cuenta de servicio", escribe un nombre.
  4. Haz clic en Crear y continuar y luego Listo.

Puedes elegir el nombre de cuenta de servicio que quieras. En este ejemplo, el nombre es "push-uploads" (subidas-inserción). En este paso se crea una dirección de correo para la cuenta de servicio. Esta se usará más adelante en el panel de control de Transit Partners para conceder permiso para editar a la cuenta de servicio. Si esta dirección de correo no requiere permisos ni acceso de usuario al panel, puedes saltarte los pasos 2 y 3.
Si quieres crear una clave para las solicitudes de inserción autenticadas, sigue estos pasos:
  1. En la consola de Google Cloud, haz clic en el menú Más y luego IAM y administración.
  2. En la parte izquierda, haz clic en Cuentas de servicio y luego Añadir clave.
  3. En "Tipo de clave", selecciona JSON.
  4. Haz clic en Crear.

Autorizar la cuenta de servicio
  1. Para añadir la cuenta de servicio como usuario al panel de control de Transit Partners, haz clic en Open Invite Dialog (Abrir cuadro de diálogo de invitación) en la parte superior derecha de la página.
  2. En el cuadro de diálogo, introduce el correo de la cuenta de servicio.
  3. En la esquina superior derecha, haz clic en el botón Open Invite Dialog (Abrir cuadro de diálogo de invitación) y, a continuación, escribe el correo de tu cuenta de servicio.
  4. Para permitir que se envíen nuevos feeds en tiempo real, asegúrate de que tu cuenta de servicio tenga el permiso de acceso (predeterminado).
  5. Haz clic en Invite (Invitar).

Para obtener más información sobre cómo añadir usuarios, consulta cómo acceder al panel de control de Transit Partners

Autenticar solicitudes de subida
Para hacer solicitudes de servidor a servidor autorizadas a través de Python, Java y REST, consulta cómo utilizar OAuth 2.0 con aplicaciones de servidor a servidor.
Con la clave de cuenta de servicio descargada (service-account-key.json), puedes enviar una solicitud POST autorizada desde el panel de control de Transit Partners. Para el ámbito requerido, usa https://www.googleapis.com/auth/partnerdash.upload. La solicitud contiene un formulario HTML (Content-Type: multipart/form-data) con dos campos:
  • realtime_feed_id: ID del feed en tiempo real que se está subiendo
  • file: contenido del archivo GTFS-RT subido
A continuación se muestra un ejemplo de implementación de código de subida de feeds en 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())

Búsqueda
Borrar búsqueda
Cerrar búsqueda
Menú principal
16604668608449437090
true
Buscar en el Centro de ayuda
true
true
true
true
true
82656
false
false