बुकिंग करना

इस गाइड में, Actions प्रोजेक्ट बनाने की प्रोसेस के बारे में बताया गया है जो बुकिंग करने के लिए Orders API का इस्तेमाल करता है.

ट्रांज़ैक्शन फ़्लो

जब आपका Actions प्रोजेक्ट, बुकिंग मैनेज करता है, तो इस फ़्लो का इस्तेमाल करता है:

  1. लेन-देन से जुड़ी ज़रूरी शर्तों की पुष्टि करना (ज़रूरी नहीं) - लेन-देन का इस्तेमाल करें ज़रूरी शर्तों को पूरा करने के लिए किया है, ताकि यह पक्का किया जा सके कि उपयोगकर्ता लेन-देन कर सकता है.
  2. ऑर्डर बनाना - उपयोगकर्ता को "कार्ट असेंबली" जहाँ वे अपनी बुकिंग की जानकारी बनाते हैं.
  3. ऑर्डर का सुझाव दें - "कार्ट" को जोड़ने के बाद पूरा हो गया है, आरक्षण का सुझाव दें "ऑर्डर" से उपयोगकर्ता, ताकि वे पुष्टि कर सकें कि यह सही है. अगर बुकिंग की पुष्टि हो जाती है, तो आपको बुकिंग की जानकारी के साथ एक जवाब पाएं.
  4. ऑर्डर पूरा करना और रसीद भेजना - ऑर्डर की पुष्टि होने के बाद, इसे अपडेट करें अपने बुकिंग सिस्टम पर क्लिक करें और उपयोगकर्ता को रसीद भेजें.
  5. ऑर्डर के अपडेट भेजें - रिज़र्वेशन की अवधि के दौरान, उपयोगकर्ता की बुकिंग की स्थिति के बारे में अपडेट ऑर्डर एपीआई.

पाबंदियां और समीक्षा के दिशा-निर्देश

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

ऑर्डर एपीआई का इस्तेमाल करने वाली कार्रवाइयों को सिर्फ़ इन देशों में डिप्लॉय किया जा सकता है:

ऑस्ट्रेलिया
ब्राज़ील
कनाडा
इंडोनेशिया
जापान
मेक्सिको
कतर
रूस
सिंगापुर
स्विट्ज़रलैंड
थाईलैंड
तुर्किये
यूनाइटेड किंगडम
संयुक् त राज् य

अपना प्रोजेक्ट बनाएं

लेन-देन से जुड़ी बातचीत का बड़ा उदाहरण देखने के लिए, लेन-देन से जुड़ी जानकारी वाला हमारा सेक्शन देखें Node.js में सैंपल.

सेटअप

कार्रवाई बनाते समय, आपको यह बताना होगा कि आपको लेन-देन करना है कार्रवाई कंसोल में जाकर इसे चालू कर सकते हैं.

अपने प्रोजेक्ट को सेट अप करने और उपयोगकर्ताओं को आइटम भेजने के लिए, यह तरीका अपनाएं:

  1. नया प्रोजेक्ट बनाएं या मौजूदा प्रोजेक्ट इंपोर्ट करें.
  2. डिप्लॉय करें > डायरेक्ट्री की जानकारी.
  3. अतिरिक्त जानकारी > लेन-देन > "अपनी कार्रवाइयाँ करें" वाले बॉक्स को चुनें क्या फ़िज़िकल चीज़ों के लेन-देन के लिए, लेन-देन एपीआई का इस्तेमाल करना है?".

लेन-देन से जुड़ी ज़रूरी शर्तों की पुष्टि करना (ज़रूरी नहीं)

जैसे ही उपयोगकर्ता बुकिंग सेट अप करने के लिए कहे, आपको उसकी जांच करनी चाहिए कि वे बुकिंग का अनुरोध कर पाएं. उदाहरण के लिए, लागू होने पर, आपकी सेट की गई कार्रवाई पूछें, "क्या आपको सीट बुक करनी है?" अगर उपयोगकर्ता "हां" बोलता है, तो आपको ऐसा करना चाहिए पक्का कर सकते हैं कि वे आगे की कार्रवाई कर सकें. साथ ही, उन्हें किसी भी तरह की सेटिंग को ठीक करने का मौका दें साथ ही, वे ट्रांज़ैक्शन जारी न रख पाएं. ऐसा करने के लिए, आपको ऐसे सीन पर जाएं जो ट्रांज़ैक्शन से जुड़ी ज़रूरी शर्तों की जांच करता है.

लेन-देन की ज़रूरी शर्तों की जांच करने वाला सीन बनाएं

  1. सीन टैब से, नाम के साथ एक नया सीन जोड़ें TransactionRequirementsCheck.
  2. स्लॉट भरना में जाकर, नया स्लॉट जोड़ने के लिए + पर क्लिक करें.
  3. टाइप चुनें में जाकर, actions.type.TransactionRequirementsCheckResult चुनें का एक उदाहरण है.
  4. स्लॉट के नाम वाले फ़ील्ड में, स्लॉट को TransactionRequirementsCheck नाम दें.
  5. पसंद के मुताबिक स्लॉट वैल्यू को राइटबैक करें चेकबॉक्स को चालू करें. यह डिफ़ॉल्ट रूप से चालू होता है.
  6. सेव करें पर क्लिक करें.

लेन-देन की ज़रूरी शर्तों के तहत, इनमें से किसी एक नतीजे की जांच होती है:

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

लेन-देन की ज़रूरी शर्तों को मैनेज करने की जांच के नतीजे

  1. सीन टैब से, अपनी नई ऐसेट चुनें TransactionRequirementsCheck सीन.
  2. स्थिति में, नई शर्त जोड़ने के लिए + पर क्लिक करें.
  3. टेक्स्ट फ़ील्ड में, नीचे दी गई शर्त का सिंटैक्स डालें, ताकि आप सफल होने की शर्त:

    scene.slots.status == "FINAL" && session.params.TransactionRequirementsCheck.resultType == "CAN_TRANSACT"
    
  4. आपने अभी-अभी जो शर्त जोड़ी है उस पर अपना कर्सर घुमाएं और ऊपर की ओर तीर के निशान पर क्लिक करें इसे if scene.slots.status == "FINAL" से पहले रखने के लिए.

  5. प्रॉम्प्ट भेजें चालू करें और उपयोगकर्ता को एक आसान सा प्रॉम्प्ट दें तो उनकी टीम लेन-देन करने के लिए तैयार हो:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Looks like you're good to go!.
    
  6. ट्रांज़िशन में जाकर, कोई दूसरा सीन चुनें. इससे उपयोगकर्ता को प्रोसेस जारी रखने की अनुमति मिल जाएगी बातचीत करके लेन-देन पूरा करें.

  7. शर्त चुनें else if scene.slots.status == "FINAL".

  8. प्रॉम्प्ट भेजें चालू करें और उपयोगकर्ता को एक आसान सा प्रॉम्प्ट दें अगर वे लेन-देन नहीं कर पा रहे हैं, तो:

    candidates:
      - first_simple:
          variants:
            - speech: Transaction requirements check failed.
    
  9. बातचीत खत्म करने के लिए, ट्रांज़िशन में जाकर, बातचीत खत्म करें को चुनें अगर उपयोगकर्ता लेन-देन करने में असमर्थ है.

ऑर्डर बनाएं

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

बेसिक कार्ट असेंबली के दौरान, उपयोगकर्ता जोड़ने के लिए किसी सूची में से विकल्प चुनता है भी शामिल कर सकते हैं. हालांकि, आप बातचीत को इस तरह डिज़ाइन कर सकते हैं कि उपयोगकर्ता अनुभव मिलता है. उदाहरण के लिए, एक ऐसा कार्ट असेंबली अनुभव बनाएं जो उपयोगकर्ता को हां या नहीं में जवाब देने के लिए, हर महीने के रिज़र्वेशन को शेड्यूल करना होगा. उपयोगकर्ता को "सुझाया गया" का कैरसेल या सूची कार्ड भी दिखाया जा सकता है बुकिंग.

हमारा सुझाव है कि आप ज़्यादा बेहतर जवाबों का इस्तेमाल करें, उपयोगकर्ता के विकल्पों को विज़ुअल तौर पर पेश कर सकते हैं. साथ ही, बातचीत को डिज़ाइन भी कर सकते हैं, उपयोगकर्ता केवल अपनी आवाज़ का उपयोग करके अपना कार्ट बना सकते हैं. कुछ सबसे सही तरीकों के लिए और कार्ट असेंबली के अनुभवों के उदाहरण, डिज़ाइन से जुड़े दिशा-निर्देश देखें.

कोई ऑर्डर बनाएं

अपनी पूरी बातचीत के दौरान, उपयोगकर्ता की बुकिंग की जानकारी इकट्ठा करें और फिर Order ऑब्जेक्ट बनाएं.

कम से कम आपके Order में ये चीज़ें शामिल होनी चाहिए:

  • buyerInfo - खरीदारी करने वाले उपयोगकर्ता के बारे में जानकारी.
  • transactionMerchant - उस व्यापारी/कंपनी की जानकारी जिससे ऑर्डर दिया गया.
  • contents - lineItems के तौर पर सूची में शामिल ऑर्डर का असल कॉन्टेंट.

इसके बारे में ज़्यादा जानने के लिए, Order देखें रिस्पॉन्स दस्तावेज़ सबमिट करें. ध्यान दें कि आपको यह जानकारी शामिल करनी पड़ सकती है अलग-अलग फ़ील्ड में बुकिंग कर सकते हैं.

नीचे दिया गया सैंपल कोड, बुकिंग का पूरा ऑर्डर दिखाता है. इसमें वैकल्पिक फ़ील्ड भी शामिल होते हैं:

const order = {
   createTime: '2019-09-24T18:00:00.877Z',
   lastUpdateTime: '2019-09-24T18:00:00.877Z',
   merchantOrderId: orderId, // A unique ID String for the order
   userVisibleOrderId: orderId,
   transactionMerchant: {
     id: 'http://www.example.com',
     name: 'Example Merchant',
   },
   contents: {
     lineItems: [
       {
         id: 'LINE_ITEM_ID',
         name: 'Dinner reservation',
         description: 'A world of flavors all in one destination.',
         reservation: {
           status: 'PENDING',
           userVisibleStatusLabel: 'Reservation is pending.',
           type: 'RESTAURANT',
           reservationTime: {
             timeIso8601: '2020-01-16T01:30:15.01Z',
           },
           userAcceptableTimeRange: {
             timeIso8601: '2020-01-15/2020-01-17',
           },
           partySize: 6,
           staffFacilitators: [
             {
               name: 'John Smith',
             },
           ],
           location: {
             zipCode: '94086',
             city: 'Sunnyvale',
             postalAddress: {
               regionCode: 'US',
               postalCode: '94086',
               administrativeArea: 'CA',
               locality: 'Sunnyvale',
               addressLines: [
                 '222, Some other Street',
               ],
             },
           },
         },
       },
     ],
   },
   buyerInfo: {
     email: 'janedoe@gmail.com',
     firstName: 'Jane',
     lastName: 'Doe',
     displayName: 'Jane Doe',
   },
   followUpActions: [
     {
       type: 'VIEW_DETAILS',
       title: 'View details',
       openUrlAction: {
         url: 'http://example.com',
       },
     },
     {
       type: 'CALL',
       title: 'Call us',
       openUrlAction: {
         url: 'tel:+16501112222',
       },
     },
     {
       type: 'EMAIL',
       title: 'Email us',
       openUrlAction: {
         url: 'mailto:person@example.com',
       },
     },
   ],
   termsOfServiceUrl: 'http://www.example.com'
 };

आदेश और प्रस्तुतिकरण के लिए विकल्प बनाएं

const orderOptions = {
      'requestDeliveryAddress': false,
    };

const presentationOptions = {
      'actionDisplayName': 'RESERVE'
    };

सेशन पैरामीटर में ऑर्डर डेटा सेव करें

ग्राहक को आइटम भेजने के बाद, ऑर्डर डेटा को सेशन पैरामीटर में सेव करें. ऑर्डर ऑब्जेक्ट का एक ही सेशन के लिए सभी सीन में इस्तेमाल किया जाएगा.

conv.session.params.order = {
    '@type': 'type.googleapis.com/google.actions.transactions.v3.TransactionDecisionValueSpec',
    order: order,
    orderOptions: orderOptions,
    presentationOptions: presentationOptions
};

आदेश का सुझाव दें

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

लेन-देन के फ़ैसले का सीन बनाएं

  1. सीन टैब से, TransactionDecision नाम वाला एक नया सीन जोड़ें.
  2. स्लॉट भरना में जाकर, नया स्लॉट जोड़ने के लिए + पर क्लिक करें.
  3. टाइप चुनें में, actions.type.TransactionDecisionValue को इस तौर पर चुनें और स्लॉट टाइप.
  4. स्लॉट के नाम वाले फ़ील्ड में, स्लॉट को TransactionDecision नाम दें.
  5. पसंद के मुताबिक स्लॉट वैल्यू को राइटबैक करें चेकबॉक्स को चालू करें. यह डिफ़ॉल्ट रूप से चालू होता है.
  6. स्लॉट कॉन्फ़िगर करें में जाकर, ड्रॉपडाउन से सेशन पैरामीटर का इस्तेमाल करें चुनें.
  7. स्लॉट कॉन्फ़िगर करें में जाकर,उस सेशन पैरामीटर का नाम डालें जिसका इस्तेमाल करके ऑर्डर को टेक्स्ट फ़ील्ड में स्टोर करें (यानी $session.params.order).
  8. सेव करें पर क्लिक करें.

TransactionDecisionValue स्लॉट भरने की कोशिश करते समय, Assistant शुरू कर देती है पहले से मौजूद एक अनुभव, जिसमें आपने जो Order पास किया है वह सीधे तौर पर रेंडर होता है "कार्ट की झलक दिखाने वाला कार्ड". उपयोगकर्ता "बुकिंग शेड्यूल करो" कह सकता है, लेन-देन को अस्वीकार कर सकता है, या बुकिंग की जानकारी बदलने का अनुरोध करें.

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

लेन-देन से जुड़े फ़ैसले के नतीजे मैनेज करना

जब कोई TransactionDecisionValue स्लॉट भरता है, तो उपयोगकर्ता का जवाब लेन-देन के फ़ैसले को सेशन पैरामीटर में सेव किया जाएगा. इस मान में यह शामिल है निम्न:

  • ORDER_ACCEPTED,
  • ORDER_REJECTED,
  • CART_CHANGE_REQUESTED
  • USER_CANNOT_TRANSACT.

लेन-देन के फ़ैसले को मैनेज करने के लिए:

  1. सीन टैब से, बनाया गया नया TransactionDecision सीन चुनें.
  2. स्थिति में, नई शर्त जोड़ने के लिए + पर क्लिक करें.
  3. टेक्स्ट फ़ील्ड में, नीचे दी गई शर्त का सिंटैक्स डालें, ताकि आप सफल होने की शर्त:

    scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_ACCEPTED"
    
  4. आपने अभी-अभी जो शर्त जोड़ी है उस पर अपना कर्सर घुमाएं और ऊपर की ओर तीर के निशान पर क्लिक करें इसे if scene.slots.status == "FINAL" से पहले रखने के लिए.

  5. प्रॉम्प्ट भेजें चालू करें और उपयोगकर्ता को एक आसान सा प्रॉम्प्ट दें उनका आरक्षण पूरा हो गया है:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Transaction completed! Your reservation
                $session.params.TransactionDecision.order.merchantOrderId is all
                set!
    
  6. बातचीत खत्म करने के लिए, ट्रांज़िशन में बातचीत खत्म करें को चुनें.

  7. स्थिति में, नई शर्त जोड़ने के लिए + पर क्लिक करें.

  8. टेक्स्ट फ़ील्ड में, नीचे दी गई शर्त का सिंटैक्स डालें, ताकि आप गड़बड़ी की शर्तें:

      scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_REJECTED"
    
  9. आपने अभी-अभी जो शर्त जोड़ी है उस पर अपना कर्सर घुमाएं और ऊपर की ओर तीर के निशान पर क्लिक करें इसे if scene.slots.status == "FINAL" से पहले रखने के लिए.

  10. प्रॉम्प्ट भेजें चालू करें और उपयोगकर्ता को एक आसान निर्देश देकर बताएं कि आदेश अस्वीकार कर दिया गया है:

    candidates:
      - first_simple:
          variants:
            - speech: Looks like you don't want to set up a reservation. Goodbye.
    
  11. बातचीत खत्म करने के लिए, ट्रांज़िशन में बातचीत खत्म करें को चुनें.

  12. शर्त चुनें else if scene.slots.status == "FINAL".

  13. प्रॉम्प्ट भेजें चालू करें और उपयोगकर्ता को एक आसान सा प्रॉम्प्ट दें अगर वे लेन-देन नहीं कर पा रहे हैं, तो:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Transaction failed with status
                $session.params.TransactionDecision.transactionDecision
    
  14. बातचीत खत्म करने के लिए, ट्रांज़िशन में जाकर, बातचीत खत्म करें को चुनें अगर उपयोगकर्ता लेन-देन करने में असमर्थ है.

बुकिंग की प्रक्रिया पूरी करें और रसीद भेजें

जब TransactionDecisionValue स्लॉट, ORDER_ACCEPTED का नतीजा दिखाता है, शेड्यूल करने के लिए जो भी प्रोसेसिंग ज़रूरी हो उसे तुरंत लागू करना होगा (जैसे कि इसे अपने डेटाबेस में बनाए रखना).

बातचीत जारी रखने के लिए आसान जवाब भेजें. उपयोगकर्ता को "छोटा किया गया रसीद कार्ड" साथ ही, अपनी पसंद के मुताबिक दिशा-निर्देशों का पालन करें.

शुरुआती ऑर्डर का अपडेट भेजने के लिए:

  1. सीन टैब से, अपना TransactionDecision सीन चुनें.
  2. शर्त में जाकर, वह शर्त चुनें जो सही नतीजे की जांच करती है. ORDER_ACCEPTED:

    scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_ACCEPTED"
    
  3. इस शर्त के लिए, अपने वेबहुक को कॉल करें को चालू करें और एक इंटेंट दें हैंडलर का नाम, जैसे कि update_order.

  4. अपने वेबहुक कोड में, शुरुआती ऑर्डर का अपडेट भेजने के लिए इंटेंट हैंडलर जोड़ें:

    app.handle('update_order', conv => {
      const currentTime = new Date().toISOString();
      let order = conv.session.params.TransactionDecision.order;
      conv.add(new OrderUpdate({
        'updateMask': {
          'paths': [
            'reservation.status',
            'reservation.user_visible_status_label',
            'reservation.confirmation_code'
          ]
        },
        'order': {
          'merchantOrderId': order.merchantOrderId,
          'lastUpdateTime': currentTime,
          'reservation': {
            'status': 'CONFIRMED',
            'userVisibleStatusLabel': 'Reservation confirmed',
            'confirmationCode': '123ABCDEFGXYZ',
          },
        },
        'reason': 'Reason string'
      }));
    });
    

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

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

Orders API में एसिंक्रोनस अनुरोध सेट अप करें

ऑर्डर एपीआई को ऑर्डर अपडेट करने के अनुरोधों को ऐक्सेस के ज़रिए अनुमति दी जाती है टोकन. किसी ऑर्डर के अपडेट को Orders API में पैच करने के लिए, JSON डाउनलोड करें अपने Actions Console प्रोजेक्ट से जुड़ी सेवा खाता कुंजी डालें. इसके बाद, एक्सचेंज करें बेयरर टोकन के लिए सेवा खाता कुंजी, जिसे एचटीटीपी अनुरोध का Authorization हेडर.

सेवा खाते की कुंजी वापस पाने के लिए, यह तरीका अपनाएं:

  1. Google Cloud Console में, मेन्यू STORES > पर जाएं API और सेवाएं > क्रेडेंशियल > क्रेडेंशियल बनाएं > सेवा खाते की कुंजी.
  2. सेवा खाते में, नया सेवा खाता चुनें.
  3. सेवा खाते को service-account पर सेट करें.
  4. भूमिका को प्रोजेक्ट > मालिक.
  5. कुंजी के टाइप को JSON पर सेट करें.
  6. बनाएं को चुनें.
  7. आपके लोकल डिवाइस पर, JSON सेवा के खाते की एक निजी कुंजी डाउनलोड की जाएगी.

ऑर्डर के अपडेट के कोड में, सेवा कुंजी को किसी बियरर टोकन से बदलें का उपयोग करके Google API क्लाइंट लाइब्रेरी और "https://www.googleapis.com/auth/actions.order.developer" स्कोप. आप एपीआई क्लाइंट लाइब्रेरी को इंस्टॉल करने के तरीके और उदाहरण GitHub पेज.

हमारे Node.js नमूने में order-update.js संदर्भ आपके डेटा का इस्तेमाल किया जा सकता है.

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

OAuth बेयर टोकन के लिए सेवा खाता कुंजी इस्तेमाल करने के बाद, ऑर्डर एपीआई के लिए अनुमति वाले पैच के अनुरोधों के तौर पर अपडेट.

ऑर्डर एपीआई का यूआरएल: PATCH https://actions.googleapis.com/v3/orders/${orderId}

अपने अनुरोध में ये हेडर दें:

  • OAuth बेयरर टोकन वाला "Authorization: Bearer token" आपने सेवा खाते की कुंजी का इस्तेमाल किया हो.
  • "Content-Type: application/json".

PATCH अनुरोध के लिए इस फ़ॉर्मैट में JSON का मुख्य भाग होना चाहिए:

{ "orderUpdate": OrderUpdate }

OrderUpdate ऑब्जेक्ट में निम्न शीर्ष-स्तरीय फ़ील्ड होते हैं:

  • updateMask - उस ऑर्डर के फ़ील्ड जिन्हें अपडेट किया जा रहा है. अपडेट करने के लिए बुकिंग की स्थिति, वैल्यू को reservation.status, reservation.userVisibleStatusLabel पर सेट करें.
  • order - अपडेट का कॉन्टेंट. अगर आप रिज़र्वेशन की सामग्री के लिए, वैल्यू को अपडेट किए गए Order ऑब्जेक्ट पर सेट करें. अगर आप सिर्फ़ बुकिंग की स्थिति अपडेट कर रहे हैं (उदाहरण के लिए, "PENDING" से "FULFILLED" तक), ऑब्जेक्ट में ये फ़ील्ड शामिल होते हैं:

    • merchantOrderId - वही आईडी जिसे आपने Order ऑब्जेक्ट में सेट किया है.
    • lastUpdateTime - इस अपडेट का टाइमस्टैंप.
    • purchase - एक ऑब्जेक्ट जिसमें ये शामिल हैं:
      • status - ReservationStatus के तौर पर ऑर्डर की स्थिति, जैसे कि "CONFIRMED" या "CANCELLED".
      • userVisibleStatusLabel - उपयोगकर्ताओं को दिखने वाला एक लेबल, जो इन चीज़ों की जानकारी देता है ऑर्डर की स्थिति, जैसे कि "आपकी बुकिंग हो गई है".
  • userNotification (ज़रूरी नहीं) - userNotification एक ऑब्जेक्ट है, जो यह अपडेट भेजे जाने के बाद उपयोगकर्ता के डिवाइस पर दिख सकता है. नोट जोड़ें जो इस ऑब्जेक्ट को शामिल करने से इस बात की गारंटी नहीं मिलती कि उपयोगकर्ता के डिवाइस पर.

नीचे दिया गया सैंपल कोड, OrderUpdate का उदाहरण दिखाता है जो FULFILLED के लिए आरक्षण आदेश की स्थिति:

// Import the 'googleapis' module for authorizing the request.
const {google} = require('googleapis');
// Import the 'request-promise' module for sending an HTTP POST request.
const request = require('request-promise');
// Import the OrderUpdate class from the client library.
const {OrderUpdate} = require('@assistant/conversation');

// Import the service account key used to authorize the request.
// Replacing the string path with a path to your service account key.
// i.e. const serviceAccountKey = require('./service-account.json')

// Create a new JWT client for the Actions API using credentials
// from the service account key.
let jwtClient = new google.auth.JWT(
   serviceAccountKey.client_email,
   null,
   serviceAccountKey.private_key,
   ['https://www.googleapis.com/auth/actions.order.developer'],
   null,
);

// Authorize the client
let tokens = await jwtClient.authorize();

// Declare the ID of the order to update.
const orderId = '<UNIQUE_MERCHANT_ORDER_ID>';

// Declare order update
const orderUpdate = new OrderUpdate({
   updateMask: {
     paths: [
       'contents.lineItems.reservation.status',
       'contents.lineItems.reservation.userVisibleStatusLabel'
     ]
   },
   order: {
     merchantOrderId: orderId, // Specify the ID of the order to update
     lastUpdateTime: new Date().toISOString(),
     contents: {
       lineItems: [
         {
           reservation: {
             status: 'FULFILLED',
             userVisibleStatusLabel: 'Reservation fulfilled',
           },
         }
       ]
     },
   },
   reason: 'Reservation status was updated to fulfilled.',
});

// Set up the PATCH request header and body,
// including the authorized token and order update.
let options = {
 method: 'PATCH',
 uri: `https://actions.googleapis.com/v3/orders/${orderId}`,
 auth: {
   bearer: tokens.access_token,
 },
 body: {
   header: {
     isInSandbox: true,
   },
   orderUpdate,
 },
 json: true,
};

// Send the PATCH request to the Orders API.
try {
 await request(options);
} catch (e) {
 console.log(`Error: ${e}`);
}

बुकिंग की स्थिति सेट करना

ऑर्डर के अपडेट की ReservationStatus आदेश की वर्तमान स्थिति के बारे में बताना चाहिए. आपके अपडेट के order.ReservationStatus में फ़ील्ड में, इनमें से किसी एक वैल्यू का इस्तेमाल करें:

  • PENDING - आरक्षण "बनाया गया" है कार्रवाई के मुताबिक बनाया गया है, लेकिन ज़रूरी है अतिरिक्त संसाधन भी उपलब्ध कराया जाएगा.
  • CONFIRMED - बुकिंग की पुष्टि आपकी शेड्यूलिंग बैक-एंड में हो गई है.
  • CANCELLED - उपयोगकर्ता ने अपनी बुकिंग रद्द कर दी है.
  • FULFILLED - उपयोगकर्ता की बुकिंग को सेवा के ज़रिए पूरा किया गया.
  • CHANGE_REQUESTED - उपयोगकर्ता ने रिज़र्वेशन में बदलाव करने का अनुरोध किया था और यह बदलाव है प्रोसेस किया जा रहा है.
  • REJECTED - अगर आप या तो प्रोसेस नहीं कर पाए या कुछ और नहीं कर पाए बुकिंग की पुष्टि करें.

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

अपने प्रोजेक्ट की जांच करना

अपने प्रोजेक्ट की जांच करते समय, Actions कंसोल में सैंडबॉक्स मोड चालू किया जा सकता है बिना किसी शुल्क के सेट की गई कार्रवाई की जांच करें. सैंडबॉक्स मोड को चालू करने के लिए, यह तरीका अपनाएं:

  1. Actions कंसोल में, नेविगेशन में जांच करें पर क्लिक करें.
  2. सेटिंग पर क्लिक करें.
  3. डेवलपमेंट सैंडबॉक्स विकल्प को चालू करें.

लेन-देन के लिए, isInSandbox फ़ील्ड को true पर सेट किया जा सकता है आपका सैंपल. यह कार्रवाई, Actions कंसोल पर जाएं. isInSandbox का इस्तेमाल करने वाले कोड स्निपेट को देखने के लिए, ऑर्डर के अपडेट भेजना सेक्शन.

समस्या का हल

अगर आपको टेस्टिंग के दौरान कोई समस्या आती है, तो समस्या को हल करने के तरीके पढ़ें लेन-देन के लिए.