🔍

AI Chatbot Telegram Bildirim Sorunu

Telefon Numarası Algılama & Bildirim Sistemi Analiz Raporu

📅 24 Aralık 2025 🏢 Tuufi Multi-Tenant Platform 🤖 AI Chatbot Modülü

📝 Basit Anlatım (Herkes İçin)

Sorun: AI sohbet botları müşterilerle konuşurken telefon numarası topluyor ama Telegram'dan bildirim gelmiyor.

Ne Olması Gerekiyor?

  1. Müşteri AI botla konuşuyor
  2. Müşteri telefon numarası veriyor (örn: "0555 123 4567")
  3. Sistem telefon numarasını algılıyor ✅
  4. Telegram'a bildirim gönderiyor ❌ (Bu kısım çalışmıyor!)
  5. Yönetici Telegram'dan anında haberdar oluyor

Neden Önemli? Müşteri telefon numarası verdiğinde hemen aranması gerekir. Telegram bildirimi olmadan, bu değerli müşteri kayıtları gözden kaçıyor ve satış fırsatları kaybediliyor.

🚨 Şu Anda Ne Oluyor?

Sistem telefon numarasını algılıyor ama Telegram bildirimi gitmiyor. Kullanıcı "telefon numarası toplandı" diyor ama bildirim almıyor.

🔧 Teknik Detaylar (Geliştiriciler İçin)

📐 Sistem Mimarisi

1. Telefon Algılama Servisi

📁 Modules/AI/app/Services/PhoneNumberDetectionService.php

  • ✅ Türk telefon formatlarını algılıyor (+90, 0, 5XX)
  • ✅ Regex pattern'ler esnek (boşluk, tire, nokta, parantez kabul ediyor)
  • hasPhoneNumber() - Mesajda telefon var mı kontrol
  • extractPhoneNumbers() - Telefon numaralarını çıkar
  • formatPhoneNumber() - Görsel format (0555 123 4567)

2. Telegram Bildirim Servisi

📁 Modules/AI/app/Services/TelegramNotificationService.php

  • sendPhoneNumberAlert() - Ana bildirim fonksiyonu
  • ✅ Config: services.telegram-bot-api.token & chat_id
  • ✅ HTML format mesaj (bold, italic, link desteği)
  • ✅ Konuşma özeti + admin link içeriyor
  • ✅ Try-catch blok ile hata yönetimi (silent fail)

3. Ana Controller - Tespit & Bildirim Akışı

📁 Modules/AI/app/Http/Controllers/Api/PublicAIController.php

  • ✅ Satır 1207: detectPhoneNumberAndLogToTelescope() çağrılıyor
  • ✅ Satır 2299-2312: User mesajlarında telefon aranıyor
  • ✅ Satır 2351-2352: Telegram bildirim gönderiliyor
  • ⚠️ Satır 2353-2358: Hata catch ediliyor (silent fail - log yazılıyor)

⚙️ Config Kontrolü

1. Config Dosyası:

config/services.php
'telegram-bot-api' => [
    'token' => env('TELEGRAM_BOT_TOKEN'),
    'chat_id' => env('TELEGRAM_CHAT_ID'),
]

2. .env Dosyası:

TELEGRAM_BOT_TOKEN=8344881512:AAGJQn3Z167ebNx67pwvGuKf1RbzTHazbt0
TELEGRAM_CHAT_ID=-1002943373765

✅ Config doğru tanımlı!

🧪 Test Sonuçları

Telegram API Bağlantı Testi:

$ php artisan tinker --execute="...
Array (
    [success] => 1
    [message] => Telegram bağlantısı başarılı!
    [response] => Array (
        [ok] => 1
        [result] => Array (
            [message_id] => 59
            [from] => iXtifBot
            [chat] => iXtif İletişim Mesajlari
        )
    )
)

✅ Telegram API çalışıyor! Bot mesaj gönderebiliyor.

🔍 Sorun Analizi & Muhtemel Sebepler

Ana Sorun: Sistem telefon numarası algılıyor ama Telegram bildirimi gitmiyor.

❓ Muhtemel Sebep #1: Telefon Numarası Hiç Algılanmadı

Kullanıcı "telefon numarası toplandı" diyor ama sistem gerçekten algılamadı olabilir.

Test Adımları:

  1. Admin panelden AI konuşma kayıtlarını kontrol et
  2. Mesaj içeriğinde telefon formatını kontrol et
  3. Telefon AI'ın mesajında mı yoksa kullanıcının mesajında mı?
  4. Log dosyasında "Phone number detected" kaydı var mı?
tail -n 500 storage/logs/laravel.log | grep "Phone number detected"

⚠️ Muhtemel Sebep #2: Telefon AI Mesajında (User Değil)

Kod sadece USER mesajlarında telefon arıyor. AI'ın kendi mesajlarında telefonu görmezden geliyor.

Kod Mantığı:

// PublicAIController.php - Satır 2302-2304
if ($message->role === 'assistant') {
    continue; // AI mesajlarını atla
}

// Sadece USER mesajlarında telefon ara

⚠️ Eğer telefon numarası AI'ın cevabında (örnek göstermek için) geçiyorsa algılanmıyor!

🔇 Muhtemel Sebep #3: Silent Fail (Hata Yakalandı, Bildirim Gitmedi)

Telegram servisi çalıştı ama bir hata oluştu ve try-catch bloğu hatasını yakaladı.

Kod Bloğu:

// Satır 2350-2358
try {
    $telegramService = new \Modules\AI\App\Services\TelegramNotificationService();
    $telegramService->sendPhoneNumberAlert($conversation, $detectedPhones);
} catch (\Exception $telegramError) {
    // Silent fail - Telegram hatası ana akışı bozmasın
    \Log::warning('⚠️ Telegram notification failed', [
        'error' => $telegramError->getMessage(),
    ]);
}

⚠️ Hata yakalandı ama sadece log yazıldı! Kullanıcı farketmedi.

tail -n 500 storage/logs/laravel.log | grep "Telegram notification failed"

📋 Muhtemel Sebep #4: Log Seviyesi Sorunu

Log::info() kullanılıyor ama log seviyesi error olarak ayarlanmış olabilir.

grep "LOG_LEVEL" .env
# Eğer LOG_LEVEL=error ise info logları yazılmaz!

🔌 Muhtemel Sebep #5: Telegram API Rate Limit veya IP Block

Telegram Bot API çok fazla istek gönderildiğinde rate limit uygular.

Telegram Limitleri:

  • Aynı kullanıcıya: 1 mesaj/saniye
  • Grup'a: 20 mesaj/dakika
  • Aşırı istek: HTTP 429 (Too Many Requests)

Çözüm Önerileri & Test Adımları

1️⃣ Log Kontrolü (İlk Adım)

# Telefon algılama logları
tail -n 1000 storage/logs/laravel.log | grep -E "Phone number detected|Telegram"

# Sadece Telegram hataları
tail -n 1000 storage/logs/laravel.log | grep "Telegram notification failed"

# Log seviyesi kontrolü
grep LOG_LEVEL .env

2️⃣ Manuel Test (Gerçek Konuşma Simülasyonu)

Frontend'den AI chat aç, telefon numarası gönder:

User: "Merhaba, ürün hakkında bilgi alabilir miyim?"
AI: "Tabii, size nasıl yardımcı olabilirim?"
User: "Telefon numaramı bırakayım: 0555 123 4567"
AI: "Teşekkürler, en kısa sürede sizi arayacağız."

⚠️ Telefon numarasını USER mesajında yazın (AI'ın cevabında değil!)

Telegram'da bildirim geldi mi kontrol et.

3️⃣ Database Kontrolü

# AI conversation kayıtlarını kontrol et
php artisan tinker
>>> $conv = \Modules\AI\App\Models\AIConversation::latest()->first();
>>> $conv->messages->pluck('content', 'role');
# Telefon numarası hangi role'de (user/assistant)?

4️⃣ Debug Mode (Temporary - Üretimde Dikkatli!)

TelegramNotificationService.php içine debug log ekle:

// sendPhoneNumberAlert() - Satır 26'dan sonra ekle
\Log::info('🔔 TELEGRAM DEBUG: Function called', [
    'conversation_id' => $conversation->id,
    'phones' => $phoneNumbers,
    'config_token' => substr($botToken ?? 'EMPTY', 0, 10).'...',
    'config_chat_id' => $chatId ?? 'EMPTY',
]);

Bu debug log ile fonksiyona girilip girilmediğini anlarsın.

5️⃣ Telegram Bot Status Kontrolü

# Bot info kontrolü
curl "https://api.telegram.org/bot8344881512:AAGJQn3Z167ebNx67pwvGuKf1RbzTHazbt0/getMe"

# Chat bilgisi
curl "https://api.telegram.org/bot8344881512:AAGJQn3Z167ebNx67pwvGuKf1RbzTHazbt0/getChat?chat_id=-1002943373765"

6️⃣ Alternatif: WhatsApp Bildirimi Kontrol Et

Kodda WhatsApp bildirimi de var (satır 2360-2381).

WhatsApp bildirimi geliyor mu kontrol et. Eğer WhatsApp geliyorsa, sorun sadece Telegram'da demektir.

tail -n 500 storage/logs/laravel.log | grep "WhatsApp"

🎯 Sonuç & Öneriler

📊 Durum Özeti

✅ Çalışan Sistemler

  • ✅ PhoneNumberDetectionService
  • ✅ TelegramNotificationService (API bağlantısı OK)
  • ✅ Config (TELEGRAM_BOT_TOKEN & CHAT_ID)
  • ✅ Kod akışı (detectPhoneNumber fonksiyonu çağrılıyor)

❌ Sorunlu Kısım

  • ❌ Telegram bildirimi gitmiyor
  • ❓ Telefon gerçekten algılanıyor mu?
  • ❓ Hata log'lanıyor mu?
  • ❓ Silent fail mi oluyor?

💡 En Olası Sebepler

  1. Telefon AI mesajında: Kullanıcı değil AI telefon yazmış olabilir (kod sadece user mesajlarına bakıyor)
  2. Telefon algılanmadı: Format uyumsuz veya regex yakalanamadı
  3. Silent fail: Telegram servisi hata verdi ama catch bloğu sessizce yakaladı
  4. Log seviyesi: Info loglar yazılmıyor olabilir

🚀 Hızlı Çözüm Yol Haritası

  1. Log kontrolü yap (5 dakika)
  2. Manuel test et (10 dakika)
  3. Database'de conversation kayıtlarına bak (5 dakika)
  4. Debug log ekle, tekrar test et (15 dakika)
  5. Telegram Bot API durumunu kontrol et (5 dakika)

⏱️ Toplam süre: ~40 dakika (sorun bulunana kadar)

📚 Teknik Referanslar

Dosya Lokasyonları:

  • 📁 Modules/AI/app/Services/PhoneNumberDetectionService.php
  • 📁 Modules/AI/app/Services/TelegramNotificationService.php
  • 📁 Modules/AI/app/Http/Controllers/Api/PublicAIController.php (satır 1207, 2285-2390)
  • 📁 config/services.php (satır 73-82)
  • 📁 .env (TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID)

Database Tabloları:

  • 🗄️ ai_conversations (Central DB - mysql connection)
  • 🗄️ ai_conversation_messages (Central DB - mysql connection)

Telegram Bot Bilgileri:

  • 🤖 Bot Username: @iXtifBot
  • 💬 Chat: iXtif İletişim Mesajları (supergroup)
  • 🆔 Chat ID: -1002943373765

Telegram API Docs: