Notificação

Devido à baixa utilização, o suporte via chat não estará mais disponível depois de sexta-feira, 10 de maio. Isso vai permitir que a equipe se concentre nos e-mails e melhore a experiência geral de comunicação com o parceiro. Use nossa opção de e-mail para todas as consultas feitas após essa data.

Processo de divulgação

Escolher um método de envio de dados

Quando você tiver um feed válido em tempo real (mesmo que não contenha dados), poderá especificar o método que vai ser usado para enviar informações ao Google.

É possível enviar dados de transporte público em tempo real de duas maneiras:

  • A busca possibilita ao Google extrair os dados de um local da Web.
  • O envio por push permite fazer o upload dos dados via HTTP POST.

No caso de dados de alertas de serviço, se não for possível enviar alertas por métodos de busca ou push, crie tudo manualmente com o Editor de alertas de serviço.

Publicar alertas de serviço

Se não for possível enviar alertas de serviço por métodos de busca ou push, crie tudo manualmente com o Editor de alertas de serviço.

Busca

Você pode hospedar cada um dos seus feeds em tempo real no próprio local da Web. O Google extrai (ou busca) os dados desses locais a cada 30 segundos.

Para que o Google busque dados com segurança, use uma destas opções de autenticação:

  • Autenticação básica (nome de usuário e senha)
  • Cabeçalhos específicos que serão adicionados à solicitação
Se você optar pela autenticação básica, envie as credenciais apropriadas para a equipe de suporte do Google Transit.

Envio por push

Você pode transferir (ou enviar por push) seus dados para o Google de forma ativa. Com o envio por push, é possível configurar uploads automáticos da GTFS Realtime via HTTP POST usando a autenticação OAuth2.0 para garantir a segurança do seu feed de dados em tempo real.

Para disponibilizar as informações de transporte público mais recentes e exatas aos usuários, recomendamos que você envie atualizações de dados em tempo real por push com frequência. O ideal é enviar os dados sobre atualizações de viagens e posições dos veículos a cada 30 segundos e os detalhes sobre alertas de serviço a cada 30 segundos ou em intervalos de até 2 minutos.

Se você configurou o envio por push antes de 2023, a configuração usa outro método OAuth. Para garantir que os envios do feed continuem funcionando, atualize a configuração de push para o novo método descrito abaixo.
Antes de começar
Antes dos testes ou de qualquer implementação, verifique se você tem:
  • Uma Conta do Google registrada no painel do parceiro do Google Transit
  • Uma Conta do Google que pode acessar o Google Cloud
  • O arquivo de feed em tempo real que você quer enviar para o painel do parceiro do Google Transit
Criar um projeto em cloud.google.com
Importante: para criar um projeto em cloud.google.com, você precisa ter uma conta do Google Cloud.
Em cloud.google.com, crie um projeto do Cloud. Você não precisa pagar para compartilhar seus dados, mas é necessário informar uma forma de pagamento por segurança.
Criar uma conta de serviço e uma chave para ela
  1. À esquerda, na guia "APIs e serviços", clique em Credenciais.
  2. Na parte de cima, clique em Criar credenciais e Conta de serviço.
  3. No campo "Nome da conta de serviço", insira um nome.
  4. Clique em Criar e continuar e Concluído.

É possível escolher qualquer nome para a conta de serviço. No exemplo abaixo, o nome é "push-uploads". Esta etapa cria um endereço de e-mail para a conta. Ele será usado depois no painel do parceiro do Google Transit para dar acesso de edição à conta de serviço. Se esse e-mail não precisar de permissões e de acesso do usuário ao painel, pule as etapas 2 e 3.
Se quiser criar uma chave para solicitações autenticadas de push:
  1. No console do Google Cloud, clique no menu Mais e IAM e administrador.
  2. À esquerda, clique em Contas de serviço e Adicionar chave.
  3. Em "Tipo de chave", selecione JSON.
  4. Clique em Criar.

Autorizar a conta de serviço
  1. Para adicionar a conta de serviço como um usuário ao painel do parceiro do Google Transit, clique em Abrir caixa de diálogo de convite no canto superior direito da página.
  2. Na caixa de diálogo, insira o e-mail da conta de serviço.
  3. No canto superior direito, clique no botão Abrir caixa de diálogo de convite e insira o e-mail da conta de serviço.
  4. Para permitir o envio de novos feeds em tempo real, verifique se a conta de serviço tem a permissão Acesso (padrão).
  5. Clique em Convidar.

Para mais detalhes sobre como adicionar usuários, consulte Acessar o painel do parceiro do Google Transit.

Autenticar solicitações de upload
Para fazer solicitações autorizadas entre servidores usando Python, Java e REST, aprenda a utilizar o OAuth 2.0 em aplicativos de servidor para servidor.
Com a chave da conta de serviço salva (service-account-key.json), é possível fazer uma solicitação POST autorizada no painel do parceiro do Google Transit. Para o escopo necessário, use https://www.googleapis.com/auth/partnerdash.upload. A solicitação contém um formulário HTML (Content-Type: multipart/form-data) com dois campos:
  • realtime_feed_id: o ID do feed em tempo real que está sendo enviado
  • file: o conteúdo do arquivo GTFS-RT enviado
Confira um exemplo de implementação para a pessoa que faz o upload do feed (código em 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())

Precisa de mais ajuda?

Siga as próximas etapas:

Is there something we can help you with?

Chat with a member of Transit team

Pesquisa
Limpar pesquisa
Fechar pesquisa
Google Apps
Menu principal
11718205608238964012
true
Pesquisar na Central de Ajuda
true
true
true
true
true
82656
false
false