おすすめの方法
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
以下のベスト プラクティスは、Actions Center のローカル サービス広告のエンドツーエンド統合に適用され、ユーザビリティとパフォーマンスの問題を回避するために活用できます。データ品質が低いと、広告枠が削除される可能性があります。
フィード
予約サーバー
Maps Booking API の統合を最適化するには、次の操作を行います。
- 必ず UTC 形式の UNIX タイムスタンプを使用してください。
-
CreateBooking
API で新しい予約が呼び出されたときに、一意の予約 ID を生成します。
リアルタイム アップデート
予約プロセスで最適なユーザー エクスペリエンスを実現するには、次の手順を行います。
- 標準の実装では、BookingNotifications API を使用して、予約の開始時間、所要時間、予約ステータス(キャンセルやノーショーなど)を変更します。
- お客様側で Actions Center の予約を変更した場合は、必ず BookingNotification API を使用してシステムからリアルタイムで予約の更新を送信し、Actions Center 側でデータが古くならないようにしてください。たとえば、Actions Center のシステムから予約のキャンセル、スケジュール変更、更新を行うことができます。
UpdateBookingRequest
からの予約更新ごとに、UpdateBookingResponse
値に予約 ID が含まれていること、更新されたすべてのフィールドに新しい値が反映されていることを確認します。-
Inventory RTU が実装されている場合
- 空き状況は、API 呼び出しごとに 100 ~ 1,000 個のスロット単位でのみ更新してください。
-
*Restrict
(startTimeRestrict
など)フィールドを使用して編集対象を絞り込み、ペイロードのサイズを削減し、変更されていないデータの再送信を回避します。
-
複数のスレッドをスピンオフする場合は、スロットル エラーを防ぐために指数バックオフを実装します。指数バックオフを正しく実装しないと、
RESOURCE_EXHAUSTED
割り当てエラーが発生する可能性があります。指数バックオフを再試行して処理できますが、ReplaceServiceAvailability
の実行時にサーバーが割り当て容量に達することが頻繁にある場合は、空き状況の一括置換するようにサーバーを構成します。このソリューションは、サーバー側で行う API 呼び出しの数を減らすため、割り当てエラーを防ぐことができます。
- API 呼び出しの応答時間の上限を 1 秒未満に設定します。サーバーが、95% 以上の確率で 5 つのクエリを 1 秒未満のレイテンシで処理できることを確認します。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-07-26 UTC。
[null,null,["最終更新日 2025-07-26 UTC。"],[[["\u003cp\u003eMaintain high data quality in feeds to prevent inventory removal and ensure accurate service representation.\u003c/p\u003e\n"],["\u003cp\u003eUtilize the BookingNotifications API for real-time updates to booking details like start times, duration, and status changes.\u003c/p\u003e\n"],["\u003cp\u003eOptimize the Booking Server integration by using UTC timestamps and generating unique booking IDs for new bookings.\u003c/p\u003e\n"],["\u003cp\u003eWhen implementing Inventory Real-Time Updates, use batch updates, restrict edit targets, and incorporate exponential backoff to avoid errors.\u003c/p\u003e\n"],["\u003cp\u003eEnsure API response times are under one second and the server can handle at least five queries per second with minimal latency.\u003c/p\u003e\n"]]],["Integrate feeds with specific `Category` values and set service durations in `duration_sec`, avoiding zero values. Use `gzip` for feed compression. In the booking server, employ UNIX timestamps, generate unique booking IDs, and ensure real-time updates via the BookingNotifications API for any booking changes. Update availability in batches, use `Restrict` fields, and manage threads with exponential backoff to avoid quota errors. Maintain API response times under one second, and five QPS at sub-second latency.\n"],null,["# Best practices\n\nThe following best practices apply to the Actions Center Local Services Ads End-to-End\nintegration and can be leveraged to avoid usability and performance issues.\nLow data quality might lead to inventory takedown.\n\nFeeds\n-----\n\n- If a service doesn't have a set length, set `duration_sec` in the Availability feed to one of the following:\n - The number of seconds it takes to perform the service in a reasonable manner.\n - The average number of seconds required to complete the service.\n\n | **Note:** If a length of `0` is submitted in the feed, our system counts that availability slot as invalid and doesn't show it on the Actions Center.\n- Make the `Category` field input in the merchant's feed is specific. For example, a restaurant might submit a specific type, such as French or Japanese. For details, see [Place types](/maps/documentation/places/web-service/supported_types) for potential category values.\n- Set merchant-specific terms of service in the `Terms` field\n of the Merchant feed so that the following note appears below the\n **Book** button:\n\n \u003cbr /\u003e\n\n \u003e By continuing, you agree to \u003cvar translate=\"no\"\u003e<merchant>\u003c/var\u003e's Terms of Service.\n In this case, \"Terms of Service\" is a link that, when clicked, displays the text set in the *terms* text field.\n\n \u003cbr /\u003e\n\n- [Compress your feeds using `gzip`](/actions-center/verticals/local-services/e2e/reference/tutorials/compression)\n\nBooking Server\n--------------\n\nTo optimize your integration of the Maps Booking API, do the following:\n\n- Always use UNIX timestamps in UTC format.\n- Generate a unique booking ID when a new booking in the [`CreateBooking`](/actions-center/verticals/local-services/e2e/reference/booking-server-api-rest/e2e-methods/createbooking-method) API is called.\n\nReal-time updates\n-----------------\n\nTo ensure the best user experience during the booking process, do the\nfollowing:\n\n- For a standard implementation, use the BookingNotifications API to change the start time, duration, and booking state, such as cancellation or no-show, of an appointment.\n- Upon any change on the Actions Center booking from your side, always send real-time booking updates from the system with the BookingNotification API in real-time so that the data doesn't become stale on the Actions Center side. For example, you can cancel, reschedule, or update a booking from your system in the Actions Center.\n- For every booking update from `UpdateBookingRequest`, make sure that the `UpdateBookingResponse` value contains the booking ID and that **all** updated fields must reflect the new value.\n- If [Inventory RTU](/actions-center/verticals/local-services/e2e/integration-steps/real-time-api-updates) are implemented\n - Only update availability in batches of 100-1000 slots per API call.\n - Use `*Restrict` (such as `startTimeRestrict`) fields to narrow the edit target, reduce payload size and avoid re-sending too much unchanged data.\n - If you spin off several threads, implement an [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) to prevent throttle errors. If you don't implement an exponential backoff correctly, you might get a `RESOURCE_EXHAUSTED` [quota error](/actions-center/verticals/local-services/e2e/integration-steps/real-time-api-updates#api-quotas). You can retry the exponential backoff to handle them, but, if you find that your server often reaches quotas when you run `ReplaceServiceAvailability`, configure your server to [batch replace for availability](/maps-booking/reference/maps-booking-api/rest/v1alpha/inventory.partners.availability/replace). This solution prevents quota errors because it reduces the number of API calls your serve has to make.\n- Set your API call response time limits to less than one second. Ensure that your server can handle five queries per second (QPS) with sub-second latency at least 95% of the time."]]