Table of Contents

Interface IExternalSupportCaseService

Namespace
Tharga.Team.Support.Cases
Assembly
Tharga.Team.dll

Opens a support case for somebody who is not signed in, from a public contact form.

public interface IExternalSupportCaseService

Remarks

This is anonymous on purpose, and the only anonymous support entry point. Every call on ISupportCaseService needs a signed-in user and a team, and none of them is loosened for this. A separate interface means the unauthenticated door is one named method rather than an exception inside an authorizing decorator.

The case opens unassigned and stays out of every team. The address is unverified, so it is used to suggest teams to staff, as a mailed case does, and never to place the case. Staff assign it.

Answers reach the visitor by mail, through the mailbox support cases are configured with. Without a mailbox that sends, the case is still opened, so a visitor's message is never lost, but nothing can be mailed back.

Abuse is shared between this and the host. The toolkit bounds every field and the message and refuses what is malformed. Rate limiting, a honeypot field and a captcha are the host's: only the host knows who is calling.

Methods

RaiseExternalCaseAsync(ExternalSupportContact, string, string, CancellationToken)

Opens an unassigned case from a visitor's message.

Task<SupportCase> RaiseExternalCaseAsync(ExternalSupportContact contact, string subject, string body, CancellationToken cancellationToken = default)

Parameters

contact ExternalSupportContact

Who wrote; the address is required.

subject string

The subject, or null to derive one from the message.

body string

What the visitor wrote.

cancellationToken CancellationToken

Returns

Task<SupportCase>

Exceptions

ArgumentException

The address is missing or malformed, the message is empty, or something is longer than SupportCaseLimits allows.