Class SupportChannelBinding
- Namespace
- Tharga.Team
- Assembly
- Tharga.Team.dll
A projection of a support case onto an external system — a Slack thread, an email thread.
public record SupportChannelBinding : IEquatable<SupportChannelBinding>
- Inheritance
-
SupportChannelBinding
- Implements
- Inherited Members
Remarks
A case may have none. That is the requirement this type exists to make expressible: a case raised on the site is complete and trackable whether or not it ever reaches a channel, and the toolkit's own case is authoritative rather than the channel's.
An empty collection is therefore an ordinary state, not an oversight — it is what every case has until a channel is configured, and what a site-only case has forever.
Properties
Address
Who this projection converses with, where the channel is addressed rather than shared — the email
address of the person on the other end. null for a channel that has no such thing.
public string Address { get; init; }
Property Value
Remarks
A property of the projection, not of the case. A Slack thread is posted into a room that anybody in it can answer, so there is nobody to name; an email thread has exactly one correspondent, and a later reply has to be sent back to them rather than to whoever happens to be signed in.
It is also the trust anchor for inbound mail. A From: header authenticates nobody, so a
mail is only appended to a case when it comes from the address that case already corresponds with.
ChannelType
public required SupportChannelType ChannelType { get; init; }
Property Value
ExternalId
The identifier in the external system — a Slack thread_ts, the Message-ID of the mail
that opened an email thread.
public required string ExternalId { get; init; }
Property Value
Mailbox
The name of the support mailbox the case's mail came in through and is answered from; null means the primary mailbox.
public string Mailbox { get; init; }
Property Value
MailboxAddress
The address of that mailbox when the mail came in, for showing staff which address they answer from; null when not recorded.
public string MailboxAddress { get; init; }
Property Value
MessageSequence
The transcript entry this external id was sent for, when it was recorded for an outgoing message —
the Message-ID of a mailed answer. null for an id that opened or replied to the thread.
public int? MessageSequence { get; init; }
Property Value
- int?
Remarks
A bounce names the mail it bounces by its id and nothing else, so this is what lets one mark the right answer as not delivered rather than only the case.