GoDocs — Documentation (Demo UI)

Davye n8n otomasyonu

 

Davye.com Akıllı WhatsApp Satış & Destek Asistanı

Bu proje, davye.com'un WhatsApp operasyonlarını otomatize etmek için kurulmuştur. Temel işlevi, gelen standart soruları yapay zeka ile 7/24 yanıtlamak ve gerektiğinde canlı desteğe bağlamaktır. Özel müdahale gerektiren durumlarda bot otomatik olarak devreden çıkar ve sohbetin manuel yönetilmesi için müşteriyi doğrudan canlı desteğe aktarır.

Kullanılan Teknolojiler

  • n8n: Webhook'ları dinler, veritabanı sorgularını tetikler, yapay zekaya veri taşır ve döngü/filtreleme işlemlerini yönetir.
  • Evolution API: WhatsApp iletişim köprüsü. Gelen mesajları anlık olarak n8n'e iletir ve üretilen yanıtları WhatsApp üzerinden müşteriye gönderir. Meta'nın resmi API'si olmadan WhatsApp Web protokolü üzerinden kesintisiz iletişim sağlar.
  • PostgreSQL: Müşteri sepet verileri, mesajlaşma geçmişi, sınır kontrolleri ve canlı desteğe aktarılan numaraların kaydını güvenle tutar.
  • Google Gemini AI: Gelen mesajların niyetini anlar, sistem yönergesine (prompt) ve veritabanından gelen müşteri özelliklerine göre dinamik, doğal yanıtlar üretir.

Veritabanı Mimarisi

Sistemin sorunsuz çalışmasını sağlayan temel veri tabloları, yapıları ve bu verilerin kaynakları aşağıda listelenmiştir.

1. uye_bilgi Tablosu

📥 Veri Kaynağı: Arka planda çalışan özel bir Python otomasyonu,  siteden belirli periyotlarla güncel müşteri verilerini (Excel formatında) indirir. Ardından bu verileri n8n'e iletir ve n8n SQL komutlarıyla bu tabloyu sürekli güncel tutar.
Sütun Adı Veri Tipi Maksimum Uzunluk / Detay
id integer null
ticimax_id character varying (VARCHAR) 50
isim character varying (VARCHAR) 100
soyisim character varying (VARCHAR) 100
cep character varying (VARCHAR) 20
mail character varying (VARCHAR) 150
meslek character varying (VARCHAR) 100
uye_turu character varying (VARCHAR) 50
il character varying (VARCHAR) 50
siparis_yasakli boolean null
is_hekim boolean null
guncellenme_tarihi timestamp null

2. ana_urunler Tablosu

📥 Veri Kaynağı: Python sistemi iki aşamalı çalışır. Önce siteden ürün Excel'ini indirip temel stok ve fiyat verilerini tabloya işler. Ardından sitenin urunler.xml dosyasına giderek ürünlerin URL (link) bağlantılarını çeker ve tablodaki ürünlerle eşleştirerek kaydeder.
Sütun Adı Veri Tipi Maksimum Uzunluk / Detay
barkod character varying (VARCHAR) 100
urun_adi text null
stok_adedi integer null
satis_fiyati numeric null
indirimli_fiyat numeric null
kategori text null
son_guncelleme timestamp null
urun_url text null

3. uye_sepet Tablosu

📥 Veri Kaynağı: E-ticaret altyapısındaki sepet hareketleri belirli aralıklarla n8n'e iletilir. n8n, bu sepet verilerini alıp "1-15 gün algoritmasının" işlemesi için bu tabloya kaydeder.
Sütun Adı Veri Tipi Maksimum Uzunluk / Detay
telefon integer 20
tarih timestamp without time zone null
sepet_ozeti text null

4. mesaj_kuyrugu Tablosu

📥 Veri Kaynağı: Evolution API üzerinden n8n Webhook'una düşen her anlık WhatsApp mesajı saniyesinde bu tabloya işlenir. Müşterinin arka arkaya attığı mesajları birleştiren "10 Saniye Bekleme Odası" algoritması doğrudan bu tablo üzerinden çalışır.
Sütun Adı Veri Tipi Maksimum Uzunluk / Detay
telefon character varying (VARCHAR) 50
mesaj_metni text null
son_guncelleme bigint null

5. canli_destek_aktif Tablosu

📥 Veri Kaynağı: Dinamik olarak doldurulur. Yapay zeka JSON çıktısında "insana_baglanma" kararı verdiğinde n8n otomatik olarak müşteriyi buraya yazar. Ayrıca yetkili personel gerektiğinde manuel olarak numaraları bu tabloya ekleyip/silebilir.
Sütun Adı Veri Tipi Maksimum Uzunluk / Detay
telefon character varying (VARCHAR) 50
devir_tarihi timestamp null

BÖLÜM 3: Ana İş Akışı ve Karar Mekanizması

3.1. Ön Güvenlik ve Canlı Destek Kontrolü (Filtreleme Aşaması)

  • Gönderen Kontrolü: Mesajı müşteri mi attı, yoksa canlı destekteki temsilci mi? Eğer mesaj bizden (temsilciden) gittiyse bot anında kendini devreden çıkarır.
  • Medya Tipi Kontrolü: Gelen veri metin mi? Eğer müşteri görsel, video veya ses kaydı gönderdiyse, yapay zeka bunları analiz etmeye çalışmak yerine sohbeti doğrudan canlı desteğe yönlendirir.
  • 24 Saatlik Kalkan Kuralı: Sistem canli_destek_aktif tablosuna bakar. Eğer müşteri zaten canlı desteğe bağlanmışsa ve son konuşmanın üzerinden 24 saat geçmemişse, bot sessiz kalmaya devam eder. 24 saat dolduysa bot tekrar devreye girer.

3.2. Akıllı Bekleme Odası (Mesaj Kuyruğu Sistemi)

Müşteriler genellikle söyleyeceklerini tek bir uzun mesaj yerine, art arda kısa mesajlar (Örn: "Merhaba" gönder, "Bir şey soracaktım" gönder) şeklinde yazarlar.

  • Bot, her gelen mesajdan sonra tam 10 saniye bekler.
  • Bu süre içinde aynı numaradan yeni mesaj gelirse sayacı sıfırlar.
  • Müşteri yazmayı bitirdiğinde, tüm mesajları tek bir metin bloğu halinde birleştirip yapay zekaya tek bir paket olarak sunar.

3.3. Yapay Zeka İşlemleri

Mesaj tüm güvenlik filtrelerini geçip kuyruktan çıktıktan sonra, sistemin beyni olan Google Gemini'a iletilir. Burada iki güçlü mekanizma kurduk: Özel JSON Yönergesi (Prompt) ve Dinamik SQL Ürün Araması.

3.3.1. Yapay Zeka Yönergesi ve JSON Çıktısı

Sistemin esnekliğini ve n8n içindeki algoritmik kontrolünü sağlayan en önemli adım, yapay zekayı "Sadece JSON formatında çıktı veren bir Karar Motoru" olarak eğitmektir. Prompt yapımız temel olarak şu şekildedir:

Gemini Prompt

Bu JSON çıktısı sayesinde, n8n içerisindeki Switch (Yönlendirici) node'umuz verileri bir yazılım gibi okuyarak kusursuz bir yol ayrımı yapabilmektedir (Örn: niyet = insana_baglanma ise botu sustur ve insan temsilciye bildir).

3.3.2. Ürün Arama (SQL Sorgusu) ve Fiyat Kontrolü

Müşteri ürün sorduğunda, AI'ın veritabanındaki güncel stok ve fiyatları bilmesi gerekir. AI, prompt sayesinde müşterinin aradığı kelimeyi veya URL'i tespit eder ve n8n bu veriyi alıp ana_urunler tablomuza aşağıdaki SQL sorgusunu fırlatır:

Sql Sorgusu
Araç (Tool) Açıklaması

🚦 Karar Kavşağı: 5 Ana Niyet (Switch Node)

Yapay zekanın ürettiği JSON çıktısındaki verilere göre, n8n sistemi mesajı aşağıdaki 5 ana yoldan (kapıdan) birine yönlendirir.

🛑 Yol 1: İnsana Bağlanma

niyet = "insana_baglanma"

Müşteri "sipariş vereceğim" dediğinde, pazarlık yaptığında veya AI tıkandığında devreye girer. Sohbet yetkiliye aktarılır, bot susar.

💬 Yol 2: Genel Sohbet

niyet = "genel_soru"

Klasik/basit sorulara veya selamlara yanıt verilir. Sohbet uzarsa görüşme canlı desteğe bırakılır.

❓ Yol 3: Eksik Bilgi

urun_net_mi = false

Fiyat sorulduğunda kaç adet istendiği eksikse veya çeşit belli değilse eksikleri sorar. Ana döngü yoludur.

🛒 Yol 4: Net Sipariş ve Katalog

urun_net_mi = true && adet_net_mi = true

Bilgiler netleşince çalışır. GBT kontrolü olumluysa yuvarlanmış net fiyatlar ve katalog (PDF) atılarak top canlı desteğe atılır.

📦 Yol 5: Stok Bekleme Talebi

niyet = "stok_bekleme_talebi"

Müşteri "Stoğu gelince bilgi almak istiyorum" dediğinde ürün ve adet verisi hafızadan çekilip veritabanına kalıcı olarak yazılır.

⚙️ Senaryolar

Sistemin; Excel kontrolleri, eksik bilgi tamamlama, URL okuma, lokal anestezi güvenliği ve stok takibi gibi tüm fonksiyonlarını nasıl işlettiğinin tam haritasıdır.

1 Sisteme Giriş, Üye Tanıma ve GBT Akışı (Arka Plan)

👤
Mesaj Gelir
Sohbet başlar başlamaz sistem çalışır.
📊
Excel Taraması
Üye datası SQL'e çekilir. Müşterinin kayıtlı olup olmadığı kontrol edilir.
⚕️
Ünvan Analizi
İsminde "Dr, Dt, Hastane, Klinik, Poliklinik" var mı kontrol edilir.
✅ AI Kararı: Sistemde zaten hekim veya klinik olarak kayıtlı olduğu görülürse, ilerleyen aşamalarda asla "Hekim misiniz?" sorusu sorulmaz. Güvenlik kalkanı otomatik açılır.

2 Fiyat Sorgulama ve Eksik Bilgi Toplama (Yol 3 Döngüsü)

👤
Müşteri Sorar
"Ultracain fiyatı nedir?"
🤖
Eksik Tespit (Yol 3)
Fiyat soruluyor ama adet yok.
adet_net_mi = false
💬
Adet Sorulur
"Hangi çeşidi ve kaç adet istemiştiniz hocam?"
🔄 İHTİMAL: Hafıza Devreye Girer
Müşteri "5 kutu" der. AI, önceki fiyat sorusunu ve bu 5 kutuyu hafızasında birleştirir. Sistem Yol 4'e geçmeye hazırdır.

3 Sadece Link (URL) İle Fiyat Sorgulama Akışı

🔗
Sadece Link Gelir
Yazı yazılmaz, sadece "davye.com/urun-x" linki atılır.
🧠
AI URL'yi Okur
SQL'den o linke ait ürünü bulur, fiyatını çeker ve net rakama yuvarlar.
💬
Fiyat ve Soru
Müşteriye fiyat bilgisi verilir ve sipariş için "Kaç adet?" sorusu sorulur.

4 Lokal Anestezi Güvenliği ve Özel İskonto Katalog (Yol 4)

🛡️
Kategori Kontrolü
Ürün "Lokal Anestezi". GBT'ye bakılır.
⚠️
İhtimal: Hekim Değilse
Fiyat VERİLMEZ. "Hekim/Klinik misiniz?" diye sorulur.
İhtimal: Hekim İse
Kalkan kalkar, fiyat verilir.
🎁 AI AKSİYONU: Katalog ve Devir İşlemi
Adam hekimse veya ürün standartsa; AI fiyatları (yuvarlayarak) verir, PDF kataloğunu atar ve şu cümleyi yazar: "Liste fiyatlarımız bu şekilde, ihtiyaçlarınıza göre size özel iskonto yapalım." Ardından satışı bağlaması için görüşmeyi canlıya desteğe bırakır.

5 Stok Bekleme ve Bilgi Alma Senaryosu (Yol 5)

🔍
Stok Sıfır Çıkar
Ürün ve adet belli ama stok "0" dır.
💬
AI Teklifi
"Stokta yok, gelince haber vereyim mi?"
Onay & Veri Kaydı
Müşteri "Evet, gelince bilgi almak istiyorum" der. AI, önceden sorup öğrendiği "Kaç adet" bilgisini de ekleyerek SQL'e yazar.

6 Otomatik Sipariş Talebi ve Canlı Destek Devri (Yol 1)

👤
Direkt Sipariş
Müşteri "Otomatik sipariş vermek istiyorum" veya "Sipariş vereceğim" der.
🤖
Karşılama & Devir
AI anında Canlı Desteğe (Yol 1) bağlar. İşlem yetkiliye bırakılır.