ডায়ালগফ্লো ওয়েবহুক ফরম্যাট {:#dialogflow-webhook-format} (Dialogflow)

এই বিভাগটি JSON পেলোডের ফর্ম্যাট বর্ণনা করে যখন Actions on Google ডায়ালগফ্লো v2-এর মাধ্যমে আপনার পূরণের জন্য আহ্বান জানায়।

আপনি যদি অ্যাকশন তৈরি করতে ডায়ালগফ্লো ব্যবহার করেন, তাহলে আপনার পূর্ণতা ডায়ালগফ্লোর সাথে অ্যাকশন অন Google কথোপকথন ওয়েবহুক ফর্ম্যাটের পরিবর্তে তার নিজস্ব, স্ট্যান্ডার্ড ওয়েবহুক ফর্ম্যাটের মাধ্যমে যোগাযোগ করে। ডায়ালগফ্লো ওয়েবহুক ফর্ম্যাটে কথোপকথনের ওয়েবহুক ফর্ম্যাটের সমস্ত তথ্যের সাথে অতিরিক্ত ডায়ালগফ্লো-নির্দিষ্ট ডেটা থাকে, যেমন প্রসঙ্গ এবং পরামিতি সম্পর্কে তথ্য৷

ডায়ালগফ্লো ওয়েবহুকের জন্য JSON বার্তাগুলির আরও উদাহরণ দেখতে, আপনি এই GitHub প্রকল্পটি উল্লেখ করতে পারেন।

শরীরের অনুরোধ

Dialogflow-এর অনুরোধ বার্তায় Dialogflow ওয়েবহুক ফর্ম্যাটে ডেটা থাকে। এই অবজেক্টে অ্যাকশন অন Google-নির্দিষ্ট তথ্য অন্তর্ভুক্ত রয়েছে, যা নীচে সংক্ষিপ্ত করা হয়েছে:

  • originalDetectIntentRequest.source মান হল "google"।
  • originalDetectIntentRequest.version অনুরোধের জন্য অ্যাকশন অন Google সংস্করণ নির্দেশ করে।
  • originalDetectIntentRequest.payload এ অ্যাসিস্ট্যান্ট থেকে JSON-এর কথোপকথনের অনুরোধ সহ Google-নির্দিষ্ট তথ্যের মূল অ্যাকশন রয়েছে।
  • Conversation.conversationToken ক্ষেত্রটি Dialogflow ওয়েবহুক অনুরোধ দ্বারা সমর্থিত নয়। পরিবর্তে, আপনার পূর্ণতা কথোপকথনের জীবনকাল জুড়ে ডেটা বজায় রাখতে ডায়ালগফ্লো প্রসঙ্গ ব্যবহার করতে পারে।

সহজ আমন্ত্রণ অনুরোধের উদাহরণ

নীচের স্নিপেট ডায়ালগফ্লো ওয়েবহুক ফর্ম্যাটে একটি আহ্বান অনুরোধের একটি উদাহরণ দেখায়।

{
  "responseId": "c4b863dd-aafe-41ad-a115-91736b665cb9",
  "queryResult": {
    "queryText": "GOOGLE_ASSISTANT_WELCOME",
    "action": "input.welcome",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "",
    "fulfillmentMessages": [],
    "outputContexts": [
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/google_assistant_welcome"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/google_assistant_input_type_voice"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_media_response_audio"
      }
    ],
    "intent": {
      "name": "projects/${PROJECTID}/agent/intents/8b006880-0af7-4ec9-a4c3-1cc503ea8260",
      "displayName": "Default Welcome Intent"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {},
    "languageCode": "en-us"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          }
        ]
      },
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "Talk to my test app",
              "inputType": "VOICE"
            }
          ],
          "intent": "actions.intent.MAIN"
        }
      ],
      "user": {
        "lastSeen": "2018-03-16T22:08:48Z",
        "permissions": [
          "UPDATE"
        ],
        "locale": "en-US",
        "userId": "ABwppHEvwoXs18xBNzumk18p5h02bhRDp_riW0kTZKYdxB6-LfP3BJRjgPjHf1xqy1lxqS2uL8Z36gT6JLXSrSCZ"
      },
      "conversation": {
        "conversationId": "${SESSIONID}",
        "type": "NEW"
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/${PROJECTID}/agent/sessions/${SESSIONID}"
}

সহজ কথোপকথন অনুরোধ উদাহরণ

নীচের স্নিপেটটি ডায়ালগফ্লো ওয়েবহুক ফর্ম্যাটে কথোপকথনের অনুরোধের একটি উদাহরণ দেখায়, যেখানে ব্যবহারকারীর ইনপুট একটি পাঠ্য স্ট্রিং।

{
  "responseId": "68efa569-4ba1-4b7f-9b1b-ac2865deb539",
  "queryResult": {
    "queryText": "query from the user",
    "action": "action.name.of.matched.dialogflow.intent",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "outputContexts": [
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/google_assistant_input_type_keyboard"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_web_browser"
      }
    ],
    "intent": {
      "name": "projects/${PROJECTID}/agent/intents/1f4e5bd9-a670-4161-a22e-2c97b077f29f",
      "displayName": "Name of Dialogflow Intent"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {},
    "languageCode": "en-us"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          }
        ]
      },
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "query from the user",
              "inputType": "KEYBOARD"
            }
          ],
          "arguments": [
            {
              "rawText": "query from the user",
              "textValue": "query from the user",
              "name": "text"
            }
          ],
          "intent": "actions.intent.TEXT"
        }
      ],
      "user": {
        "lastSeen": "2017-10-06T01:06:56Z",
        "locale": "en-US",
        "userId": "AI_yXq-AtrRh3mJX5D-G0MsVhqun"
      },
      "conversation": {
        "conversationId": "1522951193000",
        "type": "ACTIVE",
        "conversationToken": "[]"
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/${PROJECTID}/agent/sessions/${SESSIONID}"
}

সাহায্যকারী ফলাফল উদাহরণ

নীচের স্নিপেট ডায়ালগফ্লো ওয়েবহুক ফর্ম্যাটে সাহায্যকারী ফলাফলের একটি উদাহরণ দেখায়। এই উদাহরণটি ব্যবহারকারীর প্রতিক্রিয়া দেখায় যখন ওয়েবহুক সহকারীকে নির্দেশ করে যে এটি ব্যবহারকারীর নিশ্চিতকরণ পেতে হবে।

{
  "responseId": "cb6f5ec2-c26e-4349-b561-a9ddd6a0e495",
  "queryResult": {
    "queryText": "actions_intent_CONFIRMATION",
    "action": "Dialogflow action name of matched intent",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "outputContexts": [
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_intent_confirmation",
        "parameters": {
          "CONFIRMATION": true
        }
      }
    ],
    "intent": {
      "name": "projects/${PROJECTID}/agent/intents/1777d616-a5f7-4838-a9a9-870f2956bd14",
      "displayName": "Dialogflow action name of matched intent"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {},
    "languageCode": "en-us"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {},
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "yes",
              "inputType": "VOICE"
            }
          ],
          "arguments": [
            {
              "name": "CONFIRMATION",
              "boolValue": true
            }
          ],
          "intent": "actions.intent.CONFIRMATION"
        }
      ],
      "user": {},
      "conversation": {},
      "availableSurfaces": []
    }
  },
  "session": "projects/${PROJECTID}/agent/sessions/${SESSIONID}"
}

প্রতিক্রিয়া শরীর

আপনার পূর্ণতা এন্ডপয়েন্ট থেকে অ্যাসিস্ট্যান্ট পর্যন্ত HTTP পোস্টের শিরোনামে Content-Type অবশ্যই application/json হতে হবে।

আপনার পূর্ণতা ডায়ালগফ্লোতে যে প্রতিক্রিয়া বার্তা পাঠাবে তা অবশ্যই ডায়ালগফ্লো ওয়েবহুক ফর্ম্যাটে হতে হবে।

সহকারীর সাথে যোগাযোগ করার সময়, আপনার প্রতিক্রিয়াতে সাধারণত একটি payload অবজেক্ট থাকে যা একটি " google " অবজেক্টকে এনক্যাপসুলেট করে৷ " google " পেলোড অবজেক্টে অ্যাকশন অন Google-নির্দিষ্ট তথ্য অন্তর্ভুক্ত রয়েছে৷ এটিতে ন্যূনতম, একটি expectUserResponse ক্ষেত্র এবং একটি richResponse বা systemIntent ক্ষেত্র থাকতে হবে।

" google " পেলোড অবজেক্টের মূল ক্ষেত্রগুলি নীচে সংক্ষিপ্ত করা হয়েছে:

মাঠ বর্ণনা
expectUserResponse আপনার পরিপূর্ণতা ব্যবহারকারীর প্রতিক্রিয়া আশা করে কিনা তা নির্দেশ করে। কথোপকথন চালিয়ে যাওয়ার জন্য মান true এবং কথোপকথন শেষ করতে false সেট করুন।
userStorage একটি নির্দিষ্ট ব্যবহারকারীর সাথে আবদ্ধ অবিরাম ডেটা সঞ্চয় করে। মোট স্টোরেজ পরিমাণ 10,000 বাইট।
richResponse এই ফিল্ডে অ্যাসিস্ট্যান্টকে রেন্ডার করার জন্য অডিও, টেক্সট, কার্ড, সাজেশন বা স্ট্রাকচার্ড ডেটা থাকে। অ্যাকশন অন Google-এর জন্য সমৃদ্ধ প্রতিক্রিয়াগুলি ব্যবহার করার বিষয়ে আরও জানতে, সমৃদ্ধ প্রতিক্রিয়াগুলি দেখুন৷
systemIntent এই ক্ষেত্রের গঠন ExpectedInput.possibleIntents এর মতোই রয়েছে। আপনার প্রতিক্রিয়া সাধারণত একটি systemIntent ধারণ করে যদি আপনার পূর্ণতা একটি সহায়ক অভিপ্রায় ব্যবহার করে। inputValueData ক্ষেত্রের নাম পরিবর্তন করে data সহ systemIntent এর possibleIntents ক্ষেত্রটি অবশ্যই একটি ExpectedIntent অবজেক্টে সেট করতে হবে।

ExpectedIntent অবজেক্টের মধ্যে, আপনি এই মানগুলি নির্দিষ্ট করুন:

  • অভিপ্রায় : সাহায্যকারীর জন্য একটি অভিপ্রায়ের নাম যা ব্যবহারকারীকে যে ধরনের তথ্য প্রদান করতে চান তা নির্দেশ করে এবং
  • ডেটা : একটি মান স্পেসিফিকেশন, যা একটি স্ট্রিং যা সাহায্যকারীর জন্য সহায়কের জন্য প্রয়োজনীয় ডেটা বর্ণনা করে।

উদাহরণ স্বরূপ, আপনি যদি ব্যবহারকারীর অনুমতি চাচ্ছেন, তাহলে intent actions.intent.PERMISSSION এ সেট করুন এবং data মান স্পেসিফিকেশনে "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec" , যে ধরনের জন্য ক্ষেত্র বরাবর.

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

অভিপ্রায়ের নাম ডায়ালগফ্লো ইভেন্টের নাম মান স্পেসিফিকেশন বর্ণনা
actions.intent.CONFIRMATION actions_intent_CONFIRMATION "@type": "type.googleapis.com/google.actions.v2.ConfirmationValueSpec" ব্যবহারকারীর কাছ থেকে একটি নিশ্চিতকরণ পায় (উদাহরণস্বরূপ, হ্যাঁ বা না প্রশ্নের উত্তর)।
actions.intent.DATETIME actions_intent_DATETIME "@type": "type.googleapis.com/google.actions.v2.DateTimeValueSpec" ব্যবহারকারীর কাছ থেকে একটি তারিখ এবং সময় ইনপুট পায়।
actions.intent.DELIVERY_ADDRESS actions_intent_DELIVERY_ADDRESS "@type": "type.googleapis.com/google.actions.v2.DeliveryAddressValueSpec" ব্যবহারকারীর কাছ থেকে একটি বিতরণ ঠিকানা ইনপুট প্রাপ্ত.
actions.intent.LINK actions_intent_LINK "@type": "type.googleapis.com/google.actions.v2.LinkValueSpec" একটি Android অ্যাপে একটি গভীর লিঙ্ক প্রবাহের অনুরোধ করে৷
actions.intent.OPTION actions_intent_OPTION "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec" একটি তালিকা বা ক্যারোজেল UI থেকে নির্বাচিত আইটেম প্রাপ্ত করে।
actions.intent.PERMISSION actions_intent_PERMISSION "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec" পুরো নাম, মোটা অবস্থান, বা সুনির্দিষ্ট অবস্থান সহ ব্যবহারকারীর তথ্য পায়।
actions.intent.SIGN_IN actions_intent_SIGN_IN "@type": "type.googleapis.com/google.actions.v2.SignInValueSpec" একটি ব্যবহারকারীর অ্যাকাউন্ট লিঙ্ক করার জন্য একটি অ্যাকাউন্ট লিঙ্কিং প্রবাহের অনুরোধ করে৷

সহজ প্রতিক্রিয়া উদাহরণ

নীচের স্নিপেটটি ডায়ালগফ্লো ওয়েবহুক ফর্ম্যাটে একটি সাধারণ প্রতিক্রিয়ার উদাহরণ দেখায়।

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "this is a simple response"
            }
          }
        ]
      }
    }
  }
}

সাহায্যকারী উদাহরণ

নীচের স্নিপেটটি ডায়ালগফ্লো ওয়েবহুক ফর্ম্যাটে সাহায্যকারী অভিপ্রায় ব্যবহার করার একটি উদাহরণ দেখায়। এই উদাহরণে, আপনার ওয়েবহুক অ্যাসিস্ট্যান্টকে দুটি বিকল্পের মধ্যে একটি ব্যবহারকারী নির্বাচন করার নির্দেশ দেওয়ার জন্য actions.intent.OPTIONS সহায়ক উদ্দেশ্য ব্যবহার করছে।

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Choose a item"
            }
          }
        ]
      },
      "systemIntent": {
        "intent": "actions.intent.OPTION",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec",
          "listSelect": {
            "title": "Hello",
            "items": [
              {
                "optionInfo": {
                  "key": "first title key"
                },
                "description": "first description",
                "image": {
                  "url": "/assistant/images/badges/XPM_BADGING_GoogleAssistant_VER.png",
                  "accessibilityText": "first alt"
                },
                "title": "first title"
              },
              {
                "optionInfo": {
                  "key": "second"
                },
                "description": "second description",
                "image": {
                  "url": "https://lh3.googleusercontent.com/Nu3a6F80WfixUqf_ec_vgXy_c0-0r4VLJRXjVFF_X_CIilEu8B9fT35qyTEj_PEsKw",
                  "accessibilityText": "second alt"
                },
                "title": "second title"
              }
            ]
          }
        }
      }
    }
  }
}

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

নীচের স্নিপেট ব্যবহারকারীর পছন্দ নির্বাচন সহ সহায়ক ফলাফলের একটি উদাহরণ দেখায়।

{
  "responseId": "ea166558-615a-48f3-ae5b-7f55d895784b",
  "queryResult": {
    "queryText": "actions_intent_OPTION",
    "action": "",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "",
    "fulfillmentMessages": [],
    "outputContexts": [
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_intent_option",
        "parameters": {
          "OPTION": "key of selected item"
        }
      }
    ],
    "intent": {
      "name": "projects/${PROJECTID}/agent/intents/1777d616-a5f7-4838-a9a9-870f2956bd14",
      "displayName": "Dialogflow intent name of matched intent"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {},
    "languageCode": "en-us"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {
        "capabilities": []
      },
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "Title of selected item",
              "inputType": "TOUCH"
            }
          ],
          "arguments": [
            {
              "textValue": "Key of selected item",
              "name": "OPTION"
            }
          ],
          "intent": "actions.intent.OPTION"
        }
      ],
      "user": {},
      "conversation": {},
      "availableSurfaces": []
    }
  },
  "session": "projects/${PROJECTID}/agent/sessions/${SESSIONID}"
}

কথোপকথন শেষ উদাহরণ

নীচের স্নিপেটটি ডায়ালগফ্লো ওয়েবহুক ফর্ম্যাটে একটি কথোপকথন সেশন শেষ করার জন্য একটি সাধারণ প্রতিক্রিয়ার উদাহরণ দেখায়৷ প্রতিক্রিয়া বার্তায় false expectUserResponse মান সহকারীকে সংকেত দেয় যে আর কোনও ব্যবহারকারীর ইনপুট প্রত্যাশিত নয় এবং এটি বর্তমান কথোপকথনটি শেষ করবে।

{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Goodbye!"
            }
          }
        ]
      }
    }
  }
}

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