সাহায্যকারীর অভিপ্রায় (ডায়ালগফ্লো)

Dialogflow এ অন্বেষণ করুন

ডায়ালগফ্লোতে আমাদের সাহায্যকারীদের নমুনা আমদানি করতে অবিরত ক্লিক করুন৷ তারপরে, নমুনা স্থাপন এবং পরীক্ষা করতে নীচের পদক্ষেপগুলি অনুসরণ করুন:

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

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

ব্যবহার ওভারভিউ

ডায়ালগফ্লো এবং অ্যাকশন SDK-এর সাথে সাহায্যকারী ব্যবহার করার সাধারণ প্রক্রিয়া ডায়ালগফ্লো এবং অ্যাকশন SDK-এর জন্য নীচে বর্ণনা করা হয়েছে। প্রতিটি সাহায্যকারী সম্পর্কে আরও তথ্যের জন্য নির্দিষ্ট সাহায্যকারী বিভাগগুলি দেখুন।

ডায়ালগফ্লো

Node.js

  1. উপযুক্ত সহায়ক বস্তুর সাথে conv.ask() কল করুন। আপনি যখন একটি হেল্পার ফাংশন কল করেন, তখন ক্লায়েন্ট লাইব্রেরি সহকারীকে একটি প্রতিক্রিয়া পাঠায় যাতে সংশ্লিষ্ট সাহায্যকারীর অভিপ্রায় থাকে। অভিপ্রায়ের উপর ভিত্তি করে, সহকারী সংশ্লিষ্ট সাহায্যকারীর জন্য ডায়ালগটি চালাতে জানে।
  2. একটি ডায়ালগফ্লো অভিপ্রায় ঘোষণা করুন যা একটি ইভেন্টকে নির্দিষ্ট করে যা সাহায্যকারী অভিপ্রায়গুলির একটির সাথে মিলে যায়৷ সমর্থিত ইভেন্টগুলির একটি তালিকার জন্য সহায়ক অভিপ্রায় বিভাগটি দেখুন। এই অভিপ্রায়ের জন্য কোন ব্যবহারকারীর বাক্যাংশ বলার প্রয়োজন নেই, কারণ ইভেন্টটি বরখাস্ত করা হলে এটি সর্বদা ট্রিগার হয় (যখন সহকারী সাহায্যকারীর কাজ শেষ করে)।
  3. যখন সহকারী পরবর্তী অনুরোধে সাহায্যকারীর ফলাফল আপনার পূরণের জন্য ফেরত দেয়, তখন সংশ্লিষ্ট ডায়ালগফ্লো অভিপ্রায় ট্রিগার হয় এবং আপনি অভিপ্রায়টি স্বাভাবিকভাবে পরিচালনা করেন।

JSON

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

অ্যাকশন SDK

Node.js

  1. উপযুক্ত পরামিতি সহ কল ask । একটি হেল্পার ফাংশন সহকারীকে সাহায্যকারীর অভিপ্রায়ে বর্ণিত উদ্দেশ্যগুলির একটি পূরণ করতে বলে। আপনি যখন একটি সহায়ক ফাংশন কল করেন, তখন ক্লায়েন্ট লাইব্রেরি সহকারীকে একটি প্রতিক্রিয়া পাঠায় যাতে এই উদ্দেশ্যগুলির মধ্যে একটি থাকে। অভিপ্রায়ের উপর ভিত্তি করে, সহকারী সংশ্লিষ্ট সাহায্যকারীর জন্য ডায়ালগটি চালাতে জানে।
  2. যখন সহকারী পরবর্তী অনুরোধে সাহায্যকারীর ফলাফল আপনার পূরণের জন্য ফেরত দেয়, তখন আপনি অনুরোধে সংশ্লিষ্ট অভিপ্রায় পাবেন। এটি আপনাকে সনাক্ত করতে দেয় যে একজন সাহায্যকারী একটি ফলাফল ফিরিয়ে দিয়েছে। আপনার প্রয়োজনীয় ডেটা পেতে সাহায্যকারীর জন্য সংশ্লিষ্ট গেটার ফাংশনটি ব্যবহার করুন।

JSON

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

সাহায্যকারী উদ্দেশ্য

নিম্নলিখিত সারণীতে সমর্থিত অভিপ্রায়গুলি বর্ণনা করা হয়েছে যা আপনি সহকারীকে পূরণ করার জন্য অনুরোধ করতে পারেন৷ আপনি যদি ডায়ালগফ্লো ব্যবহার করেন তবে আপনাকে একটি ডায়ালগফ্লো অভিপ্রায় তৈরি করতে হবে যা সহায়ক অভিপ্রায়ের জন্য সংশ্লিষ্ট ইভেন্টটি নির্দিষ্ট করে।

অভিপ্রায়ের নাম ডায়ালগফ্লো ইভেন্টের নাম ব্যবহার
actions.intent.PERMISSION actions_intent_PERMISSION ব্যবহারকারীর পুরো নাম, মোটা অবস্থান, বা সুনির্দিষ্ট অবস্থান, বা সমস্ত 3 প্রাপ্ত করুন।
actions.intent.OPTION actions_intent_OPTION একটি তালিকা বা ক্যারোজেল UI থেকে নির্বাচিত আইটেমটি গ্রহণ করুন৷ অথবা, যদি ব্যবহারকারী তালিকা বা ক্যারোজেল UI থেকে নির্বাচন না করে, তাহলে তালিকার কী বা ক্যারোজেল UI এর সাথে মেলে এমন বক্তৃতা বা পাঠ্য ইনপুট গ্রহণ করুন।
actions.intent.DATETIME actions_intent_DATETIME ব্যবহারকারীর কাছ থেকে একটি তারিখ এবং সময় ইনপুট প্রাপ্ত.
actions.intent.SIGN_IN actions_intent_SIGN_IN একটি ব্যবহারকারীর অ্যাকাউন্ট লিঙ্ক করার জন্য একটি অ্যাকাউন্ট লিঙ্কিং প্রবাহের অনুরোধ করে৷
actions.intent.PLACE actions_intent_PLACE ব্যবহারকারীর কাছ থেকে একটি ঠিকানা বা সংরক্ষিত অবস্থান পান।
actions.intent.CONFIRMATION actions_intent_CONFIRMATION ব্যবহারকারীর কাছ থেকে একটি নিশ্চিতকরণ পান (উদাহরণস্বরূপ, হ্যাঁ বা না প্রশ্নের উত্তর)।

নিম্নলিখিত বিভাগগুলি উপলব্ধ সাহায্যকারী এবং সংশ্লিষ্ট অভিপ্রায় বর্ণনা করে যা আপনাকে সাহায্যকারী ব্যবহার করার জন্য অনুরোধ করতে হবে।

ব্যবহারকারীর তথ্য

আপনি এই সাহায্যকারীর সাথে নিম্নলিখিত ব্যবহারকারীর তথ্য পেতে পারেন:

  • প্রদর্শনের নাম
  • দেওয়া নাম
  • পরিবারের নাম
  • মোটা ডিভাইসের অবস্থান (জিপ কোড এবং শহর)
  • সঠিক ডিভাইসের অবস্থান (সমন্বয় এবং রাস্তার ঠিকানা)

সাহায্যকারীকে ডাকছে

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে আপনি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীকে কল করতে পারেন। JSON স্নিপেটগুলি সংশ্লিষ্ট ওয়েবহুকের প্রতিক্রিয়া দেখায়।

Node.js

app.intent('Permission', (conv) => {
  const permissions = ['NAME'];
  let context = 'To address you by name';
  // Location permissions only work for verified users
  // https://developers.google.com/actions/assistant/guest-users
  if (conv.user.verification === 'VERIFIED') {
    // Could use DEVICE_COARSE_LOCATION instead for city, zip code
    permissions.push('DEVICE_PRECISE_LOCATION');
    context += ' and know your location';
  }
  const options = {
    context,
    permissions,
  };
  conv.ask(new Permission(options));
});

জাভা

@ForIntent("Permission")
public ActionResponse getPermission(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  String[] permissions = new String[] {ConstantsKt.PERMISSION_NAME};
  String context = "To address you by name";
  // Location permissions only work for verified users
  // https://developers.google.com/actions/assistant/guest-users
  if (request.getUser().getUserVerificationStatus().equals("VERIFIED")) {
    // Could use PERMISSION_DEVICE_COARSE_LOCATION instead for city, zip code
    permissions =
        new String[] {
          ConstantsKt.PERMISSION_NAME, ConstantsKt.PERMISSION_DEVICE_PRECISE_LOCATION
        };
  }
  responseBuilder
      .add("PLACEHOLDER")
      .add(new Permission().setPermissions(permissions).setContext(context));

  return responseBuilder.build();
}

Node.js

const permissions = ['NAME'];
let context = 'To address you by name';
// Location permissions only work for verified users
// https://developers.google.com/actions/assistant/guest-users
if (conv.user.verification === 'VERIFIED') {
  // Could use DEVICE_COARSE_LOCATION instead for city, zip code
  permissions.push('DEVICE_PRECISE_LOCATION');
  context += ' and know your location';
}
const options = {
  context,
  permissions,
};
conv.ask(new Permission(options));

জাভা

ResponseBuilder responseBuilder = getResponseBuilder(request);
String[] permissions = new String[] {ConstantsKt.PERMISSION_NAME};
String context = "To address you by name";
// Location permissions only work for verified users
// https://developers.google.com/actions/assistant/guest-users
if (request.getUser().getUserVerificationStatus().equals("VERIFIED")) {
  // Could use PERMISSION_DEVICE_COARSE_LOCATION instead for city, zip code
  permissions =
      new String[] {
        ConstantsKt.PERMISSION_NAME, ConstantsKt.PERMISSION_DEVICE_PRECISE_LOCATION
      };
}
responseBuilder
    .add("PLACEHOLDER")
    .add(new Permission().setPermissions(permissions).setContext(context));

return responseBuilder.build();

JSON

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

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.PERMISSION",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
          "optContext": "To address you by name and know your location",
          "permissions": [
            "NAME",
            "DEVICE_PRECISE_LOCATION"
          ]
        }
      }
    }
  }
}

JSON

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

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.PERMISSION",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
            "optContext": "To address you by name and know your location",
            "permissions": [
              "NAME",
              "DEVICE_PRECISE_LOCATION"
            ]
          }
        }
      ]
    }
  ]
}

সাহায্যকারীর ফলাফল পাওয়া

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীর ফলাফল অ্যাক্সেস করতে হয়। JSON স্নিপেট অনুরোধের প্রতিনিধিত্ব করে, যাতে আপনার পরিপূর্ণতা পাওয়া সাহায্যকারীর ফলাফল থাকে।

Node.js

app.intent('Permission Handler', (conv, params, confirmationGranted) => {
  // Also, can access latitude and longitude
  // const { latitude, longitude } = location.coordinates;
  const {location} = conv.device;
  const {name} = conv.user;
  if (confirmationGranted && name && location) {
    conv.ask(`Okay ${name.display}, I see you're at ` +
      `${location.formattedAddress}`);
  } else {
    conv.ask(`Looks like I can't get your information.`);
  }
  conv.ask(`Would you like to try another helper?`);
  conv.ask(new Suggestions([
    'Confirmation',
    'DateTime',
    'Place',
  ]));
});

জাভা

@ForIntent("Permission Handler")
public ActionResponse handlePermission(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  Location location = request.getDevice().getLocation();
  String name = request.getUser().getProfile().getDisplayName();

  if (request.isPermissionGranted()) {
    responseBuilder.add("Okay " + name + ", I see you're at " + location.getFormattedAddress());
  } else {
    responseBuilder.add("Looks like I can't get your information");
  }
  responseBuilder
      .add("Would you like to try another helper?")
      .addSuggestions(new String[] {"Confirmation", "DateTime", "Place"});

  return responseBuilder.build();
}

Node.js

app.intent('actions.intent.PERMISSION', (conv, confirmationGranted) => {
  // Also, can access latitude and longitude
  // const { latitude, longitude } = location.coordinates;
  const {location} = conv.device;
  const {name} = conv.user;
  if (confirmationGranted && name && location) {
    conv.ask(`Okay ${name.display}, I see you're at ` +
      `${location.formattedAddress}`);
  } else {
    conv.ask(`Looks like I can't get your information.`);
  }
  conv.ask(`Would you like to try another helper?`);
  conv.ask(new Suggestions([
    'Confirmation',
    'DateTime',
    'Place',
  ]));
});

জাভা

@ForIntent("actions.intent.PERMISSION")
public ActionResponse handlePermission(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  Location location = request.getDevice().getLocation();
  String name = request.getUser().getProfile().getDisplayName();

  if (request.isPermissionGranted()) {
    responseBuilder.add("Okay " + name + ", I see you're at " + location.getFormattedAddress());
  } else {
    responseBuilder.add("Looks like I can't get your information");
  }
  responseBuilder
      .add("Would you like to try another helper?")
      .addSuggestions(new String[] {"Confirmation", "DateTime", "Place"});

  return responseBuilder.build();
}

JSON

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

{
  "responseId": "f26883c9-0283-4827-85bf-533f4442b4f9-712767ed",
  "queryResult": {
    "queryText": "actions_intent_PERMISSION",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Webhook failed for intent: Permission Handler",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Webhook failed for intent: Permission Handler"
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHGu7m_m6bTsKuLb6noyG_o-9BMSf8J9cfY8dpJIPN_hHT79qfqRrZPtyx515K-sl9SU8Jy3auH6pLmy99Y/contexts/actions_capability_account_linking"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHGu7m_m6bTsKuLb6noyG_o-9BMSf8J9cfY8dpJIPN_hHT79qfqRrZPtyx515K-sl9SU8Jy3auH6pLmy99Y/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHGu7m_m6bTsKuLb6noyG_o-9BMSf8J9cfY8dpJIPN_hHT79qfqRrZPtyx515K-sl9SU8Jy3auH6pLmy99Y/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHGu7m_m6bTsKuLb6noyG_o-9BMSf8J9cfY8dpJIPN_hHT79qfqRrZPtyx515K-sl9SU8Jy3auH6pLmy99Y/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHGu7m_m6bTsKuLb6noyG_o-9BMSf8J9cfY8dpJIPN_hHT79qfqRrZPtyx515K-sl9SU8Jy3auH6pLmy99Y/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHGu7m_m6bTsKuLb6noyG_o-9BMSf8J9cfY8dpJIPN_hHT79qfqRrZPtyx515K-sl9SU8Jy3auH6pLmy99Y/contexts/google_assistant_input_type_keyboard"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHGu7m_m6bTsKuLb6noyG_o-9BMSf8J9cfY8dpJIPN_hHT79qfqRrZPtyx515K-sl9SU8Jy3auH6pLmy99Y/contexts/actions_intent_permission",
        "parameters": {
          "PERMISSION": true,
          "text": "yes"
        }
      }
    ],
    "intent": {
      "name": "projects/df-helpers-kohler/agent/intents/6475b0ef-dd52-4afa-a1b9-7a19e7e93a80",
      "displayName": "Permission Handler"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "user": {
        "profile": {
          "displayName": "Sachit Mishra",
          "givenName": "Sachit",
          "familyName": "Mishra"
        },
        "permissions": [
          "NAME",
          "DEVICE_PRECISE_LOCATION"
        ],
        "locale": "en-US",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHGu7m_m6bTsKuLb6noyG_o-9BMSf8J9cfY8dpJIPN_hHT79qfqRrZPtyx515K-sl9SU8Jy3auH6pLmy99Y",
        "type": "ACTIVE",
        "conversationToken": "[]"
      },
      "inputs": [
        {
          "intent": "actions.intent.PERMISSION",
          "rawInputs": [
            {
              "inputType": "KEYBOARD",
              "query": "yes"
            }
          ],
          "arguments": [
            {
              "name": "PERMISSION",
              "boolValue": true,
              "textValue": "true"
            },
            {
              "name": "text",
              "rawText": "yes",
              "textValue": "yes"
            }
          ]
        }
      ],
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.ACCOUNT_LINKING"
          },
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          }
        ]
      },
      "device": {
        "location": {
          "coordinates": {
            "latitude": 37.42241550000001,
            "longitude": -122.0840805
          },
          "formattedAddress": "Google Building 40 1600 Amphitheatre Parkway, Mountain View, California 94043",
          "zipCode": "94043",
          "city": "Mountain View"
        }
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.WEB_BROWSER"
            },
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/df-helpers-kohler/agent/sessions/ABwppHGu7m_m6bTsKuLb6noyG_o-9BMSf8J9cfY8dpJIPN_hHT79qfqRrZPtyx515K-sl9SU8Jy3auH6pLmy99Y"
}

JSON

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

{
  "user": {
    "profile": {
      "displayName": "Sachit Mishra",
      "givenName": "Sachit",
      "familyName": "Mishra"
    },
    "permissions": [
      "DEVICE_PRECISE_LOCATION",
      "NAME"
    ],
    "locale": "en-US",
    "userVerificationStatus": "VERIFIED"
  },
  "conversation": {
    "conversationId": "ABwppHEcidO2jguO4hS8maDeMVx8aasSCcBWZHrF3EmOMIaWRP9qF0BcACistiIoeyiSNTW6KD_tqN_U-xAIOXhPvA",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.PERMISSION",
      "rawInputs": [
        {
          "inputType": "KEYBOARD",
          "query": "yes"
        }
      ],
      "arguments": [
        {
          "name": "PERMISSION",
          "boolValue": true,
          "textValue": "true"
        },
        {
          "name": "text",
          "rawText": "yes",
          "textValue": "yes"
        }
      ]
    }
  ],
  "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"
      }
    ]
  },
  "device": {
    "location": {
      "coordinates": {
        "latitude": 37.4197238,
        "longitude": -122.08212759999999
      },
      "formattedAddress": "Google Building 45 1585 Charleston Road, Mountain View, California 94043",
      "zipCode": "94043",
      "city": "Mountain View"
    }
  },
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.WEB_BROWSER"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        }
      ]
    }
  ]
}

উপরের স্নিপেটটি দেখায় কিভাবে ব্যবহারকারী আপনাকে তথ্য দিয়েছে কিনা তা পরীক্ষা করতে হবে এবং তারপরে ডেটা অ্যাক্সেস করতে হবে।

একবার আপনি ব্যবহারকারীর তথ্য পেয়ে গেলে, আমরা সুপারিশ করি যে আপনি এই তথ্যটি ধরে রাখুন, তাই আপনাকে আর জিজ্ঞাসা করতে হবে না। আপনি কথোপকথন জুড়ে ব্যবহারকারীর তথ্য সংরক্ষণ করতে ব্যবহারকারীর স্টোরেজ ব্যবহার করতে পারেন। UserStorage কার্যকরী দেখতে Node.js এবং Java- তে আমাদের নাম সাইকিক নমুনা দেখুন।

সাহায্যকারীকে ডাকছে

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে আপনি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীকে কল করতে পারেন। JSON স্নিপেটগুলি সংশ্লিষ্ট ওয়েবহুকের প্রতিক্রিয়া দেখায়।

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',
        }),
      },
    },
  }));
});

জাভা

@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',
      }),
    },
  },
}));

জাভা

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

আপনি একটি তালিকা বা ক্যারোজেল UI প্রদর্শন করতে পারেন এবং actions.intent.OPTION অভিপ্রায় সহ ব্যবহারকারীর কাছ থেকে নির্বাচিত বিকল্পটি পেতে পারেন।

সাহায্যকারীর ফলাফল পাওয়া

নিম্নলিখিত কোড উদাহরণগুলি দেখায় কিভাবে ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীর ফলাফল অ্যাক্সেস করতে হয়। JSON স্নিপেট অনুরোধের প্রতিনিধিত্ব করে, যাতে আপনার পরিপূর্ণতা পাওয়া সাহায্যকারীর ফলাফল থাকে।

নিম্নলিখিত স্নিপেটগুলি দেখায় যে ব্যবহারকারী কোন বিকল্পটি নির্বাচন করেছেন তা কীভাবে পরীক্ষা করবেন।

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?');
});

জাভা

@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?');
});

জাভা

  @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.intent.DATETIME উদ্দেশ্য পূরণের অনুরোধ করে ব্যবহারকারীদের কাছ থেকে একটি তারিখ এবং সময় পেতে পারেন।

সাহায্যকারীকে ডাকছে

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে আপনি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীকে কল করতে পারেন। JSON স্নিপেটগুলি সংশ্লিষ্ট ওয়েবহুকের প্রতিক্রিয়া দেখায়।

DateTime অনুমতি তৈরি করার সময় options অবজেক্ট ব্যবহার করে ব্যবহারকারীকে তারিখ এবং সময় জিজ্ঞাসা করার সময় আপনি কাস্টম প্রম্পট নির্দিষ্ট করতে পারেন।

Node.js

app.intent('Date Time', (conv) => {
  const options = {
    prompts: {
      initial: 'When would you like to schedule the appointment?',
      date: 'What day was that?',
      time: 'What time works for you?',
    },
  };
  conv.ask(new DateTime(options));
});

জাভা

@ForIntent("Date Time")
public ActionResponse getDateTime(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);

  responseBuilder
      .add("PLACEHOLDER")
      .add(
          new DateTimePrompt()
              .setDateTimePrompt("When would you like to schedule the appointment?")
              .setDatePrompt("What day was that?")
              .setTimePrompt("What time works for you?"));
  return responseBuilder.build();
}

Node.js

const options = {
  prompts: {
    initial: 'When would you like to schedule the appointment?',
    date: 'What day was that?',
    time: 'What time works for you?',
  },
};
conv.ask(new DateTime(options));

জাভা

ResponseBuilder responseBuilder = getResponseBuilder(request);

responseBuilder
    .add("PLACEHOLDER")
    .add(
        new DateTimePrompt()
            .setDateTimePrompt("When would you like to schedule the appointment?")
            .setDatePrompt("What day was that?")
            .setTimePrompt("What time works for you?"));
return responseBuilder.build();

JSON

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

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.DATETIME",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.DateTimeValueSpec",
          "dialogSpec": {
            "requestDatetimeText": "When would you like to schedule the appointment?",
            "requestDateText": "What day was that?",
            "requestTimeText": "What time works for you?"
          }
        }
      }
    }
  }
}

JSON

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

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.DATETIME",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.DateTimeValueSpec",
            "dialogSpec": {
              "requestDatetimeText": "When would you like to schedule the appointment?",
              "requestDateText": "What day was that?",
              "requestTimeText": "What time works for you?"
            }
          }
        }
      ]
    }
  ]
}

সাহায্যকারীর ফলাফল পাওয়া

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীর ফলাফল অ্যাক্সেস করতে হয়। JSON স্নিপেট অনুরোধের প্রতিনিধিত্ব করে, যাতে আপনার পরিপূর্ণতা পাওয়া সাহায্যকারীর ফলাফল থাকে।

নীচের স্নিপেটটি দেখায় যে কীভাবে ব্যবহারকারী অ্যাক্সেস মঞ্জুর করেছেন এবং কীভাবে ডেটা অ্যাক্সেস করবেন তা পরীক্ষা করবেন।

Node.js

app.intent('Date Time Handler', (conv, params, datetime) => {
  const {month, day} = datetime.date;
  const {hours, minutes} = datetime.time;
  conv.ask(`<speak>` +
      `Great, we will see you on ` +
      `<say-as interpret-as="date" format="dm">${day}-${month}</say-as>` +
      `<say-as interpret-as="time" format="hms12" detail="2">${hours}` +
      `:${minutes || '00'}</say-as>` +
      `</speak>`);
  conv.ask('Would you like to try another helper?');
  conv.ask(new Suggestions([
    'Confirmation',
    'Permission',
    'Place',
  ]));
});

জাভা

@ForIntent("Date Time Handler")
public ActionResponse handleDateTime(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);

  DateTime dateTimeValue = request.getDateTime();
  Integer day = dateTimeValue.getDate().getDay();
  Integer month = dateTimeValue.getDate().getMonth();
  Integer hours = dateTimeValue.getTime().getHours();
  Integer minutes = dateTimeValue.getTime().getMinutes();
  String minutesStr = (minutes != null) ? String.valueOf(minutes) : "00";
  responseBuilder.add(
      "<speak>"
          + "Great, we will see you on "
          + "<say-as interpret-as=\"date\" format=\"dm\">"
          + day
          + "-"
          + month
          + "</say-as>"
          + "<say-as interpret-as=\"time\" format=\"hms12\" detail=\"2\">"
          + hours
          + ":"
          + minutesStr
          + "</say-as>"
          + "</speak>");
  responseBuilder
      .add("Would you like to try another helper?")
      .addSuggestions(new String[] {"Confirmation", "Permission", "Place"});
  return responseBuilder.build();
}

Node.js

app.intent('actions.intent.DATETIME', (conv) => {
  const datetime = conv.arguments.get('DATETIME');
  const {month, day} = datetime.date;
  const {hours, minutes} = datetime.time;
  conv.ask(`<speak>` +
      `Great, we will see you on ` +
      `<say-as interpret-as="date" format="dm">${day}-${month}</say-as>` +
      `<say-as interpret-as="time" format="hms12" detail="2">${hours}` +
      `:${minutes || '00'}</say-as>` +
      `</speak>`);
  conv.ask('Would you like to try another helper?');
  conv.ask(new Suggestions([
    'Confirmation',
    'Permission',
    'Place',
  ]));
});

জাভা

@ForIntent("actions.intent.DATETIME")
public ActionResponse datetimeHandler(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);

  DateTime dateTimeValue = request.getDateTime();
  Integer day = dateTimeValue.getDate().getDay();
  Integer month = dateTimeValue.getDate().getMonth();
  Integer hours = dateTimeValue.getTime().getHours();
  Integer minutes = dateTimeValue.getTime().getMinutes();
  String minutesStr = (minutes != null) ? String.valueOf(minutes) : "00";
  responseBuilder.add(
      "<speak>"
          + "Great, we will see you on "
          + "<say-as interpret-as=\"date\" format=\"dm\">"
          + day
          + "-"
          + month
          + "</say-as>"
          + "<say-as interpret-as=\"time\" format=\"hms12\" detail=\"2\">"
          + hours
          + ":"
          + minutesStr
          + "</say-as>"
          + "</speak>");
  responseBuilder
      .add("Would you like to try another helper?")
      .addSuggestions(new String[] {"Confirmation", "Permission", "Place"});
  return responseBuilder.build();
}

JSON

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

{
  "responseId": "2b0a039d-b033-4256-bd8a-ebb1f0ad90b4-712767ed",
  "queryResult": {
    "queryText": "actions_intent_DATETIME",
    "action": "DateTime.DateTime-custom",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Webhook failed for intent: Date Time Handler",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Webhook failed for intent: Date Time Handler"
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY/contexts/actions_capability_account_linking"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY/contexts/google_assistant_input_type_keyboard"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY/contexts/datetime-followup",
        "lifespanCount": 1
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY/contexts/actions_intent_datetime",
        "parameters": {
          "DATETIME": "2019-08-14T10:30:00",
          "text": "1030am"
        }
      }
    ],
    "intent": {
      "name": "projects/df-helpers-kohler/agent/intents/3c145f18-32fe-40aa-842e-b99ab28c3f2a",
      "displayName": "Date Time Handler"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "user": {
        "locale": "en-US",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY",
        "type": "ACTIVE",
        "conversationToken": "[\"datetime-followup\"]"
      },
      "inputs": [
        {
          "intent": "actions.intent.DATETIME",
          "rawInputs": [
            {
              "inputType": "KEYBOARD",
              "query": "1030am"
            }
          ],
          "arguments": [
            {
              "name": "DATETIME",
              "datetimeValue": {
                "date": {
                  "year": 2019,
                  "month": 8,
                  "day": 14
                },
                "time": {
                  "hours": 10,
                  "minutes": 30
                }
              }
            },
            {
              "name": "text",
              "rawText": "1030am",
              "textValue": "1030am"
            }
          ]
        }
      ],
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "name": "actions.capability.ACCOUNT_LINKING"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          }
        ]
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            },
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.WEB_BROWSER"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/df-helpers-kohler/agent/sessions/ABwppHHnU7RSIOU994H8vd2wLYXbnoIAs3rk-4zUeiRAaX3aJ0dp68Y50MgvddE2stYuI6Hlu-MfWO75Gz76EeY"
}

JSON

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

{
  "user": {
    "profile": {
      "displayName": "Sachit Mishra",
      "givenName": "Sachit",
      "familyName": "Mishra"
    },
    "permissions": [
      "DEVICE_PRECISE_LOCATION",
      "NAME"
    ],
    "locale": "en-US",
    "userVerificationStatus": "VERIFIED"
  },
  "conversation": {
    "conversationId": "ABwppHEcidO2jguO4hS8maDeMVx8aasSCcBWZHrF3EmOMIaWRP9qF0BcACistiIoeyiSNTW6KD_tqN_U-xAIOXhPvA",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.DATETIME",
      "rawInputs": [
        {
          "inputType": "KEYBOARD",
          "query": "430pm"
        }
      ],
      "arguments": [
        {
          "name": "DATETIME",
          "datetimeValue": {
            "date": {
              "year": 2019,
              "month": 8,
              "day": 18
            },
            "time": {
              "hours": 16,
              "minutes": 30
            }
          }
        },
        {
          "name": "text",
          "rawText": "430pm",
          "textValue": "430pm"
        }
      ]
    }
  ],
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.ACCOUNT_LINKING"
      },
      {
        "name": "actions.capability.WEB_BROWSER"
      },
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      },
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      }
    ]
  },
  "device": {
    "location": {
      "coordinates": {
        "latitude": 37.4197238,
        "longitude": -122.08212759999999
      },
      "formattedAddress": "Google Building 45 1585 Charleston Road, Mountain View, California 94043",
      "zipCode": "94043",
      "city": "Mountain View"
    }
  },
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.WEB_BROWSER"
        }
      ]
    }
  ]
}

অ্যাকাউন্ট সাইন ইন

actions.intent.SIGN_IN অভিপ্রায় পূরণের অনুরোধ করে আপনি ব্যবহারকারীদের তাদের অ্যাকাউন্টে সাইন-ইন করতে পারেন যা আপনার পরিষেবার সাথে যুক্ত। ব্যবহারকারীরা OAuth এর মাধ্যমে ভয়েসের মাধ্যমে সাইন-ইন করতে পারবেন না।

সাহায্যকারীকে ডাকছে

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে আপনি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীকে কল করতে পারেন। JSON স্নিপেটগুলি সংশ্লিষ্ট ওয়েবহুকের প্রতিক্রিয়া দেখায়।

Node.js

const {SignIn} = require('actions-on-google');
app.intent('ask_for_sign_in_detail', (conv) => {
  conv.ask(new SignIn());
});

জাভা

ResponseBuilder responseBuilder = getResponseBuilder(request);
return responseBuilder.add("This is the SignIn helper intent").add(new SignIn()).build();

JSON

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.SIGN_IN",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.SignInValueSpec"
        }
      }
    }
  }
}

JSON

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.SIGN_IN",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.SignInValueSpec"
          }
        }
      ]
    }
  ]
}

সাহায্যকারীর ফলাফল পাওয়া

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীর ফলাফল অ্যাক্সেস করতে হয়। JSON স্নিপেট অনুরোধের প্রতিনিধিত্ব করে, যাতে আপনার পরিপূর্ণতা পাওয়া সাহায্যকারীর ফলাফল থাকে।

নীচের স্নিপেটটি দেখায় যে কীভাবে ব্যবহারকারী অ্যাক্সেস মঞ্জুর করেছেন এবং কীভাবে ডেটা অ্যাক্সেস করবেন তা পরীক্ষা করবেন।

Node.js

app.intent('ask_for_sign_in_confirmation', (conv, params, signin) => {
  if (signin.status !== 'OK') {
    return conv.ask('You need to sign in before using the app.');
  }
  // const access = conv.user.access.token;
  // possibly do something with access token
  return conv.ask('Great! Thanks for signing in.');
});

জাভা

ResponseBuilder responseBuilder = getResponseBuilder(request);
boolean signedIn = request.isSignInGranted();
return responseBuilder
    .add(signedIn ? "Great! Thanks for signin in." : "You must sign in before using the app.")
    .build();

JSON

{
  "responseId": "",
  "queryResult": {
    "queryText": "",
    "action": "",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "",
    "fulfillmentMessages": [],
    "outputContexts": [],
    "intent": {
      "name": "ask_for_sign_in_confirmation",
      "displayName": "ask_for_sign_in_confirmation"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {},
    "languageCode": ""
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          }
        ]
      },
      "inputs": [
        {
          "rawInputs": [],
          "intent": "",
          "arguments": [
            {
              "name": "SIGN_IN",
              "extension": {
                "@type": "type.googleapis.com/google.actions.v2.SignInValue",
                "status": "OK"
              }
            }
          ]
        }
      ],
      "user": {},
      "conversation": {},
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            },
            {
              "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
            },
            {
              "name": "actions.capability.WEB_BROWSER"
            }
          ]
        }
      ]
    }
  },
  "session": ""
}

JSON

{
  "user": {},
  "device": {},
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      },
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      },
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.WEB_BROWSER"
      }
    ]
  },
  "conversation": {},
  "inputs": [
    {
      "rawInputs": [],
      "intent": "ask_for_sign_in_confirmation",
      "arguments": [
        {
          "name": "SIGN_IN",
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.SignInValue",
            "status": "OK"
          }
        }
      ]
    }
  ],
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
        },
        {
          "name": "actions.capability.WEB_BROWSER"
        }
      ]
    }
  ]
}

স্থান এবং অবস্থান

আপনি actions.intent.PLACE অভিপ্রায় পূরণের অনুরোধ করে ব্যবহারকারীদের কাছ থেকে একটি অবস্থান পেতে পারেন। এই সাহায্যকারীটি ব্যবহারকারীকে ঠিকানা এবং অন্যান্য অবস্থানের জন্য প্রম্পট করতে ব্যবহৃত হয়, যেকোন বাড়ি/কাজ/যোগাযোগের অবস্থান সহ তারা Google-এর সাথে সংরক্ষণ করেছেন।

সংরক্ষিত অবস্থানগুলি শুধুমাত্র ঠিকানা ফেরত দেবে, সংশ্লিষ্ট ম্যাপিং নয় (যেমন "HOME = 123 Main St" এর বিপরীতে "123 Main St")।

সাহায্যকারীকে ডাকছে

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে আপনি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীকে কল করতে পারেন। JSON স্নিপেটগুলি সংশ্লিষ্ট ওয়েবহুকের প্রতিক্রিয়া দেখায়।

Node.js

app.intent('Place', (conv) => {
  const options = {
    context: 'To find a location',
    prompt: 'Where would you like to go?',
  };
  conv.ask(new Place(options));
});

জাভা

@ForIntent("Place")
public ActionResponse getPlace(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  responseBuilder
      .add("PLACEHOLDER")
      .add(
          new Place()
              .setRequestPrompt("Where would you like to go?")
              .setPermissionContext("To find  a location"));
  return responseBuilder.build();
}

Node.js

const options = {
  context: 'To find a location',
  prompt: 'Where would you like to go?',
};
conv.ask(new Place(options));

জাভা

ResponseBuilder responseBuilder = getResponseBuilder(request);
responseBuilder
    .add("PLACEHOLDER")
    .add(
        new Place()
            .setRequestPrompt("Where would you like to go?")
            .setPermissionContext("To find  a location"));
return responseBuilder.build();

JSON

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

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.PLACE",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.PlaceValueSpec",
          "dialogSpec": {
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.PlaceValueSpec.PlaceDialogSpec",
              "permissionContext": "To find a location",
              "requestPrompt": "Where would you like to go?"
            }
          }
        }
      }
    }
  }
}

JSON

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

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.PLACE",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.PlaceValueSpec",
            "dialogSpec": {
              "extension": {
                "@type": "type.googleapis.com/google.actions.v2.PlaceValueSpec.PlaceDialogSpec",
                "permissionContext": "To find a location",
                "requestPrompt": "Where would you like to go?"
              }
            }
          }
        }
      ]
    }
  ]
}

সাহায্যকারীর ফলাফল পাওয়া

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীর ফলাফল অ্যাক্সেস করতে হয়। JSON স্নিপেট অনুরোধের প্রতিনিধিত্ব করে, যাতে আপনার পরিপূর্ণতা পাওয়া সাহায্যকারীর ফলাফল থাকে।

নীচের স্নিপেটটি দেখায় যে কীভাবে ব্যবহারকারী অ্যাক্সেস মঞ্জুর করেছেন এবং কীভাবে ডেটা অ্যাক্সেস করবেন তা পরীক্ষা করবেন।

Node.js

app.intent('Place Handler', (conv, params, place) => {
  if (!place) {
    conv.ask(`Sorry, I couldn't get a location from you.`);
  } else {
    // Place also contains formattedAddress and coordinates
    const {name} = place;
    conv.ask(`${name} sounds like a great place to go!`);
  }
  conv.ask('Would you like to try another helper?');
  conv.ask(new Suggestions([
    'Confirmation',
    'DateTime',
    'Permission',
  ]));
});

জাভা

@ForIntent("Place Handler")
public ActionResponse handlePlace(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  Location location = request.getPlace();
  if (location == null) {
    responseBuilder.add("Sorry, I couldn't get a location from you.");
  } else {
    responseBuilder.add(location.getName() + " sounds like a great place to go!");
  }
  responseBuilder
      .add("Would you like to try another helper?")
      .addSuggestions(new String[] {"Confirmation", "DateTime", "Permission"});
  return responseBuilder.build();
}

Node.js

app.intent('actions.intent.PLACE', (conv) => {
  const place = conv.arguments.get('PLACE');
  if (!place) {
    conv.ask(`Sorry, I couldn't get a location from you.`);
  } else {
    // Place also contains formattedAddress and coordinates
    const {name} = place;
    conv.ask(`${name} sounds like a great place to go!`);
  }
  conv.ask('Would you like to try another helper?');
  conv.ask(new Suggestions([
    'Confirmation',
    'DateTime',
    'Permission',
  ]));
});

জাভা

@ForIntent("actions.intent.PLACE")
public ActionResponse handlePlace(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  Location location = request.getPlace();
  if (location == null) {
    responseBuilder.add("Sorry, I couldn't get a location from you.");
  } else {
    responseBuilder.add(location.getName() + " sounds like a great place to go!");
  }
  responseBuilder
      .add("Would you like to try another helper?")
      .addSuggestions(new String[] {"Confirmation", "DateTime", "Permission"});
  return responseBuilder.build();
}

JSON

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

{
  "responseId": "ce99fd40-b9ed-4151-bc99-f25db9eda8c5-712767ed",
  "queryResult": {
    "queryText": "actions_intent_PLACE",
    "action": "Place.Place-custom",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Webhook failed for intent: Place Handler",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Webhook failed for intent: Place Handler"
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_account_linking"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/google_assistant_input_type_keyboard"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/place-followup",
        "lifespanCount": 1
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_intent_place",
        "parameters": {
          "PLACE": "KFC, 2523 North Carson Street, Carson City, NV 89706, United States",
          "text": "yes"
        }
      }
    ],
    "intent": {
      "name": "projects/df-helpers-kohler/agent/intents/4cf9e154-e151-44db-ae79-84d8c5a707de",
      "displayName": "Place Handler"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "user": {
        "permissions": [
          "DEVICE_PRECISE_LOCATION"
        ],
        "locale": "en-US",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA",
        "type": "ACTIVE",
        "conversationToken": "[\"place-followup\"]"
      },
      "inputs": [
        {
          "intent": "actions.intent.PLACE",
          "rawInputs": [
            {
              "inputType": "KEYBOARD",
              "query": "Query handled by Actions on Google"
            }
          ],
          "arguments": [
            {
              "name": "PLACE",
              "placeValue": {
                "coordinates": {
                  "latitude": 39.182895,
                  "longitude": -119.7679113
                },
                "formattedAddress": "KFC, 2523 North Carson Street, Carson City, NV 89706, United States",
                "name": "KFC",
                "placeId": "ChIJZfBpmMEKmYARFsfc574LgB8"
              }
            },
            {
              "name": "text",
              "rawText": "yes",
              "textValue": "yes"
            }
          ]
        }
      ],
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "name": "actions.capability.ACCOUNT_LINKING"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          }
        ]
      },
      "device": {
        "location": {
          "coordinates": {
            "latitude": 39.2814592,
            "longitude": -120.12421119999999
          },
          "formattedAddress": "Currant Road, Truckee, California 96161",
          "zipCode": "96161",
          "city": "Truckee"
        }
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.WEB_BROWSER"
            },
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            }
          ]
        }
      ]
    }
  }
}

JSON

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

{
  "user": {
    "permissions": [
      "DEVICE_PRECISE_LOCATION"
    ],
    "locale": "en-US",
    "userVerificationStatus": "VERIFIED"
  },
  "conversation": {
    "conversationId": "ABwppHEcidO2jguO4hS8maDeMVx8aasSCcBWZHrF3EmOMIaWRP9qF0BcACistiIoeyiSNTW6KD_tqN_U-xAIOXhPvA",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.PLACE",
      "rawInputs": [
        {
          "inputType": "KEYBOARD",
          "query": "Query handled by Actions on Google"
        }
      ],
      "arguments": [
        {
          "name": "PLACE",
          "placeValue": {
            "coordinates": {
              "latitude": 37.4219999,
              "longitude": -122.0840575
            },
            "formattedAddress": "Googleplex, 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States",
            "name": "Googleplex",
            "placeId": "ChIJj61dQgK6j4AR4GeTYWZsKWw"
          }
        },
        {
          "name": "text",
          "rawText": "googleplex",
          "textValue": "googleplex"
        }
      ]
    }
  ],
  "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"
      }
    ]
  },
  "device": {
    "location": {
      "coordinates": {
        "latitude": 37.4197238,
        "longitude": -122.08212759999999
      },
      "formattedAddress": "Google Building 45 1585 Charleston Road, Mountain View, California 94043",
      "zipCode": "94043",
      "city": "Mountain View"
    }
  },
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.WEB_BROWSER"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        }
      ]
    }
  ]
}

নিশ্চিতকরণ

আপনি ব্যবহারকারীর কাছ থেকে একটি জেনেরিক নিশ্চিতকরণ জিজ্ঞাসা করতে পারেন (হ্যাঁ/না প্রশ্ন) এবং ফলাফলের উত্তর পেতে পারেন। "হ্যাঁ" এবং "না" এর ব্যাকরণ স্বাভাবিকভাবেই "হ্যাঁ" বা "না" এর মতো জিনিসগুলিতে প্রসারিত হয়, এটিকে অনেক পরিস্থিতিতে ব্যবহারযোগ্য করে তোলে।

সাহায্যকারীকে ডাকছে

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে আপনি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীকে কল করতে পারেন। JSON স্নিপেটগুলি সংশ্লিষ্ট ওয়েবহুকের প্রতিক্রিয়া দেখায়।

ব্যবহারকারীকে নিশ্চিতকরণের জন্য জিজ্ঞাসা করার সময় আপনি একটি কাস্টম প্রম্পট নির্দিষ্ট করতে পারেন।

Node.js

app.intent('Confirmation', (conv) => {
  conv.ask(new Confirmation('Can you confirm?'));
});

জাভা

@ForIntent("Confirmation")
public ActionResponse getConfirmation(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  responseBuilder
      .add("PLACEHOLDER")
      .add(new Confirmation().setConfirmationText("Can you confirm?"));
  return responseBuilder.build();
}

Node.js

conv.ask(new Confirmation('Can you confirm?'));

জাভা

ResponseBuilder responseBuilder = getResponseBuilder(request);
responseBuilder
    .add("PLACEHOLDER")
    .add(new Confirmation().setConfirmationText("Can you confirm?"));
return responseBuilder.build();

JSON

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

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.CONFIRMATION",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.ConfirmationValueSpec",
          "dialogSpec": {
            "requestConfirmationText": "Can you confirm?"
          }
        }
      }
    }
  }
}

JSON

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

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.CONFIRMATION",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.ConfirmationValueSpec",
            "dialogSpec": {
              "requestConfirmationText": "Can you confirm?"
            }
          }
        }
      ]
    }
  ]
}

সাহায্যকারীর ফলাফল পাওয়া

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে ক্লায়েন্ট লাইব্রেরি ব্যবহার করে সাহায্যকারীর ফলাফল অ্যাক্সেস করতে হয়। JSON স্নিপেট অনুরোধের প্রতিনিধিত্ব করে, যাতে আপনার পরিপূর্ণতা পাওয়া সাহায্যকারীর ফলাফল থাকে।

ব্যবহারকারী সাহায্যকারীকে সাড়া দেওয়ার পরে, আপনি আপনার পূরণের জন্য একটি অনুরোধ পাবেন এবং ব্যবহারকারী নিশ্চিত করেছেন কিনা তা পরীক্ষা করতে পারেন।

Node.js

app.intent('Confirmation Handler', (conv, params, confirmationGranted) => {
  conv.ask(confirmationGranted
    ? 'Thank you for confirming'
    : 'No problem, you have not confirmed');
  conv.ask('Would you like to try another helper?');
  conv.ask(new Suggestions([
    'DateTime',
    'Permission',
    'Place',
  ]));
});

জাভা

@ForIntent("Confirmation Handler")
public ActionResponse handleConfirmation(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  boolean userConfirmation = request.getUserConfirmation();
  responseBuilder
      .add(userConfirmation ? "Thank you for confirming" : "No problem, you have not confirmed")
      .addSuggestions(new String[] {"Place", "DateTime", "Permission"});
  return responseBuilder.build();
}

Node.js

app.intent('actions.intent.CONFIRMATION', (conv, confirmationGranted) => {
  conv.ask(confirmationGranted
    ? 'Thank you for confirming'
    : 'No problem, you have not confirmed');
  conv.ask('Would you like to try another helper?');
  conv.ask(new Suggestions([
    'DateTime',
    'Permission',
    'Place',
  ]));
});

জাভা

@ForIntent("actions.intent.CONFIRMATION")
public ActionResponse handleConfirmation(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  boolean userConfirmation = request.getUserConfirmation();
  responseBuilder
      .add(userConfirmation ? "Thank you for confirming" : "No problem, you have not confirmed")
      .addSuggestions(new String[] {"Place", "DateTime", "Permission"});
  return responseBuilder.build();
}

JSON

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

{
  "responseId": "26c3dd46-321c-4ab5-9f6c-a445f6d5de01-712767ed",
  "queryResult": {
    "queryText": "actions_intent_CONFIRMATION",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Webhook failed for intent: Confirmation Handler",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Webhook failed for intent: Confirmation Handler"
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_account_linking"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/google_assistant_input_type_keyboard"
      },
      {
        "name": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA/contexts/actions_intent_confirmation",
        "parameters": {
          "CONFIRMATION": true,
          "text": "yes"
        }
      }
    ],
    "intent": {
      "name": "projects/df-helpers-kohler/agent/intents/11cc7c8e-0710-42ea-9cd9-723aff03e97f",
      "displayName": "Confirmation Handler"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "user": {
        "locale": "en-US",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA",
        "type": "ACTIVE",
        "conversationToken": "[]"
      },
      "inputs": [
        {
          "intent": "actions.intent.CONFIRMATION",
          "rawInputs": [
            {
              "inputType": "KEYBOARD",
              "query": "yes"
            }
          ],
          "arguments": [
            {
              "name": "CONFIRMATION",
              "boolValue": true
            },
            {
              "name": "text",
              "rawText": "yes",
              "textValue": "yes"
            }
          ]
        }
      ],
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.ACCOUNT_LINKING"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          },
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          }
        ]
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            },
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.WEB_BROWSER"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/df-helpers-kohler/agent/sessions/ABwppHEdLCo3vaqVs-pED_sPQDIUr_Ls5JYICyNks9vKbfUaIF8n4P7fYsKEYSiKvD3Vmnli9deu_uTB8s3nPeA"
}

JSON

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

{
  "user": {
    "locale": "en-US",
    "userVerificationStatus": "VERIFIED"
  },
  "conversation": {
    "conversationId": "ABwppHGY8XRtymCExS313Cc6Vp42zR0uQuGf6BwpSW0772Er-rxSTtFjs3KfGYu6jCDgHbA8IKVWjB8Gr9odc4yHhg",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.CONFIRMATION",
      "rawInputs": [
        {
          "inputType": "KEYBOARD",
          "query": "yes"
        }
      ],
      "arguments": [
        {
          "name": "CONFIRMATION",
          "boolValue": true
        },
        {
          "name": "text",
          "rawText": "yes",
          "textValue": "yes"
        }
      ]
    }
  ],
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      },
      {
        "name": "actions.capability.WEB_BROWSER"
      },
      {
        "name": "actions.capability.ACCOUNT_LINKING"
      },
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      }
    ]
  },
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.WEB_BROWSER"
        }
      ]
    }
  ]
}