Kennisbank
Templates
Een body die één keer wordt geschreven, van versies wordt voorzien en vele keren wordt verzonden: vanuit de composer, vanuit je eigen code of door een agent.
Details
- Een template hoort bij de connection en niet bij de persoon die hem heeft geschreven, en dat is precies de reden dat de eerste versie hiervan is vervangen. Die was gekoppeld aan de gebruiker: de template van een teamgenoot was onzichtbaar voor een workspace-API-key, dus een integratie kon niet versturen wat de persoon die hem had ingesteld wél zag, en het verwijderen van het account van de auteur nam de templates van de workspace mee. De rijen zijn overgezet in plaats van weggegooid.
- Twee manieren om een body te schrijven. Een blokkenboom over de componenten van
@react-email/components(Section, Row, Column, Container, Text, Heading, Button, Link, Img, Hr, Markdown, CodeBlock, CodeInline), die tijdens het schrijven wordt gecontroleerd, zodat een verkeerde node of een onveiligehrefwordt geweigerd bij de aanroep die hem schreef, in plaats van aan te komen als een kapotte e-mail. Of markup die je zelf hebt gerenderd: als je templates al react-email-componenten in je eigen repo zijn, render ze daar met@react-email/renderen post de HTML, die één keer wordt gesaneerd wanneer de versie wordt gepubliceerd. - Drieëntwintig startpunten en een leeg exemplaar, in een galerij in plaats van een menu, omdat dit dingen zijn die je moet zien voordat je ertussen kiest, dus elke kaart toont de e-mail zelf. Welkom en verificatie, bonnen en facturen, verzending en verlengingen, samenvattingen en aankondigingen, geordend onder vier kopjes, en elk opent in de visuele editor waarin elk onderdeel verplaatsbaar, herstijlbaar en verwijderbaar is. Wat je ook kiest, het komt binnen als concept, dus niets is verzendbaar totdat je het publiceert.
- De galerij is het enige onderdeel hiervan dat alleen in de app zit. Een aanroeper die templates bereikt vanuit je eigen code of vanuit een agent post een body (een blokdocument of je eigen markup) in plaats van een startpunt te noemen, dus de drieëntwintig zijn een plek om te beginnen en geen catalogus om uit te installeren.
- Benoemde slots en benoemde props zijn de twee soorten gaten, geschreven als {{key}} in de body en in het onderwerp. Een slot wordt ingevuld door wie de template bewerkt en draagt een standaardwaarde, dus een verzending die niets noemt rendert alsnog. Een prop wordt bij het verzenden meegegeven, en een prop die als verplicht is gemarkeerd weigert de verzending wanneer hij ontbreekt: een 422, en er vertrekt geen mail. Die weigering is precies waarom je hem declareert: het alternatief is een bericht dat uitgaat met een leegte waar het ordernummer zou moeten staan, wat niets meldt en niemand kan terughalen.
- Een gepubliceerde versie ligt vast. Het bewerken van de body van een gepubliceerde template maakt een nieuw concept aan in plaats van te overschrijven wat live staat, dus verzendingen blijven oplossen wat ze gisteren oplosten totdat iemand publiceert, en een verzending die een versienummer vastzet blijft zelfs dan onaangetast. De body wordt bij het publiceren gecompileerd, en daardoor faalt een template die niet rendert bij degene die hem publiceert in plaats van bij een ontvanger.
- Preview rendert precies wat een verzending zou opleveren zonder te verzenden, en meldt wat nog leeg is in plaats van te weigeren. Een template die wordt bekeken is meestal een template die wordt geschreven, en een auteur die blok voor blok invult zou niet aan elke prop hoeven te voldoen om te zien wat hij tot nu toe heeft.
- Elke template houdt zijn eigen overzicht bij van wat hij heeft verzonden: hoeveel er de afgelopen zeven, dertig of negentig dagen uitgingen, welke daarvan zijn geopend en waarop is geklikt, een reeks per dag, en een uitsplitsing naar waar elke verzending vandaan kwam: de composer, je code, een agent of de queue. Elk percentage noemt zijn eigen noemer in plaats van er een te lenen, want ze verschillen echt: opens worden geteld over de berichten die een pixel droegen, kliks over de berichten die een herschreven link droegen, en een bericht kan het een zonder het ander dragen. Een preview wordt helemaal nooit vastgelegd, en een testverzending wordt apart geteld en buiten elk cijfer gelaten, omdat die nooit is vertrokken.
- Dat overzicht is eerlijk over wat het niet kan zien, en dat is de reden om de helft die het wél ziet te vertrouwen. Een verzending wordt aan zijn bezorgrecord gekoppeld door de verzending zelf, en alleen mail die vanuit je eigen code of vanuit de queue is verzonden draagt er een. Een bericht dat vanuit de composer, vanuit een agent of door de assistent is verzonden niet. Dus een template die vooral vanuit de composer wordt gebruikt komt binnen met de meeste van zijn verzendingen ongekoppeld, en het aantal ongekoppelde wordt als eigen getal getoond in plaats van meegerekend alsof niemand ze opende.
- Vier oppervlakken over één service, zodat “wat betekent publiceren” één antwoord heeft in plaats van drie die het vandaag met elkaar eens zijn. De knop Templates in de composer biedt de gepubliceerde exemplaren aan en VERVANGT het bericht door wat je kiest in plaats van het erin te plakken: de verzending noemt de template, de versie wordt vastgezet op het moment dat je kiest, en de body wordt gerenderd waar hij is geschreven, zodat een publicatie tussen kiezen en klikken niet kan veranderen wat er uitgaat, en een lay-out die de composer nooit had kunnen bevatten intact blijft. Wat je daar invult zijn de waarden, niet de body. /templates is negen endpoints achter de scopes templates:read en templates:write, methode voor methode omwikkeld door de SDK. Er een verzenden vereist naast een template-permissie ook een verzendpermissie, dus een key die aan een copywritingtool is uitgegeven kan schrijven en publiceren zonder iemand te kunnen mailen. De MCP-server draagt vijf tools: list, read, preview, create en send. Er is met opzet geen tool om een bestaande bij te werken, te verwijderen of te publiceren. Een bewerking maakt een concept aan waar de volgende verzending niet naartoe zou oplossen, en een verwijdering kan niet worden teruggedraaid. Een opgeslagen body bewerken is een scherm: /workspace/templates draagt een blokcanvas met een palet en een inspector, een live preview ernaast, en Save en Publish als aparte handelingen, en dat is wat een gepubliceerde versie iets maakt dat je met rust kunt laten terwijl je aan de volgende werkt.
- 200 templates per connection, een blokdocument met een maximum van 500 blokken, acht niveaus nesting, 20.000 tekens in één waarde en 100 slots en 100 props; een body die als markup wordt gepost is begrensd op een miljoen tekens, en een onderwerp op 998. Elk daarvan is een beveiliging tegen een op hol geslagen script en geen limiet van een abonnement, elk weigert met een melding die het getal noemt waarop het weigerde, en niets aan templates zit achter een tier.