通过 API 查询商家状态

用例

Google Maps Booking API 提供了两种方法,可让您以编程方式针对各种 Actions Center 集成或本地生活服务广告商品目录检索各个商家的状态。

Merchant Status API 的使用场景:

  • 增强现有的客户关系管理工具,以便向客户展示其产品目录如何在 Actions Center 平台上展示。
  • 构建信息中心来跟踪商家的商品目录状态和匹配状态。
  • 以编程方式检索商家的匹配和可预订状态,并修正任何不正确的信息,以提高数据质量。

商家状态包含哪些内容

MerchantStatus 包含以下信息:

  • 商家商品目录状态:适用于预订商家和/或等位名单商家。
  • 商家匹配状态:包含匹配商家信息的详细信息
  • (仅适用于 Google 本地生活服务广告)匹配的商家服务提供商:包括客户 ID 和服务类别。
  • 用于演示商家如何通过“通过 Google 预订”显示商家的网址。

查询单个商家状态

您可以使用 inventory.partners.merchants.getStatus 获取单个商家的状态:

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

以下是 Python 代码示例(请点击此处查看更多语言的示例):

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

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

批量检索商家状态

您可以使用 inventory.partners.merchants.status.list 检索所有商家或满足特定商品目录/匹配条件一组商家的状态。例如,您可以进行此调用来获取具有有效未来日期预订商品目录的所有不匹配的商家:

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

响应示例如下所示:

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

此响应将包含 50 个满足过滤条件并按 merchant_id 排序的 MerchantStatus。响应还包含用于查询下一页的页面令牌(如果不是最后一页)。

请注意:所有页面的过滤条件都应保持一致。

最佳实践

由于商家状态在大多数时候不会频繁更改,因此建议缓存检索到的结果,并通过新查询定期(例如每隔几小时)检索这些结果。如果每秒的请求数被认为过高,操作中心可能会限制您的查询次数。