Async অর্ডার আপডেট

একজন গ্রাহক খাবারের অর্ডার জমা দেওয়ার পরে, আপনি পরিবর্তনের বিষয়ে আমাদের অবহিত করতে অর্ডারিং এন্ড-টু-এন্ড পরিষেবাতে একটি অর্ডার আপডেট বার্তা পাঠাতে পারেন।

অর্ডার আপডেট পাঠানোর জন্য এখানে কিছু সাধারণ কারণ রয়েছে:

  • অর্ডারের জন্য আনুমানিক পূর্ণতা সময় উপলব্ধ বা পরিবর্তন হয়.
  • আদেশের অবস্থা পরিবর্তিত হয়।
  • আদেশ আর পূরণ করা যাবে না.
  • অর্ডারে অন্তর্ভুক্ত একটি মেনু আইটেমের দাম পরিবর্তিত হয়েছে৷
  • গ্রাহকের কাছে তাদের অর্ডার পরিচালনা করার একটি নতুন উপায় রয়েছে, যেমন একটি গ্রাহক সহায়তা বা রেস্তোরাঁর ফোন নম্বর৷
  • অর্ডারের রসিদ পাওয়া যায়।

পরবর্তী বিভাগগুলি অর্ডার আপডেটগুলি ব্যবহার করে এই বিভিন্ন পরিস্থিতিতে কীভাবে মোকাবেলা করতে হয় তার বিশদ প্রদান করে।

স্থানান্তর আদেশ রাষ্ট্র

একটি আদেশ ছয় সম্ভাব্য রাষ্ট্র আছে. এই রাজ্যগুলি এবং তাদের সম্ভাব্য রূপান্তরগুলি নিম্নলিখিত চিত্রে বর্ণিত হয়েছে:

রাষ্ট্রীয় রূপান্তর অর্ডার করুন

যখন একজন গ্রাহক প্রথমে একটি অর্ডার জমা দেন, তখন অর্ডারটি 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 হলে আনুমানিক সময়কে আরও সঠিক হতে আপডেট করা।

ব্যবহারকারীর প্রত্যাশাগুলি কার্যকরভাবে পরিচালনা করতে, আপনার অনুমানে রক্ষণশীল হোন এবং একটি নির্দিষ্ট তারিখ এবং সময়ের পরিবর্তে একটি তারিখ এবং সময় পরিসীমা প্রদান করুন৷ আপনি যখনই সম্ভব ট্র্যাফিক অবস্থার মত ভিন্নতাগুলিকে বিবেচনা করুন৷ উদাহরণস্বরূপ, আপনি একটি অর্ডারের জন্য 12:45 PM (লোয়ার বাউন্ড) থেকে 1:15 PM (উপরের বাউন্ড) একটি অনুমান পাঠাতে পারেন যেখানে আনুমানিক বিতরণ সময় 1:00 PM।

অর্ডার ব্যবস্থাপনা কর্ম প্রদান

একটি অর্ডার আপডেট পাঠানোর সময়, আপনি গ্রাহকদের সংস্থান সরবরাহ করতে পারেন যা তাদের অর্ডার পরিচালনা করতে একটি OrderManagementAction আকারে সাহায্য করে। কোনও গ্রাহক অর্ডার দেওয়ার পরে, তাদের অগ্রগতি ট্র্যাক করতে, পরিবর্তন করতে বা তাদের অর্ডার বাতিল করতে আপনার সাথে বা অর্ডার পূরণকারী রেস্তোরাঁর সাথে যোগাযোগ করতে হতে পারে।

একটি OrderManagementAction গ্রাহকদের তাদের ডিভাইস থেকে সরাসরি ইমেল করতে, কল করতে বা URL-এ লিঙ্ক করতে সক্ষম করে। OrderManagementAction অ্যাকশনে একই তথ্য ব্যবহার করুন যে ইমেল অর্ডার নিশ্চিতকরণ আপনি ব্যবহারকারীকে পাঠান।

অর্ডার ম্যানেজমেন্ট ক্রিয়াগুলির মধ্যে নিম্নলিখিত প্রকারগুলি অন্তর্ভুক্ত রয়েছে:

  • CUSTOMER_SERVICE : গ্রাহকদের গ্রাহক পরিষেবার সাথে যোগাযোগ করার জন্য একটি পদক্ষেপ প্রদান করুন৷ অর্ডার আপডেটের জন্য এই ম্যানেজমেন্ট অ্যাকশন টাইপ প্রয়োজন
  • EMAIL : প্রদত্ত ইমেল ঠিকানায় একটি ইমেল পাঠানোর জন্য গ্রাহকদের একটি পদক্ষেপ প্রদান করুন৷
  • CALL : প্রদত্ত ফোন নম্বরে কল করার জন্য গ্রাহকদের একটি অ্যাকশন প্রদান করুন।
  • VIEW_DETAIL : গ্রাহকদের তাদের অর্ডারের বিশদ বিবরণ দেখার জন্য একটি পদক্ষেপ প্রদান করুন।

প্রতিটি অর্ডার আপডেটে কমপক্ষে একটি অর্ডার ম্যানেজমেন্ট অ্যাকশন থাকতে হবে। যাইহোক, প্রদত্ত অর্ডার ম্যানেজমেন্ট অ্যাকশন অর্ডারের অবস্থার উপর ভিত্তি করে পরিবর্তিত হতে পারে। উদাহরণস্বরূপ, যখন একটি অর্ডার CONFIRMED অবস্থায় থাকে, তখন CUSTOMER_SERVICE অ্যাকশন আপনার গ্রাহক পরিষেবা ফোন নম্বর নির্দেশ করতে পারে। যখন সেই অর্ডার স্টেট IN_TRANSIT এ আপডেট হয়, CUSTOMER_SERVICE অ্যাকশনটি পূর্ণতা রেস্তোরাঁর ফোন নম্বর নির্দেশ করতে পারে৷

অর্ডার আপডেট পাঠানো হচ্ছে

অর্ডারিং এন্ড-টু-এন্ড সার্ভিসে অর্ডার আপডেট পাঠাতে আপনি AsyncOrderUpdateRequestMessage মেসেজ টাইপ ব্যবহার করেন। Google একটি AsyncOrderUpdateResponseMessage দিয়ে উত্তর দেয়। উদাহরণস্বরূপ, আপনি যদি একজন গ্রাহককে জানাতে চান যে তাদের অর্ডারটি বৈধ এবং গৃহীত হয়েছে, তাহলে আপনি একটি AsyncOrderUpdateRequestMessage পাঠাতে পারেন যাতে অর্ডারের অবস্থা পরিবর্তন করে CONFIRMED লেবেল সহ Accepted by restaurant

অর্ডার আপডেট ডায়াগ্রাম

অর্ডার আপডেট বার্তা সেট করা হচ্ছে

আপনি যখন 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"
      }
    }
  }
}
    

উঠানোর জন্য প্রস্তুত

এই উদাহরণটি একটি নমুনা অর্ডার আপডেটের অনুরোধ দেখায় যা ব্যবহারকারীকে জানায় যে খাবার পিকআপের জন্য প্রস্তুত।

{
  "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. নিম্নলিখিত API স্কোপ ব্যবহার করে টোকেনের অনুরোধ করুন: https://www.googleapis.com/auth/actions.fulfillment.conversation
  2. নিম্নলিখিত এন্ডপয়েন্টে একটি প্রমাণীকৃত HTTP POST অনুরোধ পাঠাতে এই টোকেনটি ব্যবহার করুন: https://actions.googleapis.com/v2/conversations:send
  3. আপনার অনুরোধের অংশ হিসাবে Content-Type শিরোনামটি application/json এ সেট করুন।

নিম্নলিখিত উদাহরণগুলি কীভাবে অর্ডার আপডেটগুলি বাস্তবায়ন করতে হয় তা প্রদর্শন করে:

Node.js

এই কোডটি Node.js-এর জন্য Google auth লাইব্রেরি ব্যবহার করে।

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)}`)
  })
}
    

পাইথন

এই কোডটি পাইথনের জন্য Google auth লাইব্রেরি ব্যবহার করে।

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 এর জন্য Google auth লাইব্রেরি ব্যবহার করে।

/**
 * 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 একটি খালি পেলোড সহ HTTP 200 প্রতিক্রিয়া প্রদান করে। যদি কোনও সমস্যা হয়, যেমন আপডেটটি ত্রুটিপূর্ণ, Google একটি ত্রুটি ফেরত দেয়।