Types
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Jenis memungkinkan Anda mengonfigurasi NLU Asisten (natural language understanding)
untuk mengekstrak data terstruktur dari input pengguna. Anda
dapat menggunakan jenis dalam situasi berikut:
Dalam intent, Anda dapat menganotasi frasa pelatihan dengan jenis
membuat slot. Saat pengguna mengucapkan sesuatu yang
cocok dengan slot, mesin NLU
mengekstraknya sebagai parameter yang diketik, sehingga Anda dapat memprosesnya dalam scene.
Dalam tahap pengisian slot adegan, Anda dapat menentukan
beberapa slot yang ingin Anda sediakan
pengguna sebelum mereka bisa
bertransisi atau keluar
dari adegan.
Dalam tahap kondisi scene, Anda dapat mendasarkan
logika yang menjelaskan apakah suatu parameter memiliki nilai tertentu yang ditentukan dalam suatu jenis.
Jenis kustom
Jenis khusus memungkinkan Anda membuat spesifikasi jenis
sendiri untuk memberi tahu NLU untuk
menetapkan satu set nilai untuk sebuah kunci. Anda dapat menentukan
jenis dalam berbagai
cara:
- Kata dan sinonim memungkinkan Anda memetakan beberapa nilai ke satu kunci,
yang disebut entri. Jenis Anda dapat berisi satu atau beberapa entri. Jika Anda
memilih opsi ini, Anda juga dapat mengaktifkan setelan NLU berikut:
- Aktifkan pencocokan fuzzy - Fitur ini memungkinkan entri dengan lebih dari satu
kata yang cocok, bahkan saat kata tersebut diucapkan dalam urutan yang berbeda.
- Terima nilai yang tidak diketahui - Jika Anda tidak dapat menentukan semua nilai yang mungkin,
pemroses bahasa dapat menerima kata atau frasa yang tidak dikenal berdasarkan lingkungan
data input dan pelatihan niat, seperti item yang mungkin ditambahkan ke toko bahan makanan
daftar.
- Ekspresi reguler memungkinkan jenis mencocokkan nilai menggunakan ekspresi reguler
pola ekspresi berdasarkan
Standar RE2 Google.
- Teks bentuk bebas memungkinkan jenis dicocokkan
apa pun yang dikatakan pengguna. Membuat anotasi
intent dengan jenis ini memungkinkan Anda memakai semua input sebagai parameter yang
dapat melanjutkan ke NLU Anda sendiri.
Jenis sistem
Jenis sistem memungkinkan Anda menganotasi dan mengekstrak data populer dari input pengguna
menggunakan data dan nilai pelatihan yang
disediakan oleh sistem. Jenis sistem berikut ini adalah
didukung:
Jenis |
Deskripsi |
actions.type.DateTime |
Berisi tanggal, waktu, dan zona waktu berdasarkan setelan perangkat pengguna.
Tersedia untuk pengisian slot dan anotasi frasa pelatihan.
|
actions.type.Date |
Hanya berisi tanggal. Hanya tersedia untuk pengisian slot. |
actions.type.Time |
Hanya berisi waktu. Hanya tersedia untuk pengisian slot. |
actions.type.Number |
Jenis Number cocok dengan ordinal dan kardinal
angka. |
Penggunaan DateTime
, Date
, dan Time
Tipe ini berperilaku berbeda, tergantung di mana Anda menggunakan tipe dan
input pengguna yang cocok dengan jenisnya.
Menggunakan with intent
Menganotasi frasa pelatihan dalam intent hanya mendukung jenis DateTime
. Pengguna
input tidak harus cocok dengan keseluruhan nilai DateTime
. Misalnya, jika pengguna
hanya menyediakan tahun, parameter sesi mungkin terlihat seperti ini:
"date_time": {
"year": 2019
}
Menggunakan dengan pengisian slot
Pengisian slot mendukung DateTime
, Date
, dan Time
.
- Jika jenis slot adalah
DateTime
, Asisten akan meminta pengguna hingga
nilai yang diberikan.
- Jika jenis slot adalah
Date
, Asisten akan meminta pengguna sampai tanggal
nilai yang diberikan. Saat dikumpulkan, parameter yang Anda terima adalah
DateTime
dengan waktu yang disetel ke 00.00.
- Jika jenis slot adalah
Time
, Asisten akan meminta pengguna hingga waktu
nilai yang diberikan. Saat dikumpulkan, parameter yang Anda terima adalah
Objek DateTime
dengan tanggal yang ditetapkan ke tanggal saat ini.
Misalnya, anggaplah pengguna di Los Angeles berkata, "Ok Google, buat pengingat
untuk 15 Januari 2024 pukul 08.00." Saat DateTime
diekstrak sebagai bagian dari slot
, parameter lengkapnya mungkin akan terlihat seperti ini:
"date_time": {
"day": 15,
"hours": 20,
"minutes": 0,
"month": 1,
"nanos": 0,
"seconds": 0,
"time_zone": {
"id": "America/Los_Angeles"
},
"year": 2024
}
Menggunakan dengan kondisi
Kondisi hanya memungkinkan penggunaan angka dan string, jadi menggunakan level teratas
Parameter DateTime
menghasilkan hasil False untuk kondisi tersebut. Contoh:
$session.params.my_dateTime.day > 5
adalah kondisi yang valid, karena
Nilai day
berupa angka dan didukung.
$session.params.my_dateTime > "01-01-2010"
adalah kondisi yang tidak valid, karena
'DateTime' tingkat teratas objek bukanlah angka atau string.
Penggantian jenis runtime
Penggantian jenis runtime memungkinkan Anda membuat atau memodifikasi jenis secara dinamis dalam
pemenuhan pesanan. Fitur ini memungkinkan Anda menambah atau mengganti spesifikasi jenis di
waktu beroperasi. Misalnya, Anda dapat memeriksa sumber data backend untuk memuat menu harian
item ke jenis dalam pemenuhan Anda.
Lihat panduan webhook untuk mengetahui informasi selengkapnya
tentang cara membangun penggantian jenis.
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-26 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-26 UTC."],[[["\u003cp\u003eTypes are used to extract structured data from user input, allowing you to create slots in intents, manage slot filling within scenes, and define conditions based on parameter values.\u003c/p\u003e\n"],["\u003cp\u003eYou can create custom types using words and synonyms, regular expressions, or free-form text to define how the NLU interprets user input.\u003c/p\u003e\n"],["\u003cp\u003eSystem types such as \u003ccode\u003eDateTime\u003c/code\u003e, \u003ccode\u003eDate\u003c/code\u003e, \u003ccode\u003eTime\u003c/code\u003e, and \u003ccode\u003eNumber\u003c/code\u003e provide built-in data extraction for common data formats.\u003c/p\u003e\n"],["\u003cp\u003eRuntime type overrides enable dynamic modification of types during fulfillment, allowing you to adjust types based on real-time data.\u003c/p\u003e\n"]]],[],null,["# Types let you configure the Assistant NLU (natural language understanding)\nengine to extract structured data from user input. You\ncan use types in the following situations:\n\n- In [intents](/assistant/conversational/intents), you can annotate training phrases with types to\n create slots. When users say something that matches a slot, the NLU engine\n extracts it as a typed parameter, so you can process it in a [scene](/assistant/conversational/scenes).\n\n- Within a scene's [slot filling](/assistant/conversational/scenes#slot_filling) stage, you can specify\n multiple slots that you want the user to provide before they can\n transition or exit out of the scene.\n\n- Within a scene's [conditions](/assistant/conversational/scenes#conditions) stage, you can base\n logic on whether a parameter has a specific value that's defined in a type.\n\nCustom types\n------------\n\nCustom types let you create your own type specification to notify the NLU to\nassign a set of values to a single key. You can specify types in a variety of\nways:\n\n- **Words and synonyms** allow you to map multiple values to a single key, which are called an entry. Your type can contain one or many entries. If you choose this option, you can also enable the following NLU settings:\n - **Enable fuzzy matching** - This feature allows entries with more than one word to be matched, even when the words are spoken in a different order.\n - **Accept unknown values** - When you can't specify all possible values, the language processor can accept unknown words or phrases based on surrounding input and intent training data, such as items that might be added to a grocery list.\n- **Regular expressions** allows the type to match values using regular expression patterns based on [Google's RE2 standard](https://github.com/google/re2/wiki/Syntax).\n- **Free form text** allows the type to match anything a user says. Annotating an intent with this type lets you consume all input as a parameter that you can pipe to your own NLU.\n\nSystem types\n------------\n\nSystem types let you annotate and extract well-known data from user input\nusing system-provided training data and values. The following system types are\nsupported:\n\n| Type | Description |\n|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------|\n| **`actions.type.DateTime`** | Contains date, time, and timezone based on the user's device settings. Available for slot filling and training phrase annotation. |\n| **`actions.type.Date`** | Contains date only. Available for slot filling only. |\n| **`actions.type.Time`** | Contains time only. Available for slot filling only. |\n| **`actions.type.Number`** | The `Number` type matches ordinal and cardinal numbers. |\n\n### `DateTime`, `Date`, and `Time` usage\n\nThese types behave differently depending on where you use the type and the\nuser input that matches the type.\n\n#### Using with intents\n\nAnnotating training phrases in intents supports only the `DateTime` type. User\ninput doesn't need to match an entire `DateTime` value. For example, if a user\nprovides only the year, the session parameter might look like this: \n\n \"date_time\": {\n \"year\": 2019\n }\n\n#### Using with slot filling\n\nSlot filling supports `DateTime`, `Date`, and `Time`.\n\n- If the slot type is `DateTime`, the Assistant prompts the user until a full value is provided.\n- If the slot type is `Date`, the Assistant prompts the user until a date value is provided. When collected, the parameter you receive is a full `DateTime` with the time set to 00:00.\n- If the slot type is `Time`, the Assistant prompts the user until a time value is provided. When collected, the parameter your receive is a full `DateTime` object with the date set to the current date.\n\nFor example, suppose a user in Los Angeles said, \"Hey Google, create a reminder\nfor January 15, 2024 at 8 pm.\" When `DateTime` is extracted as part of a slot\nfilling process, the full parameter might look like this: \n\n \"date_time\": {\n \"day\": 15,\n \"hours\": 20,\n \"minutes\": 0,\n \"month\": 1,\n \"nanos\": 0,\n \"seconds\": 0,\n \"time_zone\": {\n \"id\": \"America/Los_Angeles\"\n },\n \"year\": 2024\n }\n\n#### Using with conditions\n\nConditions only allow the use of numbers and strings, so using the top level\n`DateTime` parameter results in a **False** result for the condition. For\nexample:\n\n- `$session.params.my_dateTime.day \u003e 5` is a valid condition, because the `day` value is a number and is supported.\n- `$session.params.my_dateTime \u003e \"01-01-2010\"` is an invalid condition, because the top level 'DateTime' object is not a number or string.\n\nRuntime type overrides\n----------------------\n\nRuntime type overrides let you dynamically create or modify types in\nfulfillment. This feature lets you add to or replace a type's specification at\nruntime. For example, you can check a backend data source to load daily menu\nitems into a type in your fulfillment.\n\nSee the [webhooks](/assistant/conversational/webhooks#runtime_type_overrides) guide for more information\non how to build type overrides."]]