Chuyển đến nội dung chính

Hộp thư

Nơi các cuộc trò chuyện với người dùng tồn tại: luồng ở một thẻ, chiến dịch ở thẻ còn lại. Mỗi luồng cho biết ai đã nói, người dùng cuối, nhân viên hay mô hình, và ba bên không thể lẫn lộn.

The inbox in the Live environment
The inbox, Live environment.
The inbox in the Live environment, dark theme
The inbox, Live environment.

Conversations

A conversation opened to its turns
A conversation open: every turn attributed.
A conversation opened to its turns, dark theme
A conversation open: every turn attributed.

A thread is a person's messages from the Messenger, answered from here. Every turn carries who wrote it: the end user, a named agent, or the model, and the attribution is a database rule rather than a convention, so an assistant turn can never wear a person's name. Threads are open, snoozed or resolved; replying reopens what needs reopening, snooze parks a thread until a date, assignment names whose it is, and new turns stream in live while the thread is on screen.

Nơi một tin nhắn được viết

Một lượt tin nhắn từ người dùng mang theo trang mà họ đã viết nó. Bên dưới phần nội dung, một dòng mờ cùng kiểu với giờ của lượt tin nhắn đưa ra host và tên đường dẫn, tiêu đề trang nằm trong chú giải của dòng đó, và dòng ấy mở trang kia trong một thẻ mới. Chỉ lượt tin nhắn đến mới có: cả nhân viên lẫn mô hình đều trả lời từ console, nên gắn trang cho một trong hai sẽ chỉ ra console chứ không phải khách. Một tin nhắn gửi trước khi trình nhắn tin bắt đầu mang trang, hoặc từ một bề mặt không gửi gì cả, đơn giản là không có dòng này. Chỉ tên đường dẫn được giữ lại, không bao giờ là chuỗi truy vấn hay mảnh neo, nên mã trong một liên kết đặt lại hay thanh toán không bao giờ tới được hộp thư.

Campaigns

The campaigns tab
The campaigns tab: every send with its status.
The campaigns tab, dark theme
The campaigns tab: every send with its status.

A campaign is one message to many people: in-app, email or webhook, targeted at everyone, a cohort or named people. A sent campaign reports its deliveries by outcome, delivered, read, failed and pending, so a send that half-landed reads as exactly that rather than as done.

Proposals

The model's suggestions review where they point rather than on a tab of their own: a reply drafted for a thread waits in that conversation, a suggestion raised by an anomaly sits under that anomaly on Home, and one about a cohort sits on the cohort itself. Each proposal states its action in a sentence with its fields editable in place, plus its rationale; a person approves, adjusts or rejects it, and the decision is recorded with who made it. Nothing a proposal suggests happens without that approval.

Where this meets the API

The concept is the Messaging pillar. On the wire: threads are conversations and conversationThread, answered through replyToConversation, setConversationStatus and assignConversation, with live turns on the conversationTurns subscription; campaigns are messages and composeMessage; proposals are aiProposals with approveProposal, editProposal and rejectProposal (GraphQL reference). The user side of every thread is the Messenger, configured on its settings screen.