Class SupportMessage
- Namespace
- Tharga.Team
- Assembly
- Tharga.Team.dll
One entry in a support case's transcript.
public record SupportMessage : IEquatable<SupportMessage>
- Inheritance
-
SupportMessage
- Implements
- Inherited Members
Remarks
The author is recorded twice, and both are needed. AuthorIdentity is the stable
subject that survives everything and can be matched exactly; AuthorName is a snapshot taken
when the message was written, so the transcript stays readable after the author is deleted or leaves the
team. The audit trail carries the same pair, for the same reason — see AuditEntry.CallerUserIdentity
and AuditEntry.CallerIdentity.
Properties
AsSupport
Written from the support side — a support page or a support channel — whoever wrote it. Such a message answers the case even when its writer is also the one who raised it.
public bool AsSupport { get; init; }
Property Value
AssistantCalls
The service calls the assistant made for this answer, in order; empty for any other entry, and for an answer that looked nothing up.
public SupportAssistantCall[] AssistantCalls { get; init; }
Property Value
AssistantUsage
The tokens the model reported for this answer, or null for any other entry and when it reported none.
public SupportAssistantUsage AssistantUsage { get; init; }
Property Value
Attachments
The files this entry carries, in the order they arrived; empty for none.
public SupportAttachment[] Attachments { get; init; }
Property Value
AuthorIdentity
The author's stable authentication subject, or null for a System
entry.
public string AuthorIdentity { get; init; }
Property Value
AuthorName
The author's display name as it was when the message was written.
public string AuthorName { get; init; }
Property Value
Body
The entry as plain text, which every reader can use; with BodyHtml set it is that HTML's plain-text rendering, or a received mail's own text part.
public required string Body { get; init; }
Property Value
BodyHtml
The entry's formatting as sanitized HTML beside Body, or null for a plain entry; show it only through the sanitizer again.
public string BodyHtml { get; init; }
Property Value
Delivery
Whether this entry reached the case's external channel.
public SupportMessageDelivery Delivery { get; init; }
Property Value
Remarks
A message that arrived from a channel is Sent by definition — it is already there, and posting it back would echo it.
DeliveryError
public string DeliveryError { get; init; }
Property Value
Remarks
Kept because "not delivered" alone cannot be acted on. A recipient the server refused, a bounce saying the sending domain failed SPF and a policy withholding mail outside production are three different fixes, and only the reason says which one is needed.
Kind
public required SupportMessageKind Kind { get; init; }
Property Value
Rating
How the person the assistant answered rated this answer; only the assistant's answers are rated.
public SupportAnswerRating Rating { get; init; }
Property Value
SentAt
public required DateTime SentAt { get; init; }
Property Value
Sequence
Position in the case's transcript, from 1. Also the paging cursor.
public required int Sequence { get; init; }
Property Value
Source
The channel this entry arrived from, or null when it was written through the application
itself.
public SupportChannelType? Source { get; init; }
Property Value
Remarks
Where a message came from is not the same question as who wrote it. Kind says whether a person or the toolkit produced the entry; this says which door it came through, and the two vary independently.
It carries how much the attribution can be trusted, which is why it is worth surfacing rather
than logging. An entry written through the application was authored by an authenticated caller. One
from Email was not: mail is accepted on a sender match, because
nothing about a From: header authenticates anybody. A reader deciding how much weight to put on
a name needs to be able to tell those apart.