Unipile MCP · Birleşik inbox
Kodlama ajanıyla birleşik inbox oluşturun
LinkedIn, WhatsApp ve e-posta konuşmaları tek listede, yanıt da aynı ekrandan. Unipile MCP sunucusu, ajanınızın veri çekme ve birleştirme kodunu yazmasını sağlar.
7 gün ücretsiz deneme, kredi kartı gerekmez.
Ajanınız · support-console
Unipile MCP bağlı
LinkedIn, WhatsApp ve e-posta için birleşik bir inbox oluştur.
İsteği çalıştırGET /v2/accounts/3 hesap
GET /api/inbox eklendi: hesap başına bir çağrı, tek öğe yapısı, tarihe göre sıralama.
Sonraki özelliği anlatın…
Görev
Ne yapmak istiyorsunuz
Kullanıcılarınıza bağladıkları hesaplardaki tüm konuşmaları tek listede gösterin ve ürününüzden çıkmadan yanıt vermelerini sağlayın. Önce dürüst kısım: account_id her route'un yolunda yer alır, dolayısıyla birleşik inbox, hesap başına bir çağrı ve ardından uygulamanızda bir birleştirme demektir. API'nin birleştirdiği şey çağrı sayısı değil, nesnelerin yapısıdır.
Unipile olmadan
Her sağlayıcıya ayrı istemci, her birine ayrı yapı
Bir LinkedIn istemcisi, bir WhatsApp istemcisi ve bir e-posta istemcisi; her birinin kendi modeli ve kendi sayfalaması var.
Bir hesabın sayfaları diğerlerinden önce bittiği anda mesaj kaybeden tek bir "daha fazla yükle".
Sohbet ile hesap birlikte tutulmadığı için yanlış hesaptan giden bir yanıt.
Unipile MCP sunucusu ile
Uygulamanızdaki sonuç
LinkedIn, WhatsApp ve e-posta genelinde tarihe göre sıralı, kanalı rozetle gösteren tek bir konuşma listesi.
Hesap başına bir cursor ilerleten ve hiçbir mesajı kaybetmeyen "daha fazla yükle".
Listeden, sohbetin sahibi olan hesap üzerinden yanıt; Development uygulamanızda test edilmiş.
Prompt, adımlar, kod
Ajanınıza prompt'u verin
İki prompt; her birinde ajanın okuyup çalıştırdığı Unipile endpoint'leri ve projenize eklenenler yer alır. Yollar eksiksizdir; API taban URL'si:
https://api.unipile.com, Scope'a bağlı anahtarınız ise X-API-KEY header'ında.Bu uygulamada birleşik bir LinkedIn, WhatsApp ve e-posta inbox'ı oluştur: bağlı hesapları listele, her hesap için bir sayfa sohbet ve bir sayfa e-posta çek, bunları tek bir öğe yapısına normalleştir ve tarihe göre sırala.
İsteği çalıştırGET /v2/accounts/3 hesap
İsteği çalıştırGET /v2/{account_id}/chats200 · next_cursor
Yeni route
GET /api/inbox: hesapları listeler, paralel olarak GET /v2/{account_id}/chats ve GET /v2/{account_id}/emails çağrılarını yapar, ikisini de tek bir InboxItem yapısına eşler (id, account_id, channel, counterpart, preview, date, unread) ve tarihe göre sıralar. Bir öğeyi açmak, o sohbetin messages route'unu çağırır. Development uygulamasında bir LinkedIn, bir WhatsApp ve bir Gmail test hesabıyla çalıştırıldı.Hesap başına bir çağrı, tek öğe yapısı, tek sıralama
Ajan, Chat ve Email şemalarını sunucu üzerinden okur ve en küçük ortak yapıya karar verir: bir tanımlayıcı, bir tarih, bir gönderen, bir önizleme ve kanal. Sağlayıcıya özgü her şey, detay görünümü için ham nesnede erişilebilir kalır. Instagram ve Telegram aynı chat route'larından gelir; dördüncü bir kanal yeni bir istemci değil, yalnızca bir hesap daha demektir.
Ajanın kullandığı endpoint'ler
GET/v2/accounts/GET/v2/{account_id}/chatsGET/v2/{account_id}/emailsGET/v2/{account_id}/chats/{chat_id}/messagesPOST/v2/{account_id}/chats/{chat_id}/messages/sendPOST/v2/{account_id}/emails/send
Sık yapılan hata: account_id için bir sorgu filtresi aramak. Bu değer yolun içindedir: hesap başına bir çağrı, ardından uygulamanızda birleştirme.
LinkedIn tarafını ayrıntılı geliştirin
Birleşik inbox'a sayfalama ekle: her bağlı hesap için bir cursor tut, daha fazla yüklemede her birini bağımsız ilerlet ve next_cursor yoksa o hesabı durdur.
Endpoint'i okuGET /v2/{account_id}/chatsdata, total_count, next_cursor
İsteği çalıştırGET /v2/{account_id}/emails?cursor=…200 OK
Global offset yerine inbox durumunda tutulan bir
Map<account_id, next_cursor> kullanılıyor. Daha fazla yükle, hâlâ cursor'ı olan her hesabı paralel olarak ilerletir, ardından birleşik listeyi yeniden sıralar. Dönüşünde next_cursor olmayan hesap tükenmiş olarak işaretlenir ve atlanır. Development uygulamasında farklı boyutlarda üç hesapla doğrulandı.Zarf her yerde aynı: data, total_count, next_cursor
Tüm liste route'ları aynı zarfı döndürür. Sonraki sayfa için
next_cursor değerini cursor parametresinde geri gönderin. Sözleşmeye göre sağlayıcı destekliyorsa cursor, desteklemiyorsa offset kullanılır; ayrıca limit bir garanti değil, bir tavandır: kısa bir sayfa listenin sonu değildir, sonu yalnızca eksik bir next_cursor gösterir.Ajanın kullandığı endpoint'ler
GET/v2/{account_id}/chatsGET/v2/{account_id}/emailsGET/v2/{account_id}/chats/{chat_id}/participants
Sık yapılan hata: Tüm inbox için tek bir cursor. Her hesap kendi cursor'ıyla sayfalanır; ortak bir cursor, bir hesap diğerlerinden önce bittiği anda mesaj kaybeder.
Listeyi webhook'larla canlı tutun
Sayfalama
Tek zarf, hesap başına bir cursor
Ajanın sunucu üzerinden okuduğu v2 sözleşmesinden birebir alıntı. Aynı üç alan her liste route'unda döner.
1Zarfdata sayfayı, total_count sağlayıcı verdiğinde toplam boyutu, next_cursor da sonraki sayfanın token'ını tutar. next_cursor yoksa o hesabın listesi bitmiştir.GET https://api.unipile.com/v2/{account_id}/chats?limit=20
{ "object": "ChatList", "items": [ … ], "cursor": "…" }
2Cursor mu, offset miSağlayıcı destekliyorsa next_cursor, aksi hâlde offset kullanın. Her sağlayıcı için ikisinden birini varsayan kod, ilk IMAP posta kutusunda bozulur.GET https://api.unipile.com/v2/{account_id}/emails?cursor=…&limit=20
GET https://api.unipile.com/v2/{account_id}/chats?offset=40&limit=20
3Cursor eşlemesiUygulama durumunuzda hesap başına bir kayıt. Daha fazla yükle, hâlâ cursor'ı olan her hesabı ilerletir ve cursor döndürmeyenleri çıkarır.{ "acc_1a…": "eyJ…", "acc_9c…": null, "acc_f2…": "eyJ…" }
limit bir garanti değil, bir tavandır
Development'tan Production'a
Önce bir Development uygulamasında test edin
Unipile dashboard'unuz bir Development uygulaması ile Production'ı birbirinden ayırır. Ajana Development'tan Scope'a bağlı bir anahtar ve kanal başına bir test hesabı verin: gerçek sayfa boyutları, gerçek müşteri yok.
1Hesap başına bir sayfa çekinLinkedIn, WhatsApp ve bir e-posta hesabı, tarihe göre sıralı tek listede birleşir.
2Listeden yanıt verinGönderim çağrısı, sohbetin sahibi olan hesaptan çıkar.
3Dengesiz hesaplarla daha fazla yükleyinMesaj kaybı yok, tükenen hesaplar atlanır; ardından anahtarı Production'a geçirin.
crm-app · DevelopmentAjanınız kullanıyor
Scopedev-tests · 2 hesap
Anahtar
Scope'a bağlı Account API anahtarıHesaplarLinkedIn test hesabı, Gmail test posta kutusu
Webhook'lar1 endpoint · mesaj olayları
crm-app · ProductionDokunulmadı
Scopeworkspace başına bir tane
Anahtar
Scope'a bağlı anahtarlar, yalnızca backend'inizdeHesaplarkullanıcılarınızın kendi hesapları, Hosted Auth ile
Sorun giderme
Sık karşılaşılan hatalar ve anlamları
Birleşik inbox'ı bozan dört hata ve her birinin çözümü. Üçü sayfalamayla ilgili.
account_id'yi sorgu filtresi olarak aramak
Tek bir çağrının tüm hesapları döndürmesi bekleniyor.
Çözümaccount_id yolun bir parçasıdır. Hesap başına bir kez çağırın ve uygulamanızda birleştirin; API çağrı sayısını değil, yapıyı birleştirir.
Tüm inbox için tek bir cursor
Bir hesap diğerlerinden önce bittiğinde daha fazla yükle mesaj kaybediyor.
ÇözümBir eşleme tutun: account_id → next_cursor. Her hesabı bağımsız ilerletin ve cursor döndürmeyenleri durdurun.
cursor ile offset'i karıştırmak
Kod bir sağlayıcıda çalışıyor, diğerinde bozuluyor.
ÇözümSağlayıcı destekliyorsa next_cursor değerini, desteklemiyorsa offset kullanın; sözleşme de bunu söyler. Varsaymak yerine her hesabın zarfını okuyun.
limit'i garanti saymak
Kısa bir sayfa, listenin sonu olarak okunuyor.
Çözümlimit bir tavandır. Bir hesabın listesini yalnızca eksik bir next_cursor bitirir; istenenden az öğe içeren bir sayfa bitirmez.
6000+
Unipile ile inovasyon yapan şirketler
Sektör liderlerinin güvendiği çözüm
1 API
Tüm büyük iletişim kanallarında operasyonları sadeleştirin
2 gün
Minimum kurulumla hızla canlı entegrasyon
30%
Bakım eforu ve kaynaklarında azalma
Yerleşik güvenlik ve uyumluluk
Verileriniz ve iş akışlarınız için kurumsal düzeyde koruma Güvenliğimiz hakkında daha fazla bilgi
SOC 2 Type II
Sertifikalı
Veri korumasını ve operasyonel bütünlüğü güvence altına alan, bağımsız olarak denetlenmiş güvenlik kontrolleri.
GDPR
Uyumlu
Kullanıcı gizliliği için Avrupa veri koruma düzenlemelerine tam uyum.
99.9%
Son 24 ayda platform çalışma süresi
24/7
Yüksek performanslı API ile küresel destek
Birleşik inbox SSS
Hesap başına bir çağrı, gereken endpoint'ler, hesaplar arası sayfalama, mesaj ve e-posta yapıları ve listeyi canlı tutmanın yolu.
Hayır, bilinçli bir tercih.
account_id yolun bir parçasıdır; bu yüzden hesap başına bir kez çağırır ve uygulamanızda birleştirirsiniz. API'nin birleştirdiği şey çağrı sayısı değil, nesnelerin yapısıdır.GET /v2/accounts/ ile hesap listesini alın, ardından her hesap için GET /v2/{account_id}/chats ve GET /v2/{account_id}/emails çağırın, sonra GET /v2/{account_id}/chats/{chat_id}/messages ile bir konuşmayı açın. Yanıtlar şu route'lardan gider: POST /v2/{account_id}/chats/{chat_id}/messages/send ve POST /v2/{account_id}/emails/send.Hesap başına bir cursor. Her liste route'u şunları döndürür:
data, total_count ve next_cursor. Sonraki sayfa için next_cursor değerini cursor parametresinde geri gönderin ve uygulama durumunuzda hesap başına bir cursor içeren bir eşleme tutun.Mesajlaşma konuşmaları Chat nesneleri, e-postalar ise Email nesneleridir; her birinin kendi alanları vardır. Normalleştirme uygulamanızda en az üç alan üzerinden yapılır: tanımlayıcı, tarih ve gönderen. Ajan iki şemayı da sunucu üzerinden okur ve bu eşlemeyi yazar.
Şu olaylara abone bir webhook endpoint'i ile:
message.new ve email.new. Ayrı sayfada bir ajanın bunu nasıl bağladığı anlatılıyor.