LUKLAK Unified & Universal
  • TỔNG QUAN
    • Định vị Luklak & các phân khúc phần mềm doanh nghiệp
    • Luklak Nocode & Lowcode 101
    • Luklak Total Customer Solution
    • Đồng bào Automation
    • UML Cấu trúc hệ thống Luklak
    • Các bài viết chia sẻ
      • Luklak chat
      • Toàn dân nocode
      • Dashboard & BI
      • Lí giải về Agile
      • Dashboard Luklak
      • Định vị Luklak
      • Facebook & Luklak feed
      • Chat công việc - Why & How
      • 3 mức độ chat
      • 3 mức độ workflow & automation
      • Universal workflow & automation
      • Thông điệp Luklak
      • Thế hệ phần mềm doanh nghiệp
      • Luklak là gì?
      • Đôi nét về Lark
      • Phần mềm đa dụng
      • Universal object
      • Chat công việc đa tầng & hợp nhất
  • GIAO DIỆN & TÍNH NĂNG LÀM VIỆC
    • Tổng quan giao diện
    • Tổ chức & cấu trúc
      • Tổ chức (Organization)
        • Khu vực & mảng việc (Area & Space)
        • Thành phần (Component)
      • Phòng làm việc (Workspace)
      • Cá nhân (Personal Home)
      • Thư mục (Folder)
    • Giao việc & làm việc
      • Mục việc
      • Checklist, Subtask, Issue Link
      • Custom Fields & Formula
      • Chat On Tasks
      • Live Photo
    • Chat hợp nhất
    • Nắm bắt & cập nhật
      • Unified Inbox
      • Newsfeed
      • Notifications
    • Bộ lọc & báo cáo
      • Báo cáo
      • Bộ lọc
    • Quy trình & tự động hóa
      • HDSD Quy trình (Workflow)
      • Tự động hóa (Automation)
        • Các quy tắc Automation phổ biển
    • Tự tạo chức năng
    • Tiện ích & mẹo
    • Mobile app
    • Chấm công
      • Sử dụng trên Mobile app
      • Báo cáo
    • Hướng dẫn chung
      • Bật tắt thông báo (Chrome)
      • Cài luklak desktop app từ chrome
  • CẤU HÌNH & QUẢN TRỊ
    • Function
      • Tổng quan function
      • Cấu hình function
    • Universal Object
    • Data Field
      • Trường chọn mục
    • Universal Workflow
      • Tổng quan
      • Cấu hình workflow
    • Universal Automation
      • Nguyên lí hoạt động - Tự động hóa (Universal Automation)
      • Tự động hóa thông suốt
        • Đồng bào Automation
      • Cấu hình automation
        • Trigger (Automation)
        • Flow logic (Automation)
          • Branching
        • Action (Automation)
          • Cập nhật trường chọn mục
          • Kết nối mục
        • Quản lý các quy tắc tự động hóa
        • Smart value
    • Universal Query Language
      • Tổng quan UQL
      • Cấu hình UQL
    • Permission & Notification
      • Tổng quan
      • Cấu hình
    • User, Group, Role & Membership
      • User & Group
      • Role
      • Object Membership
    • Dành cho admin
    • Integration
      • n8n
      • API & Webhooks
      • Integration phổ biến
  • Thiết lập Chấm công
    • Quy tắc chấm công
    • Lịch làm việc
    • Địa điểm
    • Phân quyền
  • KHÁCH HÀNG & LUKLAK
    • Dịch vụ khách hàng
      • Hỗ trợ kĩ thuật - chat trong app
Powered by GitBook
On this page
  • 1. Tổng quan
  • 2. Phạm vi áp dụng
  • 3. Cấu trúc
  • Các đối tượng khác
  • 1. Tổng quan
  • 2. Mô tả
  • Fields
  • 1. Tổng quan
  • 2. Mô tả
  • List (Kiểu trường multi)
  • User
  • Group
  • Select
  • Checkbox
  • Date - Date time
  • Email
  • PhoneNumber
  • Number
  • Text
  • Component
  • Issue picker

Was this helpful?

  1. CẤU HÌNH & QUẢN TRỊ
  2. Universal Automation
  3. Cấu hình automation

Smart value

PreviousQuản lý các quy tắc tự động hóaNextUniversal Query Language

Last updated 4 months ago

Was this helpful?

1. Tổng quan

Sử dụng smart values để truy cập và thao tác với dữ liệu từ bên trong hoặc từ bên ngoài hệ thống

2. Phạm vi áp dụng

  • Lấy giá trị từ trường

  • Cập nhật trường sử dụng smart values

  • Trong Action 'Kết nối mục': sử dụng trong lựa chọn 'Smart Values' hoặc 'Dùng bộ lọc'

3. Cấu trúc

Dữ liệu của issue được tổ chức theo dạng cây, một giá trị chứa nhiều yếu tố bên dưới

Các giá trị smart values bắt đầu các giá trị bằng dấu Dollar $, để phân biệt với các nội dung khác. Smart Values có thể truy cập thông tin issue,field,... nên ta cần cung cấp vị trí và thuộc tính để truy cập dữ liệu mình cần.

Nếu muốn chuyển tới các elements bên trong, cần thêm dấu chấm vào trong giá trị của mình.

Ví dụ $input.value

a. Khi lấy giá trị dữ liệu các issue trong luklak:

Để lấy dữ liệu từ issue, ta cần nhập smart values dưới dạng sau :

[issue]: vị trí issue muốn lấy dữ liệu

  • Mục kích hoạt: trigger

  • Mục hiện tại: current

  • Mục cha mục kích hoạt: trigger.parent

  • Mục cha mục hiện tại: current.parent

[object]: nhập đối tượng trong issue muốn lấy thông tin

  • fields: truy cập thông tin các field trong issue

[element]: nhập thông tin muốn lấy từ các đối tượng truy cập vào bên trên

b. Lấy thông tin từ automation:

Có thể sử dụng Smart values để lấy thông tin liên quan tới Người kích hoạt hoặc Người thực thi của Automation đang sử dụng

  • Người kích hoạt: $triggerUser

  • Người thực thi: $actorUser

Sau đó có thể truy cập các thuộc tính khác về Người kích hoạt, Người thực thi tương tự như các trường Chọn 1 người

Ví dụ: Lấy tên hiển thị của Người kích hoạt automation

$triggerUser.displayName

c. Khi lấy giá trị từ dữ liệu bên ngoài

Các đối tượng khác

1. Tổng quan

Sử dụng smart values để lấy thông tin của issue hoặc từ space, status, issuetype, createdby, created liên quan tới issue.

2. Mô tả

2.1. Thông tin issue

Ví dụ:

issue ở mục kích hoạt với thông tin như sau:

Id
Key
id issue cha
url

aaa-aaa

BUG-01

bbb-bbb

Lấy thông tin của issue

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến issue → mặc định trả về id issue

→ Giá trị trả về: aaa-aaa

id

Trả về id issue

→ Giá trị trả về: aaa-aaa

key

Trả về key issue

→ Giá trị trả về: BUG-01

url

Trả về url dẫn tới issue

Có thể thay tên hiển thị của url bằng việc thêm tên hiển thị vào trong dấu ngoặc vuông:

2.2. Space

Lấy thông tin từ space chứa issue, từ đó có thể truy cập vào thông tin của area và function của space đó

Lưu ý: cách xem id space, area hoặc function(tạm thời)

  • Chọn space, area hoặc function cần xem id

  • Id của space, area hoặc function hiển thị trên url

  • space:

  • area:

  • function

Ví dụ :

space chứa issue ở mục kích hoạt với thông tin như sau:

Id space
Tên space
Key
URL

space-space

Kiểm thử

BUG

Với thông tin về area và function của space đó:

Id area
Tên area
Key
URL

area-area

BP Phát triển Sản phẩm

AR3

Id function
Tên function
Key
status

func-func

Kiểm thử phần mềm

KTPM

a. Lấy thông tin từ space

Smart values
Mô tả
Ví dụ

id

Trả về id space

→ Giá trị trả về: space-space

key

Trả về key của space

→ Giá trị trả về: BUG

mặc định

Smart values truy cập đến space → mặc định trả về id space

→ Giá trị trả về: space-space

name

Trả về tên hiển thị của space

→ Giá trị trả về: Kiểm thử

url

Trả về url dẫn tới space

Có thể thay tên hiển thị của url bằng việc thêm tên hiển thị vào trong dấu ngoặc vuông:

b. Lấy thông tin từ area

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến area → mặc định trả về id area

→ Giá trị trả về: area-area

id

Trả về id area

→ Giá trị trả về: area-area

name

Trả về tên hiển thị của area

→ Giá trị trả về: BP Phát triển Sản phẩm

url

Trả về url dẫn tới area

Có thể thay tên hiển thị của url bằng việc thêm tên hiển thị vào trong dấu ngoặc vuông:

key

Trả về key của area

→ Giá trị trả về: AR3

c. Lấy thông tin từ function

2.3. Status

Lấy thông tin liên quan tới trạng thái hiện tại của issue

Lưu ý: cách xem id status hoặc của status category

  • Chọn status hoặc của status category cần xem id

  • Id của space, area hoặc function hiển thị trên url

Ví dụ:

statsus hiện tại của issue ở mục kích hoạt với thông tin như sau:

Id status
Tên
Key
Description

sta-sta

CẦN LÀM

todo

với thông tin về category của status hiện tại của space đó:

Id category
Tên
Key
Description

cate-cate

Kế hoạch

planned

a. Lấy thông tin từ status

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến status → mặc định trả về id status

→ Giá trị trả về: sta-sta

id

Trả về id space

→ Giá trị trả về: sta-sta

name

Trả về tên hiển thị của space

→ Giá trị trả về: CẦN LÀM

key

Trả về key của space

→ Giá trị trả về: todo

description

Trả về mô tả của trạng thái

→ Giá trị trả về: mô tả cần làm

b. Lấy thông tin từ category status

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến category → mặc định trả về thông tin id loại trạng thái

→ Giá trị trả về: cate-cate

id

Trả về id category status

→ Giá trị trả về: cate-cate

name

Trả về tên của category status

→ Giá trị trả về: Kế hoạch

key

Trả về key của category status

→ Giá trị trả về: planned

description

Trả về description của category status

→ Giá trị trả về: mô tả category

2.4. Issuetype :

Lấy thông tin liên quan tới loại mục (issuetype)của issue

Ví dụ:

issuetype hiện tại của issue ở mục kích hoạt với thông tin như sau:

Id
Tên
Category

ttt-ttt

Thông tin

ISSUE

a. Lấy thông tin từ issuetype

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến issuetype → mặc định trả về id issuetype

→ Giá trị trả về: ttt-ttt

id

Trả về id issuetype

→ Giá trị trả về: ttt-ttt

name

Trả về tên của issuetype

→ Giá trị trả về: Thông tin

category

Trả về tên loại của issuetype

(category có các gái trị: ISSUE, SUBTASK)

→ Giá trị trả về: ISSUE

2.5. CreatedBy:

Lấy thông tin của người tạo ra issue

Ví dụ:

Người tạo issue ở mục kích hoạt với thông tin như sau:

Tên hiển thị
Id
Username
Email

Nguyễn Văn A

aaa-aaa

nguyenvana

Khi Smart Values truy cập đến createdBy → mặc định trả về id người dùng

Ví dụ:

${trigger.createdBy}

→ Giá trị trả về: aaa-aaa

2.6. Created

Lấy thông tin về thời gian tạo ra issue

Ví dụ :

Thời gian tạo issue ở mục kích hoạt với thông tin như sau:

Giá trị

05.08.2024 09:00

Khi Smart Values truy cập đến created → mặc định trả về giá trị của trường

Ví dụ:

${trigger.created}

→ Giá trị trả về: 2024-08-05T00:09:00.000+07:00

Fields

1. Tổng quan

Sử dụng smart values để lấy thông tin từ các trường dữ liệu của một issue

2. Mô tả

1. Smart Values - List (các trường multi)

2. Smart Values - User

3. Smart Values - Group

4. Smart Values - Select

5. Smart Values - Checkbox

6. Smart Values - Date, Date time

7. Smart Values - Email

8. Smart Values - Phone number

9. Smart Values - Number

10. Smart Values - Text

11. Smart Values - Issue picker

12. Lưu ý

Với các trường thông tin đặc biệt liên quan đến việc tương tác, ghi nhận thời gian cuối sẽ không thể lấy thông tin, giá trị do các dữ liệu này không được coi là một trường dữ liệu.

  • Cập nhật (updated)

  • Tương tác (interacted)

  • Trao đổi (dicussed)

  • Chuyển trạng thái (statusChanged)

  • Hoàn thành (completed)

  • Kết luận (resolution)

  • Người cập nhật

  • Người theo dõi

List (Kiểu trường multi)

Các smart values để truy cập tới một giá trị hoặc thay đổi kí tự phân tách khi liệt kê giá trị của các trường dạng Multi:

  • Chọn nhiều người

  • Chọn nhiều nhóm

  • Sổ xuống chọn nhiều

  • Nhiều hộp kiểm

  • Nhiều email

Một số lưu ý:

  • Hiện tại khi cập nhật các trường dạng multi qua smart values có thể cập nhật bằng nhiều giá trị, các giá trị phân cách nhau bởi dấu phảy.

  • Ví dụ: khi cập nhật trường Người Quyền Cao qua smart values của Người Liên Quan:

    ${trigger.fields.relatedUsers.join()}

    → Giá trị trả về: aaa-aaa, bbb-bbb, ccc-ccc, ddd-ddd

  1. Mô tả

Ví dụ:

Trường Người Liên Quan (key field: relatedusers) ở Mục kích hoạt có 4 giá trị Nguyễn Văn A, Nguyễn Văn B, Nguyễn Văn C, Nguyễn Văn D

Tên hiển thị
Id
UserName
Email

Nguyễn Văn A

aaa-aaa

nguyenvana

Nguyễn Văn B

bbb-bbb

nguyenvanb

Nguyễn Văn C

ccc-ccc

nguyenvanc

Nguyễn Văn D

ddd-ddd

nguyenvand

Trường Lớp học (key field: class) ở Mục kích hoạt có 5 giá trị: Lớp 1, Lớp 2, Lớp 3, Lớp 4, Lớp 5

Key
Giá trị

lop_01

Lớp 01

lop_02

Lớp 02

lop_03

Lớp 03

lop_04

Lớp 04

lop_05

Lớp 05

Chi tiết

Với các smart values để lấy một giá trị trong danh sách

  • Với trường Chọn nhiều người, Chọn nhiều nhóm: trả về id

  • Với trường Sổ xuống chọn nhiều, Nhiều hộp kiểm, Nhiều email: trả về value

  • Sau đó có thể truy cập tiếp các thuộc tính của giá trị đó: Chọn nhiều người (id, username, displayName, email), Chọn nhiều nhóm (id, name), Sổ xuống chọn nhiều (key, value), Nhiều hộp kiểm (key, value)

Smart values
Mô tả
Ví dụ

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

first()

Trả về giá trị đầu tiên trong danh sách các giá trị được chọn.

(trả về kết quả dựa theo vị trí hiển thị trên issue, không theo thứ tự chọn)

Trường Chọn nhiều người:

→ Giá trị trả về: aaa-aaa

Trường Sổ xuống chọn nhiều:

→ Giá trị trả về: Lớp 01

Truy cập tiếp các thuộc tính

→ Giá trị trả về:

→ Giá trị trả về:

lop_01

Lớp 01

last()

Trả về giá trị cuối cùng trong danh sách các giá trị được chọn.

(trả về kết quả dựa theo vị trí hiển thị trên issue, không theo thứ tự chọn)

Trường Chọn nhiều người:

→ Giá trị trả về: ddd-ddd

Trường Sổ xuống chọn nhiều:

→ Giá trị trả về: Lớp 5

Truy cập tiếp các thuộc tính: tương tự first()

get(position)

Trả về giá trị trong danh sách các giá trị được chọn theo vị trí

Nhập vị trí của giá trị muốn lấy vào trong ngoặc, giá trị thứ n trong danh sách sẽ có vị trí n-1

Ngoài ra có thể nhập vị trí theo số âm để lấy theo giá trị tính từ cuối lên: giá trị cuối cùng sẽ ở vị trí -1

Không nhập vị trí → Lỗi

Trường Chọn nhiều người có 4 giá trị, lấy giá trị thứ 2:

→ Giá trị trả về: bbb-bbb

Trường Sổ xuống chọn nhiều (Lớp) có 5 giá trị, lấy giá trị thứ 4:

→ Giá trị trả về: Lớp 4

Truy cập tiếp các thuộc tính: tương tự first()

quantity()

Trả về số lượng giá trị được chọn

→ Giá trị trả về: 4

→ Giá trị trả về: 5

contains('value')

Kiểm tra xem có chứa giá trị đưa vào (trả về true / false)

Với trường Chọn nhiều người và Chọn nhiều nhóm: giá trị tìm kiếm là theo id

Với trường Sổ xuống chọn nhiều, Nhiều hộp kiểm, Nhiều email: giá trị tìm kiếm là theo value

→ Giá trị trả về: false

→ Giá trị trả về: true

containsAll('value1', 'value2')

Kiểm tra xem có chứa các giá trị đưa vào (trả về true / false)

Giá trị tìm kiếm tương tự contains()

→ Giá trị trả về: false

→ Giá trị trả về: true

Đổi kí tự phân tách

Đổi kí tự ngăn cách giữa các giá trị mặc định: sử dụng join()

Nhập kí muốn ngăn cách vào trong dấu nháy đơn → các giá trị sẽ phân cách nhau bởi kí tự nằm trong dấu nháy đơn

Đổi kí tự ngăn cách giữa các giá trị thuộc tính: thêm kí tự phân tách vào trong các smart values

Nhập kí muốn ngăn cách vào trong dấu nháy đơn → các giá trị sẽ phân cách nhau bởi kí tự nằm trong dấu nháy đơn

Khi không nhập gì, mặc định là dấu phảy

→ Giá trị trả về: aaa-aaa, bbb-bbb, ccc-ccc, ddd-ddd

Khi nhập kí tự phân tách nằm trong nháy đơn:

→ Giá trị trả về: aaa-aaa/bbb-bbb/ccc-ccc/ddd-ddd

Khi không nhập gì, mặc định là dấu phảy

→ Giá trị trả về: nguyenvana, nguyenvanb, nguyenvanc, nguyenvand

Khi nhập kí tự phân tách nằm trong nháy đơn:

→ Giá trị trả về: nguyenvana/nguyenvanb/nguyenvanc/nguyenvand

User

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ các trường Người (Chọn một người, Chọn nhiều người)

  1. Mô tả

Lưu ý: cách xem id người dùng (tạm thời)

  • vào chat riêng, chọn user muốn xem id

  • id của user hiển thị trên url

2.1. Chọn một người (single user picker)

Ví dụ:

Trường Người làm (key field: assignee) có giá trị Nguyễn Văn A với thông tin như sau:

Tên hiển thị
Id
Username
Email

Nguyễn Văn A

aaa-aaa

nguyenvana

a@gmail.com

Lấy thông tin từ trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về id người dùng

→ Giá trị trả về: aaa-aaa

id

Trả về id người dùng

(Sử dụng để cập nhật trường Chọn một người qua Smart values)

→ Giá trị trả về: aaa-aaa

username

Trả về username người dùng được chọn

→ Giá trị trả về: nguyenvana

displayName

Trả về tên hiển thị người dùng được chọn

→ Giá trị trả về: Nguyễn Văn A

email

Trả về email người dùng được chọn

mention()

Nhắc đến người dùng được chọn

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

2.2. Chọn nhiều người(multi user picker)

Ví dụ:

Trường Người Liên Quan (key field: relatedusers) ở Mục kích hoạt có 3 giá trị Nguyễn Văn A, Nguyễn Văn B, Nguyễn Văn C

Tên hiển thị
Id
Username
Email

Nguyễn Văn A

aaa-aaa

nguyenvana

a@gmail.com

Nguyễn Văn B

bbb-bbb

nguyenvanb

Nguyễn Văn C

ccc-ccc

nguyenvanc

Lấy thông tin từ trường

Smart values khi lấy danh sách các thuộc tính tương tự như trường single và thêm hậu tố 's()'

Các giá trị khi trả về mặc định phân tách nhau bởi dấu phảy, người dùng có thể chủ động đổi kí tự phân tách

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → Mặc định trả về danh sách các id người dùng

→ Giá trị trả về: aaa-aaa, bbb-bbb, ccc-ccc

ids()

Trả về id các người dùng được chọn

→ Giá trị trả về: aaa-aaa, bbb-bbb, ccc-ccc

usernames()

Trả về username các người dùng được chọn

→ Giá trị trả về: nguyenvana, nguyenvanb, nguyenvanc

displayNames()

Trả về tên hiển thị các người dùng được chọn

→ Giá trị trả về: Nguyễn Văn A, Nguyễn Văn B, Nguyễn Văn C

emails()

Trả về email các người dùng được chọn

mention()

Nhắc đến các người dùng được chọn

→ Giá trị trả về: Nguyễn Văn ANguyễn Văn BNguyễn Văn C

Dạng list

Group

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ các trường Nhóm

  • Chọn một nhóm

  • Chọn nhiều nhóm

  1. Mô tả

Lưu ý: Cách xem id nhóm (tạm thời)

  • Vào cài đặt admin / Nhóm

  • Chọn nhóm muốn xem id

  • Id nhóm hiển thị trên url

2.1. Chọn một nhóm(single group picker)

Ví dụ:

Trường Nhóm Thực Hiện (key field: nhom_thuc_hien) có giá trị Nhóm A

id
Tên

aaa-aaa

Nhóm A

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về id nhóm

→ Giá trị trả về: aaa-aaa

id

Trả về id nhóm

→ Giá trị trả về: aaa-aaa

name

Trả về tên hiển thị của nhóm

→ Giá trị trả về: Nhóm A

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

2.2. Chọn nhiều nhóm(multi group picker)

Ví dụ:

Trường Nhóm Liên Quan (key field: relatedgroups) ở Mục kích hoạt có 3 giá trị Nhóm A, Nhóm B, Nhóm C

Id
Tên

aaa-aaa

Nhóm A

bbb-bbb

Nhóm B

ccc-ccc

Nhóm C

Lấy thông tin của trường

Smart values khi lấy danh sách các thuộc tính tương tự như trường single và thêm hậu tố 's()'

Các giá trị khi trả về mặc định phân tách nhau bởi dấu phảy, người dùng có thể chủ động đổi kí tự phân tách.

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về danh sách các id nhóm

→ Giá trị trả về: aaa-aaa, bbb-bbb, ccc-ccc

ids()

Trả về id các nhóm được chọn

→ Giá trị trả về: aaa-aaa, bbb-bbb, ccc-ccc

names()

Trả về tên của các nhóm được chọn

→ Giá trị trả về: Nhóm A, Nhóm B, Nhóm C

Dạng list

Select

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ các trường:

  • Sổ xuống chọn một

  • Sổ xuống chọn nhiều

  1. Mô tả

2.1. Sổ xuống chọn một

Ví dụ:

Trường lớp học (key field: class) ở Mục kích hoạt có giá trị 'Lớp 01' với thông tin như sau:

Key
Value

lop_01

Lớp 01

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của option

→ Giá trị trả về: Lớp 01

key

Trả về Mã (key) của option được chọn

→ Giá trị trả về: lop_01

value

Trả về Giá trị (value) của option được chọn

→ Giá trị trả về: Lớp 01

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

2.2. Sổ xuống chọn nhiều

Ví dụ:

Trường Lớp học (key field: class) ở Mục kích hoạt có đang chọn 3 giá trị: Lớp 1, Lớp 2, Lớp 3

Key
Giá trị

lop_01

Lớp 01

lop_02

Lớp 02

lop_03

Lớp 03

Lấy thông tin của trường

Smart values khi lấy danh sách các thuộc tính tương tự như trường single và thêm hậu tố 's()'

Các giá trị khi trả về mặc định phân tách nhau bởi dấu phảy, người dùng có thể chủ động đổi kí tự phân tách

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → Trả về danh sách tên các giá trị được chọn

→ Giá trị trả về: Lớp 01, Lớp 02, Lớp 03

keys()

Trả về mã (key) của các option đang được chọn

→ Giá trị trả về: lop_01, lop_02, lop_03

values()

Trả về tên các option đang được chọn

→ Giá trị trả về: Lớp 01, Lớp 02, Lớp 03

Dạng list

Checkbox

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ các trường:

  • Hộp kiểm đơn

  • Nhiều hộp kiểm

  1. Mô tả

2.1. Hộp kiểm đơn

a. Lấy dữ liệu từ trường

Ví dụ:

Trường Xác nhận (key field: xac_nhan) ở Mục kích hoạt đang được tick chọn

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của trường (true / false).

→ Giá trị trả về: true

2.2. Nhiều hộp kiểm

Ví dụ:

Trường Lớp học (key field: class) ở Mục kích hoạt có đang chọn 3 giá trị: Lớp 1, Lớp 2, Lớp 3

Key
Giá trị

lop_01

Lớp 01

lop_02

Lớp 02

lop_03

Lớp 03

Lấy thông tin của trường

Các giá trị khi trả về mặc định phân tách nhau bởi dấu phảy, người dùng có thể chủ động đổi kí tự phân tách

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → Mặc định trả về danh sách tên các giá trị được chọn

→ Giá trị trả về: Lớp 01, Lớp 02, Lớp 03

keys()

Trả về mã (key) của các option đang được chọn

→ Giá trị trả về: lop_01, lop_02, lop_03

values()

Trả về tên các option đang được chọn

→ Giá trị trả về: Lớp 01, Lớp 02, Lớp 03

Dạng list

Date - Date time

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ các trường:

  • Chọn ngày

  • Chọn ngày giờ

  1. Mô tả

2.1. Chọn ngày

Ví dụ:

Trường Ngày làm (key field: ngay_lam) ở Mục kích hoạt có giá trị như sau

Trường
Giá trị

Ngày làm (ngay_lam)

05.08.2024

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của trường

(Sử dụng để cập nhật trường Chọn ngày qua Smart values)

→ Giá trị trả về: 2024-08-05

date()

Trả về kết quả có định dạng

→ Giá trị trả về: 05/08/2024

after('value')

Kiểm tra giá trị của trường có sau giá trị đưa vào

→ Giá trị trả về: true

before('value')

Kiểm tra giá trị của trường có trước giá trị đưa vào

→ Giá trị trả về: false

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

plusDays()

Cộng thêm ngày, cộng thêm số nguyên

→ Giá trị trả về: 2024-08-10

Giá trị trường Số lượng: 3

→ Giá trị trả về: 2024-08-08

plusMonths()

Cộng thêm tháng, cộng thêm số nguyên

→ Giá trị trả về: 2025-01-05

Giá trị trường Số lượng: 3

→ Giá trị trả về: 2024-11-05

2.2. Chọn ngày giờ

Ví dụ:

Trường Email khách (key field: email_khach) ở Mục kích hoạt có giá trị như sau

Trường
Giá trị

Thời điểm (thoi_diem)

05.08.2024 09:00

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của trường

(Sử dụng để cập nhật trường Chọn ngày giờ qua Smart values)

→ Giá trị trả về: 2024-08-05T00:09:00.000+07:00

datetime()

Trả về kết quả có định dạng

→ Giá trị trả về: 05/08/2024 09:00

after('value')

Kiểm tra giá trị của trường có sau giá trị đưa vào

→ Giá trị trả về: false

before('value')

Kiểm tra giá trị của trường có trước giá trị đưa vào

→ Giá trị trả về: true

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

plusHours()

Cộng thêm giờ, cộng thêm số nguyên

→ Giá trị trả về: 2024-08-10T00:14:00.000+07:00

Giá trị trường Số lượng: 3

→ Giá trị trả về: 2024-08-08T00:11:00.000+07:00

plusDay()

Cộng thêm ngày, cộng thêm số nguyên

→ Giá trị trả về: 2024-08-10T00:09:00.000+07:00

Giá trị trường Số lượng: 3

→ Giá trị trả về: 2024-08-08T00:09:00.000+07:00

plusMonths()

Cộng thêm tháng, cộng thêm số nguyên

→ Giá trị trả về: 2025-01-05T00:09:00.000+07:00

Giá trị trường Số lượng: 3

→ Giá trị trả về: 2024-11-05T00:09:00.000+07:00

Tính khoảng thời gian giữa 2 trường:

Có thể sử dụng cú pháp sau để tính khoảng thời gian giữa 2 trường ngày giờ:

$trigger.fields.[key_field_1].diff($trigger.fields.[key_fields_2]).[abs].[unit_time]

trong đó:

  • [key_field_1]: mã trường ngày giờ đích

  • [key_field_2]: mã trường ngày giờ bắt đầu

  • [abs]: có thể có hoặc không, giúp trả về giá trị tuyệt đối giữa 2 khoảng thời gian

  • [unit_time]: đơn vị thời gian muốn tính ra kết quả

    • millis: mili giây

    • seconds: giây

    • minutes: phút

    • hours: giờ

    • days: ngày

Ví dụ:

Tính khoảng thời gian giữa 2 trường kiểu Ngày giờ là Thời điểm bắt đầu (start_time) và Thời điểm kết thúc (end_time) ở Mục kích hoạt:

Trường
Giá trị

Thời điểm bắt đầu (start_time)

05.08.2024 09:00

Thời điểm kết thúc (end_time)

05.09.2024 20:30

$trigger.fields.start_time.diff($trigger.fields.end_time).millis
$trigger.fields.start_time.diff($trigger.fields.end_time).seconds
$trigger.fields.start_time.diff($trigger.fields.end_time).minutes
$trigger.fields.start_time.diff($trigger.fields.end_time).hours
$trigger.fields.start_time.diff($trigger.fields.end_time).days

→ Giá trị trả về:

2719800000 2719800 45330 755 31

Email

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ các trường:

  • Một email

  • Nhiều email

  1. Mô tả

2.1. Một email

Ví dụ:

Trường Email khách (key field: email_khach) ở Mục kích hoạt có giá trị như sau

Trường
Giá trị

Email khách (email_khach)

a@gmail.com

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về id người dùng

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

2.2. Nhiều mail

Trường
Giá trị

Email nhận (email_nhan)

Lấy thông tin từ trường

Các giá trị khi trả về mặc định phân tách nhau bởi dấu phảy, người dùng có thể chủ động đổi kí tự phân tách

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → Mặc định trả về danh sách các id người dùng

Dạng list

PhoneNumber

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ trường Số điện thoại

  1. Mô tả

Ví dụ:

Trường Số liên hệ (key field: so_lien_he) ở Mục kích hoạt có giá trị như sau

Trường
Giá trị

Số liên hệ (so_lien_he)

8423124124

Lấy thông tin của trường:

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của trường

→ Giá trị trả về: 8423124124

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

Number

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ các trường:

  • Số nguyên

  • Số thập phân

  • Công thức

  1. Mô tả

2.1. Số nguyên

Ví dụ:

Trường Số lượng (key field: so_luong) ở Mục kích hoạt có giá trị như sau

Trường
Giá trị

Số lượng (so_luong)

5

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của trường

→ Giá trị trả về: 5

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

2.2. Số thập phân

Ví dụ:

Trường Chiều dài (key field: chieu_dai) ở Mục kích hoạt có giá trị như sau

Trường
Giá trị
Hiển thị ngoài issue

Chiều dài (chieu_dai)

0,5

Dạng Cơ bản: 0,5

Dạng Phần trăm: 50%

Dạng Tiền tệ: $ 0,5

Dạng Khoa học: 5E-1

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của trường

→ Giá trị trả về: 0,5

format()

Hiển thị giá trị dưới định dạng đã chọn

→ Giá trị trả về:

Cơ bản: 0,5

Phần trăm: 50%

Tiền tệ: $ 0,5

Khoa học: 5E-1

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

2.3. Công thức

Ví dụ:

Trường Khoảng cách (key field: khoang_cach) ở Mục kích hoạt có giá trị như sau

Trường
Giá trị
Hiển thị ngoài issue

Khoảng cách (khoang_cach)

1,5

Dạng Cơ bản: 1,5

Dạng Phần trăm: 150%

Dạng Tiền tệ: $ 1,5

Dạng Khoa học: 1,5E0

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của trường

→ Giá trị trả về: 1,5

format()

Hiển thị giá trị dưới định dạng đã chọn

→ Giá trị trả về:

Cơ bản: 1,5

Phần trăm: 150%

Tiền tệ: $ 1,5

Khoa học: 1,5E0

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

if-else

Sử dụng if-else để tính toán giá trị

Text

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ các trường:

  • Dòng chữ (text field)

  • Đoạn văn bản (text area)

  1. Mô tả

2.1. Dòng chữ (text field)

Ví dụ:

Trường Lời nhắc (key field: loi_nhac) ở Mục kích hoạt có giá trị như sau

Trường
Giá trị

Lời nhắc (loi_nhac)

Dòng chữ này

Lấy thông tin của trường

Smart
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của trường

→ Giá trị trả về: Dòng chữ này

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

2. Đoạn văn bản (text area)

Ví dụ:

Trường Nội dung (key field: noi_dung) ở Mục kích hoạt có giá trị như sau

Trường
Giá trị

Nội dung (noi_dung)

Đoạn văn bản này

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về giá trị của trường

→ Giá trị trả về: Đoạn văn bản này

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

Component

  1. Tổng quan

Sử dụng smart values để lấy giá trị từ component

  1. Mô tả

Ví dụ:

Thành Phần (component) ở Mục kích hoạt có giá trị như sau

Id
Giá trị

fd1c4882-1ef2-11ef-b517-005056be9d7b

Quan trọng

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về tên của thành phần được chọn

→ Giá trị trả về: Quan trọng

id

Trả về id của thành phần được chọn

→ Giá trị trả về: fd1c4882-1ef2-11ef-b517-005056be9d7b

name

Trả về tên của thành phần được chọn

→ Giá trị trả về: Quan trọng

Issue picker

  1. Tổng quát

Sử dụng smart values để lấy giá trị từ các trường Nhóm

  • Chọn một mục

  • Chọn nhiều mục

  1. Mô tả

2.1. Chọn một mục (single issue picker) Ví dụ:

Trường Danh sách công việc (key field: danh_sach_cong_viec) có giá trị là issue In tài liệu

Issue Key
Tiêu đề
Người làm
Trạng thái

CV-01

In tài liệu

Hải.T.V

ĐANG LÀM

Lấy thông tin của trường

Smart values
Mô tả
Ví dụ

Mặc định

Smart values truy cập đến mã trường (key field) → mặc định trả về Issue key các issue được chọn

→ Giá trị trả về: CV-01

Truy cập vào issue được chọn

Lấy thông tin của issue được chọn (space, area, custom field,...)

Cấu trúc: ${[issue].fields.[key_field_picker].fields.[key_field]}

→ Giá trị trả về: In tài liệu

→ Giá trị trả về: Hải.T.V

empty()

Kiểm tra trường có trống hay không (trả về true / false)

→ Giá trị trả về: false

id: trả về id issue -

key: trả về mã của issue (issue key) -

url: trả về url dẫn tới issue -

status: truy cập thông tin trạng thái issue -

space: truy cập thông tin của space chứa issue -

issuetype: truy cập thông tin issue type -

createdBy: truy cập thông tin người tạo issue -

created: truy cập thông tin thời gian tạo issue -

Từ space:

Từ status:

Từ issuetype:

Từ fields:

user:

group:

select:

checkbox:

date, date time:

email:

phone number:

text:

number:

Từ createdBy:

Từ created:

→ Giá trị trả về:

→ Giá trị trả về:

→ Giá trị trả về:

ACTIVE

→ Giá trị trả về: space/BUG

→ Giá trị trả về:

→ Giá trị trả về:

→ Giá trị trả về: area/AR3

→ Giá trị trả về:

mô tả cần làm

mô tả category

a@

Sử dụng smart values với các trường multi (Sổ xuống chọn nhiều, Nhiều hộp kiểm, Chọn nhiều người, Chọn nhiều nhóm):

Sử dụng smart values để lấy giá trị từ người dùng với các trường dạng người (Chọn một người, Chọn nhiều người):

Sử dụng smart values để lấy giá trị từ nhóm với các trường dạng nhóm (Chọn một nhóm, Chọn nhiều nhóm):

Sử dụng smart values để lấy giá trị từ các trường dạng select (Sổ xuống chọn nhiều, Sổ xuống chọn một):

Sử dụng smart values để lấy giá trị từ các trường dạng dạng hộp kiểm (Nhiều hộp kiểm, Hộp kiểm đơn):

Sử dụng smart values để lấy giá trị từ các trường ngày, ngày giờ (Chọn ngày, Chọn ngày giờ):

Sử dụng smart values để lấy giá trị từ các trường email (Một email, Nhiều email):

Sử dụng smart values để lấy giá trị từ các trường Phone number:

Sử dụng smart values để lấy giá trị từ các trường số (Số nguyên, Số thập phân, Công thức):

Sử dụng smart values để lấy giá trị từ các trường chữ (Dòng chữ, Đoạn văn bản):

Sử dụng smart values để lấy giá trị từ các trường Chọn mục (Chọn một mục, Chọn nhiều mục):

d

Nguyễn Văn A aaa-aaa nguyenvana a@

→ Giá trị trả về:

→ Giá trị trả về: guyễn Văn A

→ Giá trị trả về: , ,

Do thuộc kiểu trường dữ liệu multi nên khi lấy giá trị từ trường Chọn nhiều người có thể sử dụng các smart values dạng list. Đọc thêm

Do thuộc kiểu trường dữ liệu multi nên khi lấy giá trị từ trường Chọn nhiều nhóm có thể sử dụng các smart values dạng list. Đọc thêm

Do thuộc kiểu trường dữ liệu multi nên khi lấy giá trị từ trường Sổ xuống chọn nhiều có thể sử dụng các smart values dạng list. Đọc thêm

Do thuộc kiểu trường dữ liệu multi nên khi lấy giá trị từ trường Nhiều hộp kiểm có thể sử dụng các smart values dạng list. Đọc thêm

→ Giá trị trả về: a@

a@, b@, c@

→ Giá trị trả về: a@, b@, c@

Do thuộc kiểu trường dữ liệu multi nên khi lấy giá trị từ trường Nhiều email có thể sử dụng các smart values dạng list. Đọc thêm

Link tài liệu:

Ta có thể truy cập vào thuộc tính các field của issue được chọn, đọc thêm các thuộc tính cho các field

${trigger}
${trigger.id}
${trigger.key}
${trigger.url}
[${trigger.key}]${trigger.url}
[link issue}]${trigger.url}
${trigger.space.id}
${trigger.space.key}
${trigger.space}
${trigger.space.name}
${trigger.space.url}
[${trigger.space.key}]${trigger.space.url}
[trigger.space.name}]${trigger.url}
${trigger.space.area}
${trigger.space.area.id}
${trigger.space.area.name}
${trigger.space.area.url}
[link area}]${trigger.apce.area.url}
${trigger.space.area.key}
${trigger.status}
${trigger.status.id}
${trigger.status.name}
${trigger.status.key}
${trigger.status.description}
${trigger.status.category}
${trigger.status.category.id}
${trigger.status.category.name}
${trigger.status.category.key}
${trigger.status.category.key}
${trigger.issuetype}
${trigger.issuetype.id}
${trigger.issuetype.name}
${trigger.issuetype.category}
${trigger.fields.relatedusers.empty()}
${trigger.fields.relatedusers.first()}
${trigger.fields.multiselect.first()}
${trigger.fields.relatedusers.first().displayName} 
${trigger.fields.relatedusers.first().id}
${trigger.fields.relatedusers.first().username}
${trigger.fields.relatedusers.first().email}
${trigger.fields.multiselect.first().key}
${trigger.fields.multiselect.first().value}
${trigger.fields.relatedusers.last()}
${trigger.fields.multiselect.last()}
${trigger.fields.relatedusers.get(1)}
${trigger.fields.relatedusers.get(-3)}
${trigger.fields.multiselect.get(4)}
${trigger.fields.multiselect.get(-2)}
${trigger.fields.relatedusers.quantity()}
${trigger.fields.multiselect.quantity()}
${trigger.fields.relatedusers.contains('fff-fff')}
${trigger.fields.multiselect.contains('lop_01')}
${trigger.fields.relatedusers.containsAll('aaa-aaa', 'fff-fff')}
${trigger.fields.multiselect.containsAll('lop_01', 'lop_02')}
${trigger.fields.relatedusers.join()}
${trigger.fields.relatedusers.join('/')}
${trigger.fields.relatedusers.usernames()}
${trigger.fields.relatedusers.usernames('/')}
${trigger.fields.assignee}
${trigger.fields.assignee.id}
${trigger.fields.assignee.username}
${trigger.fields.assignee.displayName}
${trigger.fields.assignee.email}
${trigger.fields.assignee.mention()}
${trigger.fields.assignee.empty()}
${trigger.fields.relatedusers}
${trigger.fields.relatedusers.ids()}
${trigger.fields.relatedusers.usernames()}
${trigger.fields.relatedusers.displayNames()}
${trigger.fields.relatedusers.emails()}
${trigger.fields.relatedusers.mention()}
${trigger.fields.nhom_thuc_hien}
${trigger.fields.nhom_thuc_hien.id}
${trigger.fields.nhom_thuc_hien.name}
${trigger.fields.nhom_thuc_hien.empty()}
${trigger.fields.relatedgroups}
${trigger.fields.relatedgroups.ids()}
${trigger.fields.relatedgroups.names()}
${trigger.fields.class}
${trigger.fields.class.key}
${trigger.fields.class.value}
${trigger.fields.class.empty()}
${trigger.fields.class}
${trigger.fields.lua_chon.keys()}
${trigger.fields.lua_chon.values()}
${trigger.fields.xac_nhan}
${trigger.fields.class}
${trigger.fields.lua_chon.keys()}
${trigger.fields.lua_chon.values()}
${trigger.fields.ngay_lam}
${trigger.fields.class.ngay_lam.date()}
${trigger.fields.ngay_lam.after('04/08/2024')}
${trigger.fields.ngay_lam.before('04/08/2024')}
${trigger.fields.ngay_lam.empty()}
${trigger.fields.ngay_lam.plusDays(5)}
${trigger.fields.ngay_lam.plusDays(${trigger.fields.so_luong})}
${trigger.fields.ngay_lam.plusMonths(5)}
${trigger.fields.ngay_lam.plusDays(${trigger.fields.so_luong})}
${trigger.fields.thoi_diem}
${trigger.fields.class.thoi_diem.datetime()}
${trigger.fields.thoi_diem.after('08/08/2024 09:00')}
${trigger.fields.thoi_diem.before('08/08/2024 09:00')}
${trigger.fields.thoi_diem.empty()}
${trigger.fields.thoi_diem.plusHours(5)}
${trigger.fields.thoi_diem.plusDays(${trigger.fields.so_luong})}
${trigger.fields.thoi_diem.plusDays(5)}
${trigger.fields.thoi_diem.plusDays(${trigger.fields.so_luong})}
${trigger.fields.thoi_diem.plusMonths(5)}
${trigger.fields.thoi_diem.plusDays(${trigger.fields.so_luong})}
${trigger.fields.email_khach}
${trigger.fields.email_khach.empty()}
${trigger.fields.email_nhan}
${trigger.fields.so_lien_he}
${trigger.fields.so_lien_he.empty()}
${trigger.fields.so_luong}
${trigger.fields.so_luong.empty()}
${trigger.fields.chieu_dai}
${trigger.fields.class.chieu_dai.format()}
${trigger.fields.chieu_dai.empty()}
${trigger.fields.khoang_cach}
${trigger.fields.class.khoang_cach.format()}
${trigger.fields.khoang_cach.empty()}
${trigger.fields.loi_nhac}
${trigger.fields.loi_nhac.empty()}
${trigger.fields.noi_dung}
${trigger.fields.noi_dung.empty()}
${trigger.fields.component}
${trigger.fields.component.id}
${trigger.fields.component.name}
${trigger.fields.danh_sach_cong_viec}
${trigger.fields.danh_sach_cong_viec.fields.title}
${trigger.fields.danh_sach_cong_viec.fields.assignee.displayName}
${trigger.fields.danh_sach_cong_viec.empty()}
chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
link chi tiết
link chi tiết
link chi tiết
link chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
chi tiết
link chi tiết
link chi tiết
Webhook
HTTP Request
link mô tả
link mô tả
link mô tả
link mô tả
link mô tả
link mô tả
link mô tả
link mô tả
link mô tả
link mô tả
link mô tả
https://app.luklak.live/org/orgcuaba/issue/BUG-01
https://app.luklak.live/org/orgcuaba/issue/BUG-01
BUG-01
link issue
https://app.luklak.live/org/orgcuaba/space/BUG
https://app.luklak.live/org/orgcuaba/area/AR3
https://app.luklak.live/org/orgcuaba/
BUG
Kiểm thử
https://app.luklak.live/org/orgcuaba/
link area
gmail.com
a@gmail.com
b@gmail.com
c@gmail.com
@gmail.com
gmail.com
a@gmail.com
N
b@gmail.com
c@gmail.com
a@gmail.com
b@gmail.com
c@gmail.com
Tại đây
Tại đây
Tại đây
Tại đây
gmail.com
gmail.com
gmail.com
gmail.com
gmail.com
gmail.com
gmail.com
Tại đây
Apache Velocity Engine - User Guide
tại đây