Markdown Support: API-Integration
Markdown per API: Format-Feld in Requests, Auto-Erkennung mit Gewichtung der Muster, Zusammenspiel mit dem Plugin API Endpoints und Hinweise zu E-Mails bei API-Tickets.
Markdown Support: API-Integration
Das Plugin hat keine eigene API für Tickets. Es setzt beim Anlegen eines Thread-Eintrags das Format, wenn die Anfrage eines mitbringt, und kann Markdown-Syntax optional automatisch erkennen.
Format in der Anfrage
Der Signal-Handler threadentry.created ermittelt das Format in dieser Reihenfolge:
- Das Formularfeld
formatin$_POST. - Bei
Content-Type: application/jsondas Feldformatim JSON-Body.
Gültig sind markdown, html und text (Groß- und Kleinschreibung egal). Jeder andere Wert wird zu html. Das Plugin schreibt das ermittelte Format danach in die Spalte format des Thread-Eintrags.
{
"name": "Max Mustermann",
"email": "max@example.com",
"subject": "Ticket mit Markdown",
"message": "## Problem\n\nDer Server antwortet **nicht**.",
"format": "markdown"
}
Den Text für die Zeilenumbruch-Wiederherstellung und die Auto-Erkennung liest das Plugin aus den Feldern response, note, message und body (das erste nicht leere Feld gilt).
osTicket entfernt beim Speichern teilweise Zeilenumbrüche. Das Plugin stellt sie wieder her, wenn der Text in
$_POSTZeilenumbrüche enthält und der gespeicherte Eintrag keine hat.
Auto-Erkennung
Mit der Option Auto-Convert Markdown Syntax speichert das Plugin Einträge als Markdown, wenn die Anfrage kein format in $_POST mitbringt und der Text Markdown-Syntax enthält.
Jedes Muster zählt einmal, egal wie oft es vorkommt:
| Muster | Punkte | Beispiel |
|---|---|---|
| Code-Block | 20 | ```code``` |
| Überschrift | 15 | # Titel |
| Link | 15 | [Text](url) |
| Aufzählung | 12 | - Punkt oder * Punkt |
| Nummerierte Liste | 12 | 1. Punkt |
| Fett | 10 | **fett** |
| Zitat | 10 | > Zitat |
| Kursiv | 8 | *kursiv* |
| Inline-Code | 5 | `code` |
| Horizontale Linie | 5 | --- |
Der Schwellenwert ist fest 5. Damit reicht schon ein einziges erkanntes Muster, um den Eintrag als Markdown zu speichern.
Die Erkennung ist sehr empfindlich: Schon eine Zeile wie
- Punktoder ein Wort in*Sternchen*gilt als Markdown. Sende bei API-Aufrufen lieber das Feldformatausdrücklich mit.
Zusammenspiel mit API Endpoints
Das Plugin API Endpoints nimmt format bei POST /tickets entgegen und prüft den Wert. Es führt den JSON-Body in $_POST zusammen, bevor das Ticket entsteht. Dadurch findet der Signal-Handler dieses Plugins das Format.
- Bei Notizen über die Update-Funktion von API Endpoints gilt das Feld
noteFormat. Fehlt es, nimmt API Endpointsmarkdown. - Die Option Require Markdown Plugin von API Endpoints (Standard: aus) lehnt
format=markdownmit einem Fehler ab, wenn Markdown Support nicht aktiv ist. API Endpoints erkennt das Plugin daran, dass die KlasseMarkdownThreadEntryBodyexistiert. Die Klasse ist nur vorhanden, wenn Markdown Support aktiviert ist und Parsedown geladen wurde. - Nutze in Requests den Wert
markdown. Weitere Schreibweisen, die API Endpoints akzeptiert, kennt Markdown Support nicht.
E-Mails bei API-Tickets
Das Plugin wandelt Markdown für ausgehende E-Mails nur bei Anfragen mit format=markdown in $_POST vorab zu HTML um (siehe Technische Details). Diese Umwandlung läuft beim Start von osTicket und sieht den JSON-Body einer API-Anfrage noch nicht. Bei API-Tickets setzt das Plugin daher nur das Format des gespeicherten Eintrags.