Ne yapar
Kişi sürümüyle aynı mantık, Leads modülünde: Telefon ve Mobil alanlarındaki rakam dışı karakterleri atar, 0090… / 90… / 05… / 5… kalıplarını tanıyıp +90 önekiyle yazar. Biçim zaten doğruysa kayda dokunmaz.
Kurulum mantığı
- 01
Workflow Rules altında modül Leads, tetik On Create (formdan gelen her lead) ve On Edit (Phone / Mobile değiştiğinde).
- 02
Eylem Function, bu fonksiyon; argüman
leadId, Lead Id alanına eşlenir. - 03
Lead dönüşümünde kişiye taşınan numara, bu fonksiyon lead üzerinde çalışmış ve numara tanınan kalıplardan birine uymuşsa normalleşmiş olur. Doğrudan girilen kişiler ve dönüşümden sonra kişide düzenlenen numaralar için Contacts tarafındaki kardeş fonksiyon gerekir. Kural kurulmadan önce oluşmuş ve sonra düzenlenmemiş kayıtlar Workflow'u tetiklemez; bunları ayrıca toplu işlemeniz gerekir.
Alan eşlemesi
Koda yazılan alanlar ve kendi org'unuzda dikkat etmeniz gerekenler.
| Alan | Değer | Not |
|---|---|---|
| Phone | +90XXXXXXXXXX | Kalıp eşleşmezse olduğu gibi bırakılır. |
| Mobile | +90XXXXXXXXXX | İki alan birbirinden bağımsız işlenir. |
Deluge kodu
Kodu olduğu gibi kopyalayın; değiştirmeniz gereken yerler yukarıdaki tabloda işaretli. İzle düğmesi, fonksiyonu adım adım okutur.
void automation.normalizeLeadPhones(String leadId)
{
try
{
info "===== Lead Telefon Normalizasyonu Başladı =====";
info "Lead ID: " + leadId;
if(leadId == null || leadId.trim() == "")
{
info "Lead ID boş.";
return;
}
leadRecord = zoho.crm.getRecordById("Leads",leadId.toLong());
if(leadRecord == null || leadRecord.isEmpty())
{
info "Lead bulunamadı.";
return;
}
updateMap = Map();
// PHONE
phone = "";
if(leadRecord.get("Phone") != null)
{
phone = leadRecord.get("Phone").toString().trim();
}
if(phone != "")
{
phoneDigits = phone.replaceAll("[^0-9]","");
normalizedPhone = phone;
if(phoneDigits.startsWith("0090"))
{
normalizedPhone = "+" + phoneDigits.subString(2,phoneDigits.length());
}
else if(phoneDigits.startsWith("90") && phoneDigits.length() == 12)
{
normalizedPhone = "+" + phoneDigits;
}
else if(phoneDigits.startsWith("05") && phoneDigits.length() == 11)
{
normalizedPhone = "+9" + phoneDigits;
}
else if(phoneDigits.startsWith("5") && phoneDigits.length() == 10)
{
normalizedPhone = "+90" + phoneDigits;
}
if(normalizedPhone != phone)
{
updateMap.put("Phone",normalizedPhone);
}
}
// MOBILE
mobile = "";
if(leadRecord.get("Mobile") != null)
{
mobile = leadRecord.get("Mobile").toString().trim();
}
if(mobile != "")
{
mobileDigits = mobile.replaceAll("[^0-9]","");
normalizedMobile = mobile;
if(mobileDigits.startsWith("0090"))
{
normalizedMobile = "+" + mobileDigits.subString(2,mobileDigits.length());
}
else if(mobileDigits.startsWith("90") && mobileDigits.length() == 12)
{
normalizedMobile = "+" + mobileDigits;
}
else if(mobileDigits.startsWith("05") && mobileDigits.length() == 11)
{
normalizedMobile = "+9" + mobileDigits;
}
else if(mobileDigits.startsWith("5") && mobileDigits.length() == 10)
{
normalizedMobile = "+90" + mobileDigits;
}
if(normalizedMobile != mobile)
{
updateMap.put("Mobile",normalizedMobile);
}
}
if(updateMap.size() == 0)
{
info "Güncellenecek telefon alanı bulunamadı.";
return;
}
updateResponse = zoho.crm.updateRecord("Leads",leadId.toLong(),updateMap);
info "Güncelleme sonucu: " + updateResponse;
}
catch (e)
{
info "Hata: " + e.toString();
}
}Dikkat edilecekler
- Form kaynağı
Zoho Forms ya da web formu numarayı
0 (5xx) xxx xx xxgibi biçimlendirerek gönderebilir; rakama indirgeme bu yüzden ilk adımdır. - Yurt dışı lead ve sabit hat
Dört kalıba (hane koşulları dahil) uymayan numaralar değişmeden kalır:
+44…gibi yurt dışı numaralar ve0212…gibi yerel yazılmış sabit hatlar. Rakama indirgenince 5 ile başlayıp 10 hane tutan bir yurt dışı numara ise mobil kalıbına uyar ve yanlışlıkla+90önekini alır. Farklı ülke kodları için kalıp listesi genişletilmeli.
İlgili kayıtlar
- 03Leads
Mükerrer lead'leri telefondan birleştir
Aynı telefon numarasıyla ikinci kez gelen lead'leri elle karşılaştırmadan tek kayda indirir; reklam formu, WhatsApp ve web sitesinden ayrı ayrı gelen kayıtlar tek lead'de toplanır.
- 05Leads · Tasks
Lead'in tüm açık görevlerini kapat
Lead kaybedildiğinde ya da nitelikli bulunmadığında üzerinde kalan tüm açık görevleri tek seferde tamamlandı yapar; temsilcinin görev listesinde ölü lead'lerin hatırlatmaları birikmez.
- 06Calls · Leads
Lead'i arayan temsilciye ata
Lead'e bağlı bir arama kaydedildiğinde ya da değiştirildiğinde lead'i o aramanın sahibine atar; lead, en son kaydedilen ya da değiştirilen aramanın sahibinde kalır.