Akıllı Müzik Asistanı
Tenant 1001 için özel tasarlanmış, şarkı önerisi, playlist yönetimi, subscription kontrolü ve tıkla-çal action button sistemi ile donatılmış yapay zeka asistanı
AI, Muzibu veritabanındaki şarkı, albüm, artist, playlist, tür ve sektör verilerini kullanarak kullanıcıya özel öneriler sunar. Context-aware: hangi sayfada olduğuna göre farklı öneriler.
AI sadece metin yanıt vermez, kullanıcının tek tıkla aksiyon alabileceği butonlar da döndürür. Şarkı çalma, favoriye ekleme, playlist'e ekleme, paylaşma ve daha fazlası.
AI, kullanıcının üyelik durumunu bilir ve buna göre yanıt verir. Mevcut Subscription modülü ile tam entegre çalışır. Dinamik cycles, trial sistemi, device limit bilgisi dahil.
"Merhaba! Muzibu'da sınırsız müzik dinlemek için üye olabilirsiniz. 7 gün ücretsiz deneme fırsatını kaçırmayın!"
"Deneme süreniz 3 gün sonra bitiyor! Müzik keyfiniz kesintisiz devam etsin, şimdi Premium'a geçin."
"Üyeliğiniz sona erdi. Reklamsız, yüksek kaliteli müzik için Premium'a geçin! ₺99/ay veya ₺999/yıl (%16 tasarruf)"
"Premium üyeliğiniz 45 gün daha geçerli. Şu anda 2/3 cihaz kullanıyorsunuz. Keyifli dinlemeler!"
isPremium() - Premium mi?isTrialActive() - Trial döneminde mi?hasActiveSubscription() - Aktif abonelik var mı?has_used_trial - Trial kullanıldı mı?daysRemaining() - Kalan güngetCycleLabel() - "Aylık", "Yıllık"status - active/trial/expiredcurrent_period_end - Bitiş tarihiModules/AI/app/Http/Controllers/Api/MuzibuAIController.php
app/Services/AI/Context/MuzibuContextBuilder.php
app/Services/AI/Helpers/MuzibuSubscriptionHelper.php
getUserSubscriptionContext($user): array
├─ is_guest: bool
├─ is_premium: bool
├─ is_trial: bool
├─ has_used_trial: bool
├─ days_remaining: int
├─ plan_name: string ("Premium", "Trial", null)
├─ cycle_label: string ("Aylık", "Yıllık")
├─ expiry_date: string (formatted)
├─ device_count: int (aktif cihaz sayısı)
├─ device_limit: int (max cihaz limiti)
└─ subscription_plans: array (tüm planlar + fiyatlar)
Özel sistem prompt'u - Müzik odaklı personality
Sen Muzibu'nun müzik asistanısın. Kullanıcılara şarkı, albüm, playlist öneriyorsun.
Mevcut şarkı/albüm/playlist bilgisi, kullanıcı subscription durumu, tüm şarkı/tür listesi...
AI yanıtlarına action array ekleme
{
"success": true,
"data": {
"message": "Size **Tarkan - Kuzu Kuzu** şarkısını öneririm!",
"actions": [
{
"type": "play_song",
"label": "Hemen Çal",
"icon": "fa-play",
"color": "green",
"params": { "song_id": 123 }
},
{
"type": "add_favorite",
"label": "Favoriye Ekle",
"icon": "fa-heart",
"color": "pink",
"params": { "type": "song", "id": 123 }
},
{
"type": "navigate",
"label": "Sanatçıyı Gör",
"icon": "fa-user",
"color": "purple",
"params": { "url": "/artist/tarkan" }
}
],
"session_id": "...",
"conversation_id": 456
}
}
public/themes/muzibu/js/ai/muzibu-ai-chat.js
Floating widget + Player entegrasyonu
| Method | Endpoint | Açıklama | Auth |
|---|---|---|---|
| POST | /api/ai/v1/muzibu-assistant/chat | Ana chat endpoint | Opsiyonel |
| GET | /api/ai/v1/muzibu-assistant/history | Sohbet geçmişi | Opsiyonel |
| GET | /api/ai/v1/muzibu/subscription-status | Kullanıcı üyelik bilgisi | Sanctum |
| DELETE | /api/ai/v1/muzibu/conversation/{id} | Sohbeti sil | Session |
Kullanıcı "bana chill playlist oluştur" dediğinde, AI otomatik olarak 15-20 şarkılık kişiselleştirilmiş playlist oluşturur ve kaydetme seçeneği sunar.
create_playlist → PlaylistService.createPlaylistWithSongs()
SongPlay tablosundan kullanıcının dinleme geçmişini analiz ederek kişiselleştirilmiş öneriler sunar. "En çok dinlediklerim" ve "Son dinlediklerim" context'e eklenir.
SongPlay → user_id + song_id + played_at
MuzibuCorporateAccount entegrasyonu. Kurumsal kullanıcılar için özel yanıtlar, sektöre özel playlist önerileri, toplu hesap bilgisi.
MuzibuCorporateService.isMember()
QueueRefillController ile entegre. AI'ın önerdiği şarkıları queue'ya ekleme, radyo başlatma, playlist'i queue'ya aktarma.
add_to_queue, play_next
AI'ın önerdiği şarkı/albüm/playlist'i WhatsApp, Twitter, Facebook'a paylaşma. Web Share API + fallback URL kopyalama.
share → web-share.js entegrasyonu
Kullanıcının aktif cihazlarını gösterme, cihaz limitini açıklama, "başka cihazdan çık" butonu ile DeviceService entegrasyonu.
DeviceService.getActiveDevices()
Tüm mimari planlandı, Shop AI sisteminden miras alınacak kodlar belirlendi, Muzibu ve Subscription modülleri detaylıca incelendi. Hazırız!