# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-en.dmflow.chat/domain/formqa/form.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
