# Form

#### Form Components

**Creating Custom Forms**

* **Text Field**: Text input.
* **Tags**: Can store multiple contents in one field.
* **Textarea**: Displays as Markdown.
* **Checkbox**: Suitable for true/false values.
* **Radio**: Suitable for single choice values.
* **DateTime**: Allows date and time selection.
* **Date**: Allows date selection.
* **Select**: Can be multi-select or single-select. Select can integrate fields from other forms and monitor other select values for changes. The monitored select must be below the monitoring select.
* **Email**: Validates if it is an email. Text Field can also be used with regex for the same purpose.
* **Upload**: File upload, currently only supported in general form filling.
* **Number**: Validates if it is a number. Text Field can also be used with regex for the same purpose.
* **Password**: Can use Utils for encryption and comparison.
* **Hidden**: Can hold field values, divided into constants (fixed value), page (value obtained from the linked field), and session (currently only supports userId).
* **Reserve**: Includes keywords, start time, and end time. The start and end times must be on the same day.
* **Paragraph**: Outputs as a text message in the chat system.

**Form Permissions**

Forms can be accessed by visitors and users with permissions such as create, read, update, and delete.

* **Visitors**: Often from LINE, Messenger, or Telegram, can add data through conversations, usually granted add and read permissions.
* **Users**: Linked to a DMflow account via LINE, Messenger, or Telegram can use it.

**Form Functions**

* **Required**: Mandatory fields.
* **Options**: Must meet the values inside.
* **Max and Min Values**: For time and numbers.
* **Regex**: For text validation.

By following these guidelines, you can effectively use DMflow\.chat to manage various types of Q\&A and improve your chatbot's capabilities.
