ভিজ্যুয়াল বেছে নেওয়ার উত্তর (Dialogflow)

Dialogflow-তে এক্সপ্লোর করুন

Dialogflow-তে আমাদের Responses স্যাম্পেল ইমপোর্ট করতে চালিয়ে যান বিকল্পে ক্লিক করুন। তারপর, স্যাম্পেল ডিপ্লয় ও পরীক্ষা করতে নিচে উল্লেখ করা ধাপগুলি অনুসরণ করুন:

  1. এজেন্টের নাম লিখুন এবং স্যাম্পেলের জন্য নতুন Dialogflow এজেন্ট তৈরি করুন।
  2. এজেন্ট ইমপোর্ট করা হয়ে গেলে, এজেন্টে যান বিকল্পে ক্লিক করুন।
  3. প্রধান নেভিগেশন মেনু থেকে, ফুলফিলমেন্ট বিকল্পে যান।
  4. ইনলাইন এডিটর চালু করে ডিপ্লয় করুন বিকল্পে ক্লিক করুন। এডিটরে স্যাম্পেল কোড আছে।
  5. প্রধান নেভিগেশন মেনু থেকে, ইন্টিগ্রেশন বিকল্পে যান, তারপর Google Assistant বিকল্পে ক্লিক করুন।
  6. যে মোডাল উইন্ডোটি দেখা যাবে, সেখানে পরিবর্তন অটো-প্রিভিউ করুন বিকল্প চালু করুন এবং অ্যাকশন সিমুলেটর খুলতে পরীক্ষা করুন বিকল্পে ক্লিক করুন।
  7. সিমুলেটরে, স্যাম্পেল পরীক্ষা করতে Talk to my test app লিখুন!
চালিয়ে যান

আপনার অ্যাকশন চালিয়ে যাওয়ার জন্য ব্যবহারকারীকে একাধিক বিকল্পের মধ্যে থেকে কোনও একটি বেছে নিতে হলে, ভিজ্যুয়াল সিলেকশন রেসপন্স ব্যবহার করুন।

ভিজ্যুয়াল বেছে নেওয়ার উত্তর শুধুমাত্র স্ক্রিন-ভিত্তিক অভিজ্ঞতা বা অডিও ও স্ক্রিন কম্পোনেন্ট উভয়ই অন্তর্ভুক্ত করে এমন অভিজ্ঞতায় দেখা যেতে পারে।

ভিজ্যুয়াল সিলেকশন উত্তরে নিম্নলিখিত কম্পোনেন্ট থাকতে পারে:

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

প্রপার্টি

ভিজ্যুয়াল সিলেকশন উত্তরের ক্ষেত্রে নিম্নলিখিত প্রয়োজনীয়তা ও ঐচ্ছিক প্রপার্টি থাকে যা আপনি কনফিগার করতে পারবেন:

  • actions.capability.SCREEN_OUTPUT ক্ষমতা সহ সারফেসে কাজ করে।
  • ভিজ্যুয়াল সিলেকশন উত্তরের প্রথম আইটেমটি অবশ্যই একটি সহজ উত্তর হতে হবে।
  • সর্বাধিক একটি সহজ উত্তর।
  • সর্বাধিক একটি বেসিক কার্ড, বিকল্প ইন্টারফেস (তালিকা বা ক্যারোজেল), বা StructuredResponse। (আপনি একই সাথে একটি সাধারণ কার্ড এবং একটি বিকল্প ইন্টারফেস রাখতে পারবেন না)।
  • সর্বাধিক ৮টি সাজেশন চিপ।
  • FinalResponse-এ সাজেশন চিপ ব্যবহার করা যাবে না।

নিম্নলিখিত বিভাগগুলি আপনাকে দেখায় যে কীভাবে বিভিন্ন ধরনের ভিজ্যুয়াল সিলেকশন প্রতিক্রিয়া তৈরি করতে হয়।

তালিকা

ছবি ১. তালিকার উদাহরণ (স্মার্টফোন)

সিঙ্গেল-সিলেক্ট তালিকা ব্যবহারকারীকে একাধিক আইটেমের একটি উল্লম্ব তালিকা দেখায় এবং ব্যবহারকারীকে একটি আইটেম বেছে নেওয়ার অনুমতি দেয়। তালিকা থেকে কোনও আইটেম বেছে নিলে তালিকার আইটেমের নাম সহ একটি ব্যবহারকারীর কোয়েরি (চ্যাট বাবল) তৈরি হয়।

actions.capability.SCREEN_OUTPUT ক্ষমতা সহ সারফেসে তালিকা রেসপন্স টাইপ কাজ করে।

প্রপার্টি

তালিকায় কমপক্ষে ২টি এবং সর্বাধিক ৩০টি আইটেম থাকতে হবে। তালিকায় নিম্নলিখিত প্রপার্টি থাকে:

  • তালিকার নাম (ঐচ্ছিক)
    • ফিক্সড ফন্ট ও ফন্টের সাইজ
    • একটি লাইনে সীমাবদ্ধ। (অতিরিক্ত অক্ষর বাদ দেওয়া হয়েছে।)
    • প্লেন টেক্সট, Markdown কাজ করে না।
    • কোনও শিরোনাম উল্লেখ করা না থাকলে কার্ডের উচ্চতা কমে যায়।
  • তালিকার আইটেম
    • শিরোনাম
      • ফিক্সড ফন্ট ও ফন্টের সাইজ
      • সর্বাধিক দৈর্ঘ্য: ১ লাইন (উপবৃত্ত সহ কাটা…)
      • অনন্য হতে হবে (ভয়েস বেছে নেওয়ার সুবিধা দিতে)
    • বিবরণ (ঐচ্ছিক)
      • ফিক্সড ফন্ট ও ফন্টের সাইজ
      • সর্বাধিক দৈর্ঘ্য: ২ লাইন (উপবৃত্ত সহ কাটা…)
    • ছবি (ঐচ্ছিক)
      • সাইজ: ৪৮x৪৮ পিক্সেল
  • ইন্টার‌্যাকশন
    • ভয়েস/টেক্সট
      • ব্যবহারকারী যেকোনও সময় আইটেমে ট্যাপ করার পরিবর্তে সেটির নাম বলতে বা টাইপ করতে পারেন।
      • actions_intent_OPTION ইভেন্ট ম্যানেজ করে এমন টাচ ইনপুটের জন্য ইনটেন্ট থাকতে হবে।

নির্দেশিকা

বিকল্পগুলি অস্পষ্ট হলে বা ব্যবহারকারীকে এক নজরে স্ক্যান করতে হবে এমন বিকল্পগুলির মধ্যে থেকে বেছে নিতে হলে তালিকা ব্যবহার করা ভালো। যেমন, আপনি কোন "Peter"-এর সাথে কথা বলতে চান, Peter Jons নাকি Peter Hans?

ব্যবহারকারী যাতে কথোপকথন পিভট বা বড় করতে পারেন তার জন্য আমরা তালিকার নিচে সাজেশন চিপ যোগ করার সাজেশন দিই। সাজেশন চিপ হিসেবে তালিকায় দেখানো বিকল্পগুলি কখনও রিপিট করবেন না। এই প্রসঙ্গে চিপ ব্যবহার করা হয় কথোপকথন ঘুরিয়ে দেওয়ার জন্য (পছন্দ বেছে নেওয়ার জন্য নয়)।

লক্ষ্য করুন যে, সাথে দেওয়া উদাহরণে, তালিকা কার্ডের সাথে থাকা চ্যাট বাবলটি অডিওর (TTS/SSML) একটি সাবসেট। অডিও আউটপুটে শুধুমাত্র তালিকার প্রথম আইটেমটি অন্তর্ভুক্ত থাকে। আমরা তালিকা থেকে সব এলিমেন্ট পড়ার ব্যাপারে নিরুৎসাহিত করি।

আপনার অ্যাকশন যেন তালিকার সবচেয়ে উপরে ব্যবহারকারীর জন্য সবচেয়ে গুরুত্বপূর্ণ তথ্য দেখায় (যেমন, সবচেয়ে জনপ্রিয়, সম্প্রতি কেনা বা সবচেয়ে বেশি আলোচিত)। তালিকায় প্রথমে ১০টি এলিমেন্ট দেখানো হয়, তবে ব্যবহারকারী আরও এলিমেন্ট দেখতে তালিকাটি বড় করতে পারেন। এছাড়াও, সারফেস ও সময়ের উপর নির্ভর করে, তালিকা বড় করার আগে সেখানে দেখানো আইটেমের সংখ্যা পরিবর্তিত হতে পারে।

ছবি ২. তালিকার উদাহরণ (স্মার্ট ডিসপ্লে)

নমুনা কোড

Node.js

app.intent('List', (conv) => {
  if (!conv.screen) {
    conv.ask('Sorry, try this on a screen device or select the ' +
      'phone surface in the simulator.');
    return;
  }

  conv.ask('This is a list example.');
  // Create a list
  conv.ask(new List({
    title: 'List Title',
    items: {
      // Add the first item to the list
      'SELECTION_KEY_ONE': {
        synonyms: [
          'synonym 1',
          'synonym 2',
          'synonym 3',
        ],
        title: 'Title of First List Item',
        description: 'This is a description of a list item.',
        image: new Image({
          url: 'https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png',
          alt: 'Image alternate text',
        }),
      },
      // Add the second item to the list
      'SELECTION_KEY_GOOGLE_HOME': {
        synonyms: [
          'Google Home Assistant',
          'Assistant on the Google Home',
      ],
        title: 'Google Home',
        description: 'Google Home is a voice-activated speaker powered by ' +
          'the Google Assistant.',
        image: new Image({
          url: 'https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png',
          alt: 'Google Home',
        }),
      },
      // Add the third item to the list
      'SELECTION_KEY_GOOGLE_PIXEL': {
        synonyms: [
          'Google Pixel XL',
          'Pixel',
          'Pixel XL',
        ],
        title: 'Google Pixel',
        description: 'Pixel. Phone by Google.',
        image: new Image({
          url: 'https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png',
          alt: 'Google Pixel',
        }),
      },
    },
  }));
});

Java

@ForIntent("List")
public ActionResponse list(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  if (!request.hasCapability(Capability.SCREEN_OUTPUT.getValue())) {
    return responseBuilder
        .add("Sorry, try ths on a screen device or select the phone surface in the simulator.")
        .add("Which response would you like to see next?")
        .build();
  }

  responseBuilder
      .add("This is a list example.")
      .add(
          new SelectionList()
              .setTitle("List Title")
              .setItems(
                  Arrays.asList(
                      new ListSelectListItem()
                          .setTitle("Title of First List Item")
                          .setDescription("This is a description of a list item.")
                          .setImage(
                              new Image()
                                  .setUrl(
                                      "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                  .setAccessibilityText("Image alternate text"))
                          .setOptionInfo(
                              new OptionInfo()
                                  .setSynonyms(
                                      Arrays.asList("synonym 1", "synonym 2", "synonym 3"))
                                  .setKey("SELECTION_KEY_ONE")),
                      new ListSelectListItem()
                          .setTitle("Google Home")
                          .setDescription(
                              "Google Home is a voice-activated speaker powered by the Google Assistant.")
                          .setImage(
                              new Image()
                                  .setUrl(
                                      "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                  .setAccessibilityText("Google Home"))
                          .setOptionInfo(
                              new OptionInfo()
                                  .setSynonyms(
                                      Arrays.asList(
                                          "Google Home Assistant",
                                          "Assistant on the Google Home"))
                                  .setKey("SELECTION_KEY_GOOGLE_HOME")),
                      new ListSelectListItem()
                          .setTitle("Google Pixel")
                          .setDescription("Pixel. Phone by Google.")
                          .setImage(
                              new Image()
                                  .setUrl(
                                      "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                  .setAccessibilityText("Google Pixel"))
                          .setOptionInfo(
                              new OptionInfo()
                                  .setSynonyms(
                                      Arrays.asList("Google Pixel XL", "Pixel", "Pixel XL"))
                                  .setKey("SELECTION_KEY_GOOGLE_PIXEL")))));
  return responseBuilder.build();
}

Node.js

if (!conv.screen) {
  conv.ask('Sorry, try this on a screen device or select the ' +
    'phone surface in the simulator.');
  return;
}

conv.ask('This is a list example.');
// Create a list
conv.ask(new List({
  title: 'List Title',
  items: {
    // Add the first item to the list
    'SELECTION_KEY_ONE': {
      synonyms: [
        'synonym 1',
        'synonym 2',
        'synonym 3',
      ],
      title: 'Title of First List Item',
      description: 'This is a description of a list item.',
      image: new Image({
        url: 'https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png',
        alt: 'Image alternate text',
      }),
    },
    // Add the second item to the list
    'SELECTION_KEY_GOOGLE_HOME': {
      synonyms: [
        'Google Home Assistant',
        'Assistant on the Google Home',
    ],
      title: 'Google Home',
      description: 'Google Home is a voice-activated speaker powered by ' +
        'the Google Assistant.',
      image: new Image({
        url: 'https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png',
        alt: 'Google Home',
      }),
    },
    // Add the third item to the list
    'SELECTION_KEY_GOOGLE_PIXEL': {
      synonyms: [
        'Google Pixel XL',
        'Pixel',
        'Pixel XL',
      ],
      title: 'Google Pixel',
      description: 'Pixel. Phone by Google.',
      image: new Image({
        url: 'https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png',
        alt: 'Google Pixel',
      }),
    },
  },
}));

Java

ResponseBuilder responseBuilder = getResponseBuilder(request);
if (!request.hasCapability(Capability.SCREEN_OUTPUT.getValue())) {
  return responseBuilder
      .add("Sorry, try ths on a screen device or select the phone surface in the simulator.")
      .add("Which response would you like to see next?")
      .build();
}

responseBuilder
    .add("This is a list example.")
    .add(
        new SelectionList()
            .setTitle("List Title")
            .setItems(
                Arrays.asList(
                    new ListSelectListItem()
                        .setTitle("Title of First List Item")
                        .setDescription("This is a description of a list item.")
                        .setImage(
                            new Image()
                                .setUrl(
                                    "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                .setAccessibilityText("Image alternate text"))
                        .setOptionInfo(
                            new OptionInfo()
                                .setSynonyms(
                                    Arrays.asList("synonym 1", "synonym 2", "synonym 3"))
                                .setKey("SELECTION_KEY_ONE")),
                    new ListSelectListItem()
                        .setTitle("Google Home")
                        .setDescription(
                            "Google Home is a voice-activated speaker powered by the Google Assistant.")
                        .setImage(
                            new Image()
                                .setUrl(
                                    "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                .setAccessibilityText("Google Home"))
                        .setOptionInfo(
                            new OptionInfo()
                                .setSynonyms(
                                    Arrays.asList(
                                        "Google Home Assistant",
                                        "Assistant on the Google Home"))
                                .setKey("SELECTION_KEY_GOOGLE_HOME")),
                    new ListSelectListItem()
                        .setTitle("Google Pixel")
                        .setDescription("Pixel. Phone by Google.")
                        .setImage(
                            new Image()
                                .setUrl(
                                    "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                .setAccessibilityText("Google Pixel"))
                        .setOptionInfo(
                            new OptionInfo()
                                .setSynonyms(
                                    Arrays.asList("Google Pixel XL", "Pixel", "Pixel XL"))
                                .setKey("SELECTION_KEY_GOOGLE_PIXEL")))));
return responseBuilder.build();

JSON

মনে রাখবেন, নিচের JSON-এ ওয়েবহুক রেসপন্স বর্ণনা করা হয়েছে।

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.OPTION",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec",
          "listSelect": {
            "title": "List Title",
            "items": [
              {
                "optionInfo": {
                  "key": "SELECTION_KEY_ONE",
                  "synonyms": [
                    "synonym 1",
                    "synonym 2",
                    "synonym 3"
                  ]
                },
                "description": "This is a description of a list item.",
                "image": {
                  "url": "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png",
                  "accessibilityText": "Image alternate text"
                },
                "title": "Title of First List Item"
              },
              {
                "optionInfo": {
                  "key": "SELECTION_KEY_GOOGLE_HOME",
                  "synonyms": [
                    "Google Home Assistant",
                    "Assistant on the Google Home"
                  ]
                },
                "description": "Google Home is a voice-activated speaker powered by the Google Assistant.",
                "image": {
                  "url": "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png",
                  "accessibilityText": "Google Home"
                },
                "title": "Google Home"
              },
              {
                "optionInfo": {
                  "key": "SELECTION_KEY_GOOGLE_PIXEL",
                  "synonyms": [
                    "Google Pixel XL",
                    "Pixel",
                    "Pixel XL"
                  ]
                },
                "description": "Pixel. Phone by Google.",
                "image": {
                  "url": "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png",
                  "accessibilityText": "Google Pixel"
                },
                "title": "Google Pixel"
              }
            ]
          }
        }
      },
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "This is a list example."
            }
          }
        ]
      }
    }
  }
}

JSON

মনে রাখবেন, নিচের JSON-এ ওয়েবহুক রেসপন্স বর্ণনা করা হয়েছে।

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.OPTION",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec",
            "listSelect": {
              "title": "List Title",
              "items": [
                {
                  "optionInfo": {
                    "key": "SELECTION_KEY_ONE",
                    "synonyms": [
                      "synonym 1",
                      "synonym 2",
                      "synonym 3"
                    ]
                  },
                  "description": "This is a description of a list item.",
                  "image": {
                    "url": "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png",
                    "accessibilityText": "Image alternate text"
                  },
                  "title": "Title of First List Item"
                },
                {
                  "optionInfo": {
                    "key": "SELECTION_KEY_GOOGLE_HOME",
                    "synonyms": [
                      "Google Home Assistant",
                      "Assistant on the Google Home"
                    ]
                  },
                  "description": "Google Home is a voice-activated speaker powered by the Google Assistant.",
                  "image": {
                    "url": "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png",
                    "accessibilityText": "Google Home"
                  },
                  "title": "Google Home"
                },
                {
                  "optionInfo": {
                    "key": "SELECTION_KEY_GOOGLE_PIXEL",
                    "synonyms": [
                      "Google Pixel XL",
                      "Pixel",
                      "Pixel XL"
                    ]
                  },
                  "description": "Pixel. Phone by Google.",
                  "image": {
                    "url": "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png",
                    "accessibilityText": "Google Pixel"
                  },
                  "title": "Google Pixel"
                }
              ]
            }
          }
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "This is a list example."
              }
            }
          ]
        }
      }
    }
  ]
}

বেছে নেওয়া আইটেম ম্যানেজ করা

ব্যবহারকারী কোনও আইটেম বেছে নিলে, বেছে নেওয়া আইটেমের ভ্যালু আপনাকে আর্গুমেন্ট হিসেবে পাঠানো হয়। আর্গুমেন্ট ভ্যালুতে, আপনি বেছে নেওয়া আইটেমের জন্য key শনাক্তকারী পাবেন:

Node.js

app.intent('List - OPTION', (conv, params, option) => {
  const SELECTED_ITEM_RESPONSES = {
    'SELECTION_KEY_ONE': 'You selected the first item',
    'SELECTION_KEY_GOOGLE_HOME': 'You selected the Google Home!',
    'SELECTION_KEY_GOOGLE_PIXEL': 'You selected the Google Pixel!',
  };
  conv.ask(SELECTED_ITEM_RESPONSES[option]);
  conv.ask('Which response would you like to see next?');
});

Java

@ForIntent("List - OPTION")
public ActionResponse listSelected(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  String selectedItem = request.getSelectedOption();
  String response;

  if (selectedItem.equals("SELECTION_KEY_ONE")) {
    response = "You selected the first item";
  } else if (selectedItem.equals("SELECTION_KEY_GOOGLE_HOME")) {
    response = "You selected the Google Home!";
  } else if (selectedItem.equals("SELECTION_KEY_GOOGLE_PIXEL")) {
    response = "You selected the Google Pixel!";
  } else {
    response = "You did not select a valid item";
  }
  return responseBuilder.add(response).add("Which response would you like to see next?").build();
}

Node.js

app.intent('actions.intent.OPTION', (conv, params, option) => {
  const SELECTED_ITEM_RESPONSES = {
    'SELECTION_KEY_ONE': 'You selected the first item',
    'SELECTION_KEY_GOOGLE_HOME': 'You selected the Google Home!',
    'SELECTION_KEY_GOOGLE_PIXEL': 'You selected the Google Pixel!',
  };
  conv.ask(SELECTED_ITEM_RESPONSES[option]);
  conv.ask('Which response would you like to see next?');
});

Java

  @ForIntent("actions.intent.OPTION")
  public ActionResponse listSelected(ActionRequest request) {
    ResponseBuilder responseBuilder = getResponseBuilder(request);
    String selectedItem = request.getSelectedOption();
    String response;

    if (selectedItem.equals("SELECTION_KEY_ONE")) {
      response = "You selected the first item";
    } else if (selectedItem.equals("SELECTION_KEY_GOOGLE_HOME")) {
      response = "You selected the Google Home!";
    } else if (selectedItem.equals("SELECTION_KEY_GOOGLE_PIXEL")) {
      response = "You selected the Google Pixel!";
    } else {
      response = "You did not select a valid item";
    }
    return responseBuilder.add(response).add("Which response would you like to see next?").build();
  }

  public ActionResponse carousel(ActionRequest request) {
    ResponseBuilder responseBuilder = getResponseBuilder(request);
    if (!request.hasCapability(Capability.SCREEN_OUTPUT.getValue())) {
      return responseBuilder
          .add("Sorry, try ths on a screen device or select the phone surface in the simulator.")
          .add("Which response would you like to see next?")
          .build();
    }

    responseBuilder
        .add("This is a carousel example.")
        .add(
            new SelectionCarousel()
                .setItems(
                    Arrays.asList(
                        new CarouselSelectCarouselItem()
                            .setTitle("Title of First List Item")
                            .setDescription("This is a description of a list item.")
                            .setImage(
                                new Image()
                                    .setUrl(
                                        "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                    .setAccessibilityText("Image alternate text"))
                            .setOptionInfo(
                                new OptionInfo()
                                    .setSynonyms(
                                        Arrays.asList("synonym 1", "synonym 2", "synonym 3"))
                                    .setKey("SELECTION_KEY_ONE")),
                        new CarouselSelectCarouselItem()
                            .setTitle("Google Home")
                            .setDescription(
                                "Google Home is a voice-activated speaker powered by the Google Assistant.")
                            .setImage(
                                new Image()
                                    .setUrl(
                                        "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                    .setAccessibilityText("Google Home"))
                            .setOptionInfo(
                                new OptionInfo()
                                    .setSynonyms(
                                        Arrays.asList(
                                            "Google Home Assistant",
                                            "Assistant on the Google Home"))
                                    .setKey("SELECTION_KEY_GOOGLE_HOME")),
                        new CarouselSelectCarouselItem()
                            .setTitle("Google Pixel")
                            .setDescription("Pixel. Phone by Google.")
                            .setImage(
                                new Image()
                                    .setUrl(
                                        "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                    .setAccessibilityText("Google Pixel"))
                            .setOptionInfo(
                                new OptionInfo()
                                    .setSynonyms(
                                        Arrays.asList("Google Pixel XL", "Pixel", "Pixel XL"))
                                    .setKey("SELECTION_KEY_GOOGLE_PIXEL")))));
    return responseBuilder.build();
  }
}

JSON

মনে রাখবেন যে নিচের JSON একটি ওয়েবহুক অনুরোধের বর্ণনা দেয়।

{
  "responseId": "5d7732d1-d22d-4a0e-ad34-8bc0a7fde20c-21947381",
  "queryResult": {
    "queryText": "actions_intent_OPTION",
    "action": "List.List-custom",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Webhook failed for intent: List - OPTION",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Webhook failed for intent: List - OPTION"
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_account_linking"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/google_assistant_input_type_touch"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/list-followup",
        "lifespanCount": 1
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_intent_option",
        "parameters": {
          "OPTION": "SELECTION_KEY_GOOGLE_PIXEL",
          "text": "Google Pixel"
        }
      }
    ],
    "intent": {
      "name": "projects/df-responses-kohler/agent/intents/88904350-193e-4472-a2de-977eb5d9e26e",
      "displayName": "List - OPTION"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "user": {
        "locale": "en-US",
        "lastSeen": "2019-08-04T23:56:32Z",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA",
        "type": "ACTIVE",
        "conversationToken": "[\"list-followup\"]"
      },
      "inputs": [
        {
          "intent": "actions.intent.OPTION",
          "rawInputs": [
            {
              "inputType": "TOUCH",
              "query": "Google Pixel"
            }
          ],
          "arguments": [
            {
              "name": "OPTION",
              "textValue": "SELECTION_KEY_GOOGLE_PIXEL"
            },
            {
              "name": "text",
              "rawText": "Google Pixel",
              "textValue": "Google Pixel"
            }
          ]
        }
      ],
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.ACCOUNT_LINKING"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          }
        ]
      },
      "isInSandbox": true,
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.WEB_BROWSER"
            },
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            }
          ]
        }
      ],
      "requestType": "SIMULATOR"
    }
  },
  "session": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA"
}

JSON

মনে রাখবেন যে নিচের JSON একটি ওয়েবহুক অনুরোধের বর্ণনা দেয়।

{
  "user": {
    "locale": "en-US",
    "lastSeen": "2019-08-06T07:37:53Z",
    "userVerificationStatus": "VERIFIED"
  },
  "conversation": {
    "conversationId": "ABwppHGcqunXh1M6IE0lu2sVqXdpJfdpC5FWMkMSXQskK1nzb4IkSUSRqQzoEr0Ly0z_G3mwyZlk5rFtd1w",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.OPTION",
      "rawInputs": [
        {
          "inputType": "TOUCH",
          "query": "Google Home"
        }
      ],
      "arguments": [
        {
          "name": "OPTION",
          "textValue": "SELECTION_KEY_GOOGLE_HOME"
        },
        {
          "name": "text",
          "rawText": "Google Home",
          "textValue": "Google Home"
        }
      ]
    }
  ],
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      },
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.ACCOUNT_LINKING"
      },
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      },
      {
        "name": "actions.capability.WEB_BROWSER"
      }
    ]
  },
  "isInSandbox": true,
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.WEB_BROWSER"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        }
      ]
    }
  ],
  "requestType": "SIMULATOR"
}
ছবি ৩. ক্যারোজেল উদাহরণ (স্মার্টফোন)

ক্যারোজেল অনুভূমিকভাবে স্ক্রল করে এবং একটি আইটেম বেছে নেওয়ার অনুমতি দেয়। তালিকা বেছে নেওয়ার বিকল্পের তুলনায়, এতে বড় টাইল আছে-যা আরও সমৃদ্ধ কন্টেন্ট দেখানোর অনুমতি দেয়। ক্যারোজেল তৈরি করে এমন টাইলগুলি ছবি সহ বেসিক কার্ডের মতোই। ক্যারোজেল থেকে কোনও আইটেম বেছে নিলে, তালিকা বেছে নেওয়ার মতো, উত্তর হিসেবে একটি চ্যাট বাবল জেনারেট হয়।

প্রপার্টি

ক্যারোজেল উত্তরের ধরন কনফিগার করার জন্য নিম্নলিখিত প্রয়োজনীয়তা ও ঐচ্ছিক প্রপার্টি আছে:

  • actions.capability.SCREEN_OUTPUT ক্ষমতা সহ সারফেসে কাজ করে।
  • ক্যারোজেল
    • সর্বাধিক দশটি টাইল।
    • কমপক্ষে দুটি টাইল।
    • প্লেন টেক্সট, Markdown কাজ করে না।
  • ক্যারোজেল টাইল
    • ছবি (ঐচ্ছিক)
      • ছবিটি ১২৮ ডিপি লম্বা x ২৩২ ডিপি চওড়া হতে হবে
      • ছবির অ্যাস্পেক্ট রেশিও যদি ছবির বাউন্ডিং বক্সের সাথে না মেলে, তাহলে ছবিটিকে দুই পাশে বার সহ কেন্দ্রে রাখা হয়
      • কোনও ছবির লিঙ্ক কাজ না করলে, তার পরিবর্তে প্লেসহোল্ডার ছবি ব্যবহার করা হয়
    • শীর্ষক (প্রয়োজনীয়)
      • বেসিক টেক্সট কার্ডের মতোই
      • শিরোনাম অনন্য হতে হবে (ভয়েস বেছে নেওয়ার সুবিধা দিতে)
    • বিবরণ (ঐচ্ছিক)
      • বেসিক টেক্সট কার্ডের মতো একই ফর্ম্যাটিং বিকল্প
      • সর্বাধিক ৪ লাইন
      • প্লেন টেক্সট, Markdown কাজ করে না।
  • ইন্টার‌্যাকশন
    • বাঁদিকে/ডানদিকে সোয়াইপ করুন: বিভিন্ন কার্ড দেখতে ক্যারোজেল স্লাইড করুন।
    • কার্ডে ট্যাপ করুন: কোনও আইটেমে ট্যাপ করলে, এলিমেন্টের শীর্ষক হিসেবে একই টেক্সট সহ একটি চ্যাট বাবল তৈরি হয়।
      • actions_intent_OPTION ইভেন্ট ম্যানেজ করে এমন টাচ ইনপুটের জন্য ইনটেন্ট থাকতে হবে।
    • ভয়েস/কীবোর্ড: কার্ডের নাম (যদি উল্লেখ করা থাকে) দিয়ে উত্তর দিলে, সেই আইটেম বেছে নেওয়ার মতোই কাজ করে।

নির্দেশিকা

ব্যবহারকারীকে বিভিন্ন বিকল্প দেখানোর জন্য ক্যারোজেল ভাল, তবে তাদের মধ্যে সরাসরি তুলনা করার প্রয়োজন নেই (তালিকার বিপরীতে)। সাধারণত, ক্যারোজেলের চেয়ে তালিকা ব্যবহার করা ভাল কারণ তালিকা ভিজ্যুয়ালি স্ক্যান করা এবং ভয়েসের মাধ্যমে ইন্ট্যার‍্যাক্ট করা সহজ।

আপনি যদি এমন আইটেম দিয়ে ক্যারোজেল তৈরি করতে চান যা ওয়েব পেজের সাথে লিঙ্ক করা থাকে, তাহলে আপনি এর পরিবর্তে ব্রাউজিং ক্যারোজেল তৈরি করতে পারেন।

আপনি কথোপকথন চালিয়ে যেতে চাইলে, আমরা ক্যারোজেলের নিচে সাজেশন চিপ যোগ করার সাজেশন দিই।

তালিকায় দেখানো বিকল্পগুলি সাজেশন চিপ হিসেবে কখনও রিপিট করবেন না। এই প্রসঙ্গে চিপ ব্যবহার করা হয় কথোপকথন পিভট করার জন্য (পছন্দ বেছে নেওয়ার জন্য নয়)।

তালিকার মতো, ক্যারোজেল কার্ডের সাথে থাকা চ্যাট বাবল হল অডিওর (TTS/SSML) সাবসেট। এখানে অডিও (TTS/SSML) ক্যারোজেলের প্রথম টাইলকে ইন্টিগ্রেট করে এবং আমরা ক্যারোজেল থেকে সব এলিমেন্ট পড়ার ব্যাপারেও নিরুৎসাহিত করি। প্রথম আইটেমটি এবং সেটি সেখানে থাকার কারণ উল্লেখ করা সবচেয়ে ভালো (যেমন, সবচেয়ে জনপ্রিয়, সবচেয়ে সম্প্রতি কেনা, বা সবচেয়ে বেশি আলোচিত)।

নমুনা কোড

বেছে নেওয়া আইটেম ম্যানেজ করা হচ্ছে

ব্যবহারকারী কোনও আইটেম বেছে নিলে, বেছে নেওয়া আইটেমের ভ্যালু আপনাকে আর্গুমেন্ট হিসেবে পাঠানো হয়। আর্গুমেন্ট ভ্যালুতে, আপনি বেছে নেওয়া আইটেমের জন্য key শনাক্তকারী পাবেন:

Node.js

app.intent('Carousel - OPTION', (conv, params, option) => {
  const SELECTED_ITEM_RESPONSES = {
    'SELECTION_KEY_ONE': 'You selected the first item',
    'SELECTION_KEY_GOOGLE_HOME': 'You selected the Google Home!',
    'SELECTION_KEY_GOOGLE_PIXEL': 'You selected the Google Pixel!',
  };
  conv.ask(SELECTED_ITEM_RESPONSES[option]);
  conv.ask('Which response would you like to see next?');
});

Java

@ForIntent("Carousel - OPTION")
public ActionResponse carouselSelected(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  String selectedItem = request.getSelectedOption();
  String response;

  if (selectedItem.equals("SELECTION_KEY_ONE")) {
    response = "You selected the first item";
  } else if (selectedItem.equals("SELECTION_KEY_GOOGLE_HOME")) {
    response = "You selected the Google Home!";
  } else if (selectedItem.equals("SELECTION_KEY_GOOGLE_PIXEL")) {
    response = "You selected the Google Pixel!";
  } else {
    response = "You did not select a valid item";
  }
  return responseBuilder.add(response).add("Which response would you like to see next?").build();
}

Node.js

app.intent('actions.intent.OPTION', (conv, params, option) => {
  const SELECTED_ITEM_RESPONSES = {
    'SELECTION_KEY_ONE': 'You selected the first item',
    'SELECTION_KEY_GOOGLE_HOME': 'You selected the Google Home!',
    'SELECTION_KEY_GOOGLE_PIXEL': 'You selected the Google Pixel!',
  };
  conv.ask(SELECTED_ITEM_RESPONSES[option]);
  conv.ask('Which response would you like to see next?');
});

Java

  @ForIntent("actions.intent.OPTION")
  public ActionResponse listSelected(ActionRequest request) {
    ResponseBuilder responseBuilder = getResponseBuilder(request);
    String selectedItem = request.getSelectedOption();
    String response;

    if (selectedItem.equals("SELECTION_KEY_ONE")) {
      response = "You selected the first item";
    } else if (selectedItem.equals("SELECTION_KEY_GOOGLE_HOME")) {
      response = "You selected the Google Home!";
    } else if (selectedItem.equals("SELECTION_KEY_GOOGLE_PIXEL")) {
      response = "You selected the Google Pixel!";
    } else {
      response = "You did not select a valid item";
    }
    return responseBuilder.add(response).add("Which response would you like to see next?").build();
  }

  public ActionResponse carousel(ActionRequest request) {
    ResponseBuilder responseBuilder = getResponseBuilder(request);
    if (!request.hasCapability(Capability.SCREEN_OUTPUT.getValue())) {
      return responseBuilder
          .add("Sorry, try ths on a screen device or select the phone surface in the simulator.")
          .add("Which response would you like to see next?")
          .build();
    }

    responseBuilder
        .add("This is a carousel example.")
        .add(
            new SelectionCarousel()
                .setItems(
                    Arrays.asList(
                        new CarouselSelectCarouselItem()
                            .setTitle("Title of First List Item")
                            .setDescription("This is a description of a list item.")
                            .setImage(
                                new Image()
                                    .setUrl(
                                        "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                    .setAccessibilityText("Image alternate text"))
                            .setOptionInfo(
                                new OptionInfo()
                                    .setSynonyms(
                                        Arrays.asList("synonym 1", "synonym 2", "synonym 3"))
                                    .setKey("SELECTION_KEY_ONE")),
                        new CarouselSelectCarouselItem()
                            .setTitle("Google Home")
                            .setDescription(
                                "Google Home is a voice-activated speaker powered by the Google Assistant.")
                            .setImage(
                                new Image()
                                    .setUrl(
                                        "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                    .setAccessibilityText("Google Home"))
                            .setOptionInfo(
                                new OptionInfo()
                                    .setSynonyms(
                                        Arrays.asList(
                                            "Google Home Assistant",
                                            "Assistant on the Google Home"))
                                    .setKey("SELECTION_KEY_GOOGLE_HOME")),
                        new CarouselSelectCarouselItem()
                            .setTitle("Google Pixel")
                            .setDescription("Pixel. Phone by Google.")
                            .setImage(
                                new Image()
                                    .setUrl(
                                        "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png")
                                    .setAccessibilityText("Google Pixel"))
                            .setOptionInfo(
                                new OptionInfo()
                                    .setSynonyms(
                                        Arrays.asList("Google Pixel XL", "Pixel", "Pixel XL"))
                                    .setKey("SELECTION_KEY_GOOGLE_PIXEL")))));
    return responseBuilder.build();
  }
}

JSON

মনে রাখবেন যে নিচের JSON একটি ওয়েবহুক অনুরোধের বর্ণনা দেয়।

{
  "responseId": "fd9c865a-e628-4e89-ae72-14a002361244-21947381",
  "queryResult": {
    "queryText": "actions_intent_OPTION",
    "action": "Carousel.Carousel-custom",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Webhook failed for intent: Carousel - OPTION",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Webhook failed for intent: Carousel - OPTION"
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_account_linking"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/google_assistant_input_type_touch"
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/carousel-followup",
        "lifespanCount": 1
      },
      {
        "name": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA/contexts/actions_intent_option",
        "parameters": {
          "OPTION": "SELECTION_KEY_ONE",
          "text": "Title of First Carousel Item"
        }
      }
    ],
    "intent": {
      "name": "projects/df-responses-kohler/agent/intents/89289810-95e0-4dfd-a26a-b49a2ac51406",
      "displayName": "Carousel - OPTION"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "user": {
        "locale": "en-US",
        "lastSeen": "2019-08-04T23:59:37Z",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA",
        "type": "ACTIVE",
        "conversationToken": "[\"carousel-followup\"]"
      },
      "inputs": [
        {
          "intent": "actions.intent.OPTION",
          "rawInputs": [
            {
              "inputType": "TOUCH",
              "query": "Title of First Carousel Item"
            }
          ],
          "arguments": [
            {
              "name": "OPTION",
              "textValue": "SELECTION_KEY_ONE"
            },
            {
              "name": "text",
              "rawText": "Title of First Carousel Item",
              "textValue": "Title of First Carousel Item"
            }
          ]
        }
      ],
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "name": "actions.capability.ACCOUNT_LINKING"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          },
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          }
        ]
      },
      "isInSandbox": true,
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.WEB_BROWSER"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            },
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            }
          ]
        }
      ],
      "requestType": "SIMULATOR"
    }
  },
  "session": "projects/df-responses-kohler/agent/sessions/ABwppHHsebncupHK11oKhsCTgyH96GRNYH-xpeeMTqb-cvOxbd67QenbRlZM4bGAIB8_KXdTfI7-7lYVKN1ovAhCaA"
}

JSON

মনে রাখবেন যে নিচের JSON একটি ওয়েবহুক অনুরোধের বর্ণনা দেয়।

{
  "user": {
    "locale": "en-US",
    "lastSeen": "2019-08-06T07:37:15Z",
    "userVerificationStatus": "VERIFIED"
  },
  "conversation": {
    "conversationId": "ABwppHGcqunXh1M6IE0lu2sVqXdpJfdpC5FWMkMSXQskK1nzb4IkSUSRqQzoEr0Ly0z_G3mwyZlk5rFtd1w",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.OPTION",
      "rawInputs": [
        {
          "inputType": "TOUCH",
          "query": "Google Home"
        }
      ],
      "arguments": [
        {
          "name": "OPTION",
          "textValue": "SELECTION_KEY_GOOGLE_HOME"
        },
        {
          "name": "text",
          "rawText": "Google Home",
          "textValue": "Google Home"
        }
      ]
    }
  ],
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      },
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.WEB_BROWSER"
      },
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      },
      {
        "name": "actions.capability.ACCOUNT_LINKING"
      }
    ]
  },
  "isInSandbox": true,
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.WEB_BROWSER"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        }
      ]
    }
  ],
  "requestType": "SIMULATOR"
}