۱. مرور کلی
با استفاده از App Actions، میتوانید از دستیار گوگل برای دسترسی مستقیم به ویژگیهای برنامه و انجام وظایف با استفاده از صدای خود استفاده کنید. به عنوان یک توسعهدهنده اندروید، شما عناصر قابلیت را برای افزودن App Actions پیادهسازی میکنید. قابلیتها به دستیار اطلاع میدهند که کدام ویژگیهای برنامه از درخواستهای صوتی کاربر پشتیبانی میکنند و چگونه میخواهید این درخواستها انجام شوند.
این آزمایشگاه کد، مفاهیم سطح مبتدی برای توسعه با App Actions را پوشش میدهد. برای دنبال کردن این آزمایشگاه کد، باید تجربه قبلی در توسعه برنامههای اندروید و Android intents داشته باشید. اگر در اندروید تازهکار هستید، میتوانید با یکی از آزمایشگاههای کد برای اصول توسعهدهندگان اندروید شروع کنید.
آنچه خواهید ساخت
در این آزمایشگاه کد، شما دو Intent (BII) داخلی App Actions را به یک برنامه اندروید تناسب اندام نمونه اضافه خواهید کرد که به کاربران امکان میدهد با استفاده از صدای خود، یک تایمر ورزشی را شروع و متوقف کنند.
آنچه یاد خواهید گرفت
شما یاد خواهید گرفت که چگونه از BII های دسته سلامت و تناسب اندام برای گسترش دستیار به یک برنامه اندروید استفاده کنید. همچنین یاد خواهید گرفت که از افزونه Google Assistant برای اندروید استودیو برای آزمایش BII های خود استفاده کنید.
پیشنیازها
قبل از ادامه، مطمئن شوید که ابزارهای زیر را در محیط خود دارید:
- یک ترمینال برای اجرای دستورات shell با نصب git .
- آخرین نسخه اندروید استودیو
- یک حساب گوگل با دسترسی به [کنسول گوگل پلی][].
- یک دستگاه اندروید فیزیکی یا مجازی با دسترسی به اینترنت و فروشگاه پلی استور.
قبل از ادامه، مطمئن شوید که با یک حساب گوگل وارد اندروید استودیو و برنامه گوگل روی دستگاه آزمایشی خود شدهاید.
۲. نحوهی کار آن را درک کنید
اقدامات برنامه، کاربران را از دستیار گوگل به برنامه اندروید شما متصل میکند. آنها چگونه کار میکنند؟
وقتی کاربری از دستیار میخواهد که با استفاده از برنامه شما کاری را انجام دهد، دستیار درخواست او را با capability App Actions که در منبع XML مربوط به shortcuts.xml برنامه شما تعریف شده است، مطابقت میدهد.

شکل ۱. نمودار جریانی که نحوه پردازش یک پرسوجوی صوتی App Actions توسط دستیار گوگل را نشان میدهد.
هر عنصر قابلیت موارد زیر را تعریف میکند:
- یک هدف (intent) : هدف صوتی App Actions که باید این قابلیت را فعال کند.
- یک یا چند تحقق : اهداف یا پیوندهای عمیق اندروید که دستیار برای راهاندازی برنامه و انجام درخواست صوتی کاربر ایجاد میکند. تعاریف تحقق مشخص میکند که کدام پارامترها از پرسوجوی کاربر انتظار میرود و چگونه این پارامترها باید در دستورالعملهای راهاندازی کدگذاری شوند.
اهداف
در درک زبان طبیعی (NLU)، یک هدف (Intent) گروهی از عبارات کاربر است که معانی مشابهی دارند. گوگل دهها هدف (BII) «توکار» را ایجاد کرده است که طیف گستردهای از انواع درخواستها را در App Actions پوشش میدهند. به عنوان مثال، دستیار گوگل آموزش دیده است که عبارات «سفارش پیتزا» یا «منوی دسر را به من نشان بده» را با ORDER_MENU_ITEM BII مرتبط کند. با App Actions، میتوانید از این BIIها برای گسترش سریع درخواستهای صوتی رایج به قابلیتهای برنامه استفاده کنید.
تحققها
وقتی درخواست کاربر باعث ایجاد یک App Action در shortcuts.xml میشود، اکتیویتی اندروید شما باید intent یا لینک عمیق اندروید ورودی را شناسایی و مدیریت کند و عملکرد مورد نظر کاربر را ارائه دهد. نتیجه، یک تجربه کاربری مبتنی بر صدا است که در آن دستیار صوتی، برنامه شما را در پاسخ به درخواست کاربر فراخوانی میکند.
۳. محیط توسعه خود را آماده کنید
این آزمایشگاه کد از برنامه نمونه تناسب اندام برای اندروید استفاده میکند. این برنامه به کاربران امکان میدهد یک تایمر ورزشی را شروع و متوقف کنند و آمار مربوط به روالهای ورزشی خود را مشاهده کنند.
فایلهای پایه خود را دانلود کنید
برای دریافت فایلهای پایه برای این codelab، دستور زیر را برای کلون کردن مخزن GitHub اجرا کنید:
git clone --branch codelab-start https://github.com/actions-on-google/appactions-fitness-kotlin.git
پس از کلون کردن مخزن، آن را در اندروید استودیو باز کنید:
- در پنجرهی «به اندروید استودیو خوش آمدید» ، روی «وارد کردن پروژه» کلیک کنید.
- پوشهای را که مخزن را در آن کلون کردهاید، پیدا کرده و انتخاب کنید.
بهروزرسانی شناسه برنامه اندروید
بهروزرسانی شناسه برنامه، برنامه را بهطور منحصربهفرد روی دستگاه آزمایشی شما شناسایی میکند و در صورت آپلود برنامه در کنسول Play، از خطای "نام بسته تکراری" جلوگیری میکند. برای بهروزرسانی شناسه برنامه، app/build.gradle را باز کنید:
android {
...
defaultConfig {
applicationId "com.MYUNIQUENAME.android.fitactions"
...
}
}
عبارت "MYUNIQUENAME" را در فیلد applicationId با چیزی که مختص خودتان باشد جایگزین کنید.
برنامه را روی دستگاه خود امتحان کنید
قبل از ایجاد تغییرات بیشتر در کد برنامه، بهتر است ایدهای از قابلیتهای برنامه نمونه داشته باشید. آزمایش برنامه در محیط توسعه شما شامل این مراحل است:
- باز کردن دستگاه تست اندروید مجازی یا فیزیکی شما.
- تأیید کارکرد برنامه دستیار.
- استفاده از اندروید استودیو برای استقرار و اجرای برنامه نمونه روی دستگاه شما.
برای تست برنامه خود، این مراحل را دنبال کنید:
- در اندروید استودیو، گزینه Run > Run app را انتخاب کنید یا روی Run کلیک کنید.
در نوار ابزار. - اگر از یک دستگاه مجازی استفاده میکنید، در کادر محاورهای Select Deployment Target ، یک دستگاه مجازی را انتخاب کرده و روی OK کلیک کنید. نسخه سیستم عامل توصیه شده اندروید ۸ (سطح API ۲۶) یا بالاتر است، اگرچه Actions روی دستگاههایی با اندروید ۵ (سطح API ۲۱) نیز اجرا میشود.
- پس از باز کردن برنامه، دکمه صفحه اصلی را برای مدت طولانی فشار دهید تا دستیار تنظیم شود و تأیید کنید که کار میکند. اگر قبلاً وارد دستیار نشدهاید، وارد سیستم شوید.
- برنامه را دوباره باز کنید.

شکل ۲. برنامه نمونه Fit Actions که آمار تمرینات را نمایش میدهد.
به طور خلاصه برنامه را بررسی کنید تا ببینید چه کارهایی میتواند انجام دهد. با ضربه زدن روی نماد دویدن، تایمر ورزش شروع میشود و با ضربه زدن روی نماد X، تایمر متوقف میشود. اینها کارهایی هستند که میتوانید برای کنترل صوتی با App Actions فعال کنید.
افزونه دستیار گوگل را نصب کنید
افزونهی دستیار گوگل به شما امکان میدهد تا اقدامات برنامهی خود را روی یک دستگاه آزمایشی آزمایش کنید. برای افزودن آن به اندروید استودیو، این مراحل را دنبال کنید:
- به مسیر File > Settings (در MacOS ، اندروید استودیو > Preferences ) بروید.
- در بخش افزونهها، به بازار بروید و عبارت «دستیار گوگل» را جستجو کنید.
- ابزار را نصب کنید و اندروید استودیو را مجدداً راه اندازی کنید.
۴. قابلیت شروع تمرین BII را اضافه کنید
دستور actions.intent.START_EXERCISE BII به کاربران اجازه میدهد تا یک برنامه را باز کرده و با استفاده از صدای خود، تمرین را شروع کنند. در این مرحله، شما قابلیتی را برای این BII پیادهسازی میکنید که به کاربران اجازه میدهد از دستیار گوگل بخواهند که در برنامه تناسب اندام، دویدن را شروع کند.
تعریف قابلیت
دستیار از عناصر capability تعریف شده در shortcuts.xml برای پردازش دستورات صوتی با مراحل زیر استفاده میکند:
- دستیار، پرسوجوی صوتی کاربر را با یک BII تعریفشده در قابلیتهای برنامه شما مطابقت میدهد.
- دستیار مقادیر را از پرس و جو به پارامترهای BII استخراج میکند. هر پارامتر به یک
Bundleمتصل به یکIntentتولید شده اضافه میشود. - دستیار از
Intentبرای اجرای برنامه استفاده میکند و به برنامه اجازه دسترسی به پارامترهای همراه را میدهد.
تابع START_EXERCISE BII از پارامتر exercise.name BII پشتیبانی میکند. شما از این پارامتر برای مشخص کردن نوع تمرین مورد نظر برای پیگیری در برنامه توسط کاربران استفاده خواهید کرد.
با افزودن این capability به shortcuts.xml که در دایرکتوری پروژه نمونه app/src/main/res/xml قرار دارد، START_EXERCISE BII را به برنامه خود اضافه کنید:
<!-- shortcuts.xml -->
<capability android:name="actions.intent.START_EXERCISE">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE"
android:targetClass="com.devrel.android.fitactions.FitMainActivity">
<parameter
android:name="exercise.name"
android:key="exerciseType"/>
</intent>
</capability>
PUT_YOUR_APPLICATION_ID_HERE با applicationId منحصر به فردی که در مرحلهی قبل تعریف کردید، جایگزین کنید.
نمونه XML قبلی:
- یک قابلیت برای
START_EXERCISEBII اعلام میکند. -
intentکه دستیار (Assistant) برای اجرای برنامه تولید میکند را مشخص میکند:- ویژگیهای
targetPackageوtargetClassاکتیویتی دریافتکننده را مشخص میکنند. - ویژگی
parameter، پارامترexercise.nameBII را بهexerciseTypeدر فایلهای اضافیBundleکه توسط activity دریافت میشوند، نگاشت میکند.
- ویژگیهای
پارامترهای BII را با موجودی درون خطی مدیریت کنید
پارامترهای BII عناصر استخراج شده از یک پرس و جوی کاربر Assistant را نشان میدهند. برای مثال، وقتی کاربری میگوید: «سلام گوگل، یک اجرا را در ExampleApp شروع کن»، Assistant عبارت «run» را در پارامتر BII schema.org exercise.name میکند. برای برخی از BIIها، میتوانید به Assistant دستور دهید که پارامترهای BII را با مجموعهای از شناسههای مورد انتظار برنامه شما مطابقت دهد.
شما این کار را با اتصال عناصر موجودی درون خطی به پارامتر BII انجام میدهید. موجودی درون خطی مجموعهای از مقادیر پارامترهای BII پشتیبانی شده، مانند "run"، "hike" و "jog" و شناسه میانبر مربوطه آنها، مانند EXERCISE_RUN است. این اتصال موجودی، دستیار را قادر میسازد تا شناسه میانبر را برای پارامترهای منطبق، به جای مقدار خام پرس و جو، به فعالیت تکمیل سفارش شما منتقل کند.
برخی از پارامترهای BII، مانند exercise.name ، برای عملکرد به یک فهرست موجودی درونخطی نیاز دارند. برای مدیریت این پارامتر، عناصر shortcut فهرست موجودی زیر را به shortcuts.xml اضافه کنید:
<!-- shortcuts.xml -->
<shortcuts>
<shortcut
android:shortcutId="running"
android:shortcutShortLabel="@string/activity_running">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/runningSynonyms"/>
</capability-binding>
</shortcut>
<shortcut
android:shortcutId="walking"
android:shortcutShortLabel="@string/activity_walking">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/walkingSynonyms"/>
</capability-binding>
</shortcut>
<shortcut
android:shortcutId="cycling"
android:shortcutShortLabel="@string/activity_cycling">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/cyclingSynonyms"/>
</capability-binding>
</shortcut>
<capability> ... </capability>
</shortcuts>
در کد قبلی، شما سه میانبر تعریف کردید که نشاندهندهی یک فهرست درونخطی برای انواع ورزشهای پشتیبانیشده توسط برنامه هستند: دویدن، پیادهروی و دوچرخهسواری. هر میانبر به روشهای زیر به این قابلیت متصل است:
- ویژگی
android:keyهر عنصرcapability-bindingبه همانSTART_EXCERCISEBII تعریف شده برای آن قابلیت اشاره دارد. - عنصر
parameter-bindingهر کلید میانبر برای پارامترexercise.nameBII است.
مترادفهای موجودی درون خطی را اضافه کنید
ویژگیهای android:value عنصر parameter-binding در میانبرهای موجودی قبلی به یک منبع آرایهای از مترادفها برای هر عنصر موجودی اشاره دارند. مترادفها امکان اشاره به انواع مختلفی از یک نوع عنصر، مانند "run"، "jog" و "sprint" را به یک shortcutId یکسان میدهند. ورودیهای مترادف زیر را به منبع array.xml پروژه اضافه کنید:
<!-- array.xml -->
<array name="runningSynonyms">
<item>Run</item>
<item>Jog</item>
<item>Jogging</item>
<item>Sprint</item>
</array>
<array name="walkingSynonyms">
<item>Walk</item>
<item>Hike</item>
<item>Hiking</item>
</array>
<array name="cyclingSynonyms">
<item>Biking</item>
<item>Riding</item>
<item>Pedaling</item>
</array>
اهداف ورودی اندروید را برآورده کنید
اینتنتهای اندروید، اشیاء پیامرسانی هستند که اندروید برای درخواست یک عمل از برنامه دیگر استفاده میکند. دستیار با تولید یک اینتنت از جزئیات پیکربندی در قابلیت فعالشده، درخواستهای صوتی کاربران را انجام میدهد. برای انجام اینتنتها برای قابلیت START_EXERCISE ، کلاس هدف FitMainActivity را بهروزرسانی کنید تا اینتنت ورودی و پارامترهای BII را مدیریت کند.
ابتدا، تابع Intent.handleIntent را با کد زیر جایگزین کنید:
//FitMainActivity.kt
private fun Intent.handleIntent() {
when (action) {
// When the BII is matched, Intent.Action_VIEW will be used
Intent.ACTION_VIEW -> handleIntent(data)
// Otherwise start the app as you would normally do.
else -> showDefaultView()
}
}
سپس، یک تابع جدید handleIntent با کد زیر به کلاس اضافه کنید:
//FitMainActivity.kt
/**
* Use extras provided by the intent to handle the different BIIs
*/
private fun handleIntent(data: Uri?) {
// path is normally used to indicate which view should be displayed
// i.e https://fit-actions.firebaseapp.com/start?exerciseType="Running" -> path = "start"
var actionHandled = true
val startExercise = intent?.extras?.getString(START_EXERCISE)
// Add stopExercise variable here
if (startExercise != null){
val type = FitActivity.Type.find(startExercise)
val arguments = Bundle().apply {
putSerializable(FitTrackingFragment.PARAM_TYPE, type)
}
updateView(FitTrackingFragment::class.java, arguments)
} // Add conditional for stopExercise
else{
// path is not supported or invalid, start normal flow.
showDefaultView()
// Unknown or invalid action
actionHandled = false
}
notifyActionSuccess(actionHandled)
}
در تابع Intent.handleIntent قبلی، هنگامی که ACTION_VIEW فعال میشود، دادههای اینتنت App Action به تابع handleIntent ارسال میشوند. پارامترهای BII که در اینتنت START_EXERCISE قرار دارند، از طریق intent?.extras?.getString(START_EXERCISE) قابل دسترسی هستند. بقیه تابع، FitTrackingFragment را بهروزرسانی میکند تا نوع تناسب اندام startExercise انتخاب شده را نمایش دهد.
عملکرد برنامه خود را آزمایش کنید
در طول توسعهی App Actions، شما از افزونهی Google Assistant برای پیشنمایش Actions خود در یک دستگاه آزمایشی استفاده میکنید. همچنین میتوانید از این افزونه برای تنظیم مقادیر پارامترهای intent یک Action استفاده کنید تا نحوهی مدیریت برنامههایتان توسط روشهای مختلفی که یک کاربر ممکن است درخواست Assistant را برای برنامهی شما بیان کند، آزمایش شود.
برای آزمایش عملکرد برنامه خود با افزونه، این مراحل را دنبال کنید:
- برنامه خود را در اندروید استودیو با انتخاب Run > Run App یا با کلیک روی آیکون Run در نوار ابزار بالا اجرا کنید.
- به ابزارها > اقدامات برنامه > دستیار گوگل > ابزار تست اقدامات برنامه بروید.
- روی ایجاد پیشنمایش کلیک کنید. در صورت درخواست، خطمشیها و شرایط خدمات «عملکردهای برنامه» را مرور و بپذیرید.
- اینتنت داخلی
actions.intent.START_EXERCISEرا انتخاب کنید. - در کادر تمرین ، مقدار دویدن پیشفرض را رها کنید.
- روی اجرای اقدام برنامه کلیک کنید. تأیید کنید که دستیار به تایمر ورزش برنامه متصل است و تایمر یک تمرین از نوع دویدن را آغاز کرده است.
شما اولین اقدامات برنامه خود را با START_EXERCISE BII پیادهسازی کردهاید. تبریک میگوییم! در مرحله بعد، به کاربران امکان میدهیم که تمرین دویدن را در برنامه شما متوقف کنند.
۵. قابلیت Stop Exercise BII را اضافه کنید
تابع actions.intent.STOP_EXERCISE BII به کاربران اجازه میدهد تا با پرسیدن جملاتی مانند «سلام گوگل، دویدن من را در ExampleApp متوقف کن» جلسه تمرین را متوقف کنند. این تابع را با افزودن capability دوم به shortcuts.xml در برنامه Fitness پیادهسازی کنید:
<!-- shortcuts.xml -->
<capability android:name="actions.intent.STOP_EXERCISE">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE"
android:targetClass="com.devrel.android.fitactions.FitMainActivity">
<!-- Eg. name = "Running" -->
<parameter
android:name="exercise.name"
android:key="stopExercise"/>
</intent>
</capability>
PUT_YOUR_APPLICATION_ID_HERE با applicationId منحصر به فرد خود جایگزین کنید.
پارامترهای BII را با موجودی درون خطی مدیریت کنید
این BII از همان پارامتر exercise.name که در START_EXERCISE BII استفاده شده بود، پشتیبانی میکند و به کاربران اجازه میدهد مشخص کنند که میخواهند کدام تمرین فعال را به پایان برسانند. برای فعال کردن این قابلیت، مجموعه دوم عناصر میانبر inventory را به shortcuts.xml اضافه کنید:
<!-- shortcuts.xml -->
<shortcut
android:shortcutId="running"
android:shortcutShortLabel="@string/activity_running">
<capability-binding android:key="actions.intent.STOP_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/runningSynonyms"/>
</capability-binding>
</shortcut>
<shortcut
android:shortcutId="walking"
android:shortcutShortLabel="@string/activity_walking">
<capability-binding android:key="actions.intent.STOP_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/walkingSynonyms"/>
</capability-binding>
</shortcut>
<shortcut
android:shortcutId="cycling"
android:shortcutShortLabel="@string/activity_cycling">
<capability-binding android:key="actions.intent.STOP_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/cyclingSynonyms"/>
</capability-binding>
</shortcut>
اهداف ورودی اندروید را برآورده کنید
با بهروزرسانی کلاس FitMainActivity ، برنامه را قادر به مدیریت intentهای ورودی STOP_EXERCISE اندروید کنید. ابتدا، یک متغیر به تابع handleIntent اضافه کنید تا دادههای intent STOP_EXERCISE را در خود نگه دارد:
// FitMainActivity.kt
private fun handleIntent(data: Uri?) {
val stopExercise = intent?.extras?.getString(STOP_EXERCISE)
//...
}
در مرحله بعد، منطق شرطی تابع handleIntent را برای مدیریت اهداف STOP_EXERCISE بهروزرسانی کنید:
// FitMainActivity.kt
private fun handleIntent(data: Uri?) {
//...
if (startExercise != null){
val type = FitActivity.Type.find(startExercise)
val arguments = Bundle().apply {
putSerializable(FitTrackingFragment.PARAM_TYPE, type)
}
updateView(FitTrackingFragment::class.java, arguments)
} // Add conditional for stopExercise
<strong>
} else if(stopExercise != null){
// Stop the tracking service if any and return to home screen.
stopService(Intent(this, FitTrackingService::class.java))
updateView(FitStatsFragment::class.java)
}
</strong>
//...
}
در کد قبلی، تابع handleIntent بهروزرسانی کردید تا STOP_EXERCISE BII را در intent ورودی اندروید بررسی کند. در صورت یافتن، تابع تایمر فعال را متوقف کرده و کاربر را به صفحه اصلی بازمیگرداند.
عملکرد برنامه خود را آزمایش کنید
با دنبال کردن این مراحل، عملکرد برنامه خود را با استفاده از افزونه Google Assistant آزمایش کنید:
- برنامه خود را در اندروید استودیو با انتخاب Run > Run App یا با کلیک روی آیکون Run در نوار ابزار بالا اجرا کنید.
- در برنامه، یک تمرین «دویدن» جدید را شروع کنید.
- افزونه را در اندروید استودیو باز کنید: به ابزارها > اقدامات برنامه > دستیار گوگل > ابزار تست اقدامات برنامه بروید.
- روی ایجاد پیشنمایش کلیک کنید.
- اینتنت داخلی
actions.intent.STOP_EXERCISEرا انتخاب کنید. - در کادر تمرین ، مقدار دویدن پیشفرض را رها کنید.
- روی اجرای اقدام برنامه کلیک کنید. تأیید کنید که دستیار تمرین را متوقف میکند و شما را به صفحه اصلی برمیگرداند.
۶. مراحل بعدی
تبریک میگویم!
اکنون میدانید که چگونه با استفاده از intentهای داخلی دستیار صوتی، یک برنامه اندروید را با صدا فعال کنید. در این آزمایشگاه کد، موارد زیر را یاد گرفتید:
- چگونه به کاربران اجازه دهیم با استفاده از دستیار گوگل (Assistant) به ویژگیهای خاص برنامه دسترسی عمیق پیدا کنند.
- نحوه استفاده از موجودی درون خطی.
- نحوه آزمایش BII ها با استفاده از افزونه دستیار گوگل .
قدم بعدی چیست؟
از اینجا، میتوانید اصلاحات بیشتری را در برنامه تناسب اندام خود انجام دهید. برای مراجعه به پروژه نهایی، به شاخه اصلی در GitHub مراجعه کنید.
در اینجا چند پیشنهاد برای یادگیری بیشتر در مورد گسترش این برنامه با App Actions ارائه شده است:
- سایر آزمایشگاههای کد مربوط به App Actions ما را بررسی کنید.
- برای کشف BII های بیشتر برای گسترش برنامههای خود به دستیار ، از مرجع intent های داخلی App Actions دیدن کنید.
برای ادامه سفر «اقدامات در گوگل» خود، این منابع را بررسی کنید:
- developers.google.com/assistant : سایت رسمی مستندات برای Actions on Google.
- فهرست نمونه App Actions : نمونه برنامهها و کدها برای بررسی قابلیتهای App Actions.
- اقدامات در مخزن گوگل گیتهاب : نمونه کد و کتابخانهها.
- r/GoogleAssistantDev : انجمن رسمی ردیت برای توسعهدهندگانی که با دستیار گوگل کار میکنند.
برای اطلاع از آخرین اطلاعیههای ما، ما را در توییتر با شناسه @ActionsOnGoogle دنبال کنید و برای به اشتراک گذاشتن ساختههایتان، به #appactions توییت کنید!
نظرسنجی بازخورد
در نهایت، لطفاً این نظرسنجی را پر کنید تا در مورد تجربه خود با این آزمایشگاه کد، بازخورد خود را ارائه دهید.