يصف هذا القسم تنسيق حمولة JSON عندما يستدعي "المهام مع مساعد Google" توصيل الطلبات من خلال الإصدار 2 من Dialogflow.
في حال استخدام Dialogflow لإنشاء المهام، يصبح تنفيذ تتواصل مع Dialogflow من خلال تنسيق الرد التلقائي على الويب الخاص بها بدلاً من تنسيق الرد التلقائي على الويب لمحادثات "المهام مع مساعد Google". يحتوي تنسيق الرد التلقائي على الويب Dialogflow على كل معلومات تنسيق الردّ التلقائي على الويب للمحادثة إلى جانب بيانات Dialogflow الإضافية، مثل المعلومات المتعلقة والسياقات والمعلمات.
للاطّلاع على مزيد من الأمثلة على رسائل JSON للردّ التلقائي على الويب في Dialogflow، يمكنك الرجوع إلى على مشروع GitHub هذا.
نص الطلب
رسالة الطلب من يحتوي Dialogflow على بيانات بتنسيق الرد التلقائي على الويب Dialogflow. يتضمن هذا الكائن المعلومات المتعلقة بـ "المهام مع مساعد Google"، كما هو موضّح أدناه:
- قيمة
originalDetectIntentRequest.source
هي "google". - تشير السمة
originalDetectIntentRequest.version
إلى "المهام مع مساعد Google". الإصدار الخاص بالطلب. - يحتوي
originalDetectIntentRequest.payload
على المهام الرئيسية الخاصة بـ Google المعلومات، بما في ذلك المحادثة طلب ملف JSON من "مساعد Google" - الحقل "
Conversation.conversationToken
" غير متاح في الردّ التلقائي على الويب الخاص بـ Dialogflow الطلبات. بدلاً من ذلك، يمكن لعملية التنفيذ استخدام Dialogflow السياق للاحتفاظ بالبيانات عبر عمر المحادثة.
مثال على طلب استدعاء بسيط
يعرض المقتطف أدناه مثالاً على طلب استدعاء في 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}"
}
مثال على طلب محادثة بسيط
يعرض المقتطف أدناه مثالاً على طلب محادثة في Dialogflow تنسيق الرد التلقائي على الويب، حيث يكون إدخال المستخدم عبارة عن سلسلة نصية.
{
"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}"
}
مثال على النتيجة المساعدة
يوضِّح المقتطف أدناه مثالاً لنتيجة مساعِدة بتنسيق الردّ التلقائي على الويب Dialogflow. يعرض هذا المثال ردّ المستخدم بعد أن يشير الردّ التلقائي على الويب إلى "مساعد Google". أنه يحتاج إلى الحصول على تأكيد من المستخدم.
{
"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}"
}
نص الاستجابة
Content-Type
في عنوان مشاركات HTTP من نقطة نهاية التنفيذ
إلى "مساعد Google" يجب أن تكون application/json
.
يجب أن تكون رسالة الرد التي ترسلها عملية المعالجة إلى Dialogflow بتنسيق تنسيق وحدات الردّ التلقائي على ويب Dialogflow.
عند التواصل مع "مساعد Google"، يحتوي ردّك عادةً على payload
.
كائن يتضمّن الرمز "google
" الخاص بك. يتضمّن عنصر الحمولة "google
"
الإجراءات المتعلّقة بالمعلومات الخاصة بـ Google. يجب أن يحتوي على الأقل على
expectUserResponse
، وإما حقل richResponse
أو systemIntent
.
الحقول الرئيسية لـ "google
" في ما يلي تلخيص كائن حمولة البيانات:
الحقل | الوصف |
---|---|
expectUserResponse |
يشير هذا الحقل إلى ما إذا كانت عملية التنفيذ تتوقّع الحصول على ردّ من المستخدم. اضبط القيمة على
true الوقت المناسب لمواصلة المحادثة وfalse حتى النهاية
المحادثة. |
userStorage |
يخزن البيانات الدائمة المرتبطة بمستخدم محدد. إجمالي مساحة التخزين يبلغ 10000 بايت. |
richResponse |
يتضمّن هذا الحقل صوتًا أو نصًا أو بطاقات أو اقتراحات أو بيانات منظَّمة. حتى يعرضها "مساعد Google" لمزيد من المعلومات حول استخدام الردود المنسّقة المهام مع مساعد Google، راجع الردود المنسّقة |
systemIntent |
هذا الحقل له نفس هيكل
ExpectedInput.possibleIntents يحتوي ردك عادةً على
systemIntent إذا كانت طريقة توصيل الطلب تستخدم
هدف مساعد. تشير رسالة الأشكال البيانية
possibleIntents
في الحقل systemIntent يجب ضبطه على
ExpectedIntent
مع تغيير اسم الحقل inputValueData إلى data .
|
ضمن عنصر ExpectedIntent
، يمكنك تحديد القيم التالية:
- intent: اسم intent للمساعد يشير إلى نوع والمعلومات التي تريد أن يقدمها المستخدم،
- data: مواصفات القيمة، وهي سلسلة تصف البيانات المطلوبة حتى يقوم "مساعد Google" بتنفيذ المساعد.
على سبيل المثال، إذا كنت تطلب إذن المستخدم، اضبط السمة intent
على
actions.intent.PERMISSSION
وdata
إلى مواصفات القيمة
"@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec"
، إلى جانب الحقول الخاصة
من هذا النوع.
تلخّص القائمة التالية سلاسل مواصفات القيم للمساعدات التي يمكنك ضبطها في
systemIntent
لتلقّي ردّ تلقائي على الويب من Dialogflow. للاطّلاع على قائمة كاملة بأهداف "المهام مع مساعد Google"
للتحكم في المحادثات، راجع
مرجع الأهداف.
اسم الغرض | اسم حدث Dialogflow | مواصفات القيمة | الوصف |
---|---|---|---|
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"
|
الحصول على العنصر المحدّد من واجهة مستخدم قائمة أو لوحة عرض دوّارة |
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"
|
يطلب هذا الإجراء مسار ربط الحساب لربط حساب مستخدم. |
مثال على ردّ بسيط
يوضح المقتطف أدناه مثالاً لرد بسيط في Dialogflow الرد التلقائي على الويب.
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "this is a simple response"
}
}
]
}
}
}
}
مثال مساعِد
يعرض المقتطف أدناه مثالاً على استخدام هدف مساعد في Dialogflow
الرد التلقائي على الويب. في هذا المثال، يستخدم رابط البيانات في الخادم العميق actions.intent.OPTIONS
نية المساعِد لتوجيه "مساعد Google" إلى الحصول على اختيار من المستخدِم بين خيارَين.
{
"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"
}
]
}
}
}
}
}
}
عند تلقّي الرسالة من المثال السابق، يبدأ "مساعد Google" مؤقتًا. يتولى المحادثة ويطلب من المستخدم الاختيار بناءً على الخيارات المحددة. عندما يجمع "مساعد Google" كل البيانات المطلوبة من المستخدمين تعيد هذه النتيجة المساعدة إلى عملية التنفيذ في طلب الردّ التلقائي على الويب في Dialogflow.
يوضح المقتطف أدناه مثالاً على نتيجة مساعدة مع تحديد خيار المستخدم.
{
"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}"
}
مثال على إنهاء المحادثة
يعرض المقتطف أدناه مثالاً على رد بسيط لإنهاء محادثة.
بتنسيق الرد التلقائي على الويب Dialogflow. تشير رسالة الأشكال البيانية
expectUserResponse
القيمة false
في إشارات رسالة الردّ الموجَّهة إلى "مساعد Google"
أنه من غير المتوقع أن يُدخل المستخدم أي بيانات إضافية وأنه يجب أن ينهي
محادثة.
{
"payload": {
"google": {
"expectUserResponse": false,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Goodbye!"
}
}
]
}
}
}
}
لمعرفة كيفية إلغاء السلوك التلقائي عندما يستدعي المستخدمون معيارًا عبارة لإنهاء محادثة مع المساعد، راجع دليل الخروج من المحادثات.