messageActionDetail{stringentity_id=2;stringlink_id=3;// Deep link for action detailstringurl=4;repeatedActionactions=1;}
操作定义
// Information about an Action which could be performed.messageAction{// Deprecated fields not to be reused.reserved1;oneofaction_info{FoodOrderingInfofood_ordering_info=3;}}
FoodOrderingInfo 定义
messageFoodOrderingInfo{// Service type for food ordering action.enumServiceType{UNKNOWN=0;DELIVERY=1;TAKEOUT=2;}ServiceTypeservice_type=1;}
[null,null,["最后更新时间 (UTC):2025-08-06。"],[[["\u003cp\u003eDaily uploads of full-refresh action feeds to the generic SFTP dropbox are required.\u003c/p\u003e\n"],["\u003cp\u003eAction feeds should adhere to the provided specification and be in JSON format, including a timestamp in the filename.\u003c/p\u003e\n"],["\u003cp\u003eThe fileset descriptor must have the name "reservewithgoogle.action.v2" and include the action data filename; it's also uploaded to the generic SFTP dropbox.\u003c/p\u003e\n"],["\u003cp\u003ePartners can access feed ingestion status and SFTP dropbox information through the Partner Portal.\u003c/p\u003e\n"],["\u003cp\u003eAction feeds can specify delivery, takeout, or both service types for food ordering actions, each with potentially unique deep links.\u003c/p\u003e\n"]]],["Action feeds, uploaded daily as full refreshes to the generic SFTP dropbox, must adhere to the specified format in the action feed and descriptor files, both of which require unique names, preferably with timestamps. The descriptor file's `name` field must be set to `reservewithgoogle.action.v2`. Action data is defined by `entity_id`, `link_id`, `url`, and `actions`, specifying food ordering service types (DELIVERY, TAKEOUT) within the `food_ordering_info`. The generic feed ingestion status can be checked in the Feeds section.\n"],null,["Create and upload action feeds\n\nWhen creating and uploading action feeds, follow these instructions:\n\n- Follow the spec described in the [action feed](#action-definition) for action data files. We recommend using unique action data file names for each upload. Include a timestamp in the filename, for example, `action_1633621547.json`.\n- In the fileset descriptor, set the `name` field to `reservewithgoogle.action.v2`. For an example of the descriptor file, refer to the [JSON sample](#descriptor-file). We recommend using unique descriptor file names for each upload. Include a timestamp in the filename, for example, `action_1633621547.filesetdesc.json`. The descriptor file must be uploaded to the generic SFTP server.\n- Upload feeds to the generic SFTP server daily as full refreshes.\n- You can find SFTP server details in the [Configuration \\\u003e Feeds](https://partnerdash.google.com/apps/reservewithgoogle/configuration/feeds) section of the Partner Portal.\n\n\nSelecting feed servers in the Partner Portal\n- View feed ingestion status in the [Feeds \\\u003e History](https://partnerdash.google.com/apps/reservewithgoogle/dashboards/feeds) section of the Partner Portal.\n\nDefinitions **Note:** The action feed spec defines in protobuffer format as follows, however we recommend you to upload the feeds in JSON format. For more information, refer to [JSON sample feeds](#samples).\n\nActionFeed definition \n\n```protobuf\nmessage ActionFeed {\n repeated ActionDetail data = 1;\n}\n```\n\nActionDetail definition \n\n```protobuf\nmessage ActionDetail {\n string entity_id = 2;\n string link_id = 3;\n\n // Deep link for action detail\n string url = 4;\n repeated Action actions = 1;\n}\n```\n\nAction definition \n\n```protobuf\n// Information about an Action which could be performed.\nmessage Action {\n // Deprecated fields not to be reused.\n reserved 1;\n\n oneof action_info {\n FoodOrderingInfo food_ordering_info = 3;\n }\n}\n```\n\nFoodOrderingInfo definition \n\n```protobuf\nmessage FoodOrderingInfo {\n // Service type for food ordering action.\n enum ServiceType {\n UNKNOWN = 0;\n DELIVERY = 1;\n TAKEOUT = 2;\n }\n\n ServiceType service_type = 1\n ;\n}\n```\n\nAction Feed samples\n\n\u003cbr /\u003e\n\nDelivery only\n\nFilename : actions_1697754089_0001.json \n\n```carbon\n{\n \"data\": [\n {\n \"actions\": [{ \"food_ordering_info\": { \"service_type\": \"DELIVERY\" } }],\n \"entity_id\": \"dining-1\",\n \"link_id\": \"delivery-dining-1\",\n \"url\": \"https://www.restaurant.com/delivery/dining-1\"\n }\n ]\n}\n```\n\nTakeout only\n\nFilename : actions_1697754089_0001.json \n\n```carbon\n{\n \"data\": [\n {\n \"actions\": [{ \"food_ordering_info\": { \"service_type\": \"TAKEOUT\" } }],\n \"entity_id\": \"dining-1\",\n \"link_id\": \"takeout-link-dining-1\",\n \"url\": \"https://www.restaurant.com/takeout/dining-1\"\n }\n ]\n}\n```\n\nDelivery and takeout\n\nFilename : actions_1697754089_0001.json \n\n```carbon\n{\n \"data\": [\n {\n \"actions\": [\n { \"food_ordering_info\": { \"service_type\": \"DELIVERY\" } },\n { \"food_ordering_info\": { \"service_type\": \"TAKEOUT\" } }\n ],\n \"entity_id\": \"dining-1\",\n \"link_id\": \"common-link-dining-1\",\n \"url\": \"https://www.restaurant.com/commonlink/dining-1\"\n }\n ]\n}\n```\n\nDelivery+takeout different URL\n\nFilename : actions_1697754089_0001.json \n\n```carbon\n{\n \"data\": [\n {\n \"actions\": [\n {\n \"food_ordering_info\": {\n \"service_type\": \"TAKEOUT\"\n }\n }\n ],\n \"entity_id\": \"dining-1\",\n \"link_id\": \"takeout-dining-1\",\n \"url\": \"https://www.restaurant.com/takeout/dining-1\"\n },\n {\n \"actions\": [\n {\n \"food_ordering_info\": {\n \"service_type\": \"DELIVERY\"\n }\n }\n ],\n \"entity_id\": \"dining-1\",\n \"link_id\": \"delivery-dining-1\",\n \"url\": \"https://www.restaurant.com/delivery/dining-1\"\n }\n ]\n}\n```\n\nDescriptor file\n\nFilename : actions_1697754089.filesetdesc.json \n\n```scdoc\n{\n \"generation_timestamp\": 1697754089,\n \"name\": \"reservewithgoogle.action.v2\",\n \"data_file\": [\n \"actions_1697754089_0001.json\",\n \"actions_1697754089_0002.json\"\n ]\n}\n```"]]