WhatsApp Klartextnachrichten
Klartext ist der einfachste Freitext-Inhaltstyp: ein Text ohne Anhang und eine optionale Vorschau für den ersten darin enthaltenen Link.
Textnachricht senden
Setzen Sie text.body:
const msg = await bird.whatsapp.send({
to: "+16505551234",
from: "+13124495648",
text: { body: "Your driver is 2 minutes away." },
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+16505551234",
from_="+13124495648",
text={"body": "Your driver is 2 minutes away."},
)
print(msg.id, msg.status)package main
import (
"context"
"fmt"
"log"
"os"
bird "github.com/messagebird/bird-sdk-go"
"github.com/messagebird/bird-sdk-go/option"
)
func main() {
client, err := bird.NewClient(option.WithAPIKey(os.Getenv("BIRD_API_KEY")))
if err != nil {
log.Fatal(err)
}
msg, err := client.Whatsapp.Send(context.Background(), bird.WhatsappSendParams{
To: "+16505551234",
From: "+13124495648",
Text: &bird.WhatsAppTextSend{Body: "Your driver is 2 minutes away."},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$text = (new WhatsAppMessageSendRequestText())
->setBody('Your driver is 2 minutes away.');
$message = $bird->whatsapp->send(
to: '+16505551234',
from: '+13124495648',
text: $text,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--from +13124495648 \
--text 'Your driver is 2 minutes away.' \
--to +16505551234{
"name": "whatsapp_send",
"arguments": {
"from": "+13124495648",
"text": {
"body": "Your driver is 2 minutes away."
},
"to": "+16505551234"
}
}curl -X POST "https://us1.platform.bird.com/v1/whatsapp/messages" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+16505551234",
"from": "+13124495648",
"text": {
"body": "Your driver is 2 minutes away."
}
}'Die vollständige Struktur ergänzt preview_url um die Felder, die jeder Freitext-Versand mitführen kann:
Codebeispiel
{
"to": "+16505551234",
"from": "+13124495648",
"text": {
"body": "Your order shipped: https://example.com/track/A1B2C3",
"preview_url": true
},
"in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
"tags": [{ "name": "category", "value": "shipping" }],
"metadata": { "order_id": "A1B2C3" }
}from ist bei jeder Servicenachricht erforderlich: eine Nummer, die Ihrem Workspace gehört, keine von Bird verwaltete. in_reply_to_message_id zitiert eine frühere Nachricht in derselben Konversation; siehe Eine Nachricht zitieren für Details, wogegen aufgelöst wird und was fehlen kann.
Limits
| Feld | Grenzwert | Erzwungen durch |
|---|---|---|
| body | 1 bis 4096 Zeichen | Bird, bei Annahme (422) |
| preview_url | Boolean, Standardwert false | N/A, informativ |
Ein body, das nur Leerzeichen enthält, besteht die eigene minLength: 1 des Schemas, aber Bird fängt es trotzdem ab: Ein body, das nach dem Trimmen leer ist, wird mit 422 E15015 WhatsAppContentRequired abgelehnt. Ein Text über 4096 Zeichen wird mit einem einfachen 422 und ohne eigenen Katalogcode abgelehnt.
Eingehende Textnachricht lesen
Eine eingehende Textnachricht enthält dasselbe text.body-Feld und sonst nichts an diesem Inhaltstyp. Siehe WhatsApp-Textnachrichten empfangen für den vollständigen eingehenden Lesevorgang, die whatsapp.received-Payload und worauf Sie achten sollten.
Limits und Sonderfälle
- Das Kundenservice-Fenster muss offen sein. Klartext ist eine Servicenachricht und kann nur innerhalb eines offenen Fensters zugestellt werden; siehe das Kundenservice-Fenster des Hubs.
- preview_url betrifft nur den ersten Link und nur das, was der Client des Empfängers rendert. Der Standardwert ist false. Setzen Sie es, um eine Vorschau der ersten URL in body anzuzeigen; eine spätere URL im selben Text erhält keine. Wenn der Client des Empfängers keine Vorschau für diesen Link abrufen kann, fällt er stillschweigend auf einen klickbaren Klartext-Link zurück. Beim Lesen erfahren Sie nicht, ob eine Vorschau tatsächlich gerendert wurde.
- WhatsApp-Markdown ist das Rendering durch den Client des Empfängers von body, nicht Teil des API-Vertrags. Bird reicht body unverändert durch; es validiert, entfernt oder kodiert weder *bold*, _italic_, ~strikethrough~ noch Triple-Backtick-Monospace. Ob diese Marker gerendert werden, hängt ausschließlich vom Client ab, der die Nachricht öffnet.
- Ein eingehendes body ist nicht garantiert nicht-leer, auch wenn das Leseschema das aussagt. Meta kann eine eingehende Nachricht als "text": {} oder mit einem leeren body melden, und Bird speichert sie wortgetreu, statt einen Platzhalter zu erzeugen. Das ist eine bekannte, offene Lücke: Schreiben Sie keinen Consumer, der sich hier auf required: body des Schemas verlässt.
Nächste Schritte
- WhatsApp-Servicenachrichten: das Kundenservice-Fenster und das Modell, das alle Servicenachrichten gemeinsam haben
- WhatsApp-Nachrichten senden: der Request-Envelope, das 202-Modell und sichere Wiederholungsversuche
- Interaktive Nachrichten: wenn Sie statt einer getippten Antwort ein Antippen wünschen
Verwandte Ressourcen
Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema. Die Ressourcen sind auf Englisch.
Anleitung ansehenConnecting WhatsApp to Bird: from buying a number to a live channelDas Konzept verstehenWhat is the 24-hour customer service window on WhatsApp?Das Tool verwendenWhatsApp message builderDie Funktion erkundenWhatsApp
Übung ausprobieren und ein Implementierungs-Briefing erhalten