Sử dụng các thực thể và điền vào chỗ trống trong agent

Một phần quan trọng trong các cuộc hội thoại agent trong Copilot Studio là khả năng hiểu ngôn ngữ tự nhiên, tức là khả năng AI hiểu được ý định của người dùng. Ví dụ, một khách hàng có thể nói "Tôi đã thử sử dụng thẻ quà tặng của mình nhưng nó không hoạt động". Agent sẽ chuyển hướng khách hàng đến chủ đề liên quan đến việc thẻ quà tặng không hoạt động, ngay cả khi cụm từ chính xác đó không được liệt kê là cụm từ kích hoạt.

Một khía cạnh cơ bản của khả năng hiểu ngôn ngữ tự nhiên là xác định các thực thể trong cuộc hội thoại của người dùng.

Thực thể là một đơn vị thông tin đại diện cho một loại đối tượng thực tế nhất định. Ví dụ, số điện thoại, mã bưu chính, thành phố, hoặc thậm chí là tên của một người. Với kiến ​​thức được cung cấp bởi các thực thể, agent có thể nhận ra thông tin liên quan từ đầu vào của người dùng và lưu lại để sử dụng sau này.

Các thực thể được xây dựng sẵn

Các thực thể trong agent cho phép bạn lưu trữ thông tin trong những nhóm tương tự.

Copilot Studio hỗ trợ một tập hợp các thực thể được xây dựng sẵn, đại diện cho những loại thông tin được sử dụng phổ biến nhất trong các cuộc hội thoại thực tế, chẳng hạn như tuổi, màu sắc, số và tên. Hãy sử dụng thực thể Money làm ví dụ.

1. Mở một agent trong Copilot Studio, chọn Settings ở đầu trang, sau đó chọn Entities. Một danh sách tất cả các thực thể có sẵn sẽ xuất hiện.

2. Chọn Money. Bảng chi tiết cho thực thể sẽ mở ra. Bạn sẽ thấy giải thích về thực thể này và các cách nó có thể được sử dụng để trích xuất thông tin liên quan đến tiền hoặc đơn vị tiền tệ từ đầu vào của người dùng.

Ví dụ, khi người dùng trả lời "Nó có giá 1000 USD" cho một câu hỏi từ node Question được cấu hình để thu thập thực thể này, agent sẽ nhận ra rằng "1000 USD" tương ứng với loại thông tin tiền tệ. Khi agent trích xuất thông tin này và lưu vào một biến, nó sẽ lưu "1000" dưới dạng số mặc dù thông tin xung quanh là văn bản.

Các thực thể tùy chỉnh

Các thực thể được xây dựng sẵn bao gồm những loại thông tin thường được sử dụng. Đôi khi, chẳng hạn như khi xây dựng một agent phục vụ một mục đích cụ thể, bạn có thể cần dạy mô hình hiểu ngôn ngữ của agent kiến ​​thức chuyên biệt về lĩnh vực đó.

Ví dụ, giả sử bạn muốn xây dựng agent cho một cửa hàng ngoài trời. Trong trường hợp này, bạn cần dạy cho agent nhận biết danh mục "sản phẩm thiết bị ngoài trời" trong cuộc hội thoại.

Đầu tiên, hãy tạo một thực thể tùy chỉnh. Trong trường hợp này, bạn có thể tạo một thực thể cung cấp cho agent kiến ​​thức về tất cả các danh mục sản phẩm ngoài trời.

1. Truy cập trang Settings cho agent của bạn và chọn Entities.

2. Chọn Add an entity > New entity.

3. Chọn loại thực thể mong muốn: Closed list hoặc Regular expression (regex)

Cửa sổ tạo thực thể, với các tùy chọn Closed list và Regular expression (regex)
Cửa sổ tạo thực thể, với các tùy chọn Closed list và Regular expression (regex)

Các thực thể Closed list

Các thực thể Closed list cho phép bạn xác định một danh sách những mục. Sử dụng các thực thể này cho những danh sách nhỏ, dễ quản lý và có nhãn mục đơn giản. Nếu bạn muốn agent nhận biết thông tin cụ thể theo ngữ cảnh, thay đổi theo người dùng hoặc phiên và chỉ có sẵn trong runtime, hãy sử dụng thực thể Open list.

1. Trong Create an entity, chọn Closed list.

2. Trong bảng điều khiển mở ra, nhập tên cho thực thể mới của bạn, chẳng hạn như Camping activity.

3. Thêm mô tả nếu cần.

4. Trong mục List items, nhập các giá trị bạn muốn liên kết với thực thể này. Ví dụ: hikingyoga.

Ngoài ra, bạn có thể upload lên một file liệt kê tất cả các giá trị bạn muốn thêm cho thực thể này.

Khi nhập giá trị, bạn có thể:

  • Chọn một giá trị và thay đổi nó.
  • Chọn biểu tượng thùng rác bên cạnh giá trị bạn muốn xóa.
  • Chọn Synonyms (hoặc chọn các từ đồng nghĩa hiện có) bên cạnh một giá trị để mở bảng Edit synonyms.

Thêm từ đồng nghĩa để mở rộng logic khớp cho mỗi giá trị trong danh sách. Ví dụ, đối với hiking, bạn có thể thêm trekkingmountaineering làm từ đồng nghĩa.

Bảng Edit synonyms
Bảng Edit synonyms

5. Nếu muốn, hãy bật Smart matching cho thực thể này.

Smart matching là một phần của trí thông minh được hỗ trợ bởi mô hình hiểu ngôn ngữ của agent. Khi Smart matching được kích hoạt, agent sẽ diễn giải đầu vào của người dùng bằng cách sử dụng logic mờ so với những giá trị được liệt kê cho thực thể.

Đặc biệt, agent có thể tự động sửa lỗi chính tả và mở rộng logic đối sánh về mặt ngữ nghĩa. Ví dụ, agent có thể tự động đối sánh "softball" với "baseball".

6. Sau khi hoàn tất việc tạo hoặc chỉnh sửa thực thể, hãy chọn Save. Chọn Close để hủy bỏ các thay đổi của bạn.

Bảng chi tiết cho thực thể ví dụ Camping activity
Bảng chi tiết cho thực thể ví dụ Camping activity

Upload lên giá trị cho một thực thể Closed list

Từ bảng chi tiết của một thực thể Closed list, bạn có thể thêm hoặc thay thế tập hợp các giá trị và từ đồng nghĩa liên kết với thực thể đó.

1. Chuẩn bị một file văn bản (tối đa 3 MB) liệt kê tất cả các giá trị bạn muốn cho thực thể của mình, bao gồm cả từ đồng nghĩa, nếu có. Sử dụng định dạng này: Một giá trị trên một dòng và sử dụng dấu gạch dọc (|) làm dấu phân cách cho các từ đồng nghĩa. Ví dụ:

hiking|trekking
hiking|mountaineering
yoga
cycling|bicycling
cooking

2. Trong mục List items, chọn Upload a file.

3. Trong Upload a file, chọn tùy chọn bạn muốn:

  • Để thêm các giá trị và từ đồng nghĩa mới cho thực thể của bạn, chọn Append.
  • Để thay thế tất cả các giá trị và từ đồng nghĩa hiện có bằng danh sách từ file của bạn, chọn Replace.

4. Kéo file của bạn vào cửa sổ. Hoặc, chọn Click to browse, đi đến file của bạn và chọn file đó.

5. Xem lại các giá trị và từ đồng nghĩa xuất hiện và chọn Add.

Tải xuống giá trị cho một thực thể Closed list

Từ bảng chi tiết của một thực thể Closed list, bạn có thể tải xuống một file văn bản liệt kê tập hợp các giá trị và từ đồng nghĩa được liên kết với thực thể đó.

1. Trong mục List items, chọn Download.

2. Lưu file văn bản kết quả hoặc mở file đó trong trình soạn thảo văn bản để xem nội dung. Mỗi giá trị thực thể xuất hiện trên một dòng riêng biệt. Nếu một giá trị có nhiều từ đồng nghĩa, chúng sẽ xuất hiện trên các dòng riêng biệt, như sau:

hiking|trekking
hiking|mountaineering

Thực thể Regular expression (regex)

Các thực thể Regular expression (regex) cho phép bạn xác định các mẫu logic mà mình có thể sử dụng để khớp và trích xuất thông tin từ đầu vào. Các thực thể regex rất hữu ích cho việc khớp mẫu phức tạp với đầu vào của người dùng. Chúng cũng hữu ích nếu bạn cần cho phép các biến thể cụ thể về cách người dùng có thể định dạng hoặc nhập đầu vào của họ trong một cuộc hội thoại.

Ví dụ, sử dụng các thực thể regex để xác định những mục như ID theo dõi, số giấy phép, số thẻ tín dụng hoặc địa chỉ IP.

1. Trong Create an entity, chọn Regular expression (regex).

2. Trong bảng điều khiển hiện ra, hãy nhập tên cho thực thể mới của bạn.

Bảng chi tiết cho một thực thể regex.
Bảng chi tiết cho một thực thể regex.

3. Thêm mô tả nếu muốn.

4. Nhập mẫu biểu thức chính quy cần sử dụng để khớp và trích xuất các mục thực thể từ đầu vào.

Copilot Studio NLU và CLU sử dụng cú pháp biểu thức chính quy .NET. NLU+ sử dụng cú pháp biểu thức chính quy JavaScript.

Theo mặc định, việc khớp mẫu có phân biệt chữ hoa chữ thường. Để không phân biệt chữ hoa chữ thường, hãy sử dụng tùy chọn biểu thức chính quy (?i) trong chuỗi mẫu của bạn. Một số ví dụ cơ bản được bao gồm trong bảng điều khiển thực thể regex.

Nếu bạn cần biểu thức chính quy chứa nhiều mẫu, hãy sử dụng toán tử thay thế | để nối các biểu thức chính quy. Ví dụ, bạn có thể kết hợp hai mẫu regex để tìm cả định dạng cũ và mới của mã ID sản phẩm.

5. Sau khi hoàn tất việc tạo hoặc chỉnh sửa thực thể, hãy chọn Save. Chọn Close để hủy bỏ các thay đổi của bạn.

Sử dụng các thực thể trong cuộc hội thoại

Giờ đây, agent của bạn đã biết về thiết bị ngoài trời dựa trên thực thể Camping activity và các thực thể tùy chỉnh khác mà bạn đã tạo, bạn có thể bắt đầu sử dụng chúng trong agent của mình.

1. Truy cập trang Topics của agent.

2. Mở chủ đề cho thực thể bạn muốn thu thập.

3. Chọn biểu tượng Add node và sau đó chọn Ask a question.

4. Trong phần Identify, chọn thực thể bạn đã tạo trong Custom entities.

Node Question với lựa chọn thực thể.
Node Question với lựa chọn thực thể.

5. Tùy chọn, chọn các mục để hiển thị dưới dạng nút. Ví dụ, nếu bạn muốn hiển thị một số danh mục dưới dạng nút để người dùng dễ dàng chọn làm đầu vào, hãy chọn Select options for user và sau đó chọn các tùy chọn bạn muốn từ danh sách. Danh sách này chứa các mục bạn đã thêm khi tạo thực thể tùy chỉnh.

Lựa chọn các giá trị thực thể sẽ được hiển thị dưới dạng nút trong runtime.
Lựa chọn các giá trị thực thể sẽ được hiển thị dưới dạng nút trong runtime.

6. Đổi tên biến lưu trữ phản hồi của người dùng, nếu bạn muốn.

Cung cấp các giá trị thực thể cho agent

Bạn có thể muốn sử dụng chính xác các từ ngữ khách hàng nhập vào cho những mục đích như kiểm toán hoặc nhắn tin tiếp theo. Bạn có thể hiển thị các giá trị thực thể bằng cách bật tùy chọn Include metadata trong thuộc tính nhận dạng thực thể của node Question thu thập thực thể này.

Khi bạn bật tùy chọn này, kiểu dữ liệu của biến StartDate chứa ngày bắt đầu mà người dùng yêu cầu cho một hoạt động sẽ trở thành kiểu bản ghi (thay vì date). StartDate.Literal chứa những gì khách hàng nói (ví dụ: "tomorrow") ​​và StartDate.Value chứa ngày tương ứng. Bằng cách sử dụng các phần tử này trong một tin nhắn, bạn có thể khiến agent tạo ra cuộc hội thoại như sau:

Câu hỏi của agent: "Bạn muốn bắt đầu khi nào?"

Câu trả lời của khách hàng: "Ngày mai"

Tin nhắn của agent: "Được, lịch của bạn được đặt vào ngày mai (02/04/2026)".

Node Question thu thập ngày, tiếp theo là một node Message với một tin nhắn sử dụng cả giá trị thực thể và giá trị của thực thể được nhận dạng.
Node Question thu thập ngày, tiếp theo là một node Message với một tin nhắn sử dụng cả giá trị thực thể và giá trị của thực thể được nhận dạng.

Điền giá trị vào ô trống

Điền giá trị vào ô trống là một khái niệm hiểu ngôn ngữ tự nhiên liên quan đến việc lưu một thực thể được trích xuất vào một đối tượng. Trong Copilot Studio, điền giá trị vào ô trống có nghĩa là đặt giá trị của thực thể được trích xuất vào một biến.

Hãy tiếp tục sử dụng chủ đề hoạt động cắm trại, được kích hoạt bằng cách nhập "I want something to do" trong cuộc trò chuyện thử nghiệm, làm ví dụ.

Chủ đề được kích hoạt thành công và agent hỏi loại hoạt động, đồng thời hiển thị các lựa chọn nút được chỉ định khi soạn thảo node Question. Nếu bạn bật tùy chọn theo dõi giữa các chủ đề, cây hội thoại cũng hiển thị agent đang chuyển đến node Question này.

Các tùy chọn hoạt động cắm trại trong bảng điều khiển thử nghiệm với tính năng theo dõi giữa những chủ đề được bật.
Các tùy chọn hoạt động cắm trại trong bảng điều khiển thử nghiệm với tính năng theo dõi giữa những chủ đề được bật.

Khách hàng có thể sử dụng các lựa chọn được xác định trước bằng cách chọn một trong các nút. Ngoài ra, họ cũng có thể nhập một từ như "trekking" và thấy rằng nó được ánh xạ tới "hiking", bởi vì những từ này được định nghĩa là từ đồng nghĩa.

Chế độ xem theo dõi cho thấy hộp thoại được định tuyến chính xác đến đường dẫn có giá trị danh mục sản phẩm là "Hiking".

Việc điền thông tin xảy ra khi agent của bạn lưu trữ giá trị thực thể được trích xuất "Hiking" vào biến chứa phản hồi của người dùng tại node câu hỏi này (myActivity, trong ví dụ này). Để thấy việc điền thông tin hoạt động như thế nào, hãy quan sát giá trị của các biến khi bạn kiểm tra agent của mình. Ở đây, tab Test của bảng Variables cho thấy giá trị biến là "Hiking".

Bảng Variables, với tab Test được chọn.
Bảng Variables, với tab Test được chọn.

Điền thông tin chủ động

Bạn cũng có thể sử dụng tính năng điền thông tin chủ động, cho phép người dùng chỉ định nhiều thông tin tương ứng với các thực thể khác nhau cùng một lúc. Agent hiểu thông tin nào thuộc về thực thể nào. Trong trường hợp không chắc chắn về ánh xạ dự định, nó sẽ nhắc người dùng cụ thể hơn bằng cách cung cấp các lựa chọn.

Trong ví dụ này, người dùng đã viết "Tôi chán nhưng tôi thích mountaineering". Thông điệp này bao gồm cụm từ kích hoạt cho biết người dùng muốn được trợ giúp về các hoạt động ngoài trời và thông tin thứ hai là "mountaineering", từ đồng nghĩa với hiking. Trong trường hợp này, hệ thống sẽ điền cả thực thể để chọn hoạt động ngoài trời và loại hoạt động.

Điền nhiều ô trống một cách chủ động.
Điền nhiều ô trống một cách chủ động.

Chế độ xem theo dõi cho thấy hệ thống tiếp nhận thông tin đầu vào từ người dùng và bỏ qua một cách thông minh node Question về loại hoạt động.

Agent luôn chủ động lắng nghe thông tin đầu vào từ người dùng, ghi nhớ thông tin trước để có thể bỏ qua các bước không cần thiết khi thích hợp.

Hãy bắt đầu lại quá trình kiểm thử và thử một trường hợp khác. Trong vòng này, bạn có thể thêm một vài node Question nữa để hỏi về những thứ như bạn có bao nhiêu thời gian cho hoạt động (sử dụng thực thể Duration) và phạm vi giá (sử dụng thực thể Money).

Lần này, khi câu hỏi về danh mục sản phẩm được đưa ra, thay vì chỉ cho hệ thống biết danh mục sản phẩm, người dùng có thể nói "Tôi muốn mua một đôi giày đi bộ đường dài dưới 100 USD". Trong ví dụ này, agent không chỉ có thể định tuyến đến đường dẫn danh mục sản phẩm leo núi chính xác, mà còn chủ động điền vào các ô yêu cầu thông tin về loại thiết bị leo núi và phạm vi giá mục tiêu.

Theo dõi giữa các chủ đề cho những danh mục sản phẩm và giá cả.
Theo dõi giữa các chủ đề cho những danh mục sản phẩm và giá cả.

Bạn có thể kiểm soát thủ công việc điền ô chủ động ở cấp độ node. Nếu bạn muốn luôn nhắc nhở câu hỏi trong một node cụ thể, bất kể ô đó đã được điền từ các phản hồi trước đó của người dùng hay chưa, hãy tắt tùy chọn Skip question cho node Question.

1. Chọn ba dấu chấm (…) của node Question, sau đó chọn Properties. Bảng Question properties sẽ xuất hiện.

Mở bảng Question properties
Mở bảng Question properties

2. Trên bảng Question properties, chọn Question behavior.

3. Trên bảng Question behavior, trong phần Skip question, chọn Ask every time, sau đó chọn Save ở đầu trang.

Bỏ qua câu hỏi.
Bỏ qua câu hỏi.

Sử dụng các thực thể Open list

Các thực thể Open list có những giá trị được điền vào trong runtime từ một nguồn dữ liệu bên ngoài thay vì được xác định trước. Chúng cho phép agent nhận biết thông tin cụ thể theo ngữ cảnh - chẳng hạn như tên tài khoản, người nhận thanh toán hoặc đơn thuốc - thay đổi theo từng người dùng hoặc phiên. Chúng hoạt động với cả phương thức văn bản và giọng nói. Trường hợp sử dụng phổ biến nhất cho các thực thể Open list là những voice agent truyền thống.

Đối với các nguồn dữ liệu bên ngoài, bạn có thể sử dụng những tập dữ liệu, chẳng hạn như file Excel hoặc cơ sở dữ liệu. Bằng cách sử dụng Dataverse connector, bạn có thể cho phép agent tương tác với các hệ thống back-office để lấy dữ liệu phù hợp để sử dụng trong ngữ cảnh của cuộc gọi. Bạn cũng có thể tạo dữ liệu bằng Power Fx hoặc các phương tiện khác.

Tạo bảng để sử dụng làm thực thể nội tuyến động

Tạo một biến thuộc loại bảng mà agent có thể điền nội dung trong runtime. Hệ thống này cho phép tùy chỉnh các giá trị được hỗ trợ cho nhu cầu cụ thể mà không cần bất kỳ thay đổi nào đối với chính agent. Tập hợp các giá trị mà agent có thể nhận biết có thể thay đổi khi bắt đầu cuộc trò chuyện, dựa trên người gọi. Các giá trị được hỗ trợ thậm chí có thể thay đổi trong suốt cuộc trò chuyện để điều chỉnh câu hỏi tốt hơn cho phù hợp với ngữ cảnh.

Lưu ý: Bảng không nên chứa quá 100 mục.

Về cơ bản, bảng là danh sách các giá trị cùng loại (ví dụ: ["value1", "value2"]). Đối với các thực thể nội tuyến động, hãy sử dụng danh sách chuỗi. Nếu bạn muốn hỗ trợ từ đồng nghĩa, hãy sử dụng danh sách các bản ghi, trong đó mỗi bản ghi tuân theo schema sau.

Yếu tốLoạiMô tả
DisplayNameChuỗiMột giá trị có thể có cho thực thể
SynonymsMảng chuỗiMột trong những từ đồng nghĩa khác cho giá trị

Ví dụ:

[
  {
    "DisplayName": "value1",
    "Synonyms": ["synonym1", "synonym2", "..."]
  },
  {
    "DisplayName": "value2",
    "Synonyms": ["synonym1", "synonym2", "..."]
  },
  {
    "DisplayName": "value3",
    "Synonyms": ["synonym1", "synonym2", "..."]
  }
]

Sử dụng thực thể nội tuyến động trong một chủ đề

1. Truy cập trang Topics của agent và chọn chủ đề mà bạn muốn thu thập thực thể động.

2. Thêm node Question hoặc sử dụng node hiện có.

3. Trong mục Identify, chọn Options from a list variable.

4. Trong mục List variable, nhập hoặc chọn tên bảng chứa các giá trị áp dụng cho thực thể động của bạn.

5. Đổi tên biến lưu trữ phản hồi từ người dùng của agent, nếu bạn muốn.

6. Đối với agent thoại, tùy chọn chọn Assign DTMF keys to options. Trong quá trình chạy, các phím DTMF sẽ được tự động gán cho mỗi tùy chọn.

Chấp nhận một trong nhiều thực thể tại một lượt hội thoại

Trong một số trường hợp, agent có thể chấp nhận một trong nhiều câu trả lời hợp lệ tại một lượt hội thoại nhất định. Ví dụ, agent của bạn có thể yêu cầu khách hàng cung cấp số tài khoản hoặc số điện thoại của họ. Bạn cũng có thể muốn agent cho phép khách hàng nói rằng họ không có thông tin và định tuyến khách hàng tương ứng thay vì chuyển ngay lập tức cho đại diện dịch vụ khách hàng.

1. Thêm một node Question.

2. Trong mục Identify, chọn One of multiple entities.

3. Đối với mỗi thực thể bạn muốn chấp nhận tại node này, chọn New entity và chọn thực thể mong muốn. Một node Question có thể hỗ trợ tối đa 5 thực thể khác nhau.

4. Chọn tên biến mặc định trong mục Save user response as để mở bảng thuộc tính biến và đổi tên thành một tên có ý nghĩa - ví dụ: Identifier.

Biến lưu trữ giá trị thực thể được nhận dạng có kiểu dữ liệu là bản ghi, với một phần tử cho mỗi thực thể được hỗ trợ tại node này- ví dụ: Identifier.account, Identifier.phone, Identifier.unknown.

5. Thêm điều kiện để định tuyến cuộc hội thoại theo thông tin do khách hàng cung cấp. Nên thiết lập các điều kiện của bạn với toán tử is not Blank (hoặc is Blank).

Hành vi nhận dạng cho "Một trong nhiều thực thể"

Loại nhận dạng này xác định một thực thể duy nhất trong một tập hợp các thực thể có thể có tại một lượt hội thoại. Nếu khách hàng nhập một câu chứa hai hoặc nhiều thực thể được cấu hình để nhận dạng tại node Question tương ứng, agent chỉ xác định thực thể đầu tiên trong danh sách. Do đó, hãy đảm bảo soạn thảo các câu hỏi và logic điều kiện theo sau những node Question đó một cách phù hợp.

Ví dụ, giả sử một node Question được cấu hình để nhận dạng một trong những giá trị sau: Số thẻ thư viện, số điện thoại hoặc "I don't know", theo thứ tự này. Nếu khách hàng nói "Số điện thoại của tôi là 777 555-1212 và số thẻ của tôi là 123456789", giá trị thực thể được nhận dạng là số thẻ vì đó là thực thể đầu tiên trong danh sách các thực thể có thể có tại node Question tương ứng.

Nếu agent không thể xác định bất kỳ thực thể nào mà node Question được cấu hình để nhận dạng, nó sẽ áp dụng hành vi tạo lại prompt được chỉ định cho node này.

Giới hạn

Các giới hạn sau áp dụng cho những node Question mà bạn cấu hình để thu thập một trong nhiều thực thể trong một lượt hội thoại:

  • Bạn có thể bao gồm tối đa 5 thực thể.
  • Bạn không thể sử dụng các thực thể bên ngoài.
  • Bạn chỉ có thể bao gồm một thực thể thuộc mỗi loại. Ví dụ, một node Question không thể nhận dạng hai thực thể thuộc loại Date.
Thứ Tư, 13/05/2026 10:31
51 👨
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo