İçeriğe atla
megapromotingHadi konuşalım

Çözümler · Çevrimiçi ticaret

Müşteri sorduğu anda mağazanızdaki fiyatı ve kullanılabilirliği okuyan bir asistan.

Asistanı mağazanın kataloğuna onun kamuya açık kapısı üzerinden bağlıyoruz, onu müşterilerin zaten yazdığı kanallara yerleştiriyoruz ve onun ihlal edemeyeceği bir kural veriyoruz: mağazada yayımlanmamış bir fiyat söyleme. Rolünü aştığında, görüşmeyi kayıtla birlikte bir insana devreder.

Zaten kurduklarımızSe poate verifica din exterior, fără să ne întrebi pe noi. Punctul nostru de catalog livrat unui distribuitor răspunde 200 și spune „154 rezultate”, iar interfața publică a magazinului lui, interogată direct, întoarce antetul `x-wp-total: 154` — aceeași cifră, două surse independente, 06.09.2026. A doua implementare e funcția de catalog din platforma de asistenți: `storeCatalog.service.js` plus trei unelte încorporate pe care agentul le poate chema în timpul conversației. Rezerva pe care o spunem înainte de contract: mesajele din șablon WhatsApp nu există în codul platformei, deci nu promitem niciun mesaj proactiv în afara ferestrei de 24 de ore; iar traseul de catalog stă pe o ramură de dezvoltare care nu e unificată în trunchi — e livrat pentru magazinele pe care le-am conectat, nu pornit implicit pentru toți.

Bir mağaza asistanı soruyu anlamadığı için bozulmaz. Kataloğun bir kopyasından yanıt verdiği için bozulur. Biri ürünleri bir kez dışa aktardı, bir dosyaya yapıştırdı ve o zamandan beri asistan mağazanın eski bir fotoğrafını okuyor: üç hafta önceki fiyat, hafta sonundan önceki stok. Fiyat değişimine ve tükenen ilk ürüne kadar kusursuz çalışır — ve sonra ikna olmuş bir şekilde yanılır, bu da susmasından daha kötüdür. Ticarette bu bir nüans hatası değildir: müşteri mağazaya botun söylediği fiyatla gelir.

Bizim seçimimiz basit ve sonuçları var: katalog kopyalanmaz, okunur. WooCommerce üzerindeki mağazalar için Store API arayüzü herkese açıktır — bu yüzden bağlantı, tüketici anahtarı ve gizli anahtar olmadan, site adresiyle yapılır. Müşteri bir ürün sorduğunda ajan bir araç çağırır, araç mağazaya sorar, mağaza fiyatı ve mevcut durumu döndürür. Sohbette görünen, entegrasyonun yapıldığı zamanki değil, mağazada olan şeydir.

Bu seçimin maliyeti kodda görünür, gizli değildir: katalog sayfalandırılmış olarak yüklenir, her biri yüz ürünlük en fazla otuz sayfa, site başına on dakikalık geçici bellekte tutulur ve tüm tüketiciler tarafından değişiklik yapılmadan okunan tek bir biçime normalize edilir — sayısal fiyata ihtiyaç duyan mesajlaşmadaki ürün karuseli ve sayfa içi widget dahil. On dakika uzlaşmadır: şimdi yapılan bir fiyat değişikliği en geç on dakika içinde görünür, anında değil. Sayıyı söylüyoruz ki ona itiraz edebilesiniz.

Kalan sınırlamalar bizden değil, kanallardan gelir ve bunları önceden bilmek daha dürüstçedir: Meta, müşterinin son mesajından sonraki 24 saatlik pencerenin dışında serbest metni reddeder, Instagram'da hiç ürün karuseli yoktur ve müşterinin gönderdiği bir fotoğraf konuşmada işaretlenir, otomatik olarak bir siparişe eklenmez. Bu cümlelerin her biri aşağıda dosya ve satırla alıntılanmıştır.

Neleri kapsıyor

Çevrimiçi ticarette pratikte ne değişir

Soru bir bilmece değil, kataloğunuzda bir arama olur

Ajan, ortak bir katalog hizmetinin üzerinde üç yerleşik araca sahiptir: arama için `store_catalog_search`, müşterinin ifadesini belirli bir ürünle eşleştirmek için `store_catalog_match`, tam fiş için `store_catalog_product`. Bunlar her mağaza için ayrı ayrı yazılmış araçlar değildir — platform işlevleridir. Pratik fark: eşleştirmede bir şeyi düzelttiğimizde, bağlı tüm mağazalar için aynı anda düzelir.

Fiyat ve stok, sorunun sorulduğu anda mağazadan okunur

Araç sonucu bizim bir dosyamızdan değil, sizin mağazanızdan gelir. Geçici bellek site başına on dakikadır ve katalog sayfalandırılarak taranır — her biri 100 ürünlük en fazla 30 sayfa. Kabul etmeniz gereken sonuç: bir fiyat değişikliği konuşmada en fazla on dakikalık gecikmeyle görünür. Kazandığınız sonuç: ajanın mağazadan çıkarılmış bir fiyatı aylarca tekrar ettiği senaryo yoktur.

Yanıt, müşterinin yazdığı kanaldan çıkar

Altı kanalın platformda kendi kodu vardır: Messenger, Instagram Direct, Telegram, sayfa widget'ı, yerel bir ilan platformu ve Graph v22.0 üzerinde Cloud API aracılığıyla WhatsApp. Bu, altı kez yeniden adlandırılmış tek bir „chat” değildir: her kanalın kendi biçim kuralları ve kendi çökme yolları vardır ve biz kötü durumu da kontrol ederiz — süresi dolmuş bir sayfa token'ı izlenmezse kanalı sessizce durdurur.

WooCommerce mağazasının bağlantısı, anahtarlar olmadan adresiyle yapılır

Store API herkese açıktır, bu yüzden sizden `consumer_key` ve `consumer_secret` istemiyoruz. Bu bir kolaylık değil, bir risk kararıdır: bu yolun yerine geçen elle yazılmış araçların bazıları, mağaza anahtarlarını açıkça veritabanında tutuyordu. Yeni yol, 28'i HTML üzerinde scraper olan 109 elle yazılmış aracı değiştirdi — yani mağaza temasındaki ilk değişiklikte bozulan entegrasyonlar.

Ürün karuseli koşulludur ve bu koşullar kanaldan kanala değişir

Messenger'da karusel yalnızca üç koşul aynı anda sağlandığında gösterilir; biri eksikse yanıt metin olarak kalır, bozulmaz. Instagram'da ürün karuseli yoktur — Meta'nın Instagram'da genel şablonları yoktur, bu yüzden teklifte ne yazarsa yazsın kimse bunu orada teslim edemez. Bu, sözleşmeden önce bizden duymayı tercih ettiğimiz türden bir cümledir.

WhatsApp’ta 24 saatlik pencere, hata numarasıyla anlatıldı

Müşterinin son mesajından itibaren 24 saatlik pencerenin dışında, Meta serbest metni 131047 hatasıyla reddeder ve mesaj platformda başarısız olarak işaretli kalır. Şablon mesajları — pencere sonrasında ilk yazmanın tek meşru yolu — platform kodunda yoktur: `template` türüne göre arama sıfır sonuç döndürür, yalnızca `text` türü gönderilir. Yani: WhatsApp’ta 48 saat sonra terk edilmiş sepeti geri kazanmayı bugün size vaat edemeyiz.

Mesaj patlamaları ve çift mesajlar işlenir, yok sayılmaz

Meta webhook’u gerçekten aynı mesajı yeniden gönderir: çiftleme, mesaj kimliği üzerinden, 120 saniyelik hafıza ile yapılır. Ve müşterinin üç satıra „bună”, „aveți”, „modelul negru” yazması, yazdığı her şey için tek bir yanıt alır; üç parçalı yanıt almaz — mesajlar 15 saniyelik bir tamponda birikir. Ticarette bu, göründüğünden daha önemlidir: tek bir niyete üç parçalı yanıt tam bir robot gibi görünür.

İnsana devretme durumludur, bir vaat değildir

Konuşma akışının açık bir `bot` veya `human` durumu vardır. Devralma günlüğü üç eylemi bilir: bir insan tarafından devralma, bota dönüş, otomatik yeniden etkinleştirme. Ayrı olarak, akışın yanıt süresi uyum durumu vardır — `ok`, `warning`, `breached` — böylece sadece kaç tanesinin olduğu değil, hangi konuşmanın insani yanıt almadan kaldığı da görülür.

Bir mağaza asistanının çözmediği şeyler

Ödemeyi tahsil etmez. Mağazanın bir yazma yolu yoksa mağazada sipariş oluşturmaz — okuma herkese açıktır, yazma değildir. Müşterinin gönderdiği fotoğrafı bir siparişe eklemez: alınan fotoğraf konuşmada işaretlenir, hepsi bu; PDF oluşturma platformda yoktur. Ve yetkili geçmiş erişimi olmadan bir müşterinin önceki siparişini tekrar etmez. Bunların her biri yapılabilir, ama teklifte bir işaret olarak değil, ayrı bir çalışma olarak.

Traseul

Bir talep sistemden nasıl geçer.

01

Önce mağazanızın hangi genel kapısı olduğunu kontrol ediyoruz

İlk kontrol, son değil: dışarıdan katalogu istiyoruz ve geri geleni sayıyoruz. Mağaza WooCommerce üzerinde Store API etkinse, entegrasyonun anahtara ihtiyacı yoktur. Değilse, kimlik doğrulamaya geçeriz — ve o zaman anahtar, yönetilmesi gereken bir parça olur; bunun ne anlama geldiğiyle birlikte. Bu kontrolün sonucunu yazılı olarak teslim ederiz, yanıtın mümkün olmadığını söylediği durumda bile.

02

Katalogu ve kanalları bağlıyoruz; kötü senaryo test edilmiş olarak

Meta bağlantısı Embedded Signup ile yapılır. Her kanalda yalnızca ilk başarılı mesajı değil, token süresi dolduğunda veya mağaza yanıt vermediğinde ne olduğunu da kontrol ederiz. Bağlı kanalları ve her hata modundaki davranışın yazılı listesini teslim ederiz.

03

Rolü, araçları ve sınırı yazıyoruz

Her aracın model için yazılmış bir açıklaması, tiplenmiş parametreleri ve kendi yürütme süresi vardır — varsayılan 15 saniye. Ajanın rolü, neyi söylemeye yetkili olmadığını açıkça belirtir: yayımlanmamış fiyat, teslimat süresi, okumadığı kullanılabilirlik durumu. Ajanın yapılandırmasını ve ona bağlı araçların listesini teslim ediyoruz — platformun tüm araçlarını değil, yalnızca ihtiyaç duyduklarını.

04

Aktif insan devralmasıyla başlıyoruz ve eşikleri ayarlıyoruz

İnsana devretmeyi yapılandırılmış ve sorgu günlüğünü açık başlatıyoruz, böylece ajanın hangi parçaları kullandığı ve hangi skorlarla kullandığı görülsün. Buradan benzerlik eşiği ve soru başına parça sayısı ayarlanır. Sadece çalışan bir asistan değil, ayar kararlarını içeren bir konuşma raporu teslim ederiz.

1Întrebarea clientului2unealta de catalog3interfața publică amagazinului4preț șidisponibilitate deacum5răspuns pe canalul pecare a scrisMemorie temporară: zece minute. Nicio copie a catalogului la noi.
Traseul, în 5 pași

Veriler

Neye dokunuyoruz, nerede duruyorlar ve ne kadar kalıyorlar

Kurallar bir sektörden diğerine değişir. Bunlar çevrimiçi ticarette geçerli olanlardır.

Katalog bizim tarafa kopyalanmaz
Ürünler, fiyatlar ve stok sizde kalır. Platform üzerinden geçen şey, bir soruya verilen yanıttır; on dakika boyunca geçici bellekte tutulur. Bizde, birinin dışa aktarabileceği katalogunuzun bulunduğu bir veritabanı yoktur, çünkü yapılacak bir dışa aktarma yoktur.
Konuşmaların nerede tutulduğu
MySQL, Microsoft Azure üzerindeki kendi sunucusunda. Şema, Prisma’da modellenmiş 80’den fazla tablo içerir; Meta akışları, Telegram akışları, ilan platformundaki akışlar, yorumlar, etiketler, dahili notlar ve denetim günlüğü için ayrı tablolar vardır. Kanal belirteci Fernet ile şifreli olarak saklanır.
Sipariş verileri serbest alana girer
Bir mağaza sohbetinde ad, telefon, teslimat adresi ve bazen de müşterinin ürünü hangi boyut veya tıbbi sorun için satın aldığı bilgisi yer alır. Teknik olarak engellenemez. İşlenebilir: neyin saklanacağı, ne kadar süre saklanacağı, kimin erişimi olduğu ve ekibin kanalda neyi istememesi gerektiği belirlenir. Uygulamanın işleme kayıt defteri uygulama sırasında yazılır, sonradan değil.
Sayfadaki widget ve kaynak listesi
Widget, her asistan için izin verilen bir kaynak listesine sahiptir, ancak varsayılan davranış bilinmelidir: liste boşsa, kontrol geçer. Bu, eski kurulumlarla uyumluluk için seçilmiş bir durumdur ve kodda olduğu gibi yazılmıştır. Pratikte, mağazanızın alan adına göre kısıtlama her uygulamada açıkça yapılandırılır — hazır olarak gelmez.
Saklama süresi
Her uygulama için belirlenir ve sizin yayımladığınız politikada yazılır. Bizde uyguladığımız ve projelerde de istediğimiz kural şudur: bir kod değişikliği neyin toplandığını, kime ulaştığını veya ne kadar süre saklandığını değiştiriyorsa, yayımlanan politika aynı commit içinde değiştirilir.

Bir vaka

İki yönden doğrulanmış 154 ürünlük bir katalog

Durum

Kişinev’den bir distribütör, bir WooCommerce mağazası üzerinden satış yapıyordu ve mesaj kanallarında ürün sorularını yanıtlıyordu. Açık entegrasyon — ürünlerin bir dışa aktarımının ajan bilgis tabanına konulması — ilk indirim kampanyasına kadar çalışırdı.

Ne kurduk

Kataloğu, anahtar gerektirmeyen açık mağaza arayüzü üzerinden bağladık ve üzerine ajanın konuşmada çağırdığı üç aracı koyduk: arama, eşleştirme ve ürün fişi. Sonuçlar tek bir biçimde normalleştirilir; bu biçim hem mesajlaşmadaki karusel hem de sayfadaki widget tarafından aynı şekilde okunur, böylece aynı fiyat hakkında iki farklı gerçek olmasın.

Ne çıktı

Kontrol dışarıdan yapılabilir, bize inanmanız gerekmez: katalog uç noktamız 200 döner ve 154 sonuç bildirir, mağazanın açık arayüzü ise doğrudan sorgulandığında `x-wp-total: 154` başlığını döndürür. Aynı sayı, iki bağımsız kaynak, aynı gün.

Vakanın söylemedikleri

Sayı o güne, 06.09.2026 tarihine aittir ve distribütör ürün ekledikçe değişir — amaç budur. Bu bir performans ölçümü değildir ve satışlar hakkında hiçbir şey söylemez; yalnızca ajanın gerçek kataloğu okuduğunu söyler.

Sorular

E-ticarette birinin sorduğu şeyler

Bana eski bir fiyat söylemediğini nasıl bileceğim?

Çünkü onu alabileceği başka yer yok. Fiyat, sorunun sorulduğu anda mağazanızın verdiği yanıttan gelir ve en fazla on dakika boyunca geçici bellekte tutulur. Bizde, okuyabileceği bir katalog kopyası yoktur. Kontrolü kendiniz yapabilirsiniz: ajana bir ürün sorarsınız, mağazada fiyatı değiştirirsiniz, on dakika beklersiniz ve yeniden sorarsınız.

Ürün tükenmiş olduğunda ne cevap verir?

Mağazanın söylediğini söyler. Mevcutluk, fiyatla aynı yanıttan gelir. Yapmadığı şey — ve bu bir eksiklik değil, bir karardır — yeniden stok tarihi uydurmaktır. Bir ürün eksik olduğunda ajanın alternatifler önermesini istiyorsanız, bu onun rolüne açıkça yazdığımız ve test ettiğimiz bir kuraldır; kendiliğinden olan bir şey değildir.

Siparişi tamamlayabilir mi?

Kataloğun okunmasından değil. Store API publică bir okuma kapısıdır; bir sipariş yazmak, mağazaya doğrulanmış bir yol gerektirir, yani yönetilen anahtarlarla ayrı bir çalışmadır. Bugün ne yapıyor: müşteriyi doğru ürüne, doğru fiyatla götürüyor ve ona bağlantıyı veriyor ya da konuşmayı bir insana devrediyor.

Sepetini terk eden bir müşteriye ilk mesajı kendisi atabilir mi?

WhatsApp’ta, 24 saatlik pencerenin dışında, hayır. Meta serbest metni 131047 hatasıyla reddeder ve şablon mesajları platform kodunda yoktur. Telegram ve Messenger’da, her kanalın kuralları sınırları içinde, cevapsız kalan konuşmaları yeniden başlatan planlı otomasyonlar vardır; kaçının gönderildiğini ve kaçının atlandığını gösteren görünür sayaçlarla birlikte.

Instagram’da ürün karuseliyle çalışır mı?

Hayır. Meta’nın Instagram’da genel şablonları yoktur, dolayısıyla karusel orada kimse için mevcut değildir. Messenger’da vardır, ama aynı anda üç koşul ister; bunlardan biri eksik olduğunda yanıt metin olarak kalır. Bunu şimdi duymanızı tercih ederiz, uygulamanın üçüncü haftasında değil.

Mağazam WooCommerce üzerinde değil. Ne değişiyor?

İlk aşama değişir: adresi bağlamak yerine, platformunuzun hangi public arayüze sahip olduğunu ve bir konuşma için yeterince hızlı yanıt verip vermediğini kontrol ederiz. Hiçbiri yoksa, ya doğrulanmış bir bağlayıcı yazarız — ve o zaman anahtarı kimin yöneteceğini konuşuruz — ya da canlı katalogun dürüstçe yapılamayacağını söyler ve bunun gibi işaretlenmiş, düzenli olarak güncellenen bir bilgi tabanıyla kalırız.

Müşteri, istediği ürünün fotoğrafını gönderiyor. Ne oluyor?

Fotoğraf konuşmada işaretlenir ve devralan kişi için orada kalır. Bir siparişe otomatik olarak eklenmez ve ondan hiçbir belge üretilmez — bunun için kod yoktur. Fotoğraftan siparişi kaydettiğini iddia eden bir agent yalan söylerdi ve bu teslimatta ortaya çıkar.

Müşteri art arda dört mesaj yazdığında ne olur?

Yazdığı her şey için tek bir yanıt alır. Mesajlar modele gönderilmeden önce 15 saniyelik bir tamponda birikir. Ayrı olarak, Meta platformu aynı mesajı yeniden gönderirse — ve bunu yapar — mesaj kimliği üzerinde 120 saniyelik hafızayla yapılan deduplikasyon ikinci yanıtı engeller.

Agent bilmiyorsa kim yanıt veriyor?

Ekibinizden bir insan, ve devir sistemde görünür: akış `bot` durumundan `human` durumuna geçer, devralma günlüğü kimin ve ne zaman aldığını not eder, yanıt süresi uyumluluk durumu akışın asılı kalıp kalmadığını gösterir. Bu mekanizma olmadan, „bir operatöre devret” kimsenin aylar sonra doğrulayamayacağı bir vaattir.

Neyin daha iyi çalışmasını isterdiniz?

Bize sürecinizi anlatın. Neyin kurulmaya değer olduğuna, neyi bağlayabileceğimize ve sonucu nasıl doğrulayacağımıza birlikte karar verelim.

Hadi konuşalım