কথোপকথন প্রস্থান (ডায়লগফ্লো)

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

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

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

যখনই ব্যবহারকারীরা মধ্য-কথোপকথন থেকে প্রস্থান করতে চায়, তখন তারা এমন কিছু বলতে পারে:

  • "প্রস্থান"
  • "বাতিল"
  • "থাম"
  • "কিছু মনে করবেন না"
  • "বিদায়"

ডিফল্টরূপে, সহকারী আপনার কথোপকথন থেকে বেরিয়ে আসে এবং একটি ইয়ারকন চালায়। এই আচরণটি ওভাররাইড করতে, আপনি একটি শেষ অনুরোধ পাওয়ার জন্য অপ্ট-ইন করতে পারেন যা আপনি আপনার পূর্ণতা যুক্তি পরিষ্কার করতে এবং ব্যবহারকারীকে শেষবারের মতো প্রতিক্রিয়া জানাতে ব্যবহার করতে পারেন। আপনার চূড়ান্ত প্রতিক্রিয়া অবশ্যই একটি একক সাধারণ প্রতিক্রিয়া হতে হবে যার textToSpeech এবং displayText মানগুলিতে 60-অক্ষরের সীমা থাকবে৷

কথোপকথন প্রস্থান অনুরোধের জন্য অনুমোদিত সর্বোচ্চ কার্যকর সময় হল 2 সেকেন্ড; যদি কোন প্রতিক্রিয়া না পাওয়া যায়, কথোপকথনটি ডিফল্ট প্রস্থান ইয়ারকন দিয়ে শেষ হবে। যদি আপনার কাস্টম বাতিল প্রতিক্রিয়া ব্যর্থ হয় (অক্ষরের সীমা অতিক্রম করার কারণে, অনুপযুক্ত প্রতিক্রিয়ার ধরন, ইত্যাদি) কথোপকথনটিও ডিফল্ট প্রস্থান ইয়ারকন দিয়ে শেষ হবে।

ডায়ালগফ্লো

কথোপকথন প্রস্থান ইভেন্টগুলি পেতে:

  1. বাম নেভিগেশনে, ইন্টেন্ট মেনু আইটেমের + আইকনে ক্লিক করুন।
  2. অভিপ্রায়টিকে একটি নাম দিন (যেমন Exit Conversation ) এবং ইভেন্ট বিভাগে ক্লিক করুন।
  3. ইভেন্ট যোগ করুন ফিল্ডে actions_intent_CANCEL লিখুন।
  4. হয় প্রতিক্রিয়ার অধীনে একটি প্রতিক্রিয়া নির্দিষ্ট করুন বা আপনার ওয়েবহুক কোডে এই অভিপ্রায়ের জন্য আপনার নিজস্ব প্রতিক্রিয়া সেট আপ করুন৷
  5. সক্ষম করুন কথোপকথনের শেষ হিসাবে এই অভিপ্রায় সেট করুন
  6. Save এ ক্লিক করুন।
  7. বাম নেভিগেশনে, ইন্টিগ্রেশনে ক্লিক করুন।
  8. Google অ্যাসিস্ট্যান্ট বেছে নিন এবং আপডেট ড্রাফ্ট ক্লিক করুন, তারপর পরিবর্তনগুলি আপনার প্রকল্পে প্রতিফলিত হয়েছে তা নিশ্চিত করতে পরীক্ষা করুন

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

Node.js

const {dialogflow} = require('actions-on-google');
const functions = require('firebase-functions');

const app = dialogflow({debug: true});

app.intent('Exit Conversation', (conv) => {
  conv.close(`Okay, talk to you next time!`);
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

জাভা

package com.example;

import com.google.actions.api.ActionRequest;
import com.google.actions.api.ActionResponse;
import com.google.actions.api.DialogflowApp;
import com.google.actions.api.ForIntent;
import com.google.actions.api.response.ResponseBuilder;

public class MyActionsApp extends DialogflowApp {

  @ForIntent("Exit Conversation")
  public ActionResponse exit(ActionRequest request) {
    ResponseBuilder responseBuilder = getResponseBuilder(request);
    responseBuilder.add("Okay, talk to you next time!");
    responseBuilder.endConversation();
    return responseBuilder.build();
  }
}

অনুরোধ JSON

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

{
  "responseId": "e0c9d47f-aa99-4d03-bd48-a64c79e9c2a2-712767ed",
  "queryResult": {
    "queryText": "actions_intent_CANCEL",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Webhook failed for intent: Exit Conversation",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Webhook failed for intent: Exit Conversation"
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/df-exits-kohler/agent/sessions/ABwppHGVnlRtMz1RhGGmDOSlCFAbc2QaM12xYtw0raWvv-R5GYM6tkqiVOpIOexm_LTBCvmARwpbZ_onRuX0/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/df-exits-kohler/agent/sessions/ABwppHGVnlRtMz1RhGGmDOSlCFAbc2QaM12xYtw0raWvv-R5GYM6tkqiVOpIOexm_LTBCvmARwpbZ_onRuX0/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/df-exits-kohler/agent/sessions/ABwppHGVnlRtMz1RhGGmDOSlCFAbc2QaM12xYtw0raWvv-R5GYM6tkqiVOpIOexm_LTBCvmARwpbZ_onRuX0/contexts/actions_capability_account_linking"
      },
      {
        "name": "projects/df-exits-kohler/agent/sessions/ABwppHGVnlRtMz1RhGGmDOSlCFAbc2QaM12xYtw0raWvv-R5GYM6tkqiVOpIOexm_LTBCvmARwpbZ_onRuX0/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/df-exits-kohler/agent/sessions/ABwppHGVnlRtMz1RhGGmDOSlCFAbc2QaM12xYtw0raWvv-R5GYM6tkqiVOpIOexm_LTBCvmARwpbZ_onRuX0/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/df-exits-kohler/agent/sessions/ABwppHGVnlRtMz1RhGGmDOSlCFAbc2QaM12xYtw0raWvv-R5GYM6tkqiVOpIOexm_LTBCvmARwpbZ_onRuX0/contexts/google_assistant_input_type_keyboard"
      },
      {
        "name": "projects/df-exits-kohler/agent/sessions/ABwppHGVnlRtMz1RhGGmDOSlCFAbc2QaM12xYtw0raWvv-R5GYM6tkqiVOpIOexm_LTBCvmARwpbZ_onRuX0/contexts/actions_intent_cancel"
      }
    ],
    "intent": {
      "name": "projects/df-exits-kohler/agent/intents/b506991f-ad7a-4c4b-8adc-5e6c62727381",
      "displayName": "Exit Conversation"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "user": {
        "locale": "en-US",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHGVnlRtMz1RhGGmDOSlCFAbc2QaM12xYtw0raWvv-R5GYM6tkqiVOpIOexm_LTBCvmARwpbZ_onRuX0",
        "type": "ACTIVE",
        "conversationToken": "[]"
      },
      "inputs": [
        {
          "intent": "actions.intent.CANCEL",
          "rawInputs": [
            {
              "inputType": "KEYBOARD",
              "query": "cancel"
            }
          ]
        }
      ],
      "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"
          }
        ]
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.WEB_BROWSER"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/df-exits-kohler/agent/sessions/ABwppHGVnlRtMz1RhGGmDOSlCFAbc2QaM12xYtw0raWvv-R5GYM6tkqiVOpIOexm_LTBCvmARwpbZ_onRuX0"
}

প্রতিক্রিয়া JSON

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

{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Okay, talk to you next time!"
            }
          }
        ]
      }
    }
  }
}

অ্যাকশন SDK

কথোপকথন প্রস্থান অভিপ্রায় পেতে:

  1. আপনার অ্যাকশন প্যাকেজের মধ্যে একটি conversations অবজেক্টে, ঘোষণা করুন যে আপনি actions.intent.CANCEL পেতে চান। যখনই একজন ব্যবহারকারী মধ্য-কথোপকথন থেকে প্রস্থান করতে চায় তখনই উদ্দেশ্য বাতিল করুন।

    {
      "actions": [
        {
          "description": "Default Welcome Intent",
          "name": "MAIN",
          "fulfillment": {
            "conversationName": "conversation_1"
          },
          "intent": {
            "name": "actions.intent.MAIN"
          }
        }
      ],
      "conversations": {
        "conversation_1": {
          "name": "conversation_1",
          "url": "YOUR_ENDPOINT_URL",
          "inDialogIntents": [
            {
              "name": "actions.intent.CANCEL"
            }
          ]
        }
      }
    }
  2. যখন আপনি actions.intent.CANCEL অভিপ্রায় সহ একটি অনুরোধ পান, তখন আপনি চান এমন কোনো পরিপূর্ণতা যুক্তি পরিষ্কার করুন এবং ব্যবহারকারীকে একটি উপযুক্ত প্রস্থান বাক্যাংশ ফেরত দিন। উদাহরণস্বরূপ, এখানে কিছু পরিপূর্ণতা কোড রয়েছে যা একটি বাতিল অভিপ্রায় পরিচালনা করতে ক্লায়েন্ট লাইব্রেরি ব্যবহার করে।

    Node.js

    const {actionssdk} = require('actions-on-google');
    const functions = require('firebase-functions');
    
    const app = actionssdk({debug: true});
    
    app.intent('actions.intent.MAIN', (conv) => {
      conv.ask(`Hi! Try saying 'exit' or 'cancel'`);
    });
    
    app.intent('actions.intent.TEXT', (conv, input) => {
      conv.ask(`You said ${input}`);
      conv.ask(`Try saying 'exit' or 'cancel'`);
    });
    
    app.intent('actions.intent.CANCEL', (conv) => {
      conv.close(`Okay, talk to you next time!`);
    });
    
    exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

    জাভা

    package com.example;
    
    import com.google.actions.api.ActionRequest;
    import com.google.actions.api.ActionResponse;
    import com.google.actions.api.ActionsSdkApp;
    import com.google.actions.api.ConstantsKt;
    import com.google.actions.api.ForIntent;
    import com.google.actions.api.response.ResponseBuilder;
    import com.google.actions.api.response.helperintent.Confirmation;
    import com.google.actions.api.response.helperintent.DateTimePrompt;
    import com.google.actions.api.response.helperintent.Permission;
    import com.google.actions.api.response.helperintent.Place;
    import com.google.api.services.actions_fulfillment.v2.model.DateTime;
    import com.google.api.services.actions_fulfillment.v2.model.Location;
    
    public class MyActionsApp extends ActionsSdkApp {
    
      @ForIntent("actions.intent.MAIN")
      public ActionResponse welcome(ActionRequest request) {
        ResponseBuilder responseBuilder = getResponseBuilder(request);
        responseBuilder.add("Hi! Try saying 'exit' or 'cancel'");
        return responseBuilder.build();
      }
    
      @ForIntent("actions.intent.TEXT")
      public ActionResponse fallback(ActionRequest request) {
        ResponseBuilder responseBuilder = getResponseBuilder(request);
        responseBuilder.add("You said " + request.getRawInput().getQuery());
        responseBuilder.add("Try saying 'exit' or 'cancel'");
        return responseBuilder.build();
      }
    
      @ForIntent("actions.intent.CANCEL")
      public ActionResponse exit(ActionRequest request) {
        ResponseBuilder responseBuilder = getResponseBuilder(request);
        responseBuilder.add("Okay, talk to you next time!");
        responseBuilder.endConversation();
        return responseBuilder.build();
      }
    
    }

    অনুরোধ JSON

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

    {
      "user": {
        "locale": "en-US",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHEtH6XptryyLGWDBOVnLgy8EkOclTPETd4lcLh_f6ghQAzzg0seUuq3YocyFT8B17N6AGD6YPPjQw5CXBM",
        "type": "NEW"
      },
      "inputs": [
        {
          "intent": "actions.intent.CANCEL",
          "rawInputs": [
            {
              "inputType": "KEYBOARD",
              "query": "exit"
            }
          ]
        }
      ],
      "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"
          }
        ]
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            },
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.WEB_BROWSER"
            }
          ]
        }
      ]
    }

    প্রতিক্রিয়া JSON

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

    {
      "expectUserResponse": false,
      "finalResponse": {
        "richResponse": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Okay, talk to you next time!"
              }
            }
          ]
        }
      }
    }