Skip to main content

WeclappMailTemplateService

App\Services\WeclappMailTemplateService

Lädt Mail-Templates aus Weclapp (mailTemplate/id/{id}) und stellt sie als typisierte MailTemplateData-DTO zur Verfügung.

Wird primär vom Grenke MissingInfo-Mailflow genutzt.

DI

use App\Services\WeclappMailTemplateService;

public function __construct(
protected WeclappMailTemplateService $weclappMailTemplateService
) {}

API

getById(string|int $templateId): MailTemplateData

Gibt eine MailTemplateData-DTO zurück mit subject und body. Robust gegen die unterschiedlichen Feldnamen, die Weclapp je nach Sprach-Locale liefert (subject / Subject, text / body / mailBody / html / …).

$template = $this->weclappMailTemplateService->getById(12345);

$template->subject; // "Rückfrage zu Ihrem Vorgang"
$template->body; // raw Weclapp template string mit ..variableName.. und [[if]]/[[ifnot]]

getTemplateById(string|int $templateId): array

Wie oben, aber gibt das rohe JSON-Array zurück. Wirft RuntimeException, wenn keine JSON-Antwort kommt.

$raw = $this->weclappMailTemplateService->getTemplateById(12345);

renderTemplate(array $template, array $variables = []): array

Rendert Subject + Body in einem Call. Verwendet intern Blade::render() und einen einfachen Placeholder-Konverter (..varName..{{ $varName ?? "" }}).

$rendered = $this->weclappMailTemplateService->renderTemplate($raw, [
'companyName' => 'Acme GmbH',
'orderDate' => '12.04.2026',
]);

$rendered['subject']; // "Rückfrage zu Ihrem Vorgang"
$rendered['body']; // "Sehr geehrte Acme GmbH..."
$rendered['raw_template']; // Original-Array

Für komplexere Conditionals ([[if x]] … [[endif]]) nutzt der MissingInfoMailFlowService stattdessen den WeclappTemplateRendererService, der mehr Direktiven kann.

Beispiel — kompletter Flow im Mail-Service

$templateId = config('grenke.missing_info_mailflow.template_id');
$template = $this->weclappMailTemplateService->getById($templateId);

$subject = $template->subject ?: 'Rückfrage zu Ihrem Vorgang';
$html = $this->weclappTemplateRendererService->render($template->body, [
'formalSalutation' => 'Sehr geehrte Frau Dr. Paulsen',
'orderDate' => '12.04.2026',
]);

Mail::to($recipient)->send(new RenderedWeclappTemplateMail($subject, $html));

Template-Konvention in Weclapp

Damit das Rendering klappt, müssen die Templates in Weclapp mit dieser Syntax angelegt werden:

Sehr geehrte ..formalSalutation..,

zu Ihrem Auftrag vom ..orderDate.. fehlen uns noch folgende Angaben:

[[if technicianAppointment]]
Bitte bestätigen Sie den Techniker-Termin am ..technicianAppointmentDate.. um ..technicianAppointmentTime..
[[endif]]

[[ifnot technicianAppointment]]
Bitte teilen Sie uns einen passenden Techniker-Termin mit.
[[endif]]

Die unterstützten Variablen-Namen findest du im MissingInfoMailFlowService.