एसिंक्रोनस ऑर्डर अपडेट

किसी ग्राहक के खाने का ऑर्डर सबमिट करने के बाद, आप ऑर्डर अपडेट होने का मैसेज ऑर्डर करने के शुरू से अंत तक सेवा को भेज सकते हैं.

ऑर्डर अपडेट भेजने की कुछ आम वजहें यहां दी गई हैं:

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

अगले सेक्शन में बताया गया है कि ऑर्डर अपडेट का इस्तेमाल करके इन अलग-अलग स्थितियों से कैसे निपटना है.

ऑर्डर की स्थिति बदली जा रही है

किसी ऑर्डर की छह संभावित स्थितियां होती हैं. इन स्थितियों और उनके संभावित ट्रांज़िशन की जानकारी इस डायग्राम में दी गई है:

ऑर्डर की स्थिति का ट्रांज़िशन

जब कोई ग्राहक पहली बार ऑर्डर सबमिट करता है, तो ऑर्डर की शुरुआत CREATED, CONFIRMED या REJECTED से होती है. अगर स्थिति वाला ट्रांज़िशन मान्य है, तो ऑर्डर की स्थिति अपडेट करने के लिए, ऑर्डर अपडेट होने का मैसेज भेजा जा सकता है. CREATED राज्य का इस्तेमाल तब किया जाता है, जब पार्टनर का प्लैटफ़ॉर्म, ऑर्डर की तुरंत पुष्टि या उसे अस्वीकार नहीं कर पाता. उदाहरण के तौर पर, जब कोई ग्राहक किसी डिलीवरी एग्रीगेटर से ऑर्डर करता है. डिलीवरी एग्रीगेटर को Google से डिलीवरी मिलती है और एग्रीगेटर रेस्टोरेंट को जानकारी भेज देता है. रेस्टोरेंट से ऑर्डर मिलने और ऑर्डर उपलब्ध होने की पुष्टि होने के बाद, अब यह CONFIRMED में होगा या फिर REJECTED.

CONFIRMED स्थिति वाला ऑर्डर आगे IN_PREPARATION स्थिति में चला जाता है. ऑर्डर पिक अप के लिए है या डिलीवरी के लिए, इसके आधार पर READY_FOR_PICKUP या IN_TRANSIT राज्य का इस्तेमाल करें. जब खाना डिलीवर हो जाता है या पिक अप हो जाता है, तो ऑर्डर FULFILLED की स्थिति पर सेट किया जाता है.

अगर आपने खरीदारों को ऑर्डर रद्द करने की अनुमति दी है, तो CANCELLED स्टेटस का इस्तेमाल किया जा सकता है. CREATED, CONFIRMED, IN_PREPARATION, READY_FOR_PICKUP या IN_TRANSIT की स्थिति में किसी ऑर्डर को रद्द किया जा सकता है. आपकी ऑर्डरिंग की एंड-टू-एंड सेवा को रद्द करने की आपकी नीति और रद्द करते समय पैसे चुकाने की स्थिति के आधार पर रिफ़ंड जारी किया जाना चाहिए.

आपकी ऑर्डरिंग की एंड-टू-एंड सेवा सभी उपलब्ध स्थितियों और ट्रांज़िशन के हिसाब से नहीं होनी चाहिए. हालांकि, ऑर्डर की आखिरी स्थिति FULFILLED, REJECTED या CANCELLED होनी चाहिए.

ऑर्डर पूरा होने का अनुमानित समय देना

उपयोगकर्ताओं को एक अनुमानित समयसीमा बताई जा सकती है. यह समयसीमा तय करके, यह बताया जा सकता है कि उनका ऑर्डर, पिकअप (या डिलीवर) के लिए कब तैयार होगा. FoodOrderUpdateExtension के estimatedFulfillmentTimeIso8601 फ़ील्ड का इस्तेमाल करके, एक अनुमानित समयसीमा बताएं कि कोई ग्राहक का ऑर्डर कब पिक अप या डिलीवरी के लिए तैयार होगा.

estimatedFulfillmentTimeIso8601 को नीचे दिए गए समय पर भेजें:

  • अनुमानित समय उपलब्ध होने पर, आम तौर पर CREATED या CONFIRMED स्थिति के हिसाब से तय किया जाता है.
  • जब अनुमानित समय में बदलाव होता है, जैसे कि ऑर्डर के IN_TRANSIT होने पर, अनुमानित समय को ज़्यादा सटीक बनाने के लिए बदलाव करना.

उपयोगकर्ता की उम्मीदों को बेहतर तरीके से मैनेज करने के लिए, अपने अनुमानों में सावधानी बरतें और तय तारीख और समय के बजाय, तारीख और समयसीमा दें. जहां भी हो सके, आपको ट्रैफ़िक की स्थिति जैसी अलग-अलग चीज़ों पर ध्यान देना चाहिए. उदाहरण के लिए, अगर डिलीवरी का अनुमानित समय दोपहर 1:00 बजे है, तो उस ऑर्डर के लिए दोपहर 12:45 बजे (लोअर बाउंड) से 1:15 बजे (ऊपरी सीमा) का अनुमान भेजा जा सकता है.

ऑर्डर मैनेजमेंट से जुड़ी कार्रवाइयां उपलब्ध कराना

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

OrderManagementAction की मदद से ग्राहक, सीधे अपने डिवाइस से किसी यूआरएल को ईमेल कर सकते हैं, कॉल कर सकते हैं या उसका लिंक दे सकते हैं. उसी जानकारी का इस्तेमाल करें जो OrderManagementAction में मौजूद है. यह वही जानकारी है जो उपयोगकर्ता को भेजे जाने वाले, ऑर्डर की पुष्टि करने वाले ईमेल में दी गई है.

ऑर्डर मैनेजमेंट से जुड़ी कार्रवाइयों में ये कार्रवाइयां शामिल हैं:

  • CUSTOMER_SERVICE: खरीदारों को, ग्राहक सेवा से संपर्क करने की सुविधा दें. ऑर्डर के अपडेट के लिए, मैनेजमेंट की यह कार्रवाई ज़रूरी है.
  • EMAIL: ग्राहकों को दिए गए ईमेल पते पर ईमेल भेजने की सुविधा दें.
  • CALL: ग्राहकों को दिए गए फ़ोन नंबर पर कॉल करने की सुविधा दें.
  • VIEW_DETAIL: ग्राहकों को उनके ऑर्डर की जानकारी देखने की सुविधा दें.

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

ऑर्डर के अपडेट भेजे जा रहे हैं

आप ऑर्डर का अपडेट भेजने के लिए, AsyncOrderUpdateRequestMessage मैसेज टाइप का इस्तेमाल करते हैं. Google जवाब में, AsyncOrderUpdateResponseMessage शामिल करता है. उदाहरण के लिए, अगर आपको किसी ग्राहक को यह बताना है कि उनका ऑर्डर मान्य था और उसे स्वीकार कर लिया गया था, तो ऑर्डर की स्थिति बदलने के लिए AsyncOrderUpdateRequestMessage को, लेबल Accepted by restaurant के साथ CONFIRMED पर सेट करें.

ऑर्डर अपडेट करने का डायग्राम

ऑर्डर अपडेट होने का मैसेज सेट करना

Google को AsyncOrderUpdateRequestMessage भेजते समय, आपको OrderUpdate फ़ील्ड का इस्तेमाल करके ऑर्डर की स्थिति के बारे में जानकारी शामिल करनी होगी.

नीचे दिए गए उदाहरण, ऑर्डर की हर स्थिति के लिए AsyncOrderUpdateRequestMessage का सैंपल दिखाते हैं:

पुष्टि हो गई

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

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

नामंजूर

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

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

रद्द कर दी गई

इस उदाहरण में, ऑर्डर को अपडेट करने का एक सैंपल दिखाया गया है. इस अनुरोध में, उपयोगकर्ता को यह सूचना दी जाती है कि आपका ऑर्डर रद्द करने की वजह से उसे रद्द कर दिया गया है.

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

IN_PREPARATION

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

{
  "isInSandbox":true,
  "customPushMessage":{
    "orderUpdate":{
      "actionOrderId":"sample_action_order_id",
      "orderState":{
        "state":"IN_PREPARATION",
        "label":"Order is being prepared"
      },
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "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"
      }
    }
  }
}
    

READY_FOR_PICKUP

इस उदाहरण में, ऑर्डर का नमूना अपडेट करने का एक अनुरोध दिखाया गया है. इस अनुरोध में, उपयोगकर्ता को बताया जाता है कि खाना पिक अप के लिए तैयार है.

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "READY_FOR_PICKUP",
        "label": "Order is ready for pickup"
      },
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "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"
      }
    }
  }
}
    

IN_TRANSIT

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

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

पूरा किया गया

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

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

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

ऑथराइज़ेशन टोकन जनरेट करें और मैसेज भेजें

ऑर्डर अपडेट को अनुमति देने वाले टोकन की ज़रूरत होती है, ताकि ऑर्डर करने की एंड-टू-एंड सेवा से यह पुष्टि की जा सके कि मैसेज आपकी ऑर्डरिंग एंड-टू-एंड वेब सेवा से मिला है.

अपने प्रोजेक्ट के लिए ऑर्डर अपडेट लागू करने के लिए, यह तरीका अपनाएं:

  1. यह तरीका अपनाकर, ऑथराइज़ेशन टोकन जनरेट करें:
    1. अपनी सेवा खाता फ़ाइल से क्रेडेंशियल पढ़ने के लिए, Google Auth लाइब्रेरी का इस्तेमाल करें.
    2. नीचे दिए गए एपीआई के दायरे का इस्तेमाल करके टोकन का अनुरोध करें: https://www.googleapis.com/auth/actions.fulfillment.conversation
  2. नीचे दिए गए एंडपॉइंट पर एक पुष्टि किया गया एचटीटीपी POST अनुरोध भेजने के लिए इस टोकन का इस्तेमाल करें: https://actions.googleapis.com/v2/conversations:send
  3. अपने अनुरोध के तहत, Content-Type हेडर को application/json पर सेट करें.

नीचे दिए गए उदाहरणों में, ऑर्डर के अपडेट लागू करने का तरीका बताया गया है:

Node.js

यह कोड Node.js के लिए, Google की पुष्टि करने वाली लाइब्रेरी का इस्तेमाल करता है.

const {auth} = require('google-auth-library')
const request = require('request');
// The service account client secret file downloaded from the Google Cloud Console
const serviceAccountJson = require('./service-account.json')
// order-update.json is a file that contains the payload
const jsonBody = require('./order-update.json')

/**
 * Get the authorization token using a service account.
 */
async function getAuthToken() {
  let client = auth.fromJSON(serviceAccountJson)
  client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation']
  const tokens = await client.authorize()
  return tokens.access_token;
}

/**
 * Send an order update request
 */
async function sendOrderUpdate() {
  const token = await getAuthToken()
  request.post({
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    url: 'https://actions.googleapis.com/v2/conversations:send',
    body: jsonBody,
    json: true
  },
  (err, res, body) => {
    if (err) { return console.log(err); }
    console.log(`Response: ${JSON.stringify(res)}`)
  })
}
    

Python

यह कोड Python के लिए, Google की पुष्टि करने वाली लाइब्रेरी का इस्तेमाल करता है.

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession
import json

# service-account.json is the service account client secret file downloaded from the
# Google Cloud Console
credentials = service_account.Credentials.from_service_account_file(
    'service-account.json')

scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/actions.fulfillment.conversation'])

authed_session = AuthorizedSession(scoped_credentials)

# order-update.json is a file that contains the payload
json_payload=json.load(open('order-update.json'))

response = authed_session.post(
    'https://actions.googleapis.com/v2/conversations:send',
    json=json_payload)
    

Java

यह कोड, Java के लिए Google की पुष्टि करने वाली लाइब्रेरी का इस्तेमाल करता है.

/**
 * Get the authorization token using a service account.
 */
private static String getAuthToken() {
  InputStream serviceAccountFile = Example.class.getClassLoader().getResourceAsStream("service-account.json");
  ServiceAccountCredentials.Builder credentialsSimpleBuilder =
      ServiceAccountCredentials.fromStream(serviceAccountFile).toBuilder();
  credentialsSimpleBuilder.setScopes(ImmutableList.of("https://www.googleapis.com/auth/actions.fulfillment.conversation"));
  AccessToken accessToken = credentialsSimpleBuilder.build().refreshAccessToken();
  return accessToken.getTokenValue();
}

/**
 * Send an order update request
 */
public void sendOrderUpdate() {
  String authToken = getAuthToken();
  // Execute POST request
  executePostRequest("https://actions.googleapis.com/v2/conversations:send",
      authToken, "update_order_example.json",);
}
    

ऑर्डर को बिना किसी गड़बड़ी के अपडेट करने के लिए, Google खाली पेलोड के साथ एचटीटीपी 200 रिस्पॉन्स दिखाता है. अगर कोई समस्या होती है, जैसे कि अपडेट गलत होना, तो Google गड़बड़ी का मैसेज दिखाता है.