v2 ইনক্রিমেন্টাল ইনভেন্টরি আপডেট

এই বিভাগটি বর্ণনা করে কিভাবে আপনি Google-এ আপনার ইনভেন্টরি সত্তার সময়-সংবেদনশীল আপডেট পাঠাতে পারেন। ইনক্রিমেন্টাল আপডেট API আপনাকে প্রায় রিয়েল টাইমে আপনার স্যান্ডবক্স বা প্রোডাকশন ইনভেন্টরিতে আপডেটগুলি পুশ করতে এবং সত্তাগুলিকে মুছতে দেয়৷

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

পূর্বশর্ত

ক্রমবর্ধমান আপডেটগুলি প্রয়োগ করার আগে নিম্নলিখিত আইটেমগুলি প্রয়োজন:

  1. আপনার অ্যাকশন প্রকল্পের সম্পাদকের ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট তৈরি করা হয়েছে। আরও বিশদ বিবরণের জন্য, একটি প্রকল্প তৈরি করুন এবং সেট আপ করুন দেখুন।
  2. প্রোডাকশন বা স্যান্ডবক্স ডেটা ফিডগুলি হোস্ট করা এবং ইনজেস্ট করা হয়৷ আরো বিস্তারিত জানার জন্য, ব্যাচ ইনজেশন দেখুন।
  3. (ঐচ্ছিক, কিন্তু প্রস্তাবিত) API কল করার সময় OAuth 2.0 ব্যবহার করার সুবিধার্থে আপনার পছন্দের ভাষায় Google ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন। নীচে অন্তর্ভুক্ত কোড নমুনা এই লাইব্রেরি ব্যবহার করে. অন্যথায়, Google API অ্যাক্সেস করতে OAuth 2.0 ব্যবহারে বর্ণিত হিসাবে আপনাকে টোকেন এক্সচেঞ্জ ম্যানুয়ালি পরিচালনা করতে হবে।

শেষবিন্দু

নীচের অনুরোধগুলিতে, নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • PROJECT_ID : একটি প্রকল্প তৈরি করুন এবং সেট আপ করুন- এ আপনি যে প্রকল্পটি তৈরি করেছেন তার সাথে যুক্ত Google ক্লাউড প্রকল্প আইডি।
  • TYPE : আপনার ডেটা ফিডে যে বস্তুটির সত্তার ধরন ( @type সম্পত্তি) আপনি আপডেট করতে চান।
  • ENTITY_ID (কেবলমাত্র শেষ পয়েন্ট মুছুন): যে সত্তার আইডি মুছে ফেলা হবে। আপনার সত্তা আইডি ইউআরএল এনকোড করা নিশ্চিত করুন।
  • DELETE_TIME (শুধুমাত্র শেষ পয়েন্ট মুছুন): আপনার সিস্টেমে সত্তাটি মুছে ফেলার সময় বোঝাতে ঐচ্ছিক ক্ষেত্র (অনুরোধ প্রাপ্ত হলে ডিফল্ট হয়)। সময়ের মূল্য ভবিষ্যতে হতে হবে না. একটি বর্ধিত কলের মাধ্যমে একটি সত্তা পাঠানোর সময়, সত্তা সংস্করণ একটি মুছে ফেলা কলের ক্ষেত্রে delete_time ক্ষেত্রটিও ব্যবহার করে। এই মানটিকে yyyy-mm-ddTHH:mm:ssZ হিসাবে ফর্ম্যাট করুন৷

শেষ পয়েন্ট আপডেট করুন

একটি সত্তা পরিবর্তন করতে, নিম্নলিখিত শেষ পয়েন্টে একটি HTTP POST অনুরোধ করুন এবং আপডেট এবং সংযোজনের একটি পেলোড অন্তর্ভুক্ত করুন৷ আপনি একটি একক API কলে 1,000টি পর্যন্ত আপডেট করতে পারেন৷

https://actions.googleapis.com/v2/apps/PROJECT_ID/entities:batchPush

উদাহরণস্বরূপ, আপনি যদি একটি আইডি "ডেলিভারি-প্রোভাইডার-আইডি" সহ একটি প্রকল্পে সত্তা আপডেট করতে চান তাহলে শেষ পয়েন্টটি নিম্নরূপ হবে:

https://actions.googleapis.com/v2/apps/delivery-provider-id/entities:batchpush

শেষ পয়েন্ট মুছুন

আপনার ইনভেন্টরি থেকে একটি সত্তা মুছে ফেলার জন্য, নিম্নলিখিত শেষ পয়েন্টে একটি HTTP DELETE অনুরোধ করুন৷

https://actions.googleapis.com/v2/apps/PROJECT_ID/entities/TYPE/ENTITY_ID?entity.vertical=FOODORDERING&delete_time=DELETE_TIME

উদাহরণস্বরূপ, আপনার "ডেলিভারি-প্রোভাইডার-আইডি" প্রোজেক্ট থেকে "menuSection_122" আইডি সহ একটি "MenuSection" সত্তা মুছতে, আপনি একটি HTTP DELETE API কল করতে হবে:

https://actions.googleapis.com/v2/apps/delivery-provider-id/entities/MenuSection/menuSection_122?entity.vertical=FOODORDERING

স্যান্ডবক্স পরিবেশ

আপনার স্যান্ডবক্স ইনভেন্টরিতে ইনক্রিমেন্টাল আপডেট API ব্যবহার করতে, উপরের এন্ডপয়েন্টে নির্দেশিকা অনুসরণ করুন, কিন্তু /v2/sandbox/apps/ এর পরিবর্তে /v2/apps/ এ অনুরোধ করুন।

https://actions.googleapis.com/v2/sandbox/apps/PROJECT_ID/entities:batchPush
https://actions.googleapis.com/v2/sandbox/apps/PROJECT_ID/entities/TYPE/ENTITY_ID?entity.vertical=FOODORDERING&delete_time=DELETE_TIME

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

প্রতিটি POST অনুরোধে অবশ্যই JSON পেলোড সহ অনুরোধের পরামিতিগুলি অন্তর্ভুক্ত করতে হবে যাতে ইনভেনটরি স্কিমাতে তালিকাভুক্ত যেকোন সত্তা প্রকারের কাঠামোগত ডেটা থাকে৷

পেলোড আপডেট করুন

JSON নিম্নলিখিত পার্থক্যগুলির সাথে ব্যাচ ফিডে যেমন দেখাবে তেমনই দেখা উচিত:

  • পেলোড বডি আকারে 5 এমবি এর বেশি হওয়া উচিত নয়। একইভাবে ব্যাচ ফিডের ক্ষেত্রে, আমরা আপনাকে আরও ডেটা ফিট করার স্বার্থে হোয়াইটস্পেসগুলি ফালা করার পরামর্শ দিই।
  • খামটি নিম্নরূপ:
{
  "requests": [
    {
      "entity": {
        "data":"ENTITY_DATA",
        "name": "apps/project_id>/entities/type/entity_id"
      },
      "update_time":"UPDATE_TIMESTAMP"
    },
  ],
  "vertical": "FOODORDERING"
}

উপরের পেলোডে, নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • ENTITY_DATA : JSON বিন্যাসে সত্তা একটি স্ট্রিং হিসাবে ক্রমিক। JSON-LD সত্তাকে data ক্ষেত্রে একটি স্ট্রিং হিসাবে পাস করতে হবে।
  • UPDATE_TIMESTAMP (ঐচ্ছিক): টাইমস্ট্যাম্প যখন আপনার সিস্টেমে সত্তা আপডেট করা হয়েছিল। সময়ের মূল্য ভবিষ্যতে হতে হবে না. Google যখন অনুরোধ পায় তখন ডিফল্ট টাইমস্ট্যাম্প। একটি বর্ধিত অনুরোধের মাধ্যমে একটি সত্তা পাঠানোর সময়, সত্তা সংস্করণ যোগ/আপডেট অনুরোধের ক্ষেত্রে update_time ক্ষেত্রটিও ব্যবহার করে।

উদাহরণ

উদাহরণ 1: একটি রেস্টুরেন্ট আপডেট করা

ধরুন আপনাকে জরুরীভাবে একটি রেস্টুরেন্টের ফোন নম্বর আপডেট করতে হবে। আপনার আপডেটে পুরো রেস্টুরেন্টের জন্য JSON রয়েছে।

নিচের মত দেখতে একটি ব্যাচ ফিড বিবেচনা করুন:

{
  "@type": "Restaurant",
  "@id": "restaurant12345",
  "name": "Some Restaurant",
  "url": "https://www.provider.com/somerestaurant",
  "telephone": "+16501234567",
  "streetAddress": "345 Spear St",
  "addressLocality": "San Francisco",
  "addressRegion": "CA",
  "postalCode": "94105",
  "addressCountry": "US",
  "latitude": 37.472842,
  "longitude": -122.217144
}

তারপর HTTP POST দ্বারা আপনার ক্রমবর্ধমান আপডেট নিম্নরূপ হবে:

POST v2/sandbox/apps/provider-project/entities:batchPush
Host: actions.googleapis.com
Content-Type: application/ld+json
{
  "requests": [
    {
      "entity": {
        "name": "apps/provider-project/entities/restaurant/restaurant12345",
        "data": {
          "@type": "Restaurant",
          "@id": "restaurant12345",
          "name": "Some Restaurant",
          "url": "https://www.provider.com/somerestaurant",
          "telephone": "+16501235555",
          "streetAddress": "345 Spear St",
          "addressLocality": "San Francisco",
          "addressRegion": "CA",
          "postalCode": "94105",
          "addressCountry": "US",
          "latitude": 37.472842,
          "longitude": -122.217144
        }
      }
    }
  "vertical": "FOODORDERING"
}

উদাহরণ 2: একাধিক রেস্টুরেন্ট আপডেট করা

একটি একক API কলে দুটি রেস্টুরেন্ট সত্তা আপডেট করতে, HTTP POST অনুরোধটি নিম্নরূপ হবে:

POST v2/sandbox/apps/provider-project/entities:batchPush
Host: actions.googleapis.com
Content-Type: application/ld+json
{
  "requests": [
    {
      "entity": {
        "name": "apps/provider-project/entities/restaurant/restaurant12345",
        "data": {
          "@type": "Restaurant",
          "@id": "restaurant12345",
          "name": "Some Restaurant",
          "url": "https://www.provider.com/somerestaurant",
          "telephone": "+16501235555",
          "streetAddress": "345 Spear St",
          "addressLocality": "San Francisco",
          "addressRegion": "CA",
          "postalCode": "94105",
          "addressCountry": "US",
          "latitude": 37.472842,
          "longitude": -122.217144
        }
      }
    },
    {
      "entity": {
        "name": "apps/provider-project/entities/restaurant/restaurant123",
        "data": {
          "@type": "Restaurant",
          "@id": "restaurant123",
          "name": "Some Other Restaurant",
          "url": "https://www.provider.com/somerestaurant",
          "telephone": "+16501231235",
          "streetAddress": "385 Spear St",
          "addressLocality": "San Mateo",
          "addressRegion": "CA",
          "postalCode": "94115",
          "addressCountry": "US"
        }
      }
    }
  ]
  "vertical": "FOODORDERING"
}

উদাহরণ 3: একটি মেনু আইটেমের মূল্য আপডেট করা

ধরুন আপনাকে একটি মেনু আইটেমের দাম পরিবর্তন করতে হবে। উদাহরণ 1-এর মতো, আপনার আপডেটে অবশ্যই সম্পূর্ণ টপ-লেভেল এন্টিটির (মেনু) জন্য JSON থাকতে হবে এবং ফিডটি v1 ইনভেন্টরি স্কিমা ব্যবহার করে।

নিচের মত দেখতে একটি ব্যাচ ফিড বিবেচনা করুন:

{
  "@type": "MenuItemOffer",
  "@id": "menuitemoffer6680262",
  "sku": "offer-cola",
  "menuItemId": "menuitem896532",
  "price": 3.00,
  "priceCurrency": "USD"
}

তারপর POST এর মাধ্যমে আপনার ক্রমবর্ধমান আপডেটটি নিম্নরূপ হবে:

POST v2/sandbox/apps/provider-project/entities:batchPush
Host: actions.googleapis.com
Content-Type: application/ld+json
{
  "requests": [
    {
      "entity": {
        "name": "apps/provider-project/entities/menuitemoffer/menuitemoffer6680262",
        "data": {
          "@type": "MenuItemOffer",
          "@id": "menuitemoffer6680262",
          "sku": "offer-cola",
          "menuItemId": "menuitem896532",
          "price": 1.00,
          "priceCurrency": "USD"
        },
        "vertical": "FOODORDERING"
      }
    }
  ]
  "vertical": "FOODORDERING"
}

একটি সত্তা যোগ করা হচ্ছে

সত্তা যোগ করতে, ইনভেন্টরি আপডেট ব্যবহার করা এড়িয়ে চলুন। পরিবর্তে, v2 ইনভেন্টরি স্কিমার জন্য বর্ণিত ব্যাচ ফিড প্রক্রিয়াটি ব্যবহার করুন।

একটি সত্তা অপসারণ

শীর্ষ-স্তরের সত্তাগুলি সরাতে, আপনি একটি সামান্য পরিবর্তিত এন্ডপয়েন্ট ব্যবহার করুন এবং অনুরোধে HTTP POST-এর পরিবর্তে HTTP DELETE ব্যবহার করুন৷

একটি শীর্ষ-স্তরের সত্তা মুছে ফেলা হচ্ছে

এমন একটি পরিস্থিতি বিবেচনা করুন যেখানে আপনি একটি ফিডে একটি রেস্টুরেন্ট মুছে ফেলতে চান। আপনাকে অবশ্যই এর পরিষেবা এবং মেনুগুলি মুছতে হবে৷

"provider/restaurant/menu/nr" আইডি সহ একটি মেনু সত্তার জন্য একটি নমুনা শেষ পয়েন্ট:

DELETE v2/apps/delivery-provider-id/entities/menu/provider%2Frestaurant%2Fmenu%2Fnr?entity.vertical=FOODORDERING
Host: actions.googleapis.com

"https://www.provider.com/restaurant/nr" আইডি সহ একটি রেস্টুরেন্ট সত্তার জন্য একটি নমুনা শেষ পয়েন্ট:

DELETE v2/apps/delivery-provider-id/entities/restaurant/provider%2Frestaurant%2Fnr?entity.vertical=FOODORDERING
Host: actions.googleapis.com

"https://www.provider.com/restaurant/service/nr" আইডি সহ একটি পরিষেবা সত্তার জন্য একটি নমুনা শেষ পয়েন্ট:

DELETE v2/apps/delivery-provider-id/entities/service/provider%2Frestaurant%2Fservice%2Fnr?entity.vertical=FOODORDERING
Host: actions.googleapis.com
}

উপ-সত্তা সরানো হচ্ছে

একটি শীর্ষ-স্তরের সত্তার মধ্যে একটি উপ-সত্তা, যেমন একটি মেনুর মধ্যে একটি মেনু আইটেম সরাতে HTTP DELETE ব্যবহার করবেন না৷ পরিবর্তে, উপ-সত্তার অপসারণকে একটি শীর্ষ-স্তরের সত্তার আপডেট হিসাবে বিবেচনা করুন যেখানে উপ-সত্তাটি প্রাসঙ্গিক তালিকা থেকে সরানো হয় বা বিপরীত রেফারেন্স

API প্রতিক্রিয়া কোড

একটি সফল কলের অর্থ এই নয় যে ফিডটি বৈধ বা সঠিক, শুধুমাত্র API কলটি করা হয়েছিল৷ সফল কলগুলি একটি খালি প্রতিক্রিয়া বডি সহ একটি HTTP প্রতিক্রিয়া কোড 200 পায়:

{}

ব্যর্থতার জন্য, HTTP প্রতিক্রিয়া কোড 200 হবে না এবং প্রতিক্রিয়া বডি নির্দেশ করে কী ভুল হয়েছে৷

উদাহরণস্বরূপ, যদি ব্যবহারকারী খামে "উল্লম্ব" মানটি FAKE_VERTICAL এ সেট করে থাকেন, তাহলে আপনি নীচের বার্তাটি পাবেন:

{
  "error": {
    "code": 400,
    "message": "Invalid value at 'entity.vertical' (TYPE_ENUM), \"FAKE_VERTICAL\"",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "entity.vertical",
            "description": "Invalid value at 'entity.vertical' (TYPE_ENUM), \"FAKE_VERTICAL\""
          }
        ]
      }
    ]
  }
}

কোড নমুনা

কিভাবে বিভিন্ন ভাষায় ইনক্রিমেন্টাল আপডেট API ব্যবহার করবেন তার কিছু নমুনা নিচে দেওয়া হল। এই নমুনাগুলি Google Auth লাইব্রেরি ব্যবহার করে এবং v1 ইনভেন্টরি স্কিমা ব্যবহার করে একটি ফিড ধরে নেয়। বিকল্প সমাধানের জন্য, সার্ভার থেকে সার্ভার অ্যাপ্লিকেশনের জন্য OAuth 2.0 ব্যবহার করুন দেখুন।

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

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')
// entity.json is a file that contains the entity data in json format
const entity = require('./entity.json')

const ENTITY_ID = 'your/entity/id'
const PROJECT_ID = 'type/your-project-id'

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

/**
 * Send an incremental update to update or add an entity
 */
async function updateEntity(entity) {
  const token = await getAuthToken()
  request.post({
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    url: `https://actions.googleapis.com/v2/apps/${PROJECT_ID}/entities:batchPush`,
    body: {
      requests: [
        {
          entity: {
            data: JSON.stringify(entity)
            name: `apps/${PROJECT_ID}/entities/${ENTITY_ID}`
          }
        }
      ],
      vertical: 'FOODORDERING'
    },
    json: true
  },
  (err, res, body) => {
    if (err) { return console.log(err); }
    console.log(`Response: ${JSON.stringify(res)}`)
  })
}

updateEntity(entity)

পাইথন

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

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

PROJECT_ID = 'your-project-id'
ENTITY_ID = 'type/your/entity/id'

ENDPOINT = 'https://actions.googleapis.com/v2/apps/%s/entities:batchPush' % (
    PROJECT_ID)

# 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/assistant'])

authed_session = AuthorizedSession(scoped_credentials)

# Retrieving the entity
update_file = open("entity.json")  #JSON file containing entity data in json format.
data = update_file.read()

entity = {}
entity['data'] = data #entity JSON-LD serialized as string
entity['name'] = 'apps/%s/entities/%s' % (PROJECT_ID, urllib.quote(ENTITY_ID, '') )

# Populating the request
request = {}
request['entity'] = entity
requestArray = [request]

# Populating the payload
payload = {}
payload['requests'] = requestArray
payload['vertical'] = 'FOODORDERING'

response = authed_session.post(ENDPOINT, json=payload)

print(response.text) #if successful, will be '{}'

জাভা

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

private static final String PROJECT_ID = "your-project-id";
private static final String ENTITY_ID = "type/your-entity-id";

/**
 * 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/assistant"));
  AccessToken accessToken = credentialsSimpleBuilder.build().refreshAccessToken();
  return accessToken.getTokenValue();
}

/**
 * Send an incremental update to update or add an entity.
 * @param entityId The id of the entity to update.
 * @param entity the json of the entity to be updated.
 */
public void updateEntity(String entityId, JSONObject data) {
  String authToken = getAuthToken();
  String endpoint = String.format("https://actions.googleapis.com/v2/apps/%s/entities/:batchPush", PROJECT_ID);

  JSONObject entity = new JSONObject();
  entity.put("data", data.toString());
  entity.put("name", String.format("apps/%s/entities/%s", PROJECT_ID, URLEncoder.encode(ENTITY_ID, "UTF-8")));

  JSONObject request = new JSONObject();
  request.put("entity", entity);

  JSONArray requestArray = new JSONArray();
  requestArray.put(request);

  JSONObject payload = new JSONObject();
  payload.put("requests", requestArray);
  payload.put("vertical", FOODORDERING);

  // Execute POST request
  executePostRequest(endpoint, authToken, payload);
}

সত্তা সরানো হচ্ছে

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')
// entity.json is a file that contains the entity data in json format
const entity = require('./entity.json')

const ENTITY_ID = 'restaurant/http://www.provider.com/somerestaurant'
const PROJECT_ID = 'your-project-id'

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

/**
 * Send an incremental update to delete an entity
 */
async function deleteEntity(entityId) {
  const token = await getAuthToken()
  request.delete({
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    url: `https://actions.googleapis.com/v2/apps/${PROJECT_ID}/entities/${encodeURIComponent(entityId)}?entity.vertical=FOODORDERING`,
    body: {},
    json: true
  },
  (err, res, body) => {
    if (err) { return console.log(err); }
    console.log(`Response: ${JSON.stringify(res)}`)
  })
}

deleteEntity(ENTITY_ID)

পাইথন

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

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

# Service config
PROJECT_ID = 'your-project-id'
ENTITY_ID = 'restaurant/http://www.provider.com/somerestaurant'
DELETE_TIME = '2018-04-07T14:30:00-07:00'
ENDPOINT = 'https://actions.googleapis.com/v2/apps/%s/entities/%s?entity.vertical=FOODORDERING&delete_time=%s' % (
    PROJECT_ID, urllib.quote(ENTITY_ID, ''), urllib.quote(DELETE_TIME, ''))

# 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/assistant'])

authed_session = AuthorizedSession(scoped_credentials)
response = authed_session.delete(ENDPOINT)

print(response.text) #if successful, will be '{}'

জাভা

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

private static final String PROJECT_ID = "your-project-id";
private static final String ENTITY_ID = "restaurant/http://www.provider.com/somerestaurant";

/**
 * 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/assistant"));
  AccessToken accessToken = credentialsSimpleBuilder.build().refreshAccessToken();
  return accessToken.getTokenValue();
}

/**
 * Send an incremental update to delete an entity.
 * @param entityId The id of the entity to delete.
 */
public void deleteEntity(String entityId) {
  String authToken = getAuthToken();
  String endpoint = String.format(
      "https://actions.googleapis.com/v2/apps/%s/entities/%s?entity.vertical=FOODORDERING",
      PROJECT_ID, URLEncoder.encode(entityId, "UTF-8"));
  // Execute DELETE request
  System.out.println(executeDeleteRequest(endpoint, authToken));
}

ব্যবহারের ক্ষেত্রে

নিম্নলিখিত ব্যবহারের ক্ষেত্রে ক্রমবর্ধমান আপডেট, সম্পূর্ণ ফিড আপডেট এবং API কলে উচ্চ স্তরের সামগ্রীর উদাহরণ:

দৃশ্যকল্প আপডেট করার জন্য সত্তা বর্ণনা এবং প্রভাব
একটি পরিষেবা অক্ষম করা হচ্ছে Service

আপনাকে একটি অপ্রত্যাশিত কারণে একটি পরিষেবা নিষ্ক্রিয় করতে হবে৷

ক্রমবর্ধমান আপডেট: প্রশ্নে থাকা Service সত্তাটিকে তার isDisabled প্রপার্টি true এ সেট করে আপডেট করুন, কিন্তু অন্যান্য বৈশিষ্ট্য একই রাখুন।

সম্পূর্ণ ফিড: Google দ্বারা পরবর্তী আনয়নের পূর্বে isDisabled true সেট করার জন্য সম্পূর্ণ ফিড থেকে সত্তাটি আপডেট করা নিশ্চিত করুন, অন্যথায় সত্তাটি পুনরায় সক্ষম হবে।

নির্দিষ্ট আইটেম আউট অফ স্টক MenuItemOffer ক্রমবর্ধমান আপডেট: প্রদত্ত MenuItem এর জন্য 0 এ সেট inventoryLevel সহ এনক্যাপসুলেটিং MenuItemOffer সত্তা পাঠান এবং অন্যান্য সমস্ত ডেটা অপরিবর্তিত।
মেনু আইটেম মূল্য পরিবর্তন MenuItemOffer ক্রমবর্ধমান আপডেট: প্রদত্ত MenuItem এর জন্য আপডেট করা মূল্যে সেট price সহ encapsulating MenuItemOffer সত্তা পাঠান, এবং অন্যান্য সমস্ত ডেটা অপরিবর্তিত।

নতুন শীর্ষ-স্তরের সত্তা যোগ করুন

শুধুমাত্র Menu , Restaurant এবং Service ধরনের সত্তার জন্য প্রযোজ্য।

Menu , Restaurant , Service

উদাহরণস্বরূপ, আপনাকে একটি রেস্টুরেন্টে একটি নতুন মেনু যোগ করতে হবে।

সম্পূর্ণ ফিড: আপনার ডেটা ফিডে সত্তা যোগ করুন এবং ব্যাচ ইনজেশনের জন্য অপেক্ষা করুন।

স্থায়ীভাবে শীর্ষ-স্তরের সত্তা মুছুন

শুধুমাত্র Menu , Restaurant এবং Service ধরনের সত্তার জন্য প্রযোজ্য।

Menu , Restaurant , Service

ক্রমবর্ধমান আপডেট: একটি স্পষ্ট মুছে পাঠান।

সম্পূর্ণ ফিড: Google দ্বারা পরবর্তী আনার আগে সম্পূর্ণ ফিড থেকে সত্তাটিকে সরিয়ে ফেলা নিশ্চিত করুন, অন্যথায় সত্তাটি পুনরায় যুক্ত করা হবে।

একটি নির্দিষ্ট Service একটি নতুন ডেলিভারি এলাকা যোগ করুন ServiceArea ইনক্রিমেন্টাল ফিড: ServiceArea সত্তাটিকে তার সমস্ত ক্ষেত্র অক্ষত রেখে প্রশ্নে পাঠান, যেমন আপনি সাধারণত পূর্ণ ফিডের মধ্যে থাকেন, polygon , geoRadius বা postalCode মধ্যে নির্দিষ্ট করা নতুন ডেলিভারি এলাকা সহ।
Service পৌঁছানোর আনুমানিক সময় ডেলিভারি আপডেট করুন ServiceHours ইনক্রিমেন্টাল ফিড: ফিডের মতোই ServiceHours পাঠান, এর leadTimeMin সেই অনুযায়ী আপডেট করা ছাড়া।
Service ডেলিভারির দাম আপডেট করুন Fee ইনক্রিমেন্টাল ফিড: আপডেট price সহ সম্পূর্ণ ডেলিভারি Fee পাঠান।
Service ডেলিভারি বা টেকআউটের সময় আপডেট করুন ServiceHours ইনক্রিমেন্টাল ফিড: ফিডের মতোই ServiceHours পাঠান, এর opens এবং closes বৈশিষ্ট্যগুলি সেই অনুযায়ী আপডেট করা ছাড়া।
Service (ন্যূনতম অর্ডারের পরিমাণ পরিবর্তন করুন) Fee ক্রমবর্ধমান ফিড: আপডেট করা minPrice সহ সম্পূর্ণ Fee পাঠান
স্থায়ীভাবে একটি MenuItem মুছুন Menu ইনক্রিমেন্টাল ফিড: MenuItem ফিডের মতোই পাঠান, কিন্তু parentMenuSectionId খালি দিয়ে।

ব্যাচের চাকরি এবং ক্রমবর্ধমান আপডেটের জন্য প্রক্রিয়াকরণের সময় SLO

একটি ব্যাচের মাধ্যমে আপডেট করা বা মুছে ফেলা একটি সত্তা সর্বোত্তম প্রচেষ্টা মোডে 2 ঘন্টার মধ্যে প্রক্রিয়া করা হবে যেখানে একটি বৃদ্ধিমূলক আপডেটের মাধ্যমে আপডেট করা একটি সত্তা 5 মিনিটের মধ্যে প্রক্রিয়া করা হবে। একটি পুরানো সত্তা 7 দিনের মধ্যে মুছে ফেলা হয়।

আপনি হয় Google পাঠাতে পারেন:

  • আপনার ইনভেন্টরি আপ টু ডেট রাখতে প্রতিদিন একাধিক ব্যাচের কাজ, বা
  • আপনার ইনভেন্টরি আপ টু ডেট রাখতে প্রতিদিন একটি ব্যাচের কাজ এবং ইনক্রিমেন্টাল API।