Node.js ile Abonelik Widget'ı Oluşturma
Yayınlanan: 2017-01-24Yakın zamanda SendGrid'in Node.js API kitaplığını kullanarak oluşturulmuş bir açık kaynaklı abonelik widget'ı geliştirdim. Projenin motivasyonları ve yetenekleri hakkında daha fazla bilgiyi havuzun BENİOKU sayfasında bulabilirsiniz. Bu, resmi olarak desteklenen bir SendGrid kitaplığı olmasa da, amaç, herhangi bir SendGrid müşterisinin, Pazarlama Kampanyaları Kişileri içinde saklamak üzere mevcut ve potansiyel müşterilerin e-posta adreslerini ve diğer yararlı bilgileri toplayan bir HTML sayfasına dahil edebileceği, kolayca konuşlandırılabilir, esnek bir pencere öğesi yapmaktı. . Müşteriler forma bilgi girdikten sonra, e-posta adreslerini doğrulamak için bir bağlantı içeren bir e-posta alırlar ve bağlantıya tıkladıklarında alıcı, verilen SendGrid müşterisinin iletişim listesine eklenir.
Bu temel işlevin ötesinde, widget ayrıca şunları da yapabilir:
- Belirtilmişse, belirli bir liste segmentine bir kullanıcı ekleyin
- Girişleri belirli bir kişiyle saklanacak olan özel alanları forma dahil edin
- Onay e-postasını, belirtilmişse mevcut bir e-posta şablonuyla gönderin
Bu ilginç bir projeydi çünkü SendGrid'in aşağıdakiler de dahil olmak üzere çeşitli yeteneklerini ve API uç noktalarını kullandı:
- Posta Gönderme API'si
- Kişiler API'sı
- Etkinlik Web kancası
- İşlem Şablonları
Bu gönderi, widget oluşturma sürecini ve uygulanmasına ve tasarımına giren bazı düşünce süreçlerini tartışacaktır.
Widget Tasarımına Genel Bakış
Abonelik widget'ı, SendGrid müşterilerinin Heroku'nun dağıt düğmesini kullanarak bir uygulamayı Heroku'ya dağıtmasına izin vererek çalışır. Widget'ı konuşlandırma düğmesini kullanarak oluşturmak için SendGrid müşterilerinin bir Heroku hesabına ihtiyacı olacaktır (buradan ücretsiz bir hesap oluşturabilirsiniz). Ancak, widget teorik olarak herhangi bir barındırma sağlayıcısına dağıtılabilir. SendGrid müşterisi daha sonra özel formun POST isteğini yeni dağıtılan Heroku uygulamasının URL'sine yaptığı uç noktayı değiştirebilir. Bir kullanıcı formu gönderdiğinde, istek Heroku'da barındırılan uygulama tarafından işlenecektir.
Uygulamanın kendisi, kayıt sürecini yöneten iki rotaya sahip temel bir Node/Express uygulamasıdır. ConfirmEmail yolu, kullanıcılara e-posta adreslerini onaylamaları için bir bağlantı içeren bir e-posta gönderir ve (belirtilmişse) özel bir işlem şablonu kullanır. Kaydolma yolu, bir kullanıcıyı SendGrid müşterisinin kişi listesine ekler ve belirtilmişse, kullanıcıyı özel bir liste kesimine de ekler. Kayıt yolu ayrıca bir SendGrid müşterisinin kendi özel formuna dahil etmeyi seçtiği özel alanları da işler.
E-posta Rotasını Onayla
ConfirmEmail yolu, SendGrid'in Node.js yardımcı kitaplığını kullanarak v3/mail/send POST uç noktasına yapılan bir gönderi isteğidir. Başarılı bir yanıtta, kullanıcı, onay e-postası için gelen kutularını kontrol etmesini isteyen bir sayfaya yönlendirilecektir. Başarısız bir yanıtta, kullanıcı, e-posta adresini yeniden girmelerini isteyen bir sayfaya yönlendirilecektir. Örneğin, bir kullanıcı geçersiz bir e-posta adresi girerse bu gerçekleşebilir.
hazırlıkEmail işlevi, API isteğinin gövdesi olarak hizmet edecek bir JSON nesnesi döndürür.
Temel nesne oluşturma süreci oldukça basittir. İçinde, alıcı e-posta adresi form gönderiminden eklenir. Ancak, nesne oluşturma sürecinde meydana gelen birkaç ilginç şey var.
Temel Özel Bağımsız Değişkenler
Kişiselleştirmelere iki özel bağımsız değişken dahildir: 1) 'etkinleştir' olarak ayarlanan tür ve 2) geçerli zamana ayarlanan zaman_gönderilen. Bu özel argümanlar e-posta başlığında iletilir ve onay sürecinde bir kullanıcının bir listeye eklenip eklenmeyeceğinin belirlenmesinde kullanılacaktır.
şablon kimliği
İlk nesne oluşturma işleminden sonra, SendGrid müşterisinin ayarlar dosyasında özel bir şablon kullanmayı seçip seçmediğini kontrol ederiz ve bu durumda onu nesneye ekleriz (boş değer varsayılan değerdir). Özel bir şablon, gövdeye dahil edilen posta metnine göre öncelikli olacaktır, bu nedenle şablon kimliği boş bir değer olarak bırakılırsa, ileti varsayılan olarak sağlanan posta metnine döner.
Bağlantı Değiştirme Ekle
insert_link terimi için bir ikame ekledik. Bu, yalnızca SendGrid müşterisi bir işlem şablonu kullanmayı seçerse alakalı olacaktır. Bu durumda, insert_link terimi, bir kullanıcının e-postasını onaylamak ve onları uygun başarı sayfasına yönlendirmek için kullanılan gerçek bağlantı ile değiştirilecektir.
Form Girdilerini Özel Argümanlar Olarak Gönderme
Son olarak, son kullanıcının e-posta gövdesine gönderdiği değerleri özel argümanlar olarak ekliyoruz. Son kullanıcının gönderimi, istek gövdesi olarak ilk ConfirmEmail yoluna geçirilir, daha sonra bunu bir parametre olarak prepareEmail işlevine aktarırız. İstek gövdesi, bir dizi anahtara sahip bir nesne, girişin adını temsil eden değer çiftleri ve kullanıcının gönderdiği değeri içerir. Ardından, her bir anahtar, değer çifti için e-postaya özel bir argüman ekleyerek nesne anahtarları arasında dolaşıyoruz. Bu değerler, kişi oluşturma sürecinde son kullanıcının iletişim bilgilerine eklenecektir.
Kayıt Rotası
Kayıt yolu, bir kullanıcı, aldığı onay e-postasında sağlanan bağlantıyı her tıkladığında bir POST isteğinde bulunan bir etkinlik web kancası tarafından tetiklenir. Bu rota, kişi oluşturma sürecinde birkaç öğeye dikkat etmelidir. Aşağıdakileri yapmalıyız:
- Formun herhangi bir özel alan içerip içermediğini kontrol edin
- SendGrid müşterisinin hesabında özel alanların olup olmadığını kontrol edin ve alanlar yoksa bunları oluşturun
- Bunun, e-posta oluşturma sürecindeki tür tarafından belirtildiği gibi bir katılım e - postası olduğundan emin olun.
- Bağlantının 24 saat içinde tıklandığından emin olun
- SendGrid müşteri hesabında ilgili kişiyi oluşturun
- Sağlanmışsa, yeni kişiyi belirli bir liste segmentine ekleyin
Özel Alanları İşleme
Kayıt yolu, addUserToList işlevini çağırır. Bu fonksiyon rota içinde çağrılır, böylece süreç tamamlandıktan sonra durumu bir geri arama içinde gönderebiliriz. Bu fonksiyon içinde yaptığımız ilk şey, formun içerdiği tüm özel alanları içeren bir nesne ve tüm kişiler için varsayılan olarak sağlanmayan özel alanları içeren bir dizi (e-posta, ad, soyadı, soyadı) oluşturmaktır.
Etkinlik web kancaları tarafından tetiklenen bir POST isteği, e-postanın başlıkları, konusu, metni vb. dahil olmak üzere e-postayla ilgili tüm bilgileri içerir. Tek umursadığımız, ilk öğe içinde bir nesne olarak yer alan, sağlanan özel argümanlardır. istek kuruluşunun. Bununla birlikte, nesne ayrıca, yok sayılanFields adlı bir diziye yerleştirdiğimiz özel alanları işleme süreci için ihtiyaç duymadığımız çeşitli alanları da içerir.
Daha sonra, daha önce bahsedilen özel alanlarla nesneyi ve diziyi oluşturmak için özel argümanlar arasında dolaşıyoruz. Kişi oluşturma sürecinde tam özel alanlar nesnesini gövdeye geçireceğiz, ancak önceki bir adımda gerektiği gibi özel alanlar ekleyene kadar değil.
Daha sonra checkAndAddCustomFields işlevini iki parametreyle çağırırız, özel alan dizisi ve kişiyi oluşturmaya özen göstereceğimiz bir geri arama. Var olmayan bir özel alanla bir kişi oluşturmaya çalışırsanız, uç nokta bir hata vereceğinden, önce herhangi bir özel alanı kontrol etmek ve eklemek önemlidir.
checkAndAddCustomFields işlevi, kişi veritabanının mevcut alanlarını almak için önce /v3/contactdb/custom_fields uç noktasına bir GET isteğinde bulunur. Daha sonra, mevcut özel alanların listesini, gönderilen ve parametre olarak geçirilen alanların listesiyle karşılaştırır ve mevcut özel alanlar listesinde yer almayan herhangi bir gönderilen alan varsa, bu yeni alanlar fieldToCreate dizisine eklenir. . Oluşturulacak alan yoksa geri arama işlevi çağrılır. Ancak oluşturulacak herhangi bir alan varsa, oluşturulacak her yeni özel alan için /v3/contactdb/custom_fields uç noktasına POST isteğinde bulunuruz.
Yeni Kişi Oluşturma
Özel alanlar oluşturulduktan sonra, /v3/contactdb/recipients uç noktasına bir POST isteği yaparak, isteğin gövdesi olarak özel alanları ileterek yeni bir ilgili kişi oluştururuz. Daha sonra SendGrid müşterisinin kullanıcıları belirli bir liste segmentine eklemeyi seçip seçmediğini kontrol ederiz ve eğer durum buysa, onları verilen segmente ekleriz. Kişi oluşturma API'si isteğine verilen yanıt, yeni oluşturulan kişi(ler)in kişi kimliklerini persisted_recipients adlı bir dizi olarak içerir. Yanıtta sağlanan iletişim kimliğini ve SendGrid müşterisi tarafından sağlanan liste kimliğini kullanarak, /v3/contactdb/lists/{listId}/recipients/{contactID} uç noktasına bir POST isteğinde bulunuruz.