जवाब देना (Dialogflow)

Dialogflow में एक्सप्लोर करें

Dialogflow में हमारे Reprompts के सैंपल को इंपोर्ट करने के लिए, जारी रखें पर क्लिक करें. इसके बाद, सैंपल को डिप्लॉय और टेस्ट करने के लिए, यह तरीका अपनाएं:

  1. एजेंट का नाम डालें और सैंपल के लिए, नया Dialogflow एजेंट बनाएं.
  2. एजेंट इंपोर्ट होने के बाद, एजेंट पर जाएं पर क्लिक करें.
  3. मुख्य नेविगेशन मेन्यू से, ग्राहक को आइटम भेजना पर जाएं.
  4. इनलाइन एडिटर चालू करें. इसके बाद, डिप्लॉय करें पर क्लिक करें. एडिटर में सैंपल होता है कोड.
  5. मुख्य नेविगेशन मेन्यू से, इंटिग्रेशन पर जाएं. इसके बाद, Google पर क्लिक करें Assistant पर टैप करें.
  6. स्क्रीन पर दिखने वाली मॉडल विंडो में, बदलावों की अपने-आप झलक देखने की सुविधा चालू करें. इसके बाद, जांच करें पर क्लिक करें ऐक्शन सिम्युलेटर खोलने के लिए.
  7. सैंपल की जांच करने के लिए, सिम्युलेटर में Talk to my test app डालें!
जारी रखें

उन मामलों को हैंडल करने के लिए नीचे दी गई सुविधाओं का इस्तेमाल किया जा सकता है जहां उपयोगकर्ता अपने प्रॉडक्ट नहीं देते हैं अपनी कार्रवाइयों के लिए इनपुट डालें (इनपुट से जुड़ी गड़बड़ियां):

  • सिस्टम डिफ़ॉल्ट तौर पर फिर से प्रॉम्प्ट देना - ये उपयोगकर्ता को अपने-आप ही सूचना देते हैं इसमें सभी तरह के मामलों में पहले से डिज़ाइन किए गए रीप्रॉम्प्ट होते हैं, जो सामान्य होते हैं.
  • डाइनैमिक रीप्रॉम्प्ट - इससे यह पता चलता है कि आपको दोबारा प्रॉम्प्ट देने की सुविधा को मैनेज करना है . कोई इनपुट नहीं होता, इसलिए आप उन्हें अलग-अलग मामलों के हिसाब से मैनेज कर सकते हैं.

सिस्टम डिफ़ॉल्ट रूप से फिर से प्रॉम्प्ट

डिफ़ॉल्ट रूप से, जब Assistant को जवाब दिया जाता है, तो सिस्टम उपयोगकर्ताओं को डिफ़ॉल्ट तौर पर, इनपुट को दोहराने या दोबारा टाइप करने के लिए कहा जाता है.

Dialogflow

Dialogflow, नो-मैच और बिना इनपुट वाले ज़्यादा से ज़्यादा तीन इनपुट लागू करता है. बातचीत को तीन बार पूरा करने के बाद, आपका Dialogflow एजेंट होता है बातचीत को डिफ़ॉल्ट जवाब के साथ खत्म कर देगा. इसमें एक ऐसा इनपुट है जो मैच नहीं करता डायलॉग फ़्लो तब होता है, जब आपके फ़ॉलबैक इंटेंट में से कोई एक ट्रिगर होता है.

डाइनैमिक रीप्रॉम्प्ट

हर बार आपकी सेट की गई कार्रवाई फ़ेल होने पर, आपको इंटेंट या Dialogflow इवेंट मिल सकता है कोई इनपुट पाएं. इससे आपको कुछ चीज़ों के हिसाब से अलग जवाब देने की सुविधा मिलती है तर्क के साथ जवाब दें और उपयोगकर्ता को सही जवाब दें.

Dialogflow

दो तरह के बिना इनपुट वाले इंटेंट बनाए जा सकते हैं:

  • सामान्य इंटेंट - यह तरीका किसी कॉन्टेक्स्ट पर लागू नहीं होता. इसलिए, इसे ट्रिगर किया जाएगा जब ट्रिगर करने के लिए ज़्यादा प्रासंगिक इंटेंट नहीं होता है. यह काम का है का इस्तेमाल करें.

  • फ़ॉलो-अप इंटेंट - Dialogflow के ज़रिए फ़ॉलो-अप इंटेंट लागू किए जाते हैं के उदाहरण हैं. यह पक्का करने के लिए कि दोबारा संकेत दिए जाने हैं, वे बातचीत. यह आपके लिए खास तौर पर बनाए गए उन प्रॉम्प्ट के लिए काम का है जिन्हें आपको लागू करना है ख़ास स्थितियों में किया जा सकता है.

बिना इनपुट वाले इवेंट मैनेज करने के लिए:

  1. बाईं ओर मौजूद नेविगेशन में, इंटेंट पर क्लिक करें.
  2. एक सामान्य इंटेंट या फ़ॉलो-अप इंटेंट बनाएं.
    • सामान्य इंटेंट के लिए: इंटेंट मेन्यू के ज़रिए + आइकॉन पर क्लिक करें आइटम और अपने इंटेंट को एक नाम दें, जैसे "Reprompt".

    • फ़ॉलो-अप इंटेंट के लिए: उस इंटेंट पर कर्सर घुमाएं जिसे आपको के लिए, बिना इनपुट के जवाब को पसंद के मुताबिक बनाएं और फ़ॉलो-अप इंटेंट जोड़ें > कस्टम. ओरिजनल इंटेंट के नीचे एक नया इंटेंट बनाया जाता है.

  3. इंटेंट एडिटर को खोलने के लिए, बनाए गए नए इंटेंट पर क्लिक करें.
  4. इवेंट सेक्शन पर क्लिक करें और "action_intent_NO_INPUT" डालें में इवेंट जोड़ें फ़ील्ड.
  5. कार्रवाइयां सेक्शन में, कार्रवाई का नाम डालें या दिए गए नाम का इस्तेमाल करें डिफ़ॉल्ट रूप से. इस उदाहरण के लिए, हम "no.input" का इस्तेमाल करेंगे.

  6. सेव करें पर क्लिक करें.
  7. बाईं ओर मौजूद नेविगेशन में, इंटिग्रेशन पर क्लिक करें
  8. Google Assistant चुनें और टेस्ट करें पर क्लिक करके यह पक्का करें कि किए गए बदलाव आपके Actions प्रोजेक्ट में दिखें.

जब भी इस इंटेंट के लिए कोई इनपुट नहीं होता है, तो आप सही जवाब देने या Dialogflow में एक जवाब तैयार करने के लिए, आपके फ़ुलफ़िलमेंट. उदाहरण के लिए, यहां कुछ फ़ुलफ़िलमेंट कोड दिया गया है, जो क्लाइंट लाइब्रेरी का इस्तेमाल इन कामों के लिए करता है: सामान्य तौर पर, बिना इनपुट वाले इंटेंट को "Reprompt" कहते हैं.

Node.js

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

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

app.intent('Reprompt', (conv) => {
  const repromptCount = parseInt(conv.arguments.get('REPROMPT_COUNT'));
  if (repromptCount === 0) {
  conv.ask(`What was that?`);
  } else if (repromptCount === 1) {
  conv.ask(`Sorry I didn't catch that. Could you repeat yourself?`);
  } else if (conv.arguments.get('IS_FINAL_REPROMPT')) {
  conv.close(`Okay let's try this again later.`);
  }
});

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

Java

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("Reprompt")
  public ActionResponse reprompt(ActionRequest request) {
    ResponseBuilder responseBuilder = getResponseBuilder(request);
    int repromptCount = request.getRepromptCount();
    String response;
    if (repromptCount == 0) {
      response = "What was that?";
    } else if (repromptCount == 1) {
      response = "Sorry, I didn't catch that. Could you repeat yourself?";
    } else {
      responseBuilder.endConversation();
      response = "Okay let's try this again later.";
    }
    return responseBuilder.add(response).build();
  }
}

JSON का अनुरोध करें

ध्यान दें कि नीचे दिए गए JSON में, वेबहुक के अनुरोध के बारे में बताया गया है.

{
  "responseId": "f26a9188-4998-42eb-ac16-d0e6e273b137-712767ed",
  "queryResult": {
    "queryText": "actions_intent_NO_INPUT",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Webhook failed for intent: Reprompt",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Webhook failed for intent: Reprompt"
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/df-reprompts-kohler/agent/sessions/ABwppHFi9Dpwy6KiEtS0UIPDNVfa7mlkrPIEZRlikFkjuN_4SGPixgX8OCatpXu38ln7VG43-nk-7veZWhds3nLljA/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/df-reprompts-kohler/agent/sessions/ABwppHFi9Dpwy6KiEtS0UIPDNVfa7mlkrPIEZRlikFkjuN_4SGPixgX8OCatpXu38ln7VG43-nk-7veZWhds3nLljA/contexts/actions_capability_account_linking"
      },
      {
        "name": "projects/df-reprompts-kohler/agent/sessions/ABwppHFi9Dpwy6KiEtS0UIPDNVfa7mlkrPIEZRlikFkjuN_4SGPixgX8OCatpXu38ln7VG43-nk-7veZWhds3nLljA/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/df-reprompts-kohler/agent/sessions/ABwppHFi9Dpwy6KiEtS0UIPDNVfa7mlkrPIEZRlikFkjuN_4SGPixgX8OCatpXu38ln7VG43-nk-7veZWhds3nLljA/contexts/google_assistant_input_type_voice"
      },
      {
        "name": "projects/df-reprompts-kohler/agent/sessions/ABwppHFi9Dpwy6KiEtS0UIPDNVfa7mlkrPIEZRlikFkjuN_4SGPixgX8OCatpXu38ln7VG43-nk-7veZWhds3nLljA/contexts/actions_intent_no_input",
        "parameters": {
          "REPROMPT_COUNT": 2,
          "IS_FINAL_REPROMPT": true
        }
      }
    ],
    "intent": {
      "name": "projects/df-reprompts-kohler/agent/intents/75dfd97d-6368-4436-9533-70f05ae76c96",
      "displayName": "Reprompt"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "user": {
        "locale": "en-US",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHFi9Dpwy6KiEtS0UIPDNVfa7mlkrPIEZRlikFkjuN_4SGPixgX8OCatpXu38ln7VG43-nk-7veZWhds3nLljA",
        "type": "ACTIVE",
        "conversationToken": "[]"
      },
      "inputs": [
        {
          "intent": "actions.intent.NO_INPUT",
          "rawInputs": [
            {
              "inputType": "VOICE"
            }
          ],
          "arguments": [
            {
              "name": "REPROMPT_COUNT",
              "intValue": "2"
            },
            {
              "name": "IS_FINAL_REPROMPT",
              "boolValue": true
            }
          ]
        }
      ],
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "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"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/df-reprompts-kohler/agent/sessions/ABwppHFi9Dpwy6KiEtS0UIPDNVfa7mlkrPIEZRlikFkjuN_4SGPixgX8OCatpXu38ln7VG43-nk-7veZWhds3nLljA"
}

JSON रिस्पॉन्स

ध्यान दें कि नीचे दिए गए JSON में, वेबहुक के रिस्पॉन्स के बारे में बताया गया है.

{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Okay let's try this again later."
            }
          }
        ]
      }
    }
  }
}

Actions SDK टूल

बिना इनपुट इंटेंट को मैनेज करने के लिए:

  1. अपने ऐक्शन पैकेज के अंदर किसी conversations ऑब्जेक्ट में, एलान करें कि आपको जब कोई उपयोगकर्ता उपलब्ध नहीं कराता है, तब actions.intent.NO_INPUT इंटेंट पाने के लिए इनपुट.
    {
      "actions": [
        {
          "description": "Default Welcome Intent",
          "name": "MAIN",
          "fulfillment": {
            "conversationName": "conversation_1"
          },
          "intent": {
            "name": "actions.intent.MAIN"
          }
        }
      ],
      "conversations": {
        "conversation_1": {
          "name": "conversation_1",
          "url": "YOUR_FULFILLMENT_URL",
          "inDialogIntents": [
            {
              "name": "actions.intent.NO_INPUT"
            }
          ]
        }
      }
    }
  2. जब Assistant को उपयोगकर्ता से कोई इनपुट नहीं मिलेगा, तब आपको आपके वाहन को भेजने के अगले अनुरोध में no-input इंटेंट. इसके बाद आप इंटेंट को प्रोसेस करें और सही जवाब दें. यह रही उदाहरण:

    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 this sample on a speaker device, ` +
        `and stay silent when the mic is open. If trying ` +
        `on the Actions console simulator, click the no-input ` +
        `button next to the text input field.`);
    });
    
    app.intent('actions.intent.TEXT', (conv, input) => {
      conv.ask(`You said ${input}`);
      conv.ask(`Try this sample on a speaker device, ` +
        `and stay silent when the mic is open. If trying ` +
        `on the Actions console simulator, click the no-input ` +
        `button next to the text input field.`);
    });
    
    app.intent('actions.intent.NO_INPUT', (conv) => {
      const repromptCount = parseInt(conv.arguments.get('REPROMPT_COUNT'));
      if (repromptCount === 0) {
        conv.ask(`What was that?`);
      } else if (repromptCount === 1) {
        conv.ask(`Sorry I didn't catch that. Could you repeat yourself?`);
      } else if (conv.arguments.get('IS_FINAL_REPROMPT')) {
        conv.close(`Okay let's try this again later.`);
      }
    });
    
    exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

    Java

    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 this sample on a speaker device, and stay silent when the mic is open. If trying on the Actions console simulator, click the no-input button next to the text input field.");
        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 this sample on a speaker device, and stay silent when the mic is open. If trying on the Actions console simulator, click the no-input button next to the text input field.");
        return responseBuilder.build();
      }
    
      @ForIntent("actions.intent.NO_INPUT")
      public ActionResponse reprompt(ActionRequest request) {
        ResponseBuilder responseBuilder = getResponseBuilder(request);
        int repromptCount = request.getRepromptCount();
        String response;
        if (repromptCount == 0) {
          response = "What was that?";
        } else if (repromptCount == 1) {
          response = "Sorry, I didn't catch that. Could you repeat yourself?";
        } else {
          responseBuilder.endConversation();
          response = "Okay let's try this again later.";
        }
        return responseBuilder.add(response).build();
      }
    
    }

    JSON का अनुरोध करें

    ध्यान दें कि नीचे दिए गए JSON में, वेबहुक के अनुरोध के बारे में बताया गया है.

    {
      "user": {
        "locale": "en-US",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHEVDuKUPjdZ4Ud-F2yBXN5ssRg2funUp59hSHQheAi-B5Y3EzehAKFtVwMkduqMRWscUp77ScrDjYnYxISqAM-qOXuXEuCw",
        "type": "ACTIVE",
        "conversationToken": "{\"data\":{}}"
      },
      "inputs": [
        {
          "intent": "actions.intent.NO_INPUT",
          "rawInputs": [
            {
              "inputType": "VOICE"
            }
          ],
          "arguments": [
            {
              "name": "REPROMPT_COUNT",
              "intValue": "2"
            },
            {
              "name": "IS_FINAL_REPROMPT",
              "boolValue": true
            }
          ]
        }
      ],
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.ACCOUNT_LINKING"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          }
        ]
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.WEB_BROWSER"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            }
          ]
        }
      ]
    }

    JSON रिस्पॉन्स

    ध्यान दें कि नीचे दिए गए JSON में, वेबहुक के रिस्पॉन्स के बारे में बताया गया है.

    {
      "expectUserResponse": false,
      "finalResponse": {
        "richResponse": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Okay let's try this again later."
              }
            }
          ]
        }
      }
    }