قالب مکالمه وب هوک {:#conversation-webhook-format} (Dialogflow)

این بخش، قالب بارگیری JSON را هنگامی که Actions on Google از طریق Actions SDK اجرای شما را فراخوانی می‌کند، توضیح می‌دهد.

هنگامی که مکالمه شروع می شود، توسط یک conversationId منحصر به فرد شناسایی می شود. برای هر درخواست کاربر بعدی به دستیار، انجام شما هدفی را دریافت می کند که وب هوک شما باید آن را پردازش کرده و به آن پاسخ دهد. این conversationId در هر جفت درخواست و پاسخ تا پایان مکالمه باقی می ماند.

درخواست بدن

هنگامی که کاربران یک پرس و جو اولیه انجام می دهند یا ورودی های بعدی را ارائه می دهند، دستیار درخواستی را برای انجام شما ارسال می کند. درخواست‌های وب هوک مکالمه از دستیار حاوی داده‌هایی مانند هدفی که راه‌اندازی شده، متن خام ورودی کاربر و قابلیت‌های سطحی دستگاه کاربر است.

فیلدهای کلیدی برای درخواست در قالب webhook گفتگو در زیر خلاصه شده است:

رشته شرح
isInSandbox این متغیر بولی عمدتاً برای ویژگی تراکنش‌ها استفاده می‌شود، تا نشان دهد آیا وب‌هوک شما باید این درخواست را در حالت جعبه ایمنی انجام دهد یا خیر. در حالت sandbox، وب هوک شما نباید هیچ گونه سفارش خریدی توسط کاربران را شارژ یا انجام دهد. به طور پیش‌فرض روی " true " تنظیم شده است.
surface اطلاعاتی درباره سطح Assistant که کاربر با آن در تعامل است و قابلیت‌های آن.
Inputs اطلاعات مربوط به درخواست فراخوان برای فراخوانی آغازگر، این شامل یک قصد است که به یک عمل نگاشت می شود. برای درخواست‌های بعدی در مکالمه، این شیء ممکن است شامل آرگومان‌هایی باشد که مطابق با ورودی‌های مورد انتظار مشخص‌شده توسط شماست.
User اطلاعات مربوط به کاربری که درخواست را آغاز کرده است. این اطلاعات شامل مجوزهای اعطا شده توسط کاربر و موقعیت مکانی کاربر است.
Conversation اطلاعات مربوط به زمینه مکالمه، از جمله شناسه مکالمه، نوع (مثلاً، آیا این درخواست مکالمه جدیدی را آغاز می‌کند یا خیر)، و یک نشانه مکالمه برای ذخیره داده‌های پایدار در طول عمر مکالمه.
availableSurfaces این اطلاعات برای مکالمات چند سطحی استفاده می شود.

مثال درخواست فراخوان ساده

قطعه زیر نمونه ای از درخواست فراخوانی را در قالب مکالمه وب هوک نشان می دهد.

{
  "user": {
    "userId": "ABwppHEF...",
    "locale": "en-US",
    "lastSeen": "2018-03-21T17:59:52Z",
    "userStorage": "{\"data\":{}}"
  },
  "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": {
    "conversationId": "1521784527171",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.MAIN",
      "rawInputs": [
        {
          "inputType": "VOICE",
          "query": "Talk to my test app"
        }
      ]
    }
  ],
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
        },
        {
          "name": "actions.capability.WEB_BROWSER"
        }
      ]
    }
  ]
}

نمونه درخواست مکالمه ساده

قطعه زیر نمونه ای از درخواست مکالمه را در قالب مکالمه وب هوک نشان می دهد، که در آن ورودی کاربر یک رشته متن است (به عنوان مثال، "شماره خوش شانس من 88 است." ):

{
  "user": {
    "userId": "ABwppHEF...",
    "locale": "en-US",
    "lastSeen": "2018-03-21T17:59:52Z",
    "userStorage": "{\"data\":{}}"
  },
  "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": {
    "conversationId": "1521784527171",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.TEXT",
      "rawInputs": [
        {
          "inputType": "VOICE",
          "query": "My lucky number is 88."
        }
      ]
    }
  ],
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
        },
        {
          "name": "actions.capability.WEB_BROWSER"
        }
      ]
    }
  ]
}

بدن پاسخگو

Content-Type در هدر پست‌های HTTP از نقطه پایانی شما تا دستیار باید application/json باشد.

یک پاسخ در قالب webhook مکالمه حاوی داده‌هایی مانند رابط کاربری واقعی برای نشان دادن کاربر (شامل اجزای صوتی و بصری) و هدفی است که می‌تواند در درخواست بعدی فعال شود (به نام یک هدف مورد انتظار ). هدف مورد انتظار می‌تواند هر یک از مقاصدی باشد که دستیار می‌فهمد، همانطور که در مرجع Intents API توضیح داده شده است.

برای کسب اطلاعات بیشتر در مورد قالب‌بندی رابط کاربری برای پاسخ‌های خود هنگامی که در دستیار نمایش داده می‌شوند، به مستندات پاسخ‌ها مراجعه کنید.

نمونه پاسخ ساده

قطعه زیر نمونه ای از پاسخ ساده در قالب مکالمه وب هوک را نشان می دهد.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "You are using the Actions SDK. Do you want to hear more about it?"
              }
            }
          ]
        }
      }
    }
  ]
}

مثال کمکی

قطعه زیر نمونه ای از استفاده از یک هدف کمکی در قالب گفتگوی وب هوک را نشان می دهد. در این مثال، webhook از قصد کمکی actions.intent.OPTIONS استفاده می‌کند تا به دستیار دستور دهد تا انتخاب کاربر را از بین چندین گزینه به دست آورد.

برای کسب اطلاعات بیشتر در مورد استفاده از اهداف کمکی، به راهنمای Helpers مراجعه کنید.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.OPTION",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec",
            "carouselSelect": {
              "items": [
                {
                  "optionInfo": {
                    "key": "one",
                    "synonyms": [
                      "synonym of KEY_ONE 1",
                      "synonym of KEY_ONE 2"
                    ]
                  },
                  "description": "Description of number one",
                  "title": "Number one"
                },
                {
                  "optionInfo": {
                    "key": "two",
                    "synonyms": [
                      "synonym of KEY_TWO 1",
                      "synonym of KEY_TWO 2"
                    ]
                  },
                  "description": "Description of number two",
                  "title": "Number two"
                }
              ]
            }
          }
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "this shows an example of a carousel"
              }
            }
          ],
          "suggestions": [
            {
              "title": "1"
            },
            {
              "title": "2"
            }
          ]
        }
      }
    }
  ]
}

مثال پایان مکالمه

قطعه زیر نمونه ای از یک پاسخ ساده برای پایان دادن به یک جلسه مکالمه را در قالب پاسخ به هوک گفتگو نشان می دهد.

مقدار expectedUserResponse false در پیام پاسخ به دستیار نشان می دهد که هیچ ورودی دیگری از کاربر انتظار نمی رود و باید مکالمه فعلی را پایان دهد. مقدار finalResponse نشان می‌دهد که دستیار باید قبل از پایان مکالمه چه چیزی را به کاربر نمایش یا خروجی بدهد.

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Good bye"
          }
        }
      ]
    }
  }
}

برای یادگیری نحوه نادیده گرفتن رفتار پیش‌فرض هنگامی که کاربران یک عبارت استاندارد را برای پایان دادن به مکالمه با دستیار فراخوانی می‌کنند، به خروجی‌های مکالمه مراجعه کنید.