یک intent داخلی یک شناسه منحصر به فرد است که می توانید آن را مشخص کنید تا به دستیار Google بگویید که Action شما می تواند دسته خاصی از درخواست های کاربر را برآورده کند. به عنوان مثال، در اینجا چند نمونه از پرس و جوهای کاربر وجود دارد که Assistant با اهداف داخلی مطابقت دارد:
- هدف داخلی "بازی بازی" : "Ok Google. یک بازی حافظه بازی کنید"
- هدف داخلی "دریافت طالع بینی" : "Ok Google. Get my horoscope"
در حین کشف اقدام ، دستیار میتواند از فرادادههای مربوط به Action شما، از جمله اهداف داخلی که مشخص کردهاید، استفاده کند تا Action شما را به کاربران توصیه کند. برای به حداقل رساندن رفت و آمدهای مکالمه ای، دستیار همچنین سعی می کند پارامترهای درخواست های کاربر را اسکن کند و آنها را به Action شما منتقل کند.
برای مشاهده فهرست کامل مقاصد داخلی که دستیار پشتیبانی میکند، شامل پارامترهای آنها و نمونه درخواستهای کاربر، به مرجع Intent های داخلی مراجعه کنید.
اهداف داخلی را ادغام کنید
بسته به نحوه ساخت Action خود، راه های مختلفی برای ادغام intent های داخلی وجود دارد.
جریان گفتگو
اگر از Dialogflow برای ایجاد Action خود استفاده می کنید، می توانید یک intent داخلی را به صورت گرافیکی از کنسول Dialogflow متصل کنید.
برای پیوست کردن یک intent داخلی با Dialogflow، مراحل زیر را دنبال کنید:
- کنسول Dialogflow را باز کنید، عامل خود را انتخاب کنید، سپس به صفحه Intents بروید.
هدفی را ایجاد یا انتخاب کنید که عامل شما هنگام دریافت یک هدف داخلی خاص، راهاندازی میکند. بخش رویدادها را باز کنید و روی افزودن رویداد کلیک کنید.
در قسمت رویدادها ، نام یک رویداد هدف داخلی را برای نماینده خود تایپ کنید (به عنوان مثال،
actions_intent_PLAY_GAME
).روی ذخیره کلیک کنید.
Actions SDK
اگر از Actions SDK برای ساخت Action خود استفاده می کنید، باید نگاشت بین intent های داخلی و Actions را در بسته Action خود مشخص کنید.
برای پیوست کردن یک intent داخلی با Actions SDK، این مراحل را دنبال کنید:
- هدف داخلی را در قسمت نام در تعریف Action خود مشخص کنید.
- بسته اکشن خود را با استفاده از ابزار
gactions
در پروژه Actions خود آپلود کنید، همانطور که در نمای کلی Actions SDK توضیح داده شده است.
به عنوان مثال، قطعه زیر نشان می دهد که چگونه می توانید CHECK_AIR_QUALITY
قصد داخلی را اضافه کنید:
{
"actions":[
{
"description":"Default Welcome Intent",
"name":"MAIN",
"fulfillment":{
"conversationName":"conversation_1"
},
"intent":{
"name":"actions.intent.MAIN"
}
},
{
"description":"Check Air Quality",
"name":"CHECK_AIR_QUALITY",
"fulfillment":{
"conversationName":"conversation_1"
},
"intent":{
"name":"actions.intent.CHECK_AIR_QUALITY"
}
}
],
"conversations":{
"conversation_1":{
"name":"conversation_1",
"url":"https://example.com/fulfillment",
"fulfillmentApiVersion":2
}
}
}
کنترل پارامترهای هدف داخلی
وقتی Action شما از طریق یک intent داخلی فراخوانی می شود، ممکن است انجام شما پارامترهای بیشتری دریافت کند. طرح intent نام پارامترها و انواع آنها را به عنوان انواع اولیه یا موجودیت های schema.org تعریف می کند. برای مشاهده طرح اهداف داخلی کنش مکالمه، به مرجع مقاصد داخلی مراجعه کنید.
پارامترهای مقاصد داخلی اختیاری هستند. دستیار پر کردن پارامترها را با مقادیری انجام می دهد که بتوان آنها را از فراخوانی کاربر از قصد داخلی استخراج کرد.
برای مثال، طرح intent داخلی actions.intent.CHECK_AIR_QUALITY
چهار پارامتر اختیاری را تعریف می کند:
نام پارامتر | تایپ کنید |
---|---|
attributes | یک مقدار رشته |
location | یک شی schema.org/Place . |
temporalCoverage | یک شی schema.org/Duration . |
timeIndicator | EnumeratedDuration (افزونه مخصوص گوگل). |
قطعه کد زیر نمونهای از درخواست webhook مکالمه (JSON) را نشان میدهد که کاربر اقدام شما را با گفتن "کیفیت هوای فردا در سانفرانسیسکو چگونه است؟" :
"inputs":[
{
"intent":"actions.intent.CHECK_AIR_QUALITY",
"rawInputs":[
{
"inputType":"VOICE",
"query":"what is the air quality in san francisco tomorrow"
}
],
"arguments":[
{
"name":"location",
"structuredValue":{
"geo":{
"longitude":-122.41941550000001,
"latitude":37.7749295
},
"@context":"https://schema.org",
"@type":"Place",
"name":"san francisco"
}
},
{
"name":"temporalCoverage",
"rawText":"2018-04-25",
"textValue":"2018-04-25"
}
]
}
]
در این مثال، پارامترها مقادیر زیر را می گیرند:
- پارامتر
location
حاوی مقدارschema.org/Place
برای "سان فرانسیسکو" است. - پارامتر
temporalCoverage
حاوی مقدارschema.org/Duration
برای تاریخ فردا نسبت به زمان فراخوانی است. - هیچ مقداری برای
attributes
و پارامترهایtimeIndicator
وجود ندارد زیرا عبارت فراخوانی کاربر شامل چنین اطلاعاتی نمی شود.
اگر از Actions on Google Client Library برای Node.js استفاده می کنید، می توانید مقدار پارامترها را همانطور که در قطعه زیر نشان داده شده است بازیابی کنید:
app.intent('actions.intent.CHECK_AIR_QUALITY', (conv) => {
const attributes = conv.arguments.get('attributes');
const location = conv.arguments.get('location');
const temporal_coverage = conv.arguments.get('temporalCoverage');
Const time_indicator = conv.arguments.get('timeIndicator')
// Your Action logic. If you need to use any of the parameter values,
// you should check first that it is defined. Arguments.get returns
// undefined if it can't find a value for a parameter.
});
ادغام ها را با هدف های داخلی آزمایش کنید
برای تست ادغام خود مراحل زیر را دنبال کنید:
- شبیهساز Actions را با فعال بودن Action آزمایشی باز کنید یا Assistant را در دستگاه خود باز کنید.
- پرس و جوی مرتبط با آن هدف داخلی را بگویید یا تایپ کنید. به عنوان مثال، "من می خواهم یک بازی انجام دهم."
- از کادر گفتگوی انتخاب برنامه نمایش داده شده، اقدام خود را پیدا کنید.
- برنامه خود را برای ارسال یک هدف به برنامه خود انتخاب کنید.
بهترین روش ها برای استفاده از مقاصد داخلی
هنگام استفاده از Intent های داخلی باید این بهترین شیوه ها را دنبال کنید:
- نقشهسازی اهداف داخلی برای کنشهای خاص : وقتی یک هدف داخلی خاص Action شما را فعال میکند، کاربر را با کمترین اصطکاک ممکن به هدف و عملکرد خاص در Action خود بفرستید. به عنوان مثال، اگر Action شما از قصد داخلی
PLAY_GAME
پشتیبانی می کند و آن هدف را دریافت می کند، باید فوراً کاربر را به ویژگی بازی Action خود بفرستید. از پرسیدن مجدد از کاربر که می خواهد بازی کند خودداری کنید. - کنترل پارامترهای هدف داخلی : مطمئن شوید که از مقادیر پارامتر intent داخلی که دستیار برای اجرای شما ارسال میکند استفاده کنید. از درخواست مجدد آن مقادیر از کاربر خودداری کنید.