Interface IExternalSupportCaseService
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
contactExternalSupportContactWho wrote; the address is required.
subjectstringThe subject, or
nullto derive one from the message.bodystringWhat the visitor wrote.
cancellationTokenCancellationToken
Returns
Exceptions
- ArgumentException
The address is missing or malformed, the message is empty, or something is longer than SupportCaseLimits allows.