Kompleksowe rezerwacje – zapytania o stan sprzedawcy za pomocą interfejsu API

Przypadki użycia

Interfejs Google Maps Booking API udostępnia 2 metody, które można wykorzystać do programowego pobierania stanu poszczególnych sprzedawców w przypadku różnych integracji lub repertuaru Usług lokalnych.

Przypadki użycia interfejsu Merchant Status API:

  • Udoskonalenie dotychczasowych narzędzi do zarządzania relacjami z klientami, aby pokazać im, jak ich asortyment jest wyświetlany w Google.
  • Utwórz panel do śledzenia stanu asortymentu i stanu dopasowania sprzedawców.
  • Pobieranie za pomocą programów stanów dopasowania i dostępności sprzedawców oraz poprawianie nieprawidłowych informacji w celu poprawy jakości danych.

Co zawiera stan sprzedawcy

MerchantStatus zawiera te informacje:

  • Stan asortymentu sprzedawcy: dotyczy zarówno sprzedawców, którzy akceptują rezerwacje, jak i tych, którzy mają listę oczekujących.
  • Stan dopasowania sprzedawcy: zawiera informacje o dopasowanym profilu firmy
  • Tylko w przypadku reklam w Usługach lokalnych Google: dopasowany usługodawca: zawiera identyfikator klienta i kategorie usług.
  • Adresy URL pokazujące, jak sprzedawca jest wyświetlany w Google.

Wyszukiwanie stanu jednego sprzedawcy

Stan pojedynczego sprzedawcy możesz sprawdzić 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 większej liczbie języków 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ład odpowiedzi MerchantStatus:

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

Za pomocą zapytania inventory.partners.merchants.status.list możesz pobrać stany wszystkich sprzedawców lub grupy sprzedawców, którzy spełniają określone warunki dotyczące asortymentu lub dopasowania. Możesz na przykład wykonać to wywołanie, aby uzyskać listę wszystkich niezgodnych sprzedawców z dostępnymi zapasami rezerwacji z 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ź wygląda tak:

  {
    "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 MerchantStatus, które spełniają warunki filtrowania i są posortowane według merchant_id. Odpowiedź zawiera też token strony (jeśli nie jest to ostatnia strona), który umożliwia wysłanie zapytania o kolejną stronę.

Uwaga: warunki filtrowania powinny być takie same na wszystkich stronach.

Sprawdzone metody

Stany sprzedawców zwykle nie zmieniają się często, dlatego zalecamy zapisywanie w pamięci podręcznej pobranych wyników i okresowe (np. co kilka godzin) pobieranie ich za pomocą nowych zapytań. Centrum działań może ograniczać liczbę zapytań, jeśli uzna, że jest ona zbyt wysoka.