Answer the inbox from the panel, with templates

A reply starts from a template filled in the language the person wrote in,
is sent by the application when it has a mailer that delivers or handed to
the replier's mail program otherwise, and is recorded on the submission.
The same is available through the API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 10:45:47 +02:00
parent 697d333ad4
commit 76d022053b
27 changed files with 1096 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ use App\Models\MissingUrl;
use App\Models\Page;
use App\Models\Project;
use App\Models\Redirect;
use App\Models\ReplyTemplate;
use App\Models\Repository;
use App\Models\Service;
use App\Models\Setting;
@@ -115,6 +116,8 @@ class AdminApiContractTest extends TestCase
$talk = Talk::factory()->create();
$call = Call::factory()->create();
$application = Application::factory()->for($call)->create();
$application->replies()->create(['user_id' => $this->caller->id, 'user_name' => $this->caller->name, 'subject' => 'Re', 'body' => 'Hola', 'channel' => 'mail']);
ReplyTemplate::factory()->create();
$redirect = Redirect::factory()->create();
$missingUrl = MissingUrl::factory()->create();
$repository = Repository::factory()->create();
@@ -153,6 +156,8 @@ class AdminApiContractTest extends TestCase
'call' => ["/v1/calls/{$call->id}", '/v1/calls/{call}'],
'applications' => ['/v1/applications', '/v1/applications'],
'application' => ["/v1/applications/{$application->id}", '/v1/applications/{application}'],
'replies' => ["/v1/applications/{$application->id}/replies", '/v1/applications/{application}/replies'],
'reply templates' => ['/v1/reply-templates', '/v1/reply-templates'],
'redirects' => ['/v1/redirects', '/v1/redirects'],
'redirect' => ["/v1/redirects/{$redirect->id}", '/v1/redirects/{redirect}'],
'missing-urls' => ['/v1/missing-urls', '/v1/missing-urls'],