Wiadomości tekstowe WhatsApp
Zwykły tekst to najprostszy wariant treści dowolnej: sama treść bez załącznika i opcjonalny podgląd pierwszego linku w niej zawartego.
Wyślij wiadomość tekstową
Ustaw 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."
}
}'Pełna struktura dodaje preview_url oraz pola dostępne w każdym wysyłaniu treści dowolnej:
Przykład kodu
{
"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 jest wymagane w każdej wiadomości serwisowej: numer należący do Twojego obszaru roboczego, a nie zarządzany przez Bird. in_reply_to_message_id cytuje wcześniejszą wiadomość w tej samej konwersacji; zobacz Cytowanie wiadomości, aby dowiedzieć się, do czego się odnosi i co może pominąć.
Limity
| Pole | Ograniczenie | Egzekwowane przez |
|---|---|---|
| body | Od 1 do 4096 znaków | Bird, przy przyjęciu (422) |
| preview_url | boolean, domyślnie false | Nie dotyczy, informacyjne |
body zawierające same białe znaki przechodzi własną walidację schematu minLength: 1, ale Bird i tak je przechwytuje: body, które po przycięciu jest puste, zostaje odrzucone z 422 E15015 WhatsAppContentRequired. Treść powyżej 4096 znaków jest odrzucana ze zwykłym 422 i bez dedykowanego kodu katalogowego.
Odczyt przychodzącej wiadomości tekstowej
Przychodząca wiadomość tekstowa zawiera to samo pole text.body i nic więcej w tym wariancie. Zobacz Odbieranie wiadomości tekstowych WhatsApp, aby poznać pełny odczyt przychodzący, payload whatsapp.received i na co zwrócić uwagę.
Limity i przypadki brzegowe
- Okno obsługi klienta musi być otwarte. Zwykły tekst to wiadomość serwisowa, dostarczalna tylko w otwartym oknie; zobacz okno obsługi klienta w hubie.
- preview_url dotyczy tylko pierwszego linku i tylko tego, co renderuje klient odbiorcy. Domyślna wartość to false. Ustaw ją, aby wyświetlić podgląd pierwszego URL w body; kolejny URL w tej samej treści nigdy nie otrzyma podglądu. Jeśli klient odbiorcy nie może pobrać podglądu dla tego linku, po cichu wyświetla zwykły klikalny link. Nic w odczycie nie informuje, czy podgląd rzeczywiście się wyrenderował.
- Markdown w WhatsApp to renderowanie body przez klienta odbiorcy, a nie część kontraktu API. Bird przekazuje body bez zmian; nie waliduje, nie usuwa ani nie koduje *bold*, _italic_, ~strikethrough~ ani potrójnych backticków monospace. To, czy te znaczniki się wyrenderują, zależy wyłącznie od klienta, który otworzy wiadomość.
- Przychodzące body nie musi być niepuste, mimo tego, co mówi schemat odczytu. Meta może zgłosić przychodzącą wiadomość jako "text": {} lub z pustym body, a Bird zapisuje ją dosłownie, zamiast tworzyć zastępczy tekst. To znana, otwarta luka: nie pisz konsumenta, który ufa required: body schematu w tym miejscu.
Następne kroki
- Wiadomości serwisowe WhatsApp: okno obsługi klienta i model wspólny dla wszystkich wiadomości serwisowych
- Wysyłanie wiadomości WhatsApp: koperta żądania, model 202 i bezpieczne ponawianie
- Wiadomości interaktywne: gdy chcesz dotknięcia zamiast wpisanej odpowiedzi
Powiązane zasoby
Kontynuuj z dokumentacją, przewodnikami i przykładami dotyczącymi tego tematu. Zasoby są w języku angielskim.
Obejrzyj przewodnikConnecting WhatsApp to Bird: from buying a number to a live channelZrozum koncepcjęWhat is the 24-hour customer service window on WhatsApp?Użyj narzędziaWhatsApp message builderPoznaj możliwościWhatsApp
Wypróbuj ćwiczenie i uzyskaj brief wdrożeniowy