Eseguire 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 del Centro azioni o inventario degli annunci di Servizi locali.

Casi d'uso dell'API Merchant Status:

  • Migliora gli strumenti di gestione delle relazioni con i clienti esistenti per mostrare ai tuoi clienti come viene visualizzato il loro inventario sulla piattaforma Actions Center.
  • Crea una dashboard per monitorare lo stato dell'inventario e lo stato della corrispondenza dei tuoi commercianti.
  • Recupera in modo programmatico gli stati di corrispondenza e prenotazione dei tuoi commercianti e correggi eventuali informazioni errate per migliorare la qualità dei dati.

Cosa contiene lo stato del commerciante

MerchantStatus contiene le seguenti informazioni:

  • Stato dell'inventario del commerciante: si applica ai commercianti con prenotazione e/o lista di attesa.
  • Stato della corrispondenza del commerciante: include i dettagli della scheda dell'attività corrispondente
  • Solo per annunci di Servizi locali Google) Fornitore di servizi commerciante corrispondente: include l'ID cliente e le categorie di servizi.
  • Gli URL per dimostrare come viene visualizzato il commerciante tramite Prenota con 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

Di seguito è riportato un esempio di codice Python (vedi esempi in altre lingue 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 prenotazione valido con data futura:

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

Una risposta di esempio potrebbe essere simile alla 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 filtraggio e sono ordinate in base a merchant_id. La risposta contiene anche un token di pagina (se non è l'ultima pagina) per eseguire una query sulla pagina successiva.

Nota: le condizioni di filtro devono essere coerenti in tutte le pagine.

Best practice

Poiché gli stati dei commercianti non cambiano spesso 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 viene ritenuto eccessivamente elevato.