SMS Şablonu Yazma
Bir olayın kısa mesaj gövdesi, çevresinde hiçbir kabuk olmayan tek bir düz dosyadır. Bu onu yazılacak en kısa şablon, aynı zamanda kazara işaretlemeyle doldurulması en kolay şablon yapar.
Genel Bakış
Her olay e-posta gövdesinin yanında bir .txt taşır ve o dosya mesajın tamamıdır: başına da sonuna da bir şey eklenmez. Dosya neyi üretiyorsa telefona ulaşan odur.
Motor aynı, değişkenler aynı, olay aynıdır. Farkların hepsi kanaldan gelir: bağlamı devralacak bir çerçeve, yaslanılacak bir işaretleme ve hesabında cep numarası olmayan bir alıcı yoktur.
Ön Koşullar
user-sms ya da admin-sms set edildiğinde okunur. İkisi de 0 iken dosya ne içerirse içersin ölüdür.
Yapı
Kabuk Yok, İşaretleme Yok
E-posta yolu, önce bir header, bir gövde yuvası ve bir footer birleştirir. Kısa mesaj yolu bunu tümüyle atlar, yani dosya tek başına durur.
Your service has been activated.
Service Information
------------------------------------
{$service_name} - {$service_amount}
Service Details
------------------------------------
{$service_detail_link}
Kanal Hangi Dosyayı Okur
| Kanal | Gövde dosyası | Kabuk | Konu |
|---|---|---|---|
| e-posta | {name}.html | header, gövde yuvası, footer | .json içindeki subject, değişkenleri doldurulmuş |
| kısa mesaj | {name}.txt | yok | yok: bu kanalda .json okunmaz |
Motor, .json içindeki bir title anahtarını anlar ve kısa mesaj kanalı için döner; ama dağıtıcı onu daha ileri taşımaz ve gelen şablonların hiçbiri böyle bir anahtar bildirmez.
Adım Adım
1. Gövdeyi Yazın
- Olayın
.txtdosyasını kurulu her dil dizininde açın. Üçlüyle birlikte oluşturulmuştu; yoksa kısa mesaj kanalının okuyacak bir şeyi yok demektir. - Mesajı bir müşterinin almak isteyeceği gibi yazın: ne oldu, hangi hizmette ve nereye bakılacak. Bir iki kısa satır ve bir bağlantı.
- E-posta gövdesiyle aynı yer tutucu söz dizimini kullanın: motor aynı olduğu için söz dizimi hatası da aynı şekilde, dosyanın tamamını işlenmeden bırakarak başarısız olur.
- Kısa değişkenleri tercih edin. Bir açıklama alanı ya da bir talep mesajı, sığsa bile bu kanal için ölçülmemiştir.
2. Kanalı Açın
- Hesap sahibine mesaj için olayın yapılandırma kaydında
user-smsdeğerini 1 yapın, personele kopya içinadmin-sms. - Personel numaraları olayın departmanlarından ve kaydın kendi telefon listesinden çözülür; anahtar açıkken başka bir şey çözülmezse kök yöneticiye düşer.
- Kısa mesaj sürümü bir ücrete değmeyen her olayda ikisini de 0'da bırakın. Olayların çoğu bilerek öyle gelir.
3. Düz Tutun
- İşaretleme taşıyabilecek her şeyi kaynağa güvenmek yerine basıldığı noktada temizleyin: talep yanıtı, açıklama, operatörün yazdığı not.
- Alfabeye dikkat edin: temel kümenin dışındaki tek bir karakter, mesajın tamamının nasıl sayıldığını değiştirir.
- Sözcükleri e-postadan bağımsız tutun. Kısa mesaj sürümü, o e-postayı hiç açmayacak bir okur için yazılmış mesajdır.
4. Gönderimi Doğrulayın
- Gerçekten cep numarası olan bir hesapla gerçek akışı tetikleyin ve dönen durumu okuyun. E-posta normal ulaşırken gelen bir
no_recipientsyanıtı, eksik olanın numara olduğunu söyler. - Teslim edilen dosyayı kum havuzu modülünün çıktı dizininden okuyun: gönderici adını, hedefi ve gövdenin birebir halini kaydeder, sondaki boşluk ve kaçak etiketler böylece görünür.
- Diğer dilde tekrarlayın. Kısa mesaj gövdesi, eksik bir çevirinin gözden kaçmasına yetecek kadar küçüktür ve hata yerine sessizlik üretir.
Referans
Uzunluk ve Kodlama
Bildirim yolu kısa mesaj gövdesini ölçmez, bölmez ve kırpmaz. Dosyayı okur ve dizeyi modüle teslim eder. Her sınır ağ geçidinindir ve her maliyet mesaj parçası başınadır.
O aritmetik platformda, bildirim şablonlarında değil kredi ile çalışan uluslararası mesajlaşma panelinde vardır; yine de bir şablonu ona göre boyutlandırmak doğru modeldir.
| Kodlama | Ne zaman geçerli | Tek mesaj | Bölündükten sonra parça başına |
|---|---|---|---|
| temel alfabe | her karakter standart mesajlaşma alfabesinde | 160 | 153 |
| geniş | mesajın herhangi bir yerinde bunun dışında tek bir karakter | 70 | 67 |
Modüle Ne Ulaşır
Bir kısa mesaj modülüne bir gövde, bir hedef ve bir ülke kodu verilir ve göndermesi istenir. Bildirim yolu, modülün arayüzünün yalnız bu kadarını kullanır.
$sms = new $smsModule();
// Zaten render edilmiş gövde. Buraya bunun yerine bir şablon adı geçmek modülün
// kendi kısayoludur ve düşük seviyeli göndericinin kullandığı yoldur; dispatch asla.
$sms->body($item['body']);
// Tek alıcı ya da liste. Ülke kodu ayrı bir argümandır, çünkü hesap onu numaradan
// ayrı saklar.
$sms->addNumber($item['recipient'], $item['recipient_cc']);
$sent = $sms->submit();
if (!$sent) $error = $sms->getError();
Örnek
Bir olayın kısa mesaj yarısı, geri kalan her şeyi paylaştığı e-posta yarısının yanında.
{$company_name}: {$service_name} kotasının %{$quota_percent} kadarını kullandı.
{* Koşulun çıktıda maliyeti yoktur, yani mesaj yalnız gerekince bir satır uzar.
Bunun gibi yorumlar tamamen silinir. *}
{if $quota_percent >= 100}Kota yükseltilene kadar yeni yüklemeler reddedilecek.
{/if}
{$service_detail_link}
{* {$admin_reply} yanıtın saklandığı halidir: satır sonları yeni satıra çevrildi,
ama düzenleyicinin ürettiği diğer her etiket hala içinde. *}
{$ticket_num} numaralı talep yanıtlandı.
{$admin_reply|strip_tags|truncate:120}
{$ticket_link}
// Tek çağrı. Hangi dosyaların okunacağı alıcının kanalına bağlıdır ve aynı kişi için
// aynı dispatch içinde iki kanal birden üretilebilir.
$result = \Notification::dispatch('service', 'acme-quota-reached', [
'entity' => $service,
'percent' => 100,
]);
// Her alıcı kaydı hangi kanal için yazıldığını söyler, yani eksik bir kısa mesaj
// yalnız ağ geçidinin raporunda değil burada da görünür.
foreach ($result['items'] ?? [] as $item)
if (($item['channel'] ?? '') === 'sms')
Logger::getInstance()->info('kota bildirimi kisa mesaj olarak kuyruga alindi', [
'recipient' => $item['recipient'] ?? '',
'queue_id' => $item['queue_id'] ?? 0,
]);
// Dört kanal anahtarını yalnız bu çağrı için ezer ve personel kopyasını düşürür.
// Alıcının kategori tercihini de atlar, o yüzden bunu yalnız hesabın açıkça istediği
// bir mesaja saklayın; doğrulama kodu gibi.
$result = \Notification::dispatch('user', 'gsm-activation', [
'entity' => $userId,
'code' => $code,
'_force_channels' => ['sms'],
'_sync' => true, // yerinde teslim: müşteri bunu bekliyor
]);
Tuzaklar
Talep mesajları düzenleyicinin ürettiği halde saklanır; çıkışta yalnız satır sonları normalize edilir. Birini kısa mesaj gövdesine basmak etiketleri de gönderir ve alıcı o karakterlerin parasını öder. Değişkene güvenmek yerine basıldığı noktada temizleyin.
Cep numarası olmayan bir hesap alıcı listesine hiç girmez. E-posta yine gider, dispatch yine başarı bildirir ve hiç gönderilmemiş kısa mesaj arkasında iz bırakmaz. Kısa mesaj yarısı eksik göründüğünde şablondan önce hesaba bakın.
Tek bir karakter temel alfabenin dışına düştüğü anda sayım geniş kodlamaya geçer ve sınır yüz altmıştan yetmişe iner. İngilizce aslıyla aynı uzunlukta okunan bir çeviri düzenli olarak iki katı parçaya mal olur.
Hiçbir şey üretmeyen bir dosya sessizce atlanır. Olayın kısa mesaj sürümü yokken bu tam olarak doğrudur, varken ise bir hatadan ayırt edilemez. Bir olay kısa mesaj göndermemeli ise, boş bir dosyanın bunu anlatmasını beklemek yerine yapılandırma kaydında kanalı kapatın.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.