Wysyłanie zapytania o stan sprzedawcy za pomocą interfejsu API

Przypadki użycia

Google Maps Booking API udostępnia 2 metody, których można używać do programowego pobierania stanu poszczególnych sprzedawców w przypadku różnych integracji z Centrum działań lub zasobów reklam usług lokalnych.

Przykłady zastosowań interfejsu Merchant Status API:

  • Ulepsz istniejące narzędzia do zarządzania relacjami z klientami, aby pokazać klientom, jak ich asortyment jest wyświetlany na platformie Centrum działań.
  • Utwórz panel do śledzenia stanu asortymentu i stanu dopasowania sprzedawców.
  • Programowe pobieranie statusów dopasowania i możliwości rezerwacji Twoich sprzedawców oraz poprawianie nieprawidłowych informacji w celu poprawy jakości danych.

Co zawiera stan sprzedawcy

Element MerchantStatus zawiera te informacje:

  • Stan asortymentu sprzedawcy: dotyczy sprzedawców, którzy umożliwiają rezerwację lub zapisanie się na listę oczekujących.
  • Stan dopasowania sprzedawcy: zawiera szczegółowe informacje o dopasowanej wizytówce firmy.
  • Dotyczy tylko reklam w Usługach lokalnych Google. Dopasowany usługodawca: zawiera identyfikator klienta i kategorie usług.
  • Adresy URL pokazujące, jak sprzedawca jest prezentowany w Zarezerwuj z Google.

Sprawdzanie stanu jednego sprzedawcy

Stan pojedynczego sprzedawcy możesz uzyskać za pomocą wywołania inventory.partners.merchants.getStatus:

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

Oto przykładowy kod w Pythonie (przykłady w innych językach znajdziesz tutaj):

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')

Przykładowa odpowiedź MerchantStatus wygląda tak:

  {
    "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"
      }
    ]
  }

Zbiorcze pobieranie stanów sprzedawców

Stan wszystkich sprzedawców lub grupy sprzedawców spełniających określone warunki dotyczące asortymentu lub dopasowania możesz pobrać za pomocą metody inventory.partners.merchants.status.list. Możesz na przykład wykonać to wywołanie, aby uzyskać listę wszystkich niedopasowanych sprzedawców z prawidłowym asortymentem rezerwacji z datą w przyszłości:

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

Przykładowa odpowiedź:

  {
    "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"
  }

Ta odpowiedź będzie zawierać 50 obiektów MerchantStatus, które spełniają warunki filtrowania i są uporządkowane według merchant_id. Odpowiedź zawiera też token strony (jeśli nie jest to ostatnia strona), który umożliwia wysłanie zapytania o następną stronę.

Uwaga: warunki filtrowania powinny być spójne na wszystkich stronach.

Sprawdzone metody

Ponieważ stany sprzedawców zwykle nie zmieniają się często, zalecamy buforowanie pobranych wyników i okresowe (np. co kilka godzin) pobieranie ich za pomocą nowych zapytań. Centrum działań może ograniczyć liczbę zapytań, jeśli liczba żądań na sekundę będzie zbyt wysoka.