Giải pháp thân thiện với người dùng để chỉnh sửa các mẫu email với các biến thay thế là gì?


9

Tôi đang làm việc trên một hệ thống mà chúng tôi dựa vào rất nhiều "quản trị viên / người quản lý" gửi email cho người dùng từ cơ sở dữ liệu. Một trong những tính năng chính là có thể gửi email cho nhiều người cùng một lúc, với thông tin cụ thể liên quan đến từng người trong số họ. Một tính năng quan trọng khác là có thể tạo email thủ công, bởi vì nó có xu hướng cần thiết phải sửa đổi một chút mỗi lần, nhưng có một mẫu cơ bản giúp tiết kiệm rất nhiều thời gian.

Đối với điều này, chúng tôi có giải pháp "mẫu" điển hình, nơi chúng tôi có một mẫu trông giống như thế này:

Hello {{recipient.full_name}},

Your application to {{activity.title}} has been accepted. 
You have requested to participate on dates {{application.dates}}, in role {{application.role}}
Blah blah blah

Vấn đề chúng ta gặp phải rõ ràng là (như chúng ta mong đợi), các nhà quản lý không có được toàn bộ ý tưởng "biến số" và họ làm những việc như ghi đè lên chúng, điều đó không cho phép họ gửi email cho nhiều người cùng một lúc, giả sử những thứ đó sẽ không được thay thế và hệ thống bị hỏng, hoặc thậm chí những thứ không thể giải thích được như "Xin chào {{John}}".

Vấn đề lớn là điều này không bị rớt xuống, như thường lệ, đến phần "quản trị viên" nơi chỉ có một vài người dùng có quyền truy cập để chỉnh sửa các mẫu được tự động gửi đi và họ sẽ biết họ đang làm gì. Mọi người dùng của hệ thống đều gặp phải vấn đề này.

Giải pháp rõ ràng là thay thế các biến trước khi hiển thị mẫu này để người dùng chỉnh sửa, nhưng điều đó không hiệu quả khi gửi email cho nhiều người.

Đây có vẻ như là một vấn đề khá phổ biến và chúng tôi hy vọng rằng ai đó đã giải quyết nó.

Bạn đã thấy bất cứ nơi nào / tạo ra / có thể nghĩ ra giải pháp tốt cho vấn đề này?

Cập nhật

Điều cuối cùng tôi làm dựa trên câu trả lời của Daniel B là phát hiện, dựa trên vị trí con trỏ và vị trí {{}} trong mã cho dù người dùng hiện đang "bên trong một biến" hay "bên ngoài". Ở bên trong, tôi cho thấy một đoạn văn bản nhỏ bên dưới văn bản lớn giải thích rằng điều này sẽ được thay thế và họ có thể xóa nó hoàn toàn nếu họ muốn, nhưng họ không thể chỉnh sửa nó.

Tôi làm điều này trên Click, onChange, onKeyDown, onKeyUp. Đối với các sự kiện "khóa", nếu chúng ta ở trong một biến, tôi chỉ trả về ĐÚNG nếu keyCode là một trong một vài khóa "điều hướng". Mặt khác, tôi trả về FALSE, điều này ngăn chặn hiệu quả phiên bản của biến đó.

Nó không hoàn hảo, nhưng nó rất rẻ, và có vẻ hiệu quả.


Nhận xét cho những người có nhiều đại diện hơn tôi: (Tôi mới biết về UX) Bạn có thể vui lòng gắn thẻ câu hỏi này không? Tất cả các thẻ tôi nghĩ là chưa tồn tại ở đây: các mẫu biến giao diện người dùng thân thiện với người dùng có thể chỉnh sửa

Các mẫu này được trình bày như thế nào? Có phải nó chỉ là văn bản đơn giản trong một trình soạn thảo?
ChrisF

Ngay bây giờ, vâng, khi bạn chọn một nhóm người và nhấp vào "Tin nhắn", bạn sẽ nhận được hộp thoại "cửa sổ bật lên" với một văn bản lớn có nội dung mẫu ngay tại đó. Đó thực sự là markDown, mặc dù rõ ràng người dùng của chúng tôi không quen với nó, nó trông giống như văn bản thuần túy. Chúng tôi không có trình soạn thảo wysiwyg và chúng tôi sẵn sàng sử dụng một trình soạn thảo nếu điều đó có ích, nhưng bản thân nó không có, mọi người vẫn sẽ không hiểu các biến

Các vấn đề gốc rễ ở đây, là các nhà quản lý của bạn không hiểu các biến. Trừ khi bạn khắc phục vấn đề đó, các giải pháp ném của bạn vào các triệu chứng. Không phải tất cả các vấn đề cần một giải pháp mã hóa.
Darknight

Đã đồng ý. Tôi rất muốn có thể giáo dục mọi người, nhưng rõ ràng chúng tôi không thể yêu cầu họ đọc hướng dẫn sử dụng, vì vậy tôi đang tìm kiếm ý tưởng về cách làm cho họ dễ hiểu. Ý tưởng?
Daniel Magliola

Câu trả lời:


3

Theo yêu cầu từ các bình luận trong câu trả lời của ChrisF, đây là một giải pháp tôi đã sử dụng trong quá khứ:

  • Sử dụng WinForms RichTextBox để cho phép người dùng chỉnh sửa văn bản của mẫu.
  • Cho phép kéo / thả (hoặc chèn khác) các biến hoặc giữ chỗ vào RichTextBox.
  • Không cho phép tự chỉnh sửa các biến bằng cách kiểm tra xung quanh vị trí hiện tại của con trỏ để phân cách các biến của bạn (các ký hiệu {{và}}, trong ví dụ của bạn).

Việc thực hiện của tôi đã kết thúc giống như thế này:

Ví dụ RichTextBox

Nó có đánh dấu tùy chọn của biến để phân biệt với văn bản tiêu chuẩn.
Các dấu phân cách biến thực sự ở đó, chúng chỉ có cùng màu nền trước và sau.

Rõ ràng, điều này khá khác với cách triển khai của bạn, dựa trên HTML. Tôi có thể sẽ xem xét cách triển khai trình chỉnh sửa của Gmail; nó có vẻ tương tự như một textarea, nhưng có thể có hình ảnh nội tuyến (mặt cười, v.v.), tương tự như hành vi bạn đang tìm kiếm.


4

Tôi sẽ xem xét thay đổi cách trình bày mẫu cho người dùng để bạn có thể làm cho các phần sẽ được thay đổi bởi mã không thể chỉnh sửa. Một cái gì đó như thế này:

giả lập

Các bit mà bạn không muốn người dùng thay đổi hiện không thể chỉnh sửa được. Bạn có thể bao gồm một nút đóng để họ có thể xóa các mục nếu họ không cần chúng. Bạn cũng có thể bao gồm văn bản giải thích và / hoặc chú giải công cụ để giải thích {{...}}ý nghĩa của các bit và lý do tại sao chúng nên được để lại một mình.

Sử dụng một cái gì đó như Silverlight / WPF WrapPanelcho mỗi đoạn có thể cung cấp cho bạn thứ gì đó cho phép từng phần (có thể chỉnh sửa và không thể chỉnh sửa) được chuyển khi văn bản do người dùng kiểm soát phát triển và co lại.


Vấn đề chính với điều này là tôi không thể làm cho các hộp văn bản cả "nội tuyến" và "đa dòng" ... Và do đó bố cục sẽ vô cùng kỳ lạ ... Nếu bạn có thể chỉnh sửa "Kính gửi" và biến sẽ di chuyển đúng, và có một hộp văn bản khác bên phải nó được bọc một cách kỳ diệu, đây sẽ là TUYỆT VỜI. Nhưng tôi không thấy làm thế nào tôi có thể thực hiện điều này. Giải pháp thay thế mà chúng tôi đã cố gắng làm việc là có các khối "không thể chỉnh sửa" bên trong một vùng văn bản lớn, để bạn không thể thay đổi nội dung của chúng, nhưng bạn có thể xóa chúng (bằng "X"). Chúng tôi đã không thể làm cho công việc này. Bạn đã thấy nó ở đâu đó chưa? Cảm ơn!!!

@DanielMagliola cũng giống như Silverlight / WPF WrapPanelcho mỗi đoạn có thể cung cấp cho bạn một cái gì đó như bạn muốn.
ChrisF

@DanielMagliola trong quá khứ, tôi đã có thể đạt được điều này với WinForms RichTextBox. Các "biến" có thể được kéo và thả vào richtextbox và kiểu dáng sẽ được áp dụng cho nó để làm cho nó rõ ràng là một trình giữ chỗ. Phần khó khăn là ngăn chặn các thay đổi đối với các biến. Một giải pháp là kiểm tra vị trí con trỏ hiện tại cho các ký tự thẻ của bạn và không cho phép chỉnh sửa nếu đó là trường hợp.
Daniel B

Tôi quên đề cập đến điều này, đây là một ứng dụng HTML, nhưng ý tưởng đó vẫn có thể áp dụng được. Tôi thích "kiểm tra vị trí con trỏ và không cho phép chỉnh sửa ý tưởng", cảm ơn bạn vì điều đó !!
Daniel Magliola

@DanielB: Thật ra, bạn có thể vui lòng phản hồi không, tôi nghĩ bạn có người chiến thắng! Cảm ơn bạn!!
Daniel Magliola
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.