बेहतर ऑर्डर के अपडेट लागू करना

जब कोई ग्राहक ऑर्डर सबमिट करता है, तब आपके पास ग्राहक को ऑर्डर में हुए बदलावों की सूचना देने का विकल्प होता है. इसके लिए, Google को ऑर्डर अपडेट होने का मैसेज भेजें. इसके बाद, Google उस मैसेज को ऑर्डर करने वाले यूज़र इंटरफ़ेस (यूआई) में ग्राहक को भेज देता है.

ऑर्डर अपडेट भेजने की सामान्य वजहें ये हैं:

  • ऑर्डर पूरा होने का अनुमानित समय, उपलब्ध हो जाता है या उसमें बदलाव होता है.
  • ऑर्डर की स्थिति बदल जाती है.
  • यह ऑर्डर अब पूरा नहीं किया जा सकता.
  • ऑर्डर में शामिल मेन्यू आइटम की कीमत बदल गई है.
  • ग्राहक के पास अपने ऑर्डर को मैनेज करने का एक नया तरीका है, जैसे कि ग्राहक सहायता या रेस्टोरेंट का फ़ोन नंबर.
  • ऑर्डर की रसीद उपलब्ध हो जाती है.

उदाहरण के लिए, नीचे दिए गए उदाहरण में, ऑर्डर के अपडेट का इस्तेमाल होता है. इसमें रेस्टोरेंट के ऑर्डर की पुष्टि होने के बाद, ग्राहक के ऑर्डर की स्थिति को CREATED से बदलकर CONFIRMED किया जाता है:

इस्तेमाल के बारे में जानकारी लागू करने का तरीका
इस्तेमाल का पहला उदाहरण: रेस्टोरेंट, ऑर्डर की पुष्टि करता है CONFIRMED स्टेटस वाला OrderUpdate, Google को भेजा जाता है. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, और estimatedFulfillmentTime होने चाहिए.

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
        "actionOrderId": "sample_action_order_id",
        "orderState": {
          "state": "CONFIRMED",
          "label": "Provider confirmed"
        },
        "receipt": {
          "userVisibleOrderId": "userVisibleId1234"
        },
        "updateTime": "2017-07-17T12:00:00Z",
        "orderManagementActions": [
          {
            "type": "CUSTOMER_SERVICE",
            "button": {
              "title": "Contact customer service",
              "openUrlAction": {
                "url": "mailto:support@example.com"
              }
            }
          },
          {
            "type": "EMAIL",
            "button": {
              "title": "Email restaurant",
              "openUrlAction": {
                "url": "mailto:person@example.com"
              }
            }
          },
          {
            "type": "CALL_RESTAURANT",
            "button": {
              "title": "Call restaurant",
              "openUrlAction": {
                "url": "tel:+16505554679"
              }
            }
          },
          {
            "type": "CALL_DRIVER",
            "button": {
              "title": "Call driver",
              "openUrlAction": {
                "url": "tel:+16505554681"
              }
            }
          }
        ],
        "infoExtension": {
           "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
           "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
        }
      }
  }
}

अपने प्रोजेक्ट के लिए ऑर्डर अपडेट लागू करने के बारे में बुनियादी जानकारी के लिए, गाइड एसिंक्रोनस ऑर्डर अपडेट पढ़ें.

अगले सेक्शन में, ऑर्डर को अपडेट करने से जुड़ी बेहतर स्थितियों के उदाहरण दिए गए हैं.

'अस्वीकार किया गया' स्थिति

नीचे दिए गए उदाहरणों में, ऐसे ऑर्डर के लिए AsyncOrderUpdateRequestMessage के बारे में बताया गया है जिन्हें कई वजहों से अस्वीकार किया गया है. अस्वीकार किए जाने की कुछ वजहें ये हो सकती हैं: जब रेस्टोरेंट ऑर्डर पूरा न कर पाए या ऑर्डर से जुड़ा डिलीवरी का पता सीमा से बाहर हो.

इस्तेमाल के बारे में जानकारी लागू करने का तरीका
इस्तेमाल का पहला उदाहरण: ऑर्डर अस्वीकार कर दिया गया है, क्योंकि सेवा देने वाली कंपनी, रेस्टोरेंट से संपर्क नहीं कर सकती या रेस्टोरेंट ऑर्डर पूरा नहीं कर सकता. Google को REJECTED स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, rejectionInfo, और foodOrderError की गड़बड़ी NO_CAPACITY होनी चाहिए.
इस्तेमाल का दूसरा उदाहरण: ड्राइवर के उपलब्ध न होने या डिलीवरी का पता सीमा से बाहर होने की वजह से, ऑर्डर को अस्वीकार कर दिया गया है. Google को REJECTED स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, rejectionInfo, और foodOrderError की गड़बड़ी OUT_OF_SERVICE_AREA होनी चाहिए.
इस्तेमाल का तीसरा उदाहरण: रेस्टोरेंट के अचानक बंद होने या बंद होने की वजह से, ऑर्डर अस्वीकार कर दिया गया है. Google को REJECTED स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, rejectionInfo, और foodOrderError की गड़बड़ी CLOSED होनी चाहिए.
इस्तेमाल का चौथा उदाहरण: कुछ सामान स्टॉक में नहीं होने की वजह से, ऑर्डर अस्वीकार कर दिया गया. Google को REJECTED स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, rejectionInfo, और foodOrderError की गड़बड़ी AVAILABILITY_CHANGED होनी चाहिए.
इस्तेमाल का पांचवां उदाहरण: ऑर्डर को अज्ञात या अन्य वजहों से अस्वीकार किया गया. Google को REJECTED स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, और rejectionInfo की गड़बड़ी UNKNOWN होनी चाहिए.

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "REJECTED",
        "label": "Order rejected"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "rejectionInfo": {
         "type": "UNKNOWN",
         "reason": "Sorry, the restaurant cannot take your order right now."
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "foodOrderErrors": [
          {
            "error": "NO_CAPACITY",
            "description": "Sorry, the restaurant cannot take your order right now."
          }
        ]
      }
    }
  }
}

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "REJECTED",
        "label": "Order rejected"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "rejectionInfo": {
         "type": "UNKNOWN",
         "reason": "Sorry, delivery is currently not available to your address."
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "foodOrderErrors": [
          {
            "error": "OUT_OF_SERVICE_AREA",
            "description": "Sorry, delivery is currently not available to your address."
          }
        ]
      }
    }
  }
}

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "REJECTED",
        "label": "Order rejected"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "rejectionInfo": {
         "type": "UNKNOWN",
         "reason": "Sorry, the restaurant is closed unexpectedly."
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "foodOrderErrors": [
          {
            "error": "CLOSED",
            "description": "Sorry, the restaurant is closed unexpectedly."
          }
        ]
      }
    }
  }
}

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "REJECTED",
        "label": "Order rejected"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "rejectionInfo": {
         "type": "UNKNOWN",
         "reason": "Sorry, some of items are not available right now."
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "foodOrderErrors": [
          {
            "error": "AVAILABILITY_CHANGED",
            "id": "sample_menu_item_id",
            "description": "Sorry, some of the items are not available right now."
          }
        ]
      }
    }
  }
}

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "REJECTED",
        "label": "Order rejected"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "rejectionInfo": {
         "type": "UNKNOWN",
         "reason": "Sorry, your order is rejected."
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ]
    }
  }
}

रद्द किए गए स्टेटस का स्टेटस

नीचे दिए गए उदाहरण में, ग्राहक के अनुरोध पर रद्द किए गए ऑर्डर के लिए AsyncOrderUpdateRequestMessage दिखाया गया है.

इस्तेमाल के बारे में जानकारी लागू करने का तरीका
इस्तेमाल का पहला उदाहरण: ग्राहक के अनुरोध पर ऑर्डर रद्द कर दिया गया है Google को CANCELLED स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, और cancellationInfo होने चाहिए.

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "CANCELLED",
        "label": "Order cancelled"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "cancellationInfo": {
         "reason": "Customer requested"
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ]
    }
  }
}

'पूरा किया गया' स्टेटस

नीचे दिए गए उदाहरण में, पूरे किए गए ऑर्डर के लिए AsyncOrderUpdateRequestMessage दिखाया गया है.

इस्तेमाल के बारे में जानकारी लागू करने का तरीका
इस्तेमाल का पहला उदाहरण: ऑर्डर पूरा हो गया है Google को FULFILLED स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, और orderManagementActions होने चाहिए.

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "FULFILLED",
        "label": "Order delivered"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "fulfillmentInfo": {
         "deliveryTime": "2017-05-10T02:30:00.000Z"
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ]
    }
  }
}

ट्रांज़िट स्थिति में

नीचे दिए गए उदाहरण में, उन ऑर्डर के लिए AsyncOrderUpdateRequestMessage को दिखाया गया है जो खरीदार को ट्रांसफ़र किए जाते हैं.

इस्तेमाल के बारे में जानकारी लागू करने का तरीका
इस्तेमाल का पहला उदाहरण: डिलीवरी का ऑर्डर, ट्रांज़िट में है. Google को IN_TRANSIT स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, और estimatedFulfillmentTime होने चाहिए.

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "IN_TRANSIT",
        "label": "Order is on the way"
      },
      "inTransitInfo": {
        "updatedTime": "2017-07-17T12:00:00Z"
      },
      "updateTime": "2017-07-17T12:00:00Z",
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
         "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
         "estimatedFulfillmentTimeIso8601": "PT20M"
      }
    }
  }
}

पिक अप के लिए तैयार है

नीचे दिए गए उदाहरण में, ऐसे ऑर्डर के लिए AsyncOrderUpdateRequestMessage के बारे में बताया गया है जिन्हें ग्राहक पिक अप करने के लिए तैयार है.

इस्तेमाल के बारे में जानकारी लागू करने का तरीका
इस्तेमाल का पहला उदाहरण: ऑर्डर पिक अप करने के लिए तैयार है. Google को READY_FOR_PICKUP स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, और estimatedFulfillmentTime होने चाहिए.

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "READY_FOR_PICKUP",
        "label": "Order is ready for pickup"
      },
      "updateTime": "2018-04-15T12:00:00Z",
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
         "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
         "estimatedFulfillmentTimeIso8601": "PT20M"
      }
    }
  }
}

तैयार होने वाले खाने की स्थिति

नीचे दिए गए उदाहरण में, रेस्टोरेंट की ओर से तैयार किए जाने वाले ऑर्डर के लिए AsyncOrderUpdateRequestMessage दिखाया गया है.

इस्तेमाल के बारे में जानकारी लागू करने का तरीका
इस्तेमाल का पहला उदाहरण: रेस्टोरेंट, ऑर्डर तैयार कर रहा है. Google को IN_PREPARATION स्थिति वाला OrderUpdate भेजें. इसमें actionOrderId, userVisibleOrderId, orderManagementActions, और estimatedFulfillmentTime होने चाहिए.

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "IN_PREPARATION",
        "label": "Order is being prepared"
      },
      "updateTime": "2018-04-15T11:30:00Z",
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
         "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
         "estimatedFulfillmentTimeIso8601": "PT20M"
      }
    }
  }
}

ऑर्डर में किए गए बदलाव की स्थिति

नीचे दिए गए उदाहरणों में, ग्राहक के ऑर्डर में किए गए अलग-अलग तरह के बदलावों के लिए AsyncOrderUpdateRequestMessage दिखाया गया है.

इस्तेमाल का पहला उदाहरण: ऑर्डर पूरा होने के अनुमानित समय को अपडेट करना ज़रूरी है. Google को ऑर्डर की स्थिति actionOrderId, userVisibleOrderId, orderManagementAction, और अपडेट किए गए estimatedFulfillmentTime के साथ OrderUpdate भेजें.
इस्तेमाल का दूसरा उदाहरण: ऑर्डर की कुल कीमत को अपडेट करना ज़रूरी है. Google को ऑर्डर की स्थिति के साथ OrderUpdate भेजें, जिसमें actionOrderId, userVisibleOrderId, orderManagementAction, estimatedFulfillmentTime, और अपडेट किए गए totalPrice हों.
इस्तेमाल का तीसरा उदाहरण: ऑर्डर की, ऑर्डर मैनेज करने से जुड़ी कार्रवाइयों को अपडेट करने की ज़रूरत होती है. Google को ऑर्डर की स्थिति actionOrderId, userVisibleOrderId, estimatedFulfillmentTime, और अपडेट किए गए orderManagementActions के साथ OrderUpdate भेजें.

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
        "actionOrderId": "sample_action_order_id",
        "orderState": {
          "state": "CONFIRMED",
          "label": "Provider confirmed"
        },
        "receipt": {
          "userVisibleOrderId": "userVisibleId1234"
        },
        "updateTime": "2017-07-17T12:00:00Z",
        "orderManagementActions": [
          {
            "type": "CUSTOMER_SERVICE",
            "button": {
              "title": "Contact customer service",
              "openUrlAction": {
                "url": "mailto:support@example.com"
              }
            }
          },
          {
            "type": "EMAIL",
            "button": {
              "title": "Email restaurant",
              "openUrlAction": {
                "url": "mailto:person@example.com"
              }
            }
          },
          {
            "type": "CALL_RESTAURANT",
            "button": {
              "title": "Call restaurant",
              "openUrlAction": {
                "url": "tel:+16505554679"
              }
            }
          },
          {
            "type": "CALL_DRIVER",
            "button": {
              "title": "Call driver",
              "openUrlAction": {
                "url": "tel:+16505554681"
              }
            }
          }
        ],
        "infoExtension": {
           "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
           "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
        }
      }
  }
}

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "CONFIRMED",
        "label": "Provider confirmed"
      },
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "totalPrice": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "20",
          "nanos": 500000000
        }
      },
      "updateTime": "2017-07-17T12:00:00Z",
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
      }
    }
  }
}

JSON

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
        "actionOrderId": "sample_action_order_id",
        "orderState": {
          "state": "CONFIRMED",
          "label": "Provider confirmed"
        },
        "receipt": {
          "userVisibleOrderId": "userVisibleId1234"
        },
        "updateTime": "2017-07-17T12:00:00Z",
        "orderManagementActions": [
          {
            "type": "CUSTOMER_SERVICE",
            "button": {
              "title": "Contact customer service",
              "openUrlAction": {
                "url": "mailto:support@example.com"
              }
            }
          },
          {
            "type": "EMAIL",
            "button": {
              "title": "Email restaurant",
              "openUrlAction": {
                "url": "mailto:person@example.com"
              }
            }
          },
          {
            "type": "CALL_RESTAURANT",
            "button": {
              "title": "Call restaurant",
              "openUrlAction": {
                "url": "tel:+16505554679"
              }
            }
          },
          {
            "type": "CALL_DRIVER",
            "button": {
              "title": "Call driver",
              "openUrlAction": {
                "url": "tel:+16505554681"
              }
            }
          }
        ],
        "infoExtension": {
           "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
           "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
        }
      }
  }
}