Szablony SMS
Szablon to wiadomość wielokrotnego użytku wysyłana przez referencję, z wartościami takimi jak jednorazowy kod weryfikacyjny czy numer zamówienia. Wbudowane szablony systemowe Bird obejmują wiadomości uwierzytelniające i transakcyjne. Tworzenie szablonów w obszarze roboczym jest w wersji API preview; dashboard nadal wyświetla wbudowany katalog.
Szablon dostarcza kategorię wiadomości używaną do sprawdzania zgodności z wymaganiami kraju docelowego. Szablony wbudowane wybierają też nadawcę dla danego miejsca docelowego, więc pomijasz from. Szablony obszaru roboczego wymagają własnego nadawcy, tak jak wysyłka wolnym tekstem.
Przeglądanie szablonów w dashboardzie
Strona Templates w sekcji SMS wyświetla wbudowane szablony. Wyszukuj po nazwie lub filtruj po statusie i kategorii.

Każdy wiersz pokazuje pola potrzebne do wybrania i wysłania szablonu:
- Name: nazwa wyświetlana szablonu i jego slug (na przykład bird_order_confirmation). Slug to identyfikator, który przekazujesz przy wysyłce; jest ustalany przy tworzeniu.
- Status: szablony wbudowane mają status Active i są gotowe do wysyłki. Szablony obszaru roboczego mają status Draft do momentu publikacji, potem Active. Traktuj wspólne pole statusu jako zbiór otwarty.
- Category: klasyfikacja treści (transactional, marketing lub authentication) stosowana do wiadomości wysyłanych z danego szablonu.
- Language: języki, w których szablon jest dostępny, jako tagi BCP 47. Pierwsze kilka wyświetla się jako chipy z przepełnieniem +N, gdy szablon jest zlokalizowany na wiele języków.
- Scope: System dla szablonów wbudowanych Bird. Workspace oznacza szablony tworzone przez Ciebie w wersji API preview.
- Updated: data ostatniej zmiany szablonu. Wbudowane szablony nie pokazują daty.
Co zawiera szablon
Oprócz nazwy, kategorii i języków każdy szablon definiuje zmienne wypełniane w momencie wysyłki. Zmienna ma key, type, flagę required oraz czytelny dla człowieka constraint. Szablony wbudowane mają sloty z typami; szablony obszaru roboczego wywodzą generyczne sloty text i przyjmują skalarne wartości parametrów. Zmienna sensitive jest zastępowana w przechowywanej treści wiadomości. Kolejki transportowe nadal zawierają tekst potrzebny do dostarczenia. Podawaj każdą wymaganą zmienną i żadnych niezadeklarowanych kluczy.
Szablon jest przygotowany w jednym lub wielu językach, a jego default_language to język, który otrzymuje wysyłka, gdy nie wskaże żadnego. Jeśli poprosisz o język, w którym szablon nie jest przygotowany, Bird stosuje rezerwę: najpierw szersza forma tego samego języka, potem język domyślny, ponieważ szablony SMS domyślnie ustawiają on_missing_language na fallback. Szablony wbudowane używają language_source_required: false. Szablony obszaru roboczego mogą wymagać języka lub ustawić on_missing_language: fail; te polityki obowiązują natychmiast, natomiast zmiany treści i języka domyślnego wchodzą w życie po publikacji.
Pobieranie listy szablonów z API
GET /v1/sms/templates zwraca stronę podsumowań szablonów z paginacją kursorową. Podążaj za next_cursor, używając starting_after, aż będzie null; jedna strona to nie cały katalog. Odczyt szablonów wymaga klucza API z uprawnieniem sms_management, które jest odrębne od uprawnienia sms używanego przy wysyłce. Filtruj po scope, category, status lub language, albo wyszukuj za pomocą q:
for await (const tpl of bird.smsTemplates.list({ scope: "system" })) {
console.log(tpl.id, tpl.slug);
}for template in client.sms_templates.list(scope="system"):
print(template.id, template.slug)for tpl, err := range client.SmsTemplates.List(context.Background(), bird.SMSTemplateListParams{
Scope: "system",
}) {
if err != nil {
log.Fatal(err)
}
fmt.Println(tpl.Id, *tpl.Slug)
}foreach ($bird->smsTemplates->list(['scope' => 'system']) as $template) {
echo $template->getId(), ' ', $template->getSlug(), "\n";
}bird sms templates listcurl "https://eu1.platform.bird.com/v1/sms/templates?category=authentication" \
-H "Authorization: Bearer bk_eu1_..."Podsumowania szablonów zawierają tożsamość, kategorię, status, dostępne języki i referencje do wersji roboczej/opublikowanej. Nie zawierają tekstu źródłowego ani zmiennych. Pobierz szablon po slugu lub ID za pomocą GET /v1/sms/templates/{template_ref}. Użyj draft_version_id, aby sprawdzić edytowalną treść obszaru roboczego, lub live_version_id, aby sprawdzić treść używaną przy wysyłce. Nowy szablon obszaru roboczego nie ma wersji opublikowanej do czasu publikacji.
Odczytaj wybraną wersję przez GET /v1/sms/templates/{template_ref}/versions/{version_id}. Odpowiedź zawiera zmienne i mapę treści indeksowaną językami. Aby pobrać jeden język, dołącz /languages/{language}. Filtr language na liście dopasowuje opublikowaną treść; języki dostępne tylko w wersji roboczej nie pasują.
Szablony wbudowane udostępniają jedną wersję tylko do odczytu. Jej stabilne ID identyfikuje wpis w katalogu, a hash treści odróżnia aktualizacje źródła. Opublikowane wersje obszaru roboczego zachowują niezmienną historię. Listy wersji również korzystają z paginacji kursorowej i pomijają tekst źródłowy.
Tworzenie szablonów w obszarze roboczym w wersji API preview
Użyj klucza API z dostępem do zapisu sms_management. Wysyłaj żądania JSON na regionalny host API Twojego klucza, z Authorization: Bearer <API_KEY> i Content-Type: application/json. Nadaj każdej mutacji własny Idempotency-Key; używaj tego klucza ponownie tylko przy ponawianiu tego samego żądania.
- Utwórz szablon za pomocą POST /v1/sms/templates i {"slug":"order-shipped","category":"transactional"}. Odpowiedź 201 zawiera id i draft_version_id; szablon zaczyna od pustej wersji roboczej w języku angielskim. Zapisz oba ID do kolejnych wywołań.
- Zapisz tekst za pomocą PUT /v1/sms/templates/{id}/versions/{draft_version_id}/languages/en i {"text":"Your order {{ order_number }} has shipped."}. Odpowiedź 200 zawiera draft_revision.
- Opublikuj za pomocą POST /v1/sms/templates/{id}/versions/{draft_version_id}/submit, przekazując tę rewizję jako {"expected_revision":1} (zastąp 1 zwróconą wartością). Odpowiedź 200 z valid: true identyfikuje opublikowaną wersję. 422 zgłasza nieprawidłową treść wersji roboczej; popraw zwrócone problemy językowe i wyślij ponownie z nowym kluczem idempotentności.
Publikacja wymaga niepustego tekstu i tych samych zmiennych w każdym języku. Działa synchronicznie, bez zatwierdzenia przez operatora. API obsługuje również podgląd, duplikację, resetowanie wersji roboczej do treści opublikowanej i wycofanie do opublikowanej wersji. Edycja w dashboardzie nie jest dostępna.
Odczytaj bieżącą rewizję przed aktualizacją ustawień szablonu lub wycofaniem. Zapis języka może też zawierać strażnika rewizji; nieaktualny strażnik zwraca 409. Podgląd wykorzystuje wybraną wersję i parametry do raportowania wyrenderowanego tekstu, rozwiązanego języka, kodowania i liczby segmentów przed wysyłką.
Wysyłka z szablonem
Ustaw obiekt template wysyłki zamiast text. Pomiń category i media_urls. Dla poniższego szablonu wbudowanego pomiń też from. Szablon obszaru roboczego wymaga from i musi mieć opublikowaną wersję.
Wbudowany szablon uwierzytelniający wybiera również wspólną markę nadawcy: bird_otp_verification_ttl używa Authifly, a bird_otp_verification_ttl_bird_verify używa Bird Verify. Miejsce docelowe decyduje, czy nadawca pojawia się jako nazwa marki, krótki numer czy numer telefonu.
Wyślij szablon wbudowany:
await bird.sms.send({
to: "+14155550100",
template: { slug: "bird_otp_verification", parameters: { code: "123456" } },
});client.sms.send(
to="+14155550100",
template="bird_otp_verification",
parameters={"code": "123456"},
)msg, err := client.Sms.Send(context.Background(), bird.SmsSendParams{
To: "+14155550100",
Template: "bird_otp_verification",
Parameters: map[string]any{"code": "123456"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id)$message = $bird->sms->send(
to: '+14155550100',
template: 'bird_otp_verification',
parameters: ['code' => '123456'],
);
echo $message->getId(), ' ', $message->getStatus();bird sms send \
--parameters '{"code":"123456"}' \
--template bird_otp_verification \
--to +14155550100curl -X POST "https://eu1.platform.bird.com/v1/sms/messages" \
-H "Authorization: Bearer bk_eu1_..." \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550100",
"template": {
"slug": "bird_otp_verification_ttl",
"language": "en",
"parameters": { "code": "481920", "ttl": "10" }
}
}'slug to uchwyt szablonu z katalogu (możesz też zidentyfikować szablon po jego id). language wybiera zlokalizowaną treść; pomiń go, aby użyć domyślnego języka szablonu. parameters dostarcza wartość dla każdej zmiennej szablonu, indeksowaną nazwą zmiennej. Brakująca wymagana zmienna, niezadeklarowany klucz, wartość niezgodna z ograniczeniem zmiennej lub zserializowany obiekt parameters powyżej 16 KB jest odrzucany z 422.
Odpowiedź 202 zawiera wybrany from, kategorię szablonu, ID szablonu i wersji, hash źródła oraz żądane/rozwiązane języki. Tekst wiadomości uwierzytelniającej jest zwracany jako **REDACTED**. Zaakceptowane wiadomości zachowują wyrenderowaną treść i wybraną wersję, nawet jeśli później opublikujesz, wycofasz lub usuniesz szablon.
Wszystko inne dotyczące wysyłki (odbiorca, tagi, metadane, lista dozwolonych miejsc docelowych i asynchroniczny model 202) działa dokładnie tak samo jak przy wysyłce wolnym tekstem.
Następne kroki
- Wysyłanie SMS: dodaj pole template do ładunku wysyłki.
- Dziennik SMS: znajdź wysłaną wiadomość i śledź jej cykl życia.
- Zdarzenia: odbieraj zdarzenia dostarczenia każdej wiadomości.
- Wysyłanie SMS z szablonem: film pokazujący wysyłkę jednego z zatwierdzonych szablonów z terminala
Powiązane zasoby
Kontynuuj z dokumentacją, przewodnikami i przykładami dotyczącymi tego tematu. Zasoby są w języku angielskim.
Użyj narzędziaPreview message segmentsPoznaj możliwościSMS content and templatesPodążaj ścieżką naukiBuild your first integration
Wypróbuj ćwiczenie i uzyskaj brief wdrożeniowy