Prenotazioni end-to-end: query sullo stato del commerciante tramite l'API

Casi d'uso

L'API Google Maps Booking fornisce due metodi che possono essere utilizzati per recuperare in modo programmatico lo stato dei singoli commercianti per varie integrazioni o per l'inventario degli annunci di Servizi locali.

Casi d'uso dell'API Merchant Status:

  • Migliora gli strumenti di gestione dei rapporti con i clienti esistenti per mostrare ai clienti come viene visualizzato il loro inventario su Google.
  • Crea una dashboard per monitorare lo stato dell'inventario e della corrispondenza dei tuoi commercianti.
  • Recuperare in modo programmatico gli stati corrispondenti e prenotabili dei tuoi commercianti e correggere eventuali informazioni errate per migliorare la qualità dei dati.

Che cosa contiene lo stato del commerciante

MerchantStatus contiene le seguenti informazioni:

  • Stato dell'inventario del commerciante: si applica sia ai commercianti che accettano prenotazioni sia a quelli che utilizzano la lista d'attesa.
  • Stato della corrispondenza del commerciante: include i dettagli sulla scheda dell'attività associata
  • Solo per annunci di Servizi locali Google) Fornitore di servizi commerciali corrispondente: include l'ID cliente e le categorie di servizi.
  • Gli URL che mostrano come il commerciante viene visualizzato su Google.

Cercare lo stato di un singolo commerciante

Puoi ottenere lo stato di un singolo commerciante utilizzando inventory.partners.merchants.getStatus:

GET https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partnerId}/merchants/{merchantId}/status

Ecco un esempio di codice Python (consulta gli esempi in altri linguaggi qui):

from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file(
    './your_key.json')
scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/mapsbooking'])
authed_session = AuthorizedSession(scoped_credentials)

response = authed_session.get('https://partnerdev-mapsbooking.googleapis.com' +
    '/v1alpha/inventory/partners/123456789/merchants/001/status')

Un esempio di risposta MerchantStatus è il seguente:

  {
    "name": "partners/123456789/merchants/001/status",
    "merchantName": "Foo Bar Restaurant",
    "inputGeoInfo": {
      "unstructured_address": "123 Foo Bar Street, Mountain View"
    },
    "processingStatus": "COMPLETED",
    "bookingStatus": {
      "hasValidFutureInventory": true
    },
    "waitlistStatus": {
      "hasValidWaitlistService": true
    }
    "geoMatch": {
      "name": "Foo Bar Restaurant",
      "formattedAddress": "123 Foo Bar St, Mountain View, CA 94043",
      "placeId": "ChIAAAAAAAAABBBBBBBB"
    },
    "directUrls": [
      {
        "type": "BOOKING",
        "url": "https://reserve-partnerdev.sandbox.google.com/maps/reserve/v/dine/m/Nwaaaaa"
      },
      {
        "type": "WAITLIST",
        "url": "https://reserve-partnerdev.sandbox.google.com/maps/reserve/v/wait/c/iDbbbbb"
      }
    ]
  }

Recuperare collettivamente gli stati dei commercianti

Puoi recuperare gli stati di tutti i commercianti o di un gruppo di commercianti che soddisfano determinate condizioni di inventario/corrispondenza utilizzando inventory.partners.merchants.status.list. Ad esempio, puoi effettuare questa chiamata per ottenere tutti i commercianti non abbinati con inventario di prenotazioni valide con data futura:

GET https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partnerId}/merchants/status?pageSize=50&bookingInventoryStatusRestrict=HAS_VALID_FUTURE_INVENTORY&geoMatchRestrict=GEO_UNMATCHED

Un esempio di risposta potrebbe essere il seguente:

  {
    "merchantStatuses": [
      {
        "name": "partners/123456789/merchants/002/status",
        "merchantName": "Bar Foo Restaurant",
        "inputGeoInfo": {
          "unstructured_address": "234 Bar Foo Street, Mountain View"
        },
        "processingStatus": "COMPLETED",
        "bookingStatus": {
          "hasValidFutureInventory": true
        },
        "waitlistStatus": {},
      },
      ...
      {
        "name": "partners/123456789/merchants/080/status",
        "merchantName": "Baz Restaurant",
        "inputGeoInfo": {
          "unstructured_address": "345 Baz Street, Mountain View"
        },
        "processingStatus": "COMPLETED",
        "bookingStatus": {
          "hasValidFutureInventory": true
        },
        "waitlistStatus": {
          "hasValidWaitlistService": true
        },
      },
    ],
    "nextPageToken": "AAABBBB"
  }

Questa risposta conterrà 50 MerchantStatus che soddisfano le condizioni di filtro e sono ordinati per merchant_id. La risposta contiene anche un token pagina (se non è l'ultima pagina) per eseguire una query sulla pagina successiva.

Tieni presente che le condizioni di filtro devono essere coerenti in tutte le pagine.

Best practice

Poiché gli stati dei commercianti non cambiano di frequente nella maggior parte dei casi, è consigliabile memorizzare nella cache i risultati recuperati e recuperarli periodicamente (ad es. ogni poche ore) tramite nuove query. Il Centro azioni potrebbe limitare le tue query se il numero di richieste al secondo è ritenuto eccessivamente elevato.