curl -F schneidet deinen Text am Semikolon ab
Eine WhatsApp-Nachricht kam nur als Bruchstück an. curl interpretiert das Semikolon im Wert als Separator und schneidet still ab. Nimm --form-string.
Ich habe eine WhatsApp-Nachricht über eine API mit curl -F "text=..." verschickt. Beim Empfänger kam nur der Satzanfang an, abgeschnitten mitten im Text. Kein Fehler, Exit-Code 0, die Message-ID kam sauber zurück. Alles sah nach Erfolg aus.
Was wirklich passiert
curl -F interpretiert bestimmte Sonderzeichen im Wert als Steuerzeichen für Multipart-Optionen. Ein ; leitet Dinge wie ;type=text/plain ein, ein < liest aus einer Datei, ein @ hängt eine Datei an. Deutsche und englische Prosa steckt aber voller Semikola. Beim ersten ; ist für curl der Wert zu Ende, der Rest wird als Option gelesen oder verworfen. Stillschweigend.
Das Perfide: Die Verifikation per API-Read fällt nicht darauf herein, wenn man nur prüft „ist eine Nachricht von mir da?“. Die Nachricht ist da, nur verstümmelt.
Der Fix
# statt -F: --form-string interpretiert keine Sonderzeichen
curl --form-string "text=Erstens; zweitens; drittens." ...
# oder sauber als JSON, Escaping erledigt jq
curl -H "Content-Type: application/json" \
--data "$(jq -n --arg t "$TEXT" '{text:$t}')" ...
--form-string ist ab jetzt meine Default-Wahl für jedes Textfeld.
Die eigentliche Lehre
Nach jedem Send mit Seiteneffekt reicht „HTTP 200 + ID zurück“ nie als Beweis. Ich vergleiche seitdem die Volltext-Länge des Gesendeten mit dem Original. Bei externen Empfängern, WhatsApp, E-Mail, Slack, ist ein verstümmelter Send peinlich und oft nicht mehr zu reparieren.