Markus Michalski FAQ

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.

English Version

Zurück zur Übersicht

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:

  1. Das Formularfeld format in $_POST.
  2. Bei Content-Type: application/json das Feld format im 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 $_POST Zeilenumbrü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 - Punkt oder ein Wort in *Sternchen* gilt als Markdown. Sende bei API-Aufrufen lieber das Feld format ausdrü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.

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.