Bir referral programı, yeni katılımcılar getirmeleri karşılığında müşterilere veya şirket ortaklarına teşvikler veya bonuslar sunarak onları ödüllendiren bir sistemdir.

Teknik açıdan bakıldığında, bir referral programı birkaç temel bileşen içerir:

  1. Bir davet bağlantısı—kullanıcıların veya müşterilerin başkalarını programa katılmaya davet etmesini sağlayan benzersiz bir tanımlayıcı. Davet eden kişi bu bağlantıyı çeşitli kanallar aracılığıyla paylaşabilir (örneğin, bu makale bir WhatsApp botu aracılığıyla bağlantı oluşturmayı ele alacaktır, ancak referral programı bağlantıları tercih ettiğiniz herhangi bir mesajlaşma uygulaması üzerinden paylaşılabilir).
  2. MaviBot ve Google Sheets işlevselliğinin entegrasyonuyla uygulanan bir katılımcı veritabanı; burada hem davet edilen hem de davet eden kullanıcılar hakkındaki bilgiler kaydedilir.
  3. Referans bağlantıları aracılığıyla yeni katılımcılar getirmeyle ilgili eylemleri izleyen bir referans takip sistemi. Sistem, tüm referanslarla ilgili verileri saklayarak belirli bir referansın daha önce davet edilmiş bir kullanıcı olarak sistemde zaten var olup olmadığını kontrol etmenize olanak tanır.

Sohbet robotu akışınızı oluşturmadan önce "Mavibot.ai'de Bot Oluşturmanın Temelleri" link ve "Google Sheets" link bölümlerini incelemenizi şiddetle tavsiye ederiz.

WhatsApp'ta Referans Sistemi

Oluşturulacak botun işlevselliği, aşağıdaki bileşenlerden oluşan blokları içerecektir:

  1. bir referans (ortaklık) bağlantısı oluşturma; link
  2. yeni kullanıcının veritabanında zaten olup olmadığını kontrol etme; link
  3. davet eden kullanıcıya yeni bir referans hakkında bildirim gönderme; link
  4. kullanıcıları veritabanına kaydetme; link
  5. referans listesini isteme. link

Referans bağlantısı oluşturma

Botun "link" komutu üzerine kullanıcıya göndereceği, gömülü bağlantıya sahip bir blok oluşturalım. Bunu yapmak için, akışta aşağıdaki iki yöntemden birini kullanarak yeni bir blok oluşturun:

  1. Oluşturucu tuvalinde boş bir alana çift tıklayın:

  1. Ekranın altındaki "Kaydet" düğmesini kullanarak ve blok türünü seçerek:

Bundan sonra, bloğun koşuluna "Link" kelimesini girin ve eşleme türünü "Yazım hatalarını ve yanlışlıkları yoksay" olarak ayarlayın (bu, kullanıcı yazım hataları veya diğer mesaj hataları durumunda kullanışlıdır):

Kullanıcıyı kimin yönlendirdiğini belirlemek için bot, aşağıdaki şablonu kullanarak bir bağlantı oluşturur: https://wa.me/(botunuza bağlı telefon numaranız)?text=#{phone}%20tarafından%20tavsiye%20edildiniz%20😌Merhaba

Şablon bağlantısına daha yakından bakalım: https://wa.me/(botunuza bağlı telefon numaranız)?text=#{phone}%20tarafından%20tavsiye%20edildiniz%20😌Merhaba, burada:

  1. Parantez içindeki "(botunuza bağlı telefon numaranız)" kısmını ilgili telefon numarasıyla değiştirin;
  2. #{phone} otomatik olarak ortaklık bağlantısını isteyen kullanıcının telefon numarasıyla değiştirilir.

Oluşturulan bağlantıyı blok metni olarak değil, bir ek olarak gönderiyoruz — bildirim içeren tıklanabilir bir bağlantı (bkz. Şekil 2 ve Şekil 3):

  • ekleme yapmayı seçin
  • türü seçin — Bağlantı ve 'Ek URL'si' alanına yapıştırın:

Bu durumda, bağlantı görsel olarak kısaltılmış görünecektir:

Şekil 4. WhatsApp'ta Görünüm

"Botu Test Et" özelliğini kullanarak bağlantı işlevselliğini test edelim.

İşte sonuç: bağlantı, kullanıcıyı telefon numaranızla birlikte uygun mesajlaşma uygulaması sohbetine yönlendirir:

Bu şekilde, potansiyel kullanıcıların sohbet robotuna erişmek için kullanabileceği bir davet bağlantısını başarıyla oluşturdunuz. Ayrıca, bu bağlantıya tıklandığında, kullanıcı önceden doldurulmuş bir mesajla sohbet penceresine yönlendirilir. (Bkz. Şekil 6)

Şekil 6. WhatsApp'ta doldurulmuş mesaj

Kullanıcı doğrulama

Bir blokta fonksiyonlar ve düzenli ifadeler kullanma

Doğrulama ve veritabanına kaydetme komutu, yalnızca bot kullanıcının mesajında bir telefon numarası bulursa çalışacaktır. Bu nedenle, alınan ifadeyi parçalara ayırmak gerekir.

Bunun için splitter() fonksiyonu kullanılır.

Splitter() fonksiyonu

splitter(str, s, n) - bir dizeyi parçalara ayırır. Fonksiyon bir dizi öğe döndürür.

Parametreler:

! str ****- orijinal dize

! s ****- dize ayırıcı

n - maksimum öğe sayısı

Örnek

Dize bölme fonksiyonu:

Ardından, botun dizedeki rakam dizisinin gerçekten bir telefon numarası olup olmadığını doğrulaması gerekir. Bunun için aşağıdaki düzenli ifadeleri kullanıyoruz:

  • Genel telefon numarası: ^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
  • Rusça numarayı değiştir! Yalnızca Rus telefon numarası: ^((\+7|7|8)+([0-9]){10})$

Düzenli ifadelerle çalışma hakkında bilgi için lütfen "Düzenli İfadeler" başlıklı makaleye bakın. link

Bot, rakam dizisinin gerçekten bir telefon numarası olduğunu doğruladıktan sonra, mesajdan bir değişken olarak kaydedin (örneğin, #{reff}).

Kullanıcının telefon numarasını veritabanında bir referans olarak kontrol etme

Şimdi, bağlantıyı takip eden kullanıcının telefon numarasının zaten bir referans olup olmadığını (daha önce biri tarafından davet edilmiş ve veritabanımıza kaydedilmiş) kontrol etmek gerekir. Bunu yapmak için, akışta bir sütun arama fonksiyonuna sahip bir blok oluşturun.

Blokta "API İsteği" seçeneğine tıklayarak sütun arama fonksiyonunu kullanın ve aşağıdaki parametre değerlerini ayarlayın:

! Fonksiyon URL'si: https://store.salebot.pro/function/findcell link

! JSON istek parametreleri:

{ "id": "tablo_kimliğiniz", "find": "aranacak_metin", "col": aranacak_sütun_numarası, "return": döndürülecek_sütun_numarası, "creds_path": "kimlik_doğrulama_dosyanızın_yolu" }

Yanıt parametreleri:

"status": "1" — değer bulundu

"status": "0" — değer bulunamadı

"data" — bulunan değer

"cell_number" — bulunan hücre konumu

Sütuna göre arama ve tüm satırdaki metni görüntüleme

return parametresi 0 olarak ayarlanmalıdır.
&#xNAN;{ "id": "tablo_kimliğiniz", "find": "aranacak_metin", "col": 2, "return": 0 }
Yanıt: {"status":"1","data":{"0":"güneş","1":"şafak","2":"çatı","3":"","4":"gökyüzü"},"cell_number":{"row":4,"col":1, "col_letter":"A"}}
Yanıt dökümü:

data — yanıt

data|0 — Hücre 1

data|1 — Hücre 2

data|2 — Hücre 3

data|3 — Hücre 4

cell_number|row — satır

cell_number|col — sütun

Tablolarla çalışmak için mevcut fonksiyonlar hakkında daha fazla bilgi edinmek için "Google Sheets" başlıklı makaleye bakın. link

Bildirim bloğu

Referans bağlantısını paylaşan kullanıcıya, yeni bir müşterinin bağlantıyı başarıyla takip ettiğini bildirmek için özel bir blok oluşturacağız. Yeni bir referans oluşturulması hakkında bildirim göndermek için aşağıdaki istek parametrelerini kullanın (tür: POST - JSON):

İstekler POST yöntemi kullanılarak şu URL'ye yapılır: https://chatter.salebot.pro/api/{api_key}/{action} Burada:

  • api_key, proje ayarlarından alınabilen projenizin API erişim anahtarıdır (bkz. Şekil 11).

Erişim anahtarını, geçerli oluşturulan erişim belirtecini saklayan #{api_key} değişkenini kullanarak alabilirsiniz. Kullanmadan önce belirteci oluşturmayı unutmayın.

! İstek URL'si: https://chatter.salebot.pro/api/#{api_key}/whatsapp_message link

API istek fonksiyonları hakkında daha fazla ayrıntıyı burada bulabilirsiniz. link

Davet edilen ve davet eden kullanıcıları veritabanına ekleme

Bunu yapmak için, eşleme fonksiyonunu kullanarak belirli sütunlara satır satır giriş yapacağız.

Tablonun doldurulmuş bir başlığı olmalıdır (ilk satırda en az bir hücre).

! Fonksiyon URL'si https://store.salebot.pro/function/gsheets link

! JSON istek parametreleri:

{ "id": "tablo_kimliğiniz", "mapping": { "a": "#{değişken}", "b": "#{başka_bir_değişken}", "d": "düz metin" } }

Satırları ilk sayfaya değil de yazmak istiyorsanız, isteğe list_name parametresini ekleyin:

{ "id": "tablo_kimliğiniz", "mapping": { "a": "düz metin", "b": "#{değişken}" }, "list_name": "SayfaAdı" }

Parametreler:

  • id — tablo tanımlayıcısı*
  • a, b, c, d — sütun adları
  • list_name — sayfa adınız (örneğin, "Sayfa2")

*Gerçek tablo kimliğinizle değiştirdiğinizden emin olun.

Yanıt örneği: {"number_row":8}

İstek başarıyla yürütülürse, yanıt satır numarasını içerecektir; bunu kaydedebilir ve daha sonraki işlemler için kullanabilirsiniz.

Referans listesini görüntüleme

Kullanıcıların referans listelerini görüntülemesine olanak tanıyan bota ek bir komut ekleyelim.

Bir sütundaki tüm belirtilen değerleri bulmak için "find_all" parametresiyle findcell fonksiyonunu kullanın. Bu, belirtilen "col" sütunundaki "find_all" değerinin tüm oluşumlarını bulacak ve "return" sütunundaki benzersiz değerlerin bir listesini bir dize olarak döndürecektir.

! Fonksiyon URL'si: https://store.salebot.pro/function/findcell link

! JSON istek parametreleri:

{ "id": "tablo_kimliği", "find_all": "arama_değeri", "list_name": "sayfa_adı", "col": "aranacak_sütun_numarası", "return": "değerlerin_döndürüleceği_sütun_numarası", "find": "!" }

Kaydedilen değerlerde şunları belirtin:

list → Liste

quantity → Miktar

Kullanıcıya şu mesajı görüntüleyin:
"#{spisok} kişisini yönlendirdiniz, toplam referans sayınız: #{quantity}"

Diğer mesajlaşma uygulamalarında, böyle bir referans sistemini uygulamak daha da kolaydır çünkü davet edenin verileri bağlantı geçişi sırasında gizli bir parametre olarak iletilir, bu nedenle yeni kullanıcının "Bu numara tarafından davet edildim" gibi bir mesaj göndermesine gerek yoktur.