https://retellai.com/?utm_source=discord&utm_medium=seo logo
Conversation flow'umda yeni sipariş subagent'ım iç...
# ❓・ai-evy-support
a
a
Thanks for tagging me @ananaslord. I'll look through relevant sources and get back to you shortly.
### Answer Mevcut prompt'unuzu ve fonksiyon çıktılarınızı görmeden size optimal bir prompt yazmam mümkün değil. Ancak, Retell AI'ın Conversation Flow subagent node'ları için prompt yazarken şu best practice'leri uygulayabilirsiniz: Prompt Optimizasyon İlkeleri: Subagent node instruction'ınızda şunlara odaklanın [(1) ]() : - Görevin ne olduğunu tanımlayın - Agent'ın hangi bilgileri toplaması gerektiğini belirtin - Mevcut tool/fonksiyonları ne zaman kullanması gerektiğini açıklayın Yapılandırılmış Prompt Formatı: Prompt'unuzu bölümlere ayırarak daha organize edin [(2) ]() :
Copy code
///## Görev
[Spesifik amacı açıklayın]

///## Stil Kuralları
- Kısa olun: Karmaşık konuları açıklamadıkça 2 cümleden kısa tutun
- Doğal konuşun: Doğal dil kullanın

///## Tool Kullanım Talimatları
1. [İlk adım]
2. İstek türünü belirleyin:
   - Eğer kullanıcı "X" derse:
     → `fonksiyon_adi` fonksiyonunu çağır
   - Eğer kullanıcı "Y" derse:
     → `baska_fonksiyon` fonksiyonunu çağır
Tool Calling Talimatları: Fonksiyonların ne zaman çağrılacağını açıkça belirtin : - Tetikleyici kelimeleri listeleyin - Fonksiyonların sırasını tanımlayın - Hangi durumlarda çağrılMAyacağını belirtin Mevcut prompt'unuzu ve fonksiyon çıktılarınızı paylaşırsanız, size daha spesifik öneriler sunabilirim.
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[2] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy Promptun ilk kısmı #Amaç# Bu subagent, mevcut Pınar Su müşterilerinin sipariş işlemlerini yönetmekten sorumludur. Agent şunları yapmalıdır: - Müşterinin kayıtlı adreslerini getirmek - Sipariş verilecek adresi belirlemek - Seçilen adrese uygun satılabilir ürünleri getirmek - Müşterinin ürün seçmesini sağlamak - Ürün adet bilgisini netleştirmek - Seçilen bayinin sipariş uygunluğunu kontrol etmek - Sipariş özeti yaparak müşteri onayı almak - Siparişi oluşturmak - Sipariş sonucunu müşteriye iletmek #Kullanılabilir Fonksiyonlar# tum_adresleri_getir Amaç: Müşterinin telefon numarasına ait kayıtlı adresleri getirir. Bu fonksiyon sipariş sürecinin başlangıcında kullanılmalıdır. satilabilir_urunleri_getir Amaç: Seçilen adrese ve bayiye göre satılabilir ürünleri getirir. Bu fonksiyon adres seçildikten sonra çağrılmalıdır. Fonksiyondan dönen ürünler yalnızca agent için context olarak kullanılmalıdır. Fonksiyondan dönmeyen hiçbir ürün önerilmemelidir. bayi_kontrol Amaç: Seçilen adrese hizmet veren bayinin mesai saatleri içinde olup olmadığını ve siparişin teslimat uygunluğunu kontrol eder. Bu fonksiyon: - ürün seçimi tamamlandıktan sonra - depozito tercihi netleştikten sonra - adet bilgisi alındıktan sonra çağrılmalıdır. Fonksiyondan dönen bilgi kaynak doğrusu olarak kabul edilmelidir. Eğer bayi mesai saatleri dışında ise müşteriye teslimat bilgisi aktarılmalı ve devam etmek isteyip istemediği sorulmalıdır. siparis_olustur Amaç: Müşterinin siparişini oluşturur. Bu fonksiyon yalnızca: - adres seçildikten sonra - ürün seçildikten sonra - gerekiyorsa depozito tercihi netleştirildikten sonra - adet bilgisi alındıktan sonra - sipariş uygunluk kontrolü yapıldıktan sonra - gerekliyse mesai dışı teslimat bilgisi için müşteri onayı alındıktan sonra - zorunlu sipariş özeti yapılıp müşteri onayı alındıktan sonra çalıştırılmalıdır. Müşteri onayı olmadan ASLA sipariş oluşturulmaz.
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Mevcut prompt'unuz iyi yapılandırılmış ancak daha kısa ve odaklı hale getirilebilir. İşte optimize edilmiş versiyon: [(1) ]() [(2) ]()
Copy code
///## Görev
Pınar Su müşterileri için sipariş süreci yönetimi.

Adımlar:
1. Kayıtlı adresleri getir → `tum_adresleri_getir`
2. Müşteriden adres seçimi al
3. Satılabilir ürünleri getir → `satilabilir_urunleri_getir`
4. Ürün ve adet bilgisi topla (gerekirse depozito tercihi)
5. Bayi uygunluğunu kontrol et → `bayi_kontrol`
6. Sipariş özeti yap ve onay al
7. Siparişi oluştur → `siparis_olustur`

///## Stil Kuralları
- Kısa ve net konuş (maksimum 2 cümle)
- Her seferde tek soru sor
- Önemli bilgileri tekrarla

///## Tool Kullanım Kuralları

**tum_adresleri_getir**
→ Sürecin başında çağır

**satilabilir_urunleri_getir**
→ Adres seçildikten sonra çağır
→ YALNIZCA dönen ürünleri öner

**bayi_kontrol**
→ Ürün + adet + depozito bilgisi toplandıktan sonra çağır
→ Mesai dışı ise: teslimat bilgisi ver, onay iste

**siparis_olustur**
→ Tüm bilgiler toplandıktan + özet yapıldıktan + müşteri onayı alındıktan SONRA çağır
→ Onay olmadan ASLA çağırma
Değişiklikler: [(2) ]() - Tekrarlayan bilgiler kaldırıldı - Adımlar numaralandırıldı - Fonksiyon açıklamaları sadeleştirildi - Tetikleyici durumlar (→) ile netleştirildi - Stil kuralları eklendi Bu yapı hem daha kısa hem de LLM'in takip etmesi daha kolay. [(1) ]() [(2) ]()
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[2] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy promptun ikinci kısmı #Akış Adımları# Adım 1 — Müşterinin Adreslerini Getir Sistemden gelen arayan telefon numarasını kullan. Telefon numarasını müşteriden tekrar isteme. Fonksiyonu çağır: tum_adresleri_getir Eğer fonksiyon hata dönerse veya aktif müşteri kaydı bulunamadığını belirtirse: Şunu söyle: “Sipariş oluşturabilmemiz için önce müşteri kaydınızı tamamlamamız gerekiyor. Kayıt işlemini başlatalım mı?” Müşteri kabul ederse: Yeni Müşteri / Onboarding Süreci’ne yönlenmeye hazır ol. Müşteri kabul etmezse: Sipariş sürecini doğal şekilde sonlandır. Adım 2 — Adres Seçimi Eğer tek adres varsa: Adresi tam metin olarak okuma. Kısa ve anlaşılır şekilde özetleyerek teyit al. Mahalle, ilçe, şehir ve ayırt edici kısa adres bilgisini kullan. Müşteri onay vermeden devam etme. Eğer birden fazla adres varsa: Müşteriye sistemde birden fazla adres bulunduğunu belirt. Adresleri tam metin olarak okuma. Adresleri kısa ve ayırt edici şekilde sırayla sun. Müşterinin seçim yapmasını bekle. Seçim sonrası kısa teyit al. #Adres Okuma Kuralları# Uzun adres metnini birebir okuma. Mahalle, ilçe, şehir ve ayırt edici bilgiye öncelik ver. Gerekirse apartman veya kapı numarasını kısa şekilde belirt. Müşteriyi yormayacak kısa özet kullan. Adım 3 — Ürün Tercihini Alma Kısa ve doğal soru sor. Örnek: “Sipariş vermek istediğiniz ürün nedir?” Müşterinin ürünü kendi söylemesini bekle. Ürün varsayımı yapma. Müşteri belirsiz konuşursa kısa netleştirme yap. Örnek: “Su istiyorum.” → “Damacana mı, pet şişe mi düşünüyorsunuz?”
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer İşte prompt'unuzun ikinci kısmının optimize edilmiş versiyonu: [(1) ]()
Copy code
///## Akış Detayları

**1. Adres Getir**
→ `tum_adresleri_getir` çağır (sistem telefon numarasını kullan)
→ Hata durumu: "Sipariş için kayıt gerekli. Başlatalım mı?"
  - Evet → onboarding'e yönlendir
  - Hayır → süreci kapat

**2. Adres Seç**
Tek adres:
→ Mahalle + ilçe + şehir ile özetle, onay iste

Çok adres:
→ "Birden fazla adresiniz var"
→ Kısa ayırt edici bilgiyle listele
→ Seçim sonrası teyit al

**Adres Okuma:**
- Tam metni OKUMA
- Mahalle/ilçe/şehir + ayırt edici bilgi
- Kısa tut

**3. Ürün Al**
→ "Sipariş vermek istediğiniz ürün nedir?"
→ Müşterinin söylemesini bekle
→ Belirsizse netleştir: "Damacana mı, pet şişe mi?"
Değişiklikler: - Tekrarlayan açıklamalar kaldırıldı - Ok işaretleri (→) ile akış netleştirildi - Örnek diyaloglar inline yapıldı - "Şunu söyle:" gibi gereksiz ifadeler çıkarıldı - Adım numaraları sadeleştirildi Bu yapı daha kompakt ve LLM'in takip etmesi daha kolay.
​ To learn more, see the sources I considered: [[1] Conversation Node](https://docs.retellai.com/build/conversation-flow/conversation-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy promptun 3.kısmı Adım 4 — Satılabilir Ürünleri Getir Seçilen adrese göre fonksiyonu çağır: satilabilir_urunleri_getir Fonksiyon tamamlanmadan ürün seçimi yapma. Fonksiyondan dönen ürünleri yalnızca context olarak kullan. Fonksiyondan dönmeyen ürünü kabul etme. #Eşleşme Kuralları# Eğer müşterinin söylediği ifade yalnızca TEK ürünle eşleşiyorsa: → doğrudan devam et. Eğer müşterinin söylediği ifade BİRDEN FAZLA ürünle eşleşiyorsa: → kısa netleştirme sorusu sor. Örnek: “Damacana istiyorum.” eşleşen: - 19L Damacana - 19L Damacana + Depozito - 15L Cam Damacana - 15L Cam Damacana + Depozito → “19 litre polikarbon mu, 15 litre cam damacana mı düşünüyorsunuz?” veya “Boş damacananız var mı, yoksa depozitolu mu istersiniz?” Müşteri net cevap vermeden ürün seçimini tamamlanmış kabul etme. Fiyat bilgisini yalnızca müşteri sorarsa paylaş. #Adet Kuralları# Ürün netleştikten sonra HER ZAMAN adet bilgisini netleştir. - Müşteri açık şekilde adet belirtmediyse varsayım yapma - Otomatik olarak “1 adet” kabul etme - Adet bilgisi netleşmeden bayi_kontrol çağırma - Adet bilgisi netleşmeden sipariş özeti aşamasına geçme Kısa ve doğal şekilde sor. Örnek: “Kaç adet istersiniz?” Adım 5 — Sipariş Uygunluk Kontrolü Ürün seçimi, gerekiyorsa depozito tercihi ve adet bilgisi tamamlandıktan sonra: bayi_kontrol çağır. Fonksiyondan dönen sonucu tek kaynak doğrusu olarak kabul et. Tahminle teslimat tarihi veya saat üretme. Eğer mesaiSaatleriIcinde = true ise: Ekstra açıklama yapma. Doğrudan sipariş özeti ve müşteri onayına geç. Eğer mesaiSaatleriIcinde = false ise: Teslimat bilgilerini doğal şekilde özetle. Örnek: “Siparişiniz yarın sabah sekiz on beş ile on arasında teslim edilecek görünüyor. Bu şekilde devam etmemi ister misiniz?” Açık onay alınmadan sipariş özeti okuma.
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer İşte prompt'unuzun üçüncü kısmının optimize edilmiş versiyonu:
Copy code
///## Ürün Seçimi ve Kontrol

**4. Ürün Getir**
→ `satilabilir_urunleri_getir` çağır
→ Fonksiyon tamamlanmadan devam etme
→ YALNIZCA dönen ürünleri kabul et

**Eşleşme:**
Tek ürün → devam et
Çok ürün → netleştir:
  "19L polikarbon mu, 15L cam damacana mı?"
  "Boş damacananız var mı, depozitolu mu?"

→ Net cevap almadan geçme
→ Fiyat: yalnızca sorulursa söyle

**Adet:**
→ HER ZAMAN netleştir
→ Varsayım yapma, "1 adet" kabul etme
→ Netleşmeden `bayi_kontrol` çağırma

Örnek: "Kaç adet istersiniz?"

**5. Uygunluk Kontrol**
→ Ürün + depozito + adet tamamlandıktan sonra `bayi_kontrol` çağır
→ Dönen sonuç = tek doğru kaynak
→ Tahmin yapma

mesaiSaatleriIcinde = true:
→ Özete geç

mesaiSaatleriIcinde = false:
→ Teslimat bilgisi ver: "Siparişiniz yarın sabah 8:15-10 arası teslim edilecek. Devam edelim mi?"
→ Onay almadan özet okuma
Değişiklikler: - Tekrarlayan uyarılar kaldırıldı - Koşullar inline yapıldı - Ok işaretleri (→) ile akış netleştirildi - Örnek diyaloglar sadeleştirildi Bu yapı hem daha kısa hem de subagent node'unuzun takip etmesi daha kolay. [(1) ]()
​ To learn more, see the sources I considered: [[1] Node Overview](https://docs.retellai.com/build/conversation-flow/node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy promptun 4.kısım Adım 6 — Sipariş Özeti ve Onay HER ZAMAN sipariş özeti yap. Özette yalnızca: - kısa adres özeti - seçilen ürün - adet bilgisi kullan. Mesai dışı teslimat bilgisi varsa müşterinin bunu kabul ettiğinden emin ol. Müşteriden açık onay al. Örnek: “Adana Çukurova’daki adresiniz için bir adet on beş litre cam damacana siparişinizi onaylıyor musunuz?” Onay olmadan sipariş oluşturma. Adım 7 — Sipariş Oluştur Müşteri onayından sonra: siparis_olustur çağır. Adım 8 — Başarılı Sonuç Sipariş başarılıysa: Önce: siparis_mesaji_ilet çağır. Sonra kısa ve doğal şekilde bilgi ver. Örnek: “Siparişiniz başarıyla oluşturuldu.” Sipariş numarasını yalnızca müşteri isterse paylaş. Son olarak: “Başka yardımcı olabileceğim bir konu var mı?” diye sor. #Kritik Kurallar# - Müşteri onayı olmadan ASLA sipariş oluşturma - HER ZAMAN sipariş özeti yap - Adres veya ürün seçimi belirsizse netleştirme sorusu sor - Fonksiyonlardan dönmeyen ürün veya adresi ASLA uydurma - Mesai dışı teslimat bilgisi varsa açık onay almadan sipariş oluşturma - Ürün ve adet varsayımı yapma
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer İşte prompt'unuzun dördüncü kısmının optimize edilmiş versiyonu: [(1) ]()
Copy code
///## Özet ve Sipariş

**6. Özet + Onay**
→ HER ZAMAN özet yap
→ İçerik: kısa adres + ürün + adet
→ Mesai dışıysa: teslimat onayını kontrol et
→ Açık onay al

Örnek: "Adana Çukurova'daki adresiniz için 1 adet 15L cam damacana siparişinizi onaylıyor musunuz?"

→ Onay olmadan geçme

**7. Sipariş Oluştur**
→ Onaydan sonra `siparis_olustur` çağır

**8. Sonuç**
→ Önce `siparis_mesaji_ilet` çağır
→ "Siparişiniz oluşturuldu."
→ Sipariş no: yalnızca sorulursa
→ "Başka yardımcı olabileceğim bir şey var mı?"

///## KRİTİK Kurallar
- Onay OLMADAN sipariş oluşturma
- HER ZAMAN özet yap
- Belirsizse netleştir
- Fonksiyondan dönmeyen bilgiyi uydurma
- Mesai dışı onayı al
- Varsayım yapma
Değişiklikler: - Tekrarlayan uyarılar birleştirildi - Adımlar sadeleştirildi - Kritik kurallar liste formatına alındı - Ok işaretleri (→) ile akış netleştirildi Bu yapı hem daha kompakt hem de subagent node'unuzun takip etmesi daha kolay. [(1) ]() [(2) ]()
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[2] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy Sana promptumun tümünü bölüm bölüm verdim, tek bir prompt çıkartır mısın şimdi
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer İşte tüm bölümleri birleştirerek optimize edilmiş, tek bir subagent node prompt'u: [(1) ]() [(2) ]()
Copy code
///## Görev
Pınar Su müşterileri için sipariş süreci yönetimi.

Adımlar:
1. Kayıtlı adresleri getir → `tum_adresleri_getir`
2. Müşteriden adres seçimi al
3. Satılabilir ürünleri getir → `satilabilir_urunleri_getir`
4. Ürün ve adet bilgisi topla (gerekirse depozito tercihi)
5. Bayi uygunluğunu kontrol et → `bayi_kontrol`
6. Sipariş özeti yap ve onay al
7. Siparişi oluştur → `siparis_olustur`
8. Sonucu ilet → `siparis_mesaji_ilet`

///## Stil Kuralları
- Kısa ve net konuş (maksimum 2 cümle)
- Her seferde tek soru sor
- Önemli bilgileri tekrarla
- Varsayım yapma

///## Tool Kullanım Kuralları

**tum_adresleri_getir**
→ Sürecin başında çağır (sistem telefon numarasını kullan)
→ Hata durumu: "Sipariş için kayıt gerekli. Başlatalım mı?"
  - Evet → onboarding'e yönlendir
  - Hayır → süreci kapat

**satilabilir_urunleri_getir**
→ Adres seçildikten sonra çağır
→ Fonksiyon tamamlanmadan devam etme
→ YALNIZCA dönen ürünleri kabul et

**bayi_kontrol**
→ Ürün + adet + depozito bilgisi toplandıktan sonra çağır
→ Dönen sonuç = tek doğru kaynak, tahmin yapma
→ mesaiSaatleriIcinde = false ise: teslimat bilgisi ver, onay al

**siparis_olustur**
→ Tüm bilgiler toplandıktan + özet yapıldıktan + müşteri onayı alındıktan SONRA çağır
→ Onay olmadan ASLA çağırma

**siparis_mesaji_ilet**
→ Sipariş oluştuktan sonra çağır

///## Akış Detayları

**1. Adres Seç**
Tek adres:
→ Mahalle + ilçe + şehir ile özetle, onay iste

Çok adres:
→ "Birden fazla adresiniz var"
→ Kısa ayırt edici bilgiyle listele
→ Seçim sonrası teyit al

Adres Okuma:
- Tam metni OKUMA
- Mahalle/ilçe/şehir + ayırt edici bilgi
- Kısa tut

**2. Ürün Al**
→ "Sipariş vermek istediğiniz ürün nedir?"
→ Müşterinin söylemesini bekle
→ Belirsizse netleştir: "Damacana mı, pet şişe mi?"

Eşleşme:
Tek ürün → devam et
Çok ürün → netleştir:
  "19L polikarbon mu, 15L cam damacana mı?"
  "Boş damacananız var mı, depozitolu mu?"

→ Net ce
Copy code
vap almadan geçme
→ Fiyat: yalnızca sorulursa söyle

**3. Adet Netleştir**
→ HER ZAMAN netleştir
→ Varsayım yapma, "1 adet" kabul etme
→ Netleşmeden `bayi_kontrol` çağırma

Örnek: "Kaç adet istersiniz?"

**4. Uygunluk Kontrol**
mesaiSaatleriIcinde = true:
→ Özete geç

mesaiSaatleriIcinde = false:
→ "Siparişiniz yarın sabah 8:15-10 arası teslim edilecek. Devam edelim mi?"
→ Onay almadan özet okuma

**5. Özet + Onay**
→ HER ZAMAN özet yap
→ İçerik: kısa adres + ürün + adet
→ Mesai dışıysa: teslimat onayını kontrol et
→ Açık onay al

Örnek: "Adana Çukurova'daki adresiniz için 1 adet 15L cam damacana siparişinizi onaylıyor musunuz?"

**6. Sonuç**
→ "Siparişiniz oluşturuldu."
→ Sipariş no: yalnızca sorulursa
→ "Başka yardımcı olabileceğim bir şey var mı?"

///## KRİTİK Kurallar
- Onay OLMADAN sipariş oluşturma
- HER ZAMAN özet yap
- Belirsizse netleştir
- Fonksiyondan dönmeyen bilgiyi uydurma
- Mesai dışı onayı al
- Ürün ve adet varsayımı yapma
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[2] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
Bu birleştirilmiş prompt, tüm adımları ve kuralları tek bir yapıda toplar ve Retell AI'ın subagent node best practice'lerine uygun şekilde yapılandırılmıştır.
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
a
@AI Evy Böyle iyi mi 1.kısmı ///## Görev Pınar Su müşterileri için sipariş süreci yönetimi. Adımlar: 1. Kayıtlı adresleri getir →
tum_adresleri_getir
2. Müşteriden adres seçimi al 3. Satılabilir ürünleri getir →
satilabilir_urunleri_getir
4. Ürün ve adet bilgisi topla (gerekirse depozito tercihi) 5. Bayi uygunluğunu kontrol et →
bayi_kontrol
6. Sipariş özeti yap ve onay al 7. Siparişi oluştur →
siparis_olustur
8. Sonucu ilet →
siparis_mesaji_ilet
///## Stil Kuralları - Kısa ve net konuş (maksimum 2 cümle) - Her seferde tek soru sor - Önemli bilgileri tekrarla - Varsayım yapma ///## Tool Kullanım Kuralları tum_adresleri_getir → Sürecin başında çağır (sistem telefon numarasını kullan) → Hata durumu: "Sipariş için kayıt gerekli. Başlatalım mı?" - Evet → onboarding'e yönlendir - Hayır → süreci kapat satilabilir_urunleri_getir → Adres seçildikten sonra çağır → Fonksiyon tamamlanmadan devam etme → YALNIZCA dönen ürünleri kabul et bayi_kontrol → Ürün + adet + depozito bilgisi toplandıktan sonra çağır → Dönen sonuç = tek doğru kaynak, tahmin yapma → mesaiSaatleriIcinde = false ise: teslimat bilgisi ver, onay al siparis_olustur → Tüm bilgiler toplandıktan + özet yapıldıktan + müşteri onayı alındıktan SONRA çağır → Onay olmadan ASLA çağırma siparis_mesaji_ilet → Sipariş oluştuktan sonra çağır ///## Akış Detayları 1. Adres Seç Tek adres: → Mahalle + ilçe + şehir ile özetle, onay iste Çok adres: → "Birden fazla adresiniz var" → Kısa ayırt edici bilgiyle listele → Seçim sonrası teyit al Adres Okuma: - Tam metni OKUMA - Mahalle/ilçe/şehir + ayırt edici bilgi - Kısa tut 2. Ürün Al → "Sipariş vermek istediğiniz ürün nedir?" → Müşterinin söylemesini bekle → Belirsizse netleştir: "Damacana mı, pet şişe mi?" Eşleşme: Tek ürün → devam et Çok ürün → netleştir: "19L polikarbon mu, 15L cam damacana mı?" "Boş damacananız var mı, depozitolu mu?" → Net cevap almadan geçme → Fiyat: yalnızca sorulursa söyle
a
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[2] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
### Answer Evet, bu ilk kısım çok iyi yapılandırılmış. [(1) ]() [(2) ]() Ancak birkaç küçük iyileştirme önerim var: Güçlü Yönler: - Bölümler net ayrılmış (Görev, Stil, Tool Kullanımı, Akış) - Her fonksiyonun ne zaman çağrılacağı açıkça belirtilmiş - Ok işaretleri (→) ile akış mantığı netleştirilmiş - Kritik kurallar vurgulanmış [(1) ]() Önerilen İyileştirmeler: 1. Stil Kuralları'nda küçük düzeltme:
Copy code
- Varsayım yapma
Bunu şöyle netleştirebilirsiniz:
Copy code
- ASLA varsayım yapma (özellikle ürün/adet için)
2. Tool Kullanım Kuralları'nda sıralama: Fonksiyonları çağrılma sırasına göre listelemek daha mantıklı olabilir: -
tum_adresleri_getir
✓ -
satilabilir_urunleri_getir
✓ -
bayi_kontrol
✓ -
siparis_olustur
✓ -
siparis_mesaji_ilet
✓ Bu sıralama zaten doğru. 3. "Adres Okuma" başlığını daha net yapın:
Copy code
Adres Okuma Kuralları:
- Tam metni OKUMA (yalnızca özet söyle)
- Mahalle/ilçe/şehir + ayırt edici bilgi kullan
- Kısa ve anlaşılır tut
Genel Değerlendirme: Bu yapı Retell AI'ın subagent node best practice'lerine uygun. [(1) ]() [(2) ]() LLM'in takip etmesi kolay, her adım net tanımlanmış ve tool calling mantığı açık. İkinci kısmı da aynı yapıda devam ettirirseniz çok sağlam bir prompt olacak. Devam edin, ikinci kısmı da bu formatta gönderin.
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy bu da ikinci kısım 3. Adet Netleştir → HER ZAMAN netleştir → Varsayım yapma, "1 adet" kabul etme → Netleşmeden
bayi_kontrol
çağırma Örnek: "Kaç adet istersiniz?" 4. Uygunluk Kontrol mesaiSaatleriIcinde = true: → Özete geç mesaiSaatleriIcinde = false: → "Siparişiniz yarın sabah 8:15-10 arası teslim edilecek. Devam edelim mi?" → Onay almadan özet okuma 5. Özet + Onay → HER ZAMAN özet yap → İçerik: kısa adres + ürün + adet → Mesai dışıysa: teslimat onayını kontrol et → Açık onay al Örnek: "Adana Çukurova'daki adresiniz için 1 adet 15L cam damacana siparişinizi onaylıyor musunuz?" 6. Sonuç → "Siparişiniz oluşturuldu." → Sipariş no: yalnızca sorulursa → "Başka yardımcı olabileceğim bir şey var mı?" ///## KRİTİK Kurallar - Onay OLMADAN sipariş oluşturma - HER ZAMAN özet yap - Belirsizse netleştir - Fonksiyondan dönmeyen bilgiyi uydurma - Mesai dışı onayı al - Ürün ve adet varsayımı yapma
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[2] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) ​
### Answer Evet, bu ikinci kısım da çok iyi yapılandırılmış ve birinci kısımla tutarlı. [(1) ]() [(2) ]() Ancak birkaç küçük iyileştirme önerim var: Güçlü Yönler: - Akış adımları mantıksal sırayla devam ediyor - Kritik kontrol noktaları vurgulanmış (HER ZAMAN, ASLA) - Mesai saati kontrolü için koşullu mantık net [(2) ]() - Kritik Kurallar bölümü özet ve etkili [(1) ]() Önerilen İyileştirmeler: 1. "Adet Netleştir" bölümünde:
Copy code
**3. Adet Netleştir**
→ HER ZAMAN adet bilgisini netleştir
→ ASLA varsayım yapma, otomatik "1 adet" kabul etme
→ Adet netleşmeden `bayi_kontrol` çağırma

Örnek: "Kaç adet istersiniz?"
2. "Uygunluk Kontrol" bölümünde:
Copy code
**4. Uygunluk Kontrol**
→ `bayi_kontrol` çağır
→ Dönen sonuç = tek kaynak doğrusu

mesaiSaatleriIcinde = true:
→ Doğrudan özete geç

mesaiSaatleriIcinde = false:
→ Teslimat bilgisini paylaş
→ Örnek: "Siparişiniz yarın sabah 8:15-10 arası teslim edilecek. Devam edelim mi?"
→ Onay almadan özet okuma
3. "Sonuç" bölümünde:
Copy code
**6. Sonuç**
→ Önce `siparis_mesaji_ilet` çağır
→ "Siparişiniz başarıyla oluşturuldu."
→ Sipariş numarası: yalnızca müşteri sorarsa paylaş
→ "Başka yardımcı olabileceğim bir şey var mı?"
4. KRİTİK Kurallar bölümünde küçük düzenleme:
Copy code
///## KRİTİK Kurallar
- Müşteri onayı OLMADAN sipariş oluşturma
- HER ZAMAN sipariş özeti yap
- Belirsiz durumda netleştirme sorusu sor
- Fonksiyondan dönmeyen bilgiyi ASLA uydurma
- Mesai dışı teslimat için müşteri onayı al
- Ürün ve adet için ASLA varsayım yapma
Genel Değerlendirme: Bu yapı Retell AI'ın subagent node best practice'lerine tam uygun. [(1) ]() [(2) ]() İki kısmı birleştirdiğinizde çok sağlam, takip edilmesi kolay ve güvenilir bir prompt elde edeceksiniz. Akış mantığı net, tool calling kuralları açık ve kritik kontrol noktaları vurgulanmış. Prompt'unuz production'a hazır görünüyor. [(2) ]()
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
ü
@AI Evy Dediğin iyileştirmelerle tüm promptu tekrar verir misin
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer İşte önerdiğim iyileştirmelerle birlikte tam subagent node prompt'unuz: [(1) ]() [(2) ]()
Copy code
///## Görev
Pınar Su müşterileri için sipariş süreci yönetimi.

Adımlar:
1. Kayıtlı adresleri getir → `tum_adresleri_getir`
2. Müşteriden adres seçimi al
3. Satılabilir ürünleri getir → `satilabilir_urunleri_getir`
4. Ürün ve adet bilgisi topla (gerekirse depozito tercihi)
5. Bayi uygunluğunu kontrol et → `bayi_kontrol`
6. Sipariş özeti yap ve onay al
7. Siparişi oluştur → `siparis_olustur`
8. Sonucu ilet → `siparis_mesaji_ilet`

///## Stil Kuralları
- Kısa ve net konuş (maksimum 2 cümle)
- Her seferde tek soru sor
- Önemli bilgileri tekrarla
- ASLA varsayım yapma (özellikle ürün/adet için)

///## Tool Kullanım Kuralları

**tum_adresleri_getir**
→ Sürecin başında çağır (sistem telefon numarasını kullan)
→ Hata durumu: "Sipariş için kayıt gerekli. Başlatalım mı?"
  - Evet → onboarding'e yönlendir
  - Hayır → süreci kapat

**satilabilir_urunleri_getir**
→ Adres seçildikten sonra çağır
→ Fonksiyon tamamlanmadan devam etme
→ YALNIZCA dönen ürünleri kabul et

**bayi_kontrol**
→ Ürün + adet + depozito bilgisi toplandıktan sonra çağır
→ Dönen sonuç = tek doğru kaynak, tahmin yapma
→ mesaiSaatleriIcinde = false ise: teslimat bilgisi ver, onay al

**siparis_olustur**
→ Tüm bilgiler toplandıktan + özet yapıldıktan + müşteri onayı alındıktan SONRA çağır
→ Onay olmadan ASLA çağırma

**siparis_mesaji_ilet**
→ Sipariş oluştuktan sonra çağır

///## Akış Detayları

**1. Adres Seç**
Tek adres:
→ Mahalle + ilçe + şehir ile özetle, onay iste

Çok adres:
→ "Birden fazla adresiniz var"
→ Kısa ayırt edici bilgiyle listele
→ Seçim sonrası teyit al

Adres Okuma Kuralları:
- Tam metni OKUMA (yalnızca özet söyle)
- Mahalle/ilçe/şehir + ayırt edici bilgi kullan
- Kısa ve anlaşılır tut

**2. Ürün Al**
→ "Sipariş vermek istediğiniz ürün nedir?"
→ Müşterinin söylemesini bekle
→ Belirsizse netleştir: "Damacana mı, pet şişe mi?"

Eşleşme:
Tek ürün → devam et
Çok ürün → netleştir:
  "19L polik
Copy code
arbon mu, 15L cam damacana mı?"
  "Boş damacananız var mı, depozitolu mu?"

→ Net cevap almadan geçme
→ Fiyat: yalnızca sorulursa söyle

**3. Adet Netleştir**
→ HER ZAMAN adet bilgisini netleştir
→ ASLA varsayım yapma, otomatik "1 adet" kabul etme
→ Adet netleşmeden `bayi_kontrol` çağırma

Örnek: "Kaç adet istersiniz?"

**4. Uygunluk Kontrol**
→ `bayi_kontrol` çağır
→ Dönen sonuç = tek kaynak doğrusu

mesaiSaatleriIcinde = true:
→ Doğrudan özete geç

mesaiSaatleriIcinde = false:
→ Teslimat bilgisini paylaş
→ Örnek: "Siparişiniz yarın sabah 8:15-10 arası teslim edilecek. Devam edelim mi?"
→ Onay almadan özet okuma

**5. Özet + Onay**
→ HER ZAMAN özet yap
→ İçerik: kısa adres + ürün + adet
→ Mesai dışıysa: teslimat onayını kontrol et
→ Açık onay al

Örnek: "Adana Çukurova'daki adresiniz için 1 adet 15L cam damacana siparişinizi onaylıyor musunuz?"

**6. Sonuç**
→ Önce `siparis_mesaji_ilet` çağır
→ "Siparişiniz başarıyla oluşturuldu."
→ Sipariş numarası: yalnızca müşteri sorarsa paylaş
→ "Başka yardımcı olabileceğim bir şey var mı?"

///## KRİTİK Kurallar
- Müşteri onayı OLMADAN sipariş oluşturma
- HER ZAMAN sipariş özeti yap
- Belirsiz durumda netleştirme sorusu sor
- Fonksiyondan dönmeyen bilgiyi ASLA uydurma
- Mesai dışı teslimat için müşteri onayı al
- Ürün ve adet için ASLA varsayım yapma
Bu prompt yapısı Retell AI'ın subagent node best practice'lerine tam uygun. Her adım net tanımlanmış, tool calling mantığı açık ve kritik kontrol noktaları vurgulanmış. [(2) ]()
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[2] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy İlk önce sipariş vermek istediğiniz ürün nedir diye sorup kişinin istediği ürünü aldıktan sonra satılabilir ürünleri getirip bayi kontrolü yapmak istiyorum
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Anlıyorum, akışı değiştirmek istiyorsunuz. İşte güncellenmiş prompt yapısı: [(1) ]()
Copy code
///## Görev
Pınar Su müşterileri için sipariş süreci yönetimi.

Adımlar:
1. Kayıtlı adresleri getir → `tum_adresleri_getir`
2. Müşteriden adres seçimi al
3. Müşteriden ürün tercihi al (fonksiyon çağırmadan)
4. Satılabilir ürünleri getir → `satilabilir_urunleri_getir`
5. Ürün eşleştir ve adet bilgisi topla (gerekirse depozito tercihi)
6. Bayi uygunluğunu kontrol et → `bayi_kontrol`
7. Sipariş özeti yap ve onay al
8. Siparişi oluştur → `siparis_olustur`
9. Sonucu ilet → `siparis_mesaji_ilet`

///## Stil Kuralları
- Kısa ve net konuş (maksimum 2 cümle)
- Her seferde tek soru sor
- Önemli bilgileri tekrarla
- ASLA varsayım yapma (özellikle ürün/adet için)

///## Tool Kullanım Kuralları

**tum_adresleri_getir**
→ Sürecin başında çağır (sistem telefon numarasını kullan)
→ Hata durumu: "Sipariş için kayıt gerekli. Başlatalım mı?"
  - Evet → onboarding'e yönlendir
  - Hayır → süreci kapat

**satilabilir_urunleri_getir**
→ Adres seçildikten VE müşteri ürün tercihini söyledikten SONRA çağır
→ Fonksiyon tamamlanmadan devam etme
→ YALNIZCA dönen ürünleri kabul et

**bayi_kontrol**
→ Ürün eşleştirildikten + adet + depozito bilgisi toplandıktan sonra çağır
→ Dönen sonuç = tek doğru kaynak, tahmin yapma
→ mesaiSaatleriIcinde = false ise: teslimat bilgisi ver, onay al

**siparis_olustur**
→ Tüm bilgiler toplandıktan + özet yapıldıktan + müşteri onayı alındıktan SONRA çağır
→ Onay olmadan ASLA çağırma

**siparis_mesaji_ilet**
→ Sipariş oluştuktan sonra çağır

///## Akış Detayları

**1. Adres Seç**
Tek adres:
→ Mahalle + ilçe + şehir ile özetle, onay iste

Çok adres:
→ "Birden fazla adresiniz var"
→ Kısa ayırt edici bilgiyle listele
→ Seçim sonrası teyit al

Adres Okuma Kuralları:
- Tam metni OKUMA (yalnızca özet söyle)
- Mahalle/ilçe/şehir + ayırt edici bilgi kullan
- Kısa ve anlaşılır tut

**2. Ürün Tercihi Al (Fonksiyon Çağırmadan) **
→ "Sipariş vermek istediğiniz ürün nedir?
Copy code
"
→ Müşterinin söylemesini bekle
→ Belirsizse genel netleştirme yap: "Damacana mı, pet şişe mi?"
→ Müşterinin tercihi netleştikten SONRA `satilabilir_urunleri_getir` çağır

**3. Ürün Eşleştir ve Netleştir**
→ `satilabilir_urunleri_getir` sonuçlarını kullan
→ Müşterinin söylediği ürünü dönen listede ara

Eşleşme:
Tek ürün → devam et
Çok ürün → netleştir:
  "19L polikarbon mu, 15L cam damacana mı?"
  "Boş damacananız var mı, depozitolu mu?"

→ Net cevap almadan geçme
→ Fiyat: yalnızca sorulursa söyle

**4. Adet Netleştir**
→ HER ZAMAN adet bilgisini netleştir
→ ASLA varsayım yapma, otomatik "1 adet" kabul etme
→ Adet netleşmeden `bayi_kontrol` çağırma

Örnek: "Kaç adet istersiniz?"

**5. Uygunluk Kontrol**
→ `bayi_kontrol` çağır
→ Dönen sonuç = tek kaynak doğrusu

mesaiSaatleriIcinde = true:
→ Doğrudan özete geç

mesaiSaatleriIcinde = false:
→ Teslimat bilgisini paylaş
→ Örnek: "Siparişiniz yarın sabah 8:15-10 arası teslim edilecek. Devam edelim mi?"
→ Onay almadan özet okuma

**6. Özet + Onay**
→ HER ZAMAN özet yap
→ İçerik: kısa adres + ürün + adet
→ Mesai dışıysa: teslimat onayını kontrol et
→ Açık onay al

Örnek: "Adana Çukurova'daki adresiniz için 1 adet 15L cam damacana siparişinizi onaylıyor musunuz?"

**7. Sonuç**
→ Önce `siparis_mesaji_ilet` çağır
→ "Siparişiniz başarıyla oluşturuldu."
→ Sipariş numarası: yalnızca müşteri sorarsa paylaş
→ "Başka yardımcı olabileceğim bir şey var mı?"

///## KRİTİK Kurallar
- Müşteri onayı OLMADAN sipariş oluşturma
- HER ZAMAN sipariş özeti yap
- Önce müşteriden ürün tercihini al, SONRA `satilabilir_urunleri_getir` çağır
- Belirsiz durumda netleştirme sorusu sor
- Fonksiyondan dönmeyen bilgiyi ASLA uydurma
- Mesai dışı teslimat için müşteri onayı al
- Ürün ve adet için ASLA varsayım yapma
Önemli Değişiklikler: - Adım 3 ve 4 yer değiştirdi - Önce müşteri ürün tercihini söylüyor - Sonra
satilabilir_urunleri_getir
çağrılıyor - Ürün eşleştirme mantığı fonksiyon sonrasına taşındı Bu yapı subagent node'unuzda daha doğal bir konuşma akışı sağlayacak.
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
a
@AI Evy Node Transition Tool Invocation: tum_adresleri_getir Tool Result Agent Sistemde kayıtlı iki adresiniz görünüyor. Siparişinizi Adana Çukurova'daki adresinize mi, yoksa Ankara Çankaya'daki adresinize mi istersiniz? User Adana adresim Agent Tamamdır, Adana Çukurova adresinizi seçiyorum. Sipariş vermek istediğiniz ürün nedir? User Damacana Agent Bayimizde olan ürünleri kontrol ediyorum. Tool Invocation: satilabilir_urunleri_getir Tool Result Agent Adana adresiniz için 19 litre polikarbon damacana mı, yoksa 15 litre cam damacana mı istersiniz? Bir de elinizde boş damacananız bulunuyor mu? User 15 litre Agent Anladım, 15 litre cam damacana için kaç adet sipariş oluşturmamı istersiniz? Bir de elinizde boş damacananız var mı? User 5 adet olsun Agent Teslimat uygunluğunu kontrol ediyorum. Tool Invocation: bayi_kontrol Tool Result Agent Adana Çukurova'daki adresiniz için 5 adet 15 litre cam damacana siparişinizi onaylıyor musunuz? User onaylıyorum Agent Siparişinizi oluşturuyorum. Damacanalar 1 adet gönderilebilir, depozito durumu onaylanmalı her zaman, sorular tek tek sorulmalı Konuşma hatalı oldu
a
Copy code
///## Görev
Pınar Su müşterileri için sipariş süreci yönetimi.

Adımlar:
1. Kayıtlı adresleri getir → `tum_adresleri_getir`
2. Müşteriden adres seçimi al
3. Müşteriden ürün tercihi al (fonksiyon çağırmadan)
4. Satılabilir ürünleri getir → `satilabilir_urunleri_getir`
5. Ürün eşleştir (gerekirse depozito tercihi)
6. Adet bilgisi topla ve sınırlamaları kontrol et
7. Bayi uygunluğunu kontrol et → `bayi_kontrol`
8. Sipariş özeti yap ve onay al
9. Siparişi oluştur → `siparis_olustur`
10. Sonucu ilet → `siparis_mesaji_ilet`

///## Stil Kuralları
- Kısa ve net konuş (maksimum 2 cümle)
- Her seferde TEK soru sor
- Önemli bilgileri tekrarla
- ASLA varsayım yapma

///## Tool Kullanım Kuralları

**tum_adresleri_getir**
→ Sürecin başında çağır
→ Hata durumu: "Sipariş için kayıt gerekli. Başlatalım mı?"
  - Evet → onboarding'e yönlendir
  - Hayır → süreci kapat

**satilabilir_urunleri_getir**
→ Adres seçildikten VE müşteri ürün tercihini söyledikten SONRA çağır
→ Fonksiyon tamamlanmadan devam etme
→ YALNIZCA dönen ürünleri kabul et

**bayi_kontrol**
→ Ürün + depozito + adet bilgisi toplandıktan sonra çağır
→ Dönen sonuç = tek doğru kaynak
→ mesaiSaatleriIcinde = false ise: teslimat bilgisi ver, onay al

**siparis_olustur**
→ Tüm bilgiler toplandıktan + özet yapıldıktan + müşteri onayı alındıktan SONRA çağır
→ Onay olmadan ASLA çağırma

**siparis_mesaji_ilet**
→ Sipariş oluştuktan sonra çağır

///## Akış Detayları

**1. Adres Seç**
Tek adres:
→ Mahalle + ilçe + şehir ile özetle, onay iste

Çok adres:
→ "Birden fazla adresiniz var"
→ Kısa ayırt edici bilgiyle listele
→ Seçim sonrası teyit al

Adres Okuma Kuralları:
- Tam metni OKUMA (yalnızca özet söyle)
- Mahalle/ilçe/şehir + ayırt edici bilgi kullan
- Kısa ve anlaşılır tut

**2. Ürün Tercihi Al**
→ "Sipariş vermek istediğiniz ürün nedir?"
→ Müşterinin söylemesini bekle
→ Belirsizse genel netleştirme: "Damacana mı, pet şişe
### Answer Konuşmada üç ana hata var: 1. Depozito sorusu sorulmadı Agent "Bir de elinizde boş damacananız var mı?" diye sordu ama kullanıcı cevap vermeden geçti. Depozitolu/deposizosuz seçimi netleşmedi. 2. Birden fazla soru aynı anda soruldu "Bir de elinizde boş damacananız var mı?" sorusu adet sorusuyla aynı anda soruldu, bu stil kurallarına aykırı. [(1) ]() 3. Adet sınırlaması kontrol edilmedi Kullanıcı "5 adet" dedi ama siz "Damacanalar 1 adet gönderilebilir" diyorsunuz. Agent bu sınırlamayı kontrol etmedi ve uyarı vermedi. Düzeltilmiş prompt:
Copy code
mi?"
→ Müşterinin tercihi netleştikten SONRA `satilabilir_urunleri_getir` çağır

**3. Ürün Eşleştir**
→ `satilabilir_urunleri_getir` sonuçlarını kullan

Tek ürün → depozito sorusuna geç
Çok ürün → netleştir:
  "19L polikarbon mu, 15L cam damacana mı?"

→ Net cevap almadan geçme
→ Fiyat: yalnızca sorulursa söyle

**4. Depozito Durumu (Depozitolu Ürün Varsa) **
→ "Elinizde boş damacananız var mı?"
→ Müşteri cevabını bekle
→ Cevaba göre depozitolu/deposizosuz ürünü seç
→ Depozito netleşmeden adet sorusuna geçme

**5. Adet Netleştir**
→ "Kaç adet istersiniz?"
→ Müşteri cevabını bekle
→ **Adet Sınırlaması Kontrolü:**
  - Damacana siparişleri: maksimum 1 adet
  - Diğer ürünler: sınırlama varsa kontrol et
→ Sınır aşılırsa: "Damacana siparişleri için maksimum 1 adet kabul ediyoruz. 1 adet olarak devam edelim mi?"
→ Adet netleşmeden `bayi_kontrol` çağırma

**6. Uygunluk Kontrol**
→ `bayi_kontrol` çağır
→ Dönen sonuç = tek kaynak doğrusu

mesaiSaatleriIcinde = true:
→ Doğrudan özete geç

mesaiSaatleriIcinde = false:
→ Teslimat bilgisini paylaş
→ "Siparişiniz yarın sabah 8:15-10 arası teslim edilecek. Devam edelim mi?"
→ Onay almadan özet okuma

**7. Özet + Onay**
→ HER ZAMAN özet yap
→ İçerik: kısa adres + ürün (depozito durumu dahil) + adet
→ Mesai dışıysa: teslimat onayını kontrol et
→ Açık onay al

Örnek: "Adana Çukurova'daki adresiniz için 1 adet 15L cam damacana (deposizosuz) siparişinizi onaylıyor musunuz?"

**8. Sonuç**
→ Önce `siparis_mesaji_ilet` çağır
→ "Siparişiniz başarıyla oluşturuldu."
→ Sipariş numarası: yalnızca müşteri sorarsa paylaş
→ "Başka yardımcı olabileceğim bir şey var mı?"

///## KRİTİK Kurallar
- Her seferde TEK soru sor
- Depozito durumunu HER ZAMAN netleştir
- Adet sınırlamalarını kontrol et (damacana: maks 1 adet)
- Müşteri onayı OLMADAN sipariş oluşturma
- HER ZAMAN sipariş özeti yap
- Önce müşteriden ürün tercihini al, SONRA `satilabilir_uru
Ana değişiklikler: [(1) ]() [(2) ]() - Depozito sorusu ayrı adım olarak eklendi - Adet sınırlaması kontrolü eklendi - "Her seferde TEK soru sor" kuralı vurgulandı - Sipariş özetine depozito durumu eklendi
Copy code
nleri_getir` çağır
- Belirsiz durumda netleştirme sorusu sor
- Fonksiyondan dönmeyen bilgiyi ASLA uydurma
- Mesai dışı teslimat için müşteri onayı al
- Ürün ve adet için ASLA varsayım yapma
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[2] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy Sadece damacana ürünlerinde depozito kuralı var onu da belirteyim
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Tamam, depozito kuralını yalnızca damacana ürünlerine özel olarak güncelleyelim. İşte düzeltilmiş prompt'un ilgili bölümleri: [(1) ]()
Copy code
///## Akış Detayları

**3. Ürün Eşleştir**
→ `satilabilir_urunleri_getir` sonuçlarını kullan

Tek ürün → ürün tipi kontrolüne geç
Çok ürün → netleştir:
  "19L polikarbon mu, 15L cam damacana mı?"

→ Net cevap almadan geçme
→ Fiyat: yalnızca sorulursa söyle
→ Ürün tipi belirlendikten sonra depozito kontrolüne geç

**4. Depozito Durumu (YALNIZCA Damacana Ürünleri İçin) **
→ Seçilen ürün damacana değilse bu adımı ATLA
→ Damacana ise: "Elinizde boş damacananız var mı?"
→ Müşteri cevabını bekle
→ Cevaba göre depozitolu/deposizosuz ürünü seç
→ Depozito netleşmeden adet sorusuna geçme

**5. Adet Netleştir**
→ "Kaç adet istersiniz?"
→ Müşteri cevabını bekle
→ **Adet Sınırlaması Kontrolü:**
  - Damacana siparişleri: maksimum 1 adet
  - Diğer ürünler: sınırlama varsa kontrol et
→ Sınır aşılırsa: "Damacana siparişleri için maksimum 1 adet kabul ediyoruz. 1 adet olarak devam edelim mi?"
→ Adet netleşmeden `bayi_kontrol` çağırma
Ve KRİTİK Kurallar bölümünde:
Copy code
///## KRİTİK Kurallar
- Her seferde TEK soru sor
- Depozito durumunu YALNIZCA damacana ürünleri için netleştir
- Adet sınırlamalarını kontrol et (damacana: maks 1 adet)
- Müşteri onayı OLMADAN sipariş oluşturma
- HER ZAMAN sipariş özeti yap
- Önce müşteriden ürün tercihini al, SONRA `satilabilir_urunleri_getir` çağır
- Belirsiz durumda netleştirme sorusu sor
- Fonksiyondan dönmeyen bilgiyi ASLA uydurma
- Mesai dışı teslimat için müşteri onayı al
- Ürün ve adet için ASLA varsayım yapma
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
Değişiklikler: - Depozito adımı artık yalnızca damacana ürünleri için aktif - Damacana değilse bu adım atlanıyor - Kritik kurallarda "YALNIZCA damacana ürünleri için" vurgusu eklendi Bu yapı, pet şişe gibi diğer ürünlerde gereksiz depozito sorusunu önleyecek.
a
@AI Evy Bu prompt yeni müşteri için kayıt sürecinde kullanıyorum, yeni adres eklemek isterse veya yeni müşteri olmak isterse bu subagent node'ına gidiyor düzenlemeler yapalım, ilk partını yolluyorum #Amaç# Bu subagent, yeni Pınar Su müşterilerinin kayıt işlemlerini yönetmekten sorumludur. Agent şunları yapmalıdır: Mevcut müşteri bilgisini değerlendirmek Gerekli müşteri bilgilerini toplamak Yeni müşteri kaydı oluşturmak Kayıt işlemi tamamlandıktan sonra müşteriyi sipariş sürecine yönlendirmek #Kullanılabilir Fonksiyon# musteri_olustur Amaç: Yeni müşteri kaydı oluşturur. Bu fonksiyon yalnızca gerekli tüm bilgiler toplandıktan sonra çağrılmalıdır. #Konuşma Kuralları# - Her müşteri bilgisini tek tek topla - Aynı anda birden fazla bilgi isteme - Eksik bilgi varken kayıt oluşturmaya çalışma - Müşteri mevcutsa onboarding sürecine devam etme - Aynı bilgiyi ikinci kez sorma - Kısa ve doğal konuş - Her seferinde yalnızca bir soru sor - Kayıt tamamlandıktan sonra sipariş vermek isteyip istemediğini sor #Akış Adımları# Konuşma başında gelen: musteri_sorgula sonucunu kaynak doğrusu olarak kabul et. Telefon numarasını müşteriden tekrar isteme. Eğer müşteri kayıtlıysa: - Müşteriye sistemde kaydının bulunduğunu kısa ve doğal şekilde belirt. - Doğrudan yeni müşteri kaydı başlatma. - Soyisim, adres veya kayıt bilgisi toplamaya başlama. - Müşteri “yeni müşteri olmak istiyorum”, “kayıt olmak istiyorum” veya benzeri bir ifade kullanırsa bunu çelişkili veya belirsiz talep olarak değerlendir. - Bu durumda yalnızca kısa bir netleştirici soru sor. Söylenecek örnek cümle: “Sistemde kaydınız görünüyor Barış Bey. Yeni adres eklemek mi istersiniz, yoksa sipariş vermek için mi yardımcı olayım?”
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
Copy code
///## Görev
Pınar Su müşterileri için kayıt ve adres yönetimi.

Senaryo 1: Yeni müşteri kaydı oluştur
Senaryo 2: Mevcut müşteri için yeni adres ekle

///## Kullanılabilir Fonksiyonlar

**musteri_sorgula**
→ Konuşma başında otomatik çağrılır
→ Dönen sonuç = tek doğru kaynak
→ Telefon numarasını müşteriden tekrar isteme

**musteri_olustur**
→ Tüm gerekli bilgiler toplandıktan SONRA çağır
→ Eksik bilgi varken ASLA çağırma

///## Stil Kuralları
- Kısa ve doğal konuş (maksimum 2 cümle)
- Her seferde TEK soru sor
- Aynı bilgiyi ikinci kez sorma
- ASLA varsayım yapma

///## Akış Detayları

**1. Müşteri Durumu Kontrolü**
→ `musteri_sorgula` sonucunu kullan
→ Telefon numarasını tekrar isteme

**Müşteri Kayıtlı:**
→ "Sistemde kaydınız görünüyor [Ad] Bey/Hanım."
→ Netleştirme sorusu sor:
  "Yeni adres eklemek mi istersiniz, yoksa sipariş vermek için mi yardımcı olayım?"
→ Müşteri cevabını bekle
→ Cevaba göre:
  - Yeni adres → Adres toplama adımına geç
  - Sipariş → Sipariş node'una yönlendir
  - Belirsiz → Tekrar netleştir

**Müşteri Kayıtlı Değil:**
→ "Sistemde kaydınız bulunmuyor. Kayıt oluşturmak için birkaç bilgiye ihtiyacım var."
→ Bilgi toplama adımına geç

**2. Bilgi Toplama (Yeni Müşteri) **
Sırayla topla:
1. Ad
2. Soyad
3. Tam adres (mahalle, sokak, bina no, daire no, ilçe, şehir)

→ Her bilgiyi TEK TEK sor
→ Cevap almadan sonraki soruya geçme
→ Eksik bilgi varsa netleştir

**3. Bilgi Toplama (Yeni Adres - Mevcut Müşteri) **
→ "Yeni adresinizi ekleyelim."
→ Tam adres bilgisi topla (mahalle, sokak, bina no, daire no, ilçe, şehir)
→ Cevap almadan devam etme

**4. Özet + Onay**
→ HER ZAMAN özet yap
→ İçerik: Ad + Soyad (yeni müşteri ise) + Adres
→ Açık onay al

Örnek (Yeni Müşteri) : 
"Barış Yılmaz, Adana Çukurova Mahallesi, Atatürk Caddesi No:15 Daire:3 adresine kayıt oluşturuyorum. Onaylıyor musunuz?"

Örnek (Yeni Adres) :
"Ankara Çankaya Mahallesi, Kızılay Sokak
### Answer İşte kayıt süreciniz için optimize edilmiş subagent node prompt'u: [(1) ]() [(2) ]()
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[2] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
Ana iyileştirmeler: - Mevcut müşteri senaryosu netleştirildi - Yeni adres ekleme akışı ayrıldı - Netleştirme sorusu vurgulandı - Her senaryo için özet örnekleri eklendi - Akış adımları daha net yapılandırıldı
Copy code
No:8 Daire:5 adresini kaydınıza ekliyorum. Onaylıyor musunuz?"

**5. Kayıt Oluştur**
→ Onay alındıktan SONRA `musteri_olustur` çağır
→ Onay olmadan ASLA çağırma

**6. Sonuç**
→ "Kaydınız başarıyla oluşturuldu."
→ "Sipariş vermek ister misiniz?"
→ Cevaba göre:
  - Evet → Sipariş node'una yönlendir
  - Hayır → "Başka yardımcı olabileceğim bir şey var mı?"

///## KRİTİK Kurallar
- `musteri_sorgula` sonucuna göre akışı belirle
- Müşteri kayıtlıysa doğrudan kayıt başlatma
- Kayıtlı müşteriye netleştirme sorusu sor
- Her bilgiyi TEK TEK topla
- Eksik bilgi varken kayıt oluşturma
- Müşteri onayı OLMADAN `musteri_olustur` çağırma
- HER ZAMAN özet yap
- Aynı bilgiyi ikinci kez sorma
- Telefon numarasını tekrar isteme
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy 2. partı bu Müşteri yeni adres eklemek istediğini söylerse: - Yeni müşteri kaydı başlatma - Yeni adres ekleme veya mobil uygulama destek sürecine yönlendirmeye hazır hale getir Müşteri sipariş vermek istediğini söylerse: - Yeni sipariş sürecine yönlendirmeye hazır hale getir Müşteri mevcut bilgilerini güncellemek istediğini söylerse: - İlgili bilgi güncelleme veya destek sürecine yönlendirmeye hazır hale getir Eğer müşteri kayıtlı değilse: - Kayıtlı olmadığını özellikle vurgulama - Karşılama sürecinde alınan isim bilgisini kullan - Yeni müşteri kayıt sürecine doğal şekilde başla Bilgi toplamaya başlamadan önce kısa ve doğal bir geçiş cümlesi kur. Amaç: - Kayıt sürecini kullanıcıya açıklamak - Bilgi toplamanın nedenini kısa şekilde belirtmek - Konuşmayı daha doğal ve akıcı hale getirmek Örnek ifadeler: “Memnuniyetle yardımcı olayım. Önce adresinizi oluşturabilmem için birkaç bilginizi almam gerekiyor.” “Tabii, kayıt işlemini başlatalım. Bunun için önce bazı bilgilerinizi almam gerekecek.” “Hemen yardımcı olayım. Teslimat adresinizi oluşturabilmek için size birkaç kısa soru soracağım.” Kurallar: - Bu açıklamayı yalnızca bir kez yap - Uzun açıklama yapma - Aynı konuşmada tekrar etme - Açıklamadan sonra doğrudan ilk gerekli bilgiye geç Sonrasında yeni müşteri kayıt sürecine devam et. Adım 2 — Soyad Bilgisini Topla Müşterinin soyadını iste. Bilgi net şekilde alındıysa tekrar teyit etme. Adım 3 — İl Bilgisini Topla Müşterinin bulunduğu ili öğren. Tek soru sor. Belirsiz cevaplarda yalnızca gerekli netleştirmeyi yap. Adım 4 — İlçe Bilgisini Topla İl bilgisi alındıktan sonra ilçeyi öğren. Tek soru sor.
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer İşte ikinci kısımla birlikte optimize edilmiş tam kayıt subagent node prompt'unuz: [(1) ]() [(2) ]()
Copy code
///## Görev
Pınar Su müşterileri için kayıt ve adres yönetimi.

Senaryo 1: Yeni müşteri kaydı oluştur
Senaryo 2: Mevcut müşteri için yeni adres ekle

///## Kullanılabilir Fonksiyonlar

**musteri_sorgula**
→ Konuşma başında otomatik çağrılır
→ Dönen sonuç = tek doğru kaynak
→ Telefon numarasını müşteriden tekrar isteme

**musteri_olustur**
→ Tüm gerekli bilgiler toplandıktan SONRA çağır
→ Eksik bilgi varken ASLA çağırma

///## Stil Kuralları
- Kısa ve doğal konuş (maksimum 2 cümle)
- Her seferde TEK soru sor
- Aynı bilgiyi ikinci kez sorma
- ASLA varsayım yapma

///## Akış Detayları

**1. Müşteri Durumu Kontrolü**
→ `musteri_sorgula` sonucunu kullan
→ Telefon numarasını tekrar isteme

**Müşteri Kayıtlı:**
→ "Sistemde kaydınız görünüyor [Ad] Bey/Hanım."
→ Netleştirme sorusu sor:
  "Yeni adres eklemek mi istersiniz, yoksa sipariş vermek için mi yardımcı olayım?"
→ Müşteri cevabını bekle

→ Cevaba göre yönlendirme:
  • Yeni adres → "Yeni adres ekleme işlemi için mobil uygulamamızı kullanabilirsiniz" (destek sürecine yönlendir)
  • Sipariş → Sipariş node'una geçiş yap
  • Bilgi güncelleme → "Bilgi güncelleme için destek ekibimize bağlayabilirim" (destek sürecine yönlendir)
  • Belirsiz → Tekrar netleştir

**Müşteri Kayıtlı Değil:**
→ Karşılama sürecinde alınan isim bilgisini kullan
→ Geçiş cümlesi kur (yalnızca bir kez) :
  "Memnuniyetle yardımcı olayım [Ad]. Teslimat adresinizi oluşturabilmem için birkaç bilginizi almam gerekiyor."
→ Doğrudan bilgi toplama adımına geç

**2. Bilgi Toplama (Yeni Müşteri) **
Sırayla topla:

**Adım 1: Soyad**
→ "Soyadınız nedir?"
→ Cevap almadan devam etme
→ Net alındıysa tekrar teyit etme

**Adım 2: İl**
→ "Hangi ilde oturuyorsunuz?"
→ Tek soru sor
→ Belirsizse yalnızca gerekli netleştirmeyi yap

**Adım 3: İlçe**
→ "İlçeniz nedir?"
→ Tek soru sor
→ Cevap almadan devam etme

**Adım 4: Mahalle**
→ "Mahalleniz nedir?"
→ Tek soru sor

**A
Copy code
dım 5: Sokak/Cadde**
→ "Sokak veya cadde adınız nedir?"
→ Tek soru sor

**Adım 6: Bina No**
→ "Bina numaranız nedir?"
→ Tek soru sor

**Adım 7: Daire No**
→ "Daire numaranız nedir?"
→ Tek soru sor

**3. Bilgi Toplama (Yeni Adres - Mevcut Müşteri) **
→ "Yeni adresinizi ekleyelim."
→ Yukarıdaki adım 2-7'yi takip et (İl, İlçe, Mahalle, Sokak, Bina No, Daire No)

**4. Özet + Onay**
→ HER ZAMAN özet yap
→ İçerik: Ad + Soyad (yeni müşteri ise) + Tam Adres
→ Açık onay al

Örnek (Yeni Müşteri) :
"Barış Yılmaz, Adana Çukurova Mahallesi, Atatürk Caddesi No:15 Daire:3 adresine kayıt oluşturuyorum. Onaylıyor musunuz?"

Örnek (Yeni Adres) :
"Ankara Çankaya Mahallesi, Kızılay Sokak No:8 Daire:5 adresini kaydınıza ekliyorum. Onaylıyor musunuz?"

**5. Kayıt Oluştur**
→ Onay alındıktan SONRA `musteri_olustur` çağır
→ Onay olmadan ASLA çağırma

**6. Sonuç**
→ "Kaydınız başarıyla oluşturuldu."
→ "Sipariş vermek ister misiniz?"
→ Cevaba göre:
  - Evet → Sipariş node'una yönlendir
  - Hayır → "Başka yardımcı olabileceğim bir şey var mı?"

///## KRİTİK Kurallar
- `musteri_sorgula` sonucuna göre akışı belirle
- Müşteri kayıtlıysa doğrudan kayıt başlatma
- Kayıtlı müşteriye netleştirme sorusu sor
- Geçiş cümlesini yalnızca bir kez kullan
- Her bilgiyi TEK TEK topla
- Eksik bilgi varken kayıt oluşturma
- Müşteri onayı OLMADAN `musteri_olustur` çağırma
- HER ZAMAN özet yap
- Aynı bilgiyi ikinci kez sorma
- Telefon numarasını tekrar isteme
- Karşılama sürecindeki isim bilgisini kullan
Ana iyileştirmeler: - Geçiş cümlesi eklendi ve tek kullanımlık olarak işaretlendi - Mevcut müşteri için yönlendirme senaryoları netleştirildi - Adres bilgileri (mahalle, sokak, bina no, daire no) adım adım ayrıldı [(1) ]() - Her adım için tek soru kuralı vurgulandı [(2) ]() - Karşılama sürecindeki isim bilgisini kullanma kuralı eklendi Bu yapı, hem yeni müşteri kaydı hem de mevcut müşteri için adres ekleme senaryolarını net bir şekilde yönetecek. [(1) ]()
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[2] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy bu da son part Adım 5 — Mahalle Bilgisini Topla Mahalle adını öğren. Mahalle bilgisini kısa ve net şekilde al. Adım 6 — Cadde veya Sokak Bilgisini Topla Cadde veya sokak bilgisini öğren. Uzun açık adres isteme. Adım 7 — Apartman veya Site Bilgisini Topla Apartman veya site adını öğren. Apartman adı yoksa bunu kısa şekilde belirtmesine izin ver. Adım 8 — Daire Numarasını Topla Daire numarasını öğren. Bilgi net şekilde alınmadan sonraki adıma geçme. Adım 9 — Adres Tarifi (Opsiyonel) Adresle ilgili ek tarif bilgisi gerekip gerekmediğini sor. Bu bilgi zorunlu değildir. Müşteri tarif vermek istemiyorsa süreci uzatma. Adım 10 — Müşteri Kaydı Oluştur Gerekli tüm bilgiler toplandıktan sonra: musteri_olustur fonksiyonunu çağır. Toplanan müşteri bilgilerini kullanarak kayıt oluştur. Eksik bilgi varken kayıt oluşturma. Adım 11 — Başarılı Sonucu Bildir Müşteri kaydı başarılı şekilde oluşturulduysa müşteriye kısa ve doğal şekilde bilgi ver. Uzun açıklamalar yapma. Ardından müşterinin sipariş vermek isteyip istemediğini sor. Eğer müşteri sipariş vermek istemezse: Kısa ve doğal şekilde başka yardımcı olabileceğin bir konu olup olmadığını sor.
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer İşte son kısımla birlikte tam ve optimize edilmiş kayıt subagent node prompt'unuz: [(1) ]() [(2) ]()
Copy code
///## Görev
Pınar Su müşterileri için kayıt ve adres yönetimi.

Senaryo 1: Yeni müşteri kaydı oluştur
Senaryo 2: Mevcut müşteri için yeni adres ekle

///## Kullanılabilir Fonksiyonlar

**musteri_sorgula**
→ Konuşma başında otomatik çağrılır
→ Dönen sonuç = tek doğru kaynak
→ Telefon numarasını müşteriden tekrar isteme

**musteri_olustur**
→ Tüm gerekli bilgiler toplandıktan SONRA çağır
→ Eksik bilgi varken ASLA çağırma

///## Stil Kuralları
- Kısa ve doğal konuş (maksimum 2 cümle)
- Her seferde TEK soru sor
- Aynı bilgiyi ikinci kez sorma
- ASLA varsayım yapma

///## Akış Detayları

**1. Müşteri Durumu Kontrolü**
→ `musteri_sorgula` sonucunu kullan
→ Telefon numarasını tekrar isteme

**Müşteri Kayıtlı:**
→ "Sistemde kaydınız görünüyor [Ad] Bey/Hanım."
→ Netleştirme sorusu sor:
  "Yeni adres eklemek mi istersiniz, yoksa sipariş vermek için mi yardımcı olayım?"
→ Müşteri cevabını bekle

→ Cevaba göre yönlendirme:
  • Yeni adres → "Yeni adres ekleme işlemi için mobil uygulamamızı kullanabilirsiniz" (destek sürecine yönlendir)
  • Sipariş → Sipariş node'una geçiş yap
  • Bilgi güncelleme → "Bilgi güncelleme için destek ekibimize bağlayabilirim" (destek sürecine yönlendir)
  • Belirsiz → Tekrar netleştir

**Müşteri Kayıtlı Değil:**
→ Karşılama sürecinde alınan isim bilgisini kullan
→ Geçiş cümlesi kur (yalnızca bir kez) :
  "Memnuniyetle yardımcı olayım [Ad]. Teslimat adresinizi oluşturabilmem için birkaç bilginizi almam gerekiyor."
→ Doğrudan bilgi toplama adımına geç

**2. Bilgi Toplama (Yeni Müşteri) **
Sırayla topla:

**Adım 1: Soyad**
→ "Soyadınız nedir?"
→ Cevap almadan devam etme
→ Net alındıysa tekrar teyit etme

**Adım 2: İl**
→ "Hangi ilde oturuyorsunuz?"
→ Tek soru sor
→ Belirsizse yalnızca gerekli netleştirmeyi yap

**Adım 3: İlçe**
→ "İlçeniz nedir?"
→ Tek soru sor
→ Cevap almadan devam etme

**Adım 4: Mahalle**
→ "Mahalleniz nedir?"
→ Kısa ve net şekil
Copy code
de al
→ Tek soru sor

**Adım 5: Cadde/Sokak**
→ "Sokak veya cadde adınız nedir?"
→ Uzun açık adres isteme
→ Tek soru sor

**Adım 6: Apartman/Site**
→ "Apartman veya site adınız nedir?"
→ Apartman adı yoksa kısa belirtmesine izin ver
→ Tek soru sor

**Adım 7: Daire No**
→ "Daire numaranız nedir?"
→ Bilgi net şekilde alınmadan sonraki adıma geçme
→ Tek soru sor

**Adım 8: Adres Tarifi (Opsiyonel) **
→ "Adresinizle ilgili ek tarif bilgisi vermek ister misiniz?"
→ Bu bilgi zorunlu değil
→ Müşteri tarif vermek istemiyorsa süreci uzatma

**3. Özet + Onay**
→ HER ZAMAN özet yap
→ İçerik: Ad + Soyad + Tam Adres (İl, İlçe, Mahalle, Sokak, Apartman, Daire)
→ Açık onay al

Örnek:
"Barış Yılmaz, Adana Çukurova Mahallesi, Atatürk Caddesi, Gül Apartmanı No:15 Daire:3 adresine kayıt oluşturuyorum. Onaylıyor musunuz?"

**4. Kayıt Oluştur**
→ Onay alındıktan SONRA `musteri_olustur` çağır
→ Eksik bilgi varken ASLA çağırma
→ Onay olmadan ASLA çağırma

**5. Sonuç**
→ "Kaydınız başarıyla oluşturuldu."
→ "Sipariş vermek ister misiniz?"
→ Cevaba göre:
  - Evet → Sipariş node'una yönlendir
  - Hayır → "Başka yardımcı olabileceğim bir şey var mı?"

///## KRİTİK Kurallar
- `musteri_sorgula` sonucuna göre akışı belirle
- Müşteri kayıtlıysa doğrudan kayıt başlatma
- Kayıtlı müşteriye netleştirme sorusu sor
- Geçiş cümlesini yalnızca bir kez kullan
- Her bilgiyi TEK TEK topla
- Uzun açık adres isteme
- Apartman yoksa kısa belirtmesine izin ver
- Adres tarifi opsiyonel, süreci uzatma
- Eksik bilgi varken kayıt oluşturma
- Müşteri onayı OLMADAN `musteri_olustur` çağırma
- HER ZAMAN özet yap
- Aynı bilgiyi ikinci kez sorma
- Telefon numarasını tekrar isteme
- Karşılama sürecindeki isim bilgisini kullan
Ana iyileştirmeler: - Apartman/site bilgisi eklendi (opsiyonel yapıda) [(1) ]() - Adres tarifi opsiyonel adım olarak eklendi - Her adım için "tek soru sor" kuralı vurgulandı [(2) ]() - Uzun açık adres isteme kuralı eklendi - Özet bölümüne tüm adres detayları dahil edildi [(1) ]() Bu yapı, müşteri kayıt sürecinizi eksiksiz ve kullanıcı dostu bir şekilde yönetecek. [(1) ]() [(2) ]() ---
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[2] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy Şimdi tüm promptu toplayalım, tekrarları azaltalım tüm promptu yazacaz
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer İşte tekrarları azaltılmış, optimize edilmiş tam kayıt subagent node prompt'unuz: [(1) ]() [(2) ]()
Copy code
///## Görev
Pınar Su müşterileri için kayıt ve adres yönetimi.

Senaryo 1: Yeni müşteri kaydı oluştur
Senaryo 2: Mevcut müşteri için yeni adres ekle

///## Kullanılabilir Fonksiyonlar

**musteri_sorgula**
→ Konuşma başında otomatik çağrılır
→ Dönen sonuç = tek doğru kaynak
→ Telefon numarasını müşteriden tekrar isteme

**musteri_olustur**
→ Tüm gerekli bilgiler toplandıktan SONRA çağır
→ Eksik bilgi veya onay olmadan ASLA çağırma

///## Stil Kuralları
- Kısa ve doğal konuş (maksimum 2 cümle)
- Her seferde TEK soru sor
- Aynı bilgiyi ikinci kez sorma
- ASLA varsayım yapma

///## Akış

**1. Müşteri Durumu Kontrolü**
→ `musteri_sorgula` sonucunu kullan

**Müşteri Kayıtlı:**
→ "Sistemde kaydınız görünüyor [Ad] Bey/Hanım."
→ Netleştirme: "Yeni adres eklemek mi istersiniz, yoksa sipariş vermek için mi yardımcı olayım?"
→ Yönlendirme:
  • Yeni adres → "Yeni adres ekleme için mobil uygulamamızı kullanabilirsiniz"
  • Sipariş → Sipariş node'una geçiş
  • Bilgi güncelleme → "Bilgi güncelleme için destek ekibimize bağlayabilirim"

**Müşteri Kayıtlı Değil:**
→ Karşılama sürecindeki isim bilgisini kullan
→ Geçiş cümlesi (bir kez) : "Memnuniyetle yardımcı olayım [Ad]. Teslimat adresinizi oluşturabilmem için birkaç bilginizi almam gerekiyor."

**2. Bilgi Toplama (Sırayla) **
1. Soyad → "Soyadınız nedir?"
2. İl → "Hangi ilde oturuyorsunuz?"
3. İlçe → "İlçeniz nedir?"
4. Mahalle → "Mahalleniz nedir?"
5. Cadde/Sokak → "Sokak veya cadde adınız nedir?" (uzun açık adres isteme)
6. Apartman/Site → "Apartman veya site adınız nedir?" (yoksa kısa belirtmesine izin ver)
7. Daire No → "Daire numaranız nedir?"
8. Adres Tarifi (Opsiyonel) → "Adresinizle ilgili ek tarif bilgisi vermek ister misiniz?" (istemezse süreci uzatma)

**3. Özet + Onay**
→ HER ZAMAN özet yap
→ İçerik: Ad + Soyad + Tam Adres (İl, İlçe, Mahalle, Sokak, Apartman, Daire)
→ Örnek: "Barış Yılmaz, Adana Çukurova Mahallesi,
Copy code
Atatürk Caddesi, Gül Apartmanı No:15 Daire:3 adresine kayıt oluşturuyorum. Onaylıyor musunuz?"

**4. Kayıt Oluştur**
→ Onay alındıktan SONRA `musteri_olustur` çağır

**5. Sonuç**
→ "Kaydınız başarıyla oluşturuldu."
→ "Sipariş vermek ister misiniz?"
→ Evet → Sipariş node'una yönlendir
→ Hayır → "Başka yardımcı olabileceğim bir şey var mı?"

///## KRİTİK Kurallar
- Müşteri kayıtlıysa doğrudan kayıt başlatma
- Her bilgiyi TEK TEK topla
- Geçiş cümlesini yalnızca bir kez kullan
- Telefon numarasını tekrar isteme
- Karşılama sürecindeki isim bilgisini kullan
- Eksik bilgi veya onay olmadan `musteri_olustur` çağırma
Ana değişiklikler: - Tekrarlayan kurallar birleştirildi - Akış adımları daha kompakt hale getirildi - Gereksiz açıklamalar kaldırıldı - Kritik kurallar sadeleştirildi Bu yapı, hem yeni müşteri kaydı hem de mevcut müşteri için adres ekleme senaryolarını daha kısa ve net bir şekilde yönetecek. [(1) ]()
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[2] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy inbound webhook veriyorum n8n'den çalışıyor, fonksiyon da kişinin müşteri olup olmadığını dönüyor, conversation flowumun başında da logic split var kişi müşteri ise bir node'a gidecek değilse başka node'a gidecek ama bir şey olmuyor webhookdan gelen fonksiyon bu şekilde kullanılamıyor mu
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
​ To learn more, see the sources I considered: [[1] Inbound webhook](https://docs.retellai.com/features/inbound-call-webhook) [[2] [URGENT BUG] Webhook variables received in logs but fail to hydrate in Logic Split](https://discord.com/channels/1186424376300679209/1451960563381829652) [[3] {{variable}} / Logic Split Node Issue](https://discord.com/channels/1186424376300679209/1417167639524151441) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
### Answer Inbound webhook'tan gelen fonksiyon sonuçlarını Logic Split node'unda kullanmak için dynamic_variables yapısını kullanmanız gerekiyor. [(1) ]() Sorun: Webhook'tan dönen fonksiyon sonucu doğrudan Logic Split'te erişilebilir değil. Bunun yerine dynamic_variables içinde göndermeniz gerekiyor. Çözüm: n8n'den webhook response'unuzu şu şekilde yapılandırın:
Copy code
json
{
  "call_inbound": {
    "dynamic_variables": {
      "musteri_kayitli": "evet"
    }
  }
}
Ardından Logic Split node'unuzda bu değişkeni şu şekilde kontrol edin: - Equation condition kullanın - Sol taraf:
{{musteri_kayitli}}
- Operatör:
EQUALS
- Sağ taraf:
evet
Önemli Not: Bazı kullanıcılar webhook'tan gelen dynamic_variables'ın Logic Split'te hemen erişilebilir olmadığını bildirmiş. [(2) ]() Bu durumda: 1. Response Variables kullanarak değişkeni açıkça set edin [(3) ]() 2. Logic Split node'unu konuşmanın biraz ilerleyen bir noktasına yerleştirin (örneğin 60 saniye sonra) [(2) ]() Alternatif: Webhook response'unda
override_agent_id
kullanarak farklı agent'lara yönlendirme yapabilirsiniz: [(1) ]()
Copy code
json
{
  "call_inbound": {
    "override_agent_id": "musteri_agent_id"
  }
}
a
@AI Evy Niye aramayı bir anda sonlandırılmış, bunu nasıl çözebilirim Agent 1:46 One moment while I create your reservation. Tool Result 1:49 Agent 1:50 Your reservation has been completed successfully. Is there anything else I can help you with regarding Hellenic Train? User 2:00 Could you repeat that, please? Agent 2:02 Your reservation for Train 50 from Lianokladi to Thessaloniki tomorrow, May twenty-sixth, is confirmed. Is there anything else I can help you with? User 2:15 No, thank you. User 2:16 Uh, Node Transition 2:17 User 2:17 just, uh, a question. I've got a big dog with me. Can I travel with him? Tool Invocation: end_call 2:20 tool_call_id: end_call_3bd8b2
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Aramanın beklenmedik bir şekilde sonlandırılmasının nedeni, agent'ınızın kullanıcının "No, thank you" cevabını aramayı sonlandırma sinyali olarak yorumlamasıdır [(1) ]() . Kullanıcı daha sonra "just, uh, a question" dediğinde bile, agent zaten
end_call
tool'unu çağırmaya karar vermiş durumda. Çözüm Önerileri: 1. End Call Tool Koşullarını Netleştirin End call tool'unuzun prompt'unda, yalnızca kullanıcı açıkça konuşmayı bitirmek istediğinde çağrılması gerektiğini belirtin :
Copy code
"If the user says 'thank you', 'goodbye', or 'bye' AND confirms they have no further questions, use the end_call tool to terminate the conversation."
2. Onay Sorusu Ekleyin Kullanıcı "No, thank you" dedikten sonra, agent'ınız aramayı sonlandırmadan önce bir onay sorusu sorsun:
Copy code
"Before ending the call, always ask: 'Are you sure there's nothing else I can help you with?'"
3. Subagent Node'da "Speak After Execution" Ayarını Kontrol Edin Eğer conversation flow kullanıyorsanız, end_call tool'unun bulunduğu node'da "Speak After Execution" ayarının devre dışı olduğundan emin olun [(2) ]() . Bu ayar aktifse, agent tool çağrısından sonra konuşmaya devam edebilir. 4. Node Transition Mantığını Gözden Geçirin Transkriptte "Node Transition 2:17" görünüyor. Bu, agent'ın bir node'dan diğerine geçtiğini gösterir [(3) ]() . End call tool'unun hangi node'da bulunduğunu ve transition koşullarını kontrol edin [(2) ]() . Örnek Düzeltilmiş Prompt:
Copy code
If the user explicitly confirms they want to end the call (e.g., "goodbye", "that's all") AND you've asked "Is there anything else I can help you with?" and they respond negatively, then use the end_call tool.

Do NOT end the call if:
- The user says "thank you" but continues speaking
- The user asks a follow-up question after saying "no"
- There's any indication they might have more questions
[(1) ]() Bu değişiklikler, agent'ınızın kullanıcının gerçekten aramayı bitirmek istediğinden emin olmasını sağlayacaktır.
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy Şöyle bir durum var transition olarak User is satisfied and done var
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
2. Çoklu Transition Edge'leri Ekleyin Tek bir genel koşul yerine, farklı senaryolar için ayrı edge'ler oluşturun: [(2) ]() - Edge 1: Kullanıcı açıkça veda ediyor → End node'a git - Edge 2: Kullanıcı soru soruyor → İlgili conversation node'a git - Edge 3: Belirsiz cevap → Netleştirme node'una git 3. Fine-tuning Transition Examples Ekleyin Transition'ın doğru çalışması için örnekler ekleyin: [(3) ]() Dashboard'da node'unuzu seçin → "Fine-tuning Examples" → "Transition" sekmesi → Pozitif ve negatif örnekler ekleyin Pozitif örnek:
Copy code
User: "That's all, goodbye!"
→ Should transition: Yes
Negatif örnek:
Copy code
User: "No, thank you. Uh, just a question..."
→ Should transition: No
4. Onay Node'u Ekleyin End call'dan önce bir onay conversation node'u ekleyin: [(1) ]() [(2) ]()
Copy code
Node: "Confirmation"
Instruction: "Ask: 'Are you absolutely sure there's nothing else I can help you with?'"
Skip Response: false

Transition 1: User confirms they're done → End node
Transition 2: User has more questions → Return to main conversation
5. Transition Condition Type'ı Değiştirin "Prompt" yerine "Equation" kullanarak daha deterministik kontrol sağlayın (eğer bir değişken set ediyorsanız) : [(3) ]()
Copy code
{{conversation_complete}} EQUALS true
Kritik Notlar: [(3) ]() [(4) ]() [(5) ]() - Conversation Flow'da transition'lar küçük bir model kullanır ve bazen beklenmedik davranabilir [(3) ]() - Node'ları daha küçük ve basit tutun [(5) ]() - Transition koşullarını mümkün olduğunca spesifik ve açık yazın [(3) ]() [(4) ]() Bu değişiklikler, agent'ınızın kullanıcının gerçek niyetini daha doğru anlamasını sağlayacaktır. [(1) ]() [(2) ]()
### Answer [(1) ]() [(2) ]() [(3) ]() [(4) ]() [(5) ]() "User is satisfied and done" gibi genel bir transition koşulu, agent'ın erken veya yanlış zamanda node geçişi yapmasına neden olabilir. [(3) ]() [(5) ]() Sorun: Bu tür belirsiz koşullar, agent'ın kullanıcının gerçekten bitirmek istediğini yanlış yorumlamasına yol açar. Özellikle kullanıcı "No, thank you" dediğinde bile devam etmek isteyebilir. Çözüm Önerileri: 1. Transition Koşulunu Daha Spesifik Yapın Genel ifadeler yerine açık ve ölçülebilir koşullar kullanın: [(2) ]() [(3) ]()
Copy code
"User explicitly confirms they want to end the conversation by saying goodbye, that's all, or similar farewell phrases AND has no additional questions after being asked if there's anything else"
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
​ To learn more, see the sources I considered: [[1] Conversation Flow Overview](https://docs.retellai.com/build/conversation-flow/overview) [[2] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[3] Conversational flow - Transition issue](https://discord.com/channels/1186424376300679209/1387424465268375613) [[4] Conversation Flow node transition breaks](https://discord.com/channels/1186424376300679209/1398036486661603520) [[5] Discord message from @medivoice_63089 on 2025-02-21](https://discord.com/channels/1186424376300679209/1186462578310910112/1342642423276372001) ​
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
a
@AI Evy Would you like to reserve o||ne of these? User Yeah, yeah, yeah, okay. I'm, I'm on a wheelchair. Can I travel with the trains you are mentioning? Node Transition Node Transition Agent Yes, Hellenic Train provides accessibility support for passengers in wheelchairs on these routes. Which train would you like to reserve? User You didn't tell me the trains. Agent My apologies, Peter. Train 50 departs at six fifty-eight AM and Train 56 departs at five fifty-eight PM. Which one would you like to reserve? User Okay, the first one and I want to have my dog with me. Can I do it? Agent Yes, you can travel with your dog as long as it's in a carrier or on a leash with a muzzle. May I have your last name for the reservation, please? User Παπαδόπουλος. Agent Thanks, Peter. User I'm the brother Agent Just to User of the woman called you later. Agent That's nice to know. Just to confirm, I'll reserve Train 50 from Athens to Thessaloniki for today, May twenty-fifth, under the name Peter Papadopoulos. Shall I continue? User Yes, please. Tool Invocation: make_reservation Agent One moment while I create Tool Result tool_call_id: b8cc401822bbf008 [{"first_name":"Peter","last_name":"Papadopoulos","phone_number":306943101710,"from_stop":"Athens","to_stop":"Thessaloniki","train_no":50,"departure_time":0.290277777777778,"arrival_time":0.506944444444444,"date":46167,"id":"50_40486"}] Agent Your reservation has been completed successfully. Is there anything else I can help you with regarding Hellenic Train? Debug User Only Hellenic train? User Can you Node Transition previous node: Train Reservation and Timetable new node: Intent Split transition type: normal Node Transition previous node: Intent Split new node: Out of Scope - 2 transition type: normal User tell me anything about something else? User I want to travel Node Transition||
a
### Answer \Your transcript shows multiple rapid node transitions happening in quick succession, which indicates your transition conditions may be too broad or triggering prematurely. [(1) ]() [(2) ]() The Core Issue: Your agent is transitioning from "Train Reservation and Timetable" → "Intent Split" → "Out of Scope - 2" when the user asks "Can you tell me anything about something else?" This suggests your transition conditions are interpreting any question as a reason to switch nodes, rather than staying in the current conversation context. [(3) ]() [(2) ]() Recommended Solutions: 1. Tighten Your Transition Conditions Instead of broad conditions like "user asks a question" or "user is done," use explicit, specific triggers: [(4) ]() [(1) ]()
Copy code
"User explicitly requests to end the conversation OR asks about a completely different topic unrelated to train reservations after being asked if there's anything else about Hellenic Train"
[(4) ]() 2. Add Fine-tuning Transition Examples In your conversation flow, add examples of when transitions should and shouldn't happen: [(5) ]() Should NOT transition:
Copy code
User: "Can you tell me anything about something else?"
Agent should: Stay in current node and clarify what they need
Should transition:
Copy code
User: "No, that's all. Goodbye."
Agent should: Move to end call node
3. Soften Transition Prompts Based on community feedback, making transition conditions less strict often helps: [(3) ]() [(2) ]() Instead of:
Copy code
"User explicitly states they are completely finished"
Try:
Copy code
"User clearly indicates they want to end the conversation by saying goodbye, that's all, or similar farewell phrases"
4. Review Your "Intent Split" Node Logic Your transcript shows the agent going through an "Intent Split" node before reaching "Out of Scope." This intermediate node might be causing unnecessary transitions. Consider consolidating your flow or adjusting the Intent Split's transition conditions to be more conservative. [(6) ]() 5. Enable Block Interruptions During Critical Moments For nodes where the agent needs to complete a task (like confirming a reservation) , enable "Block Interruptions" to prevent premature transitions:
Copy code
Node Settings → Block Interruptions: enabled
Critical Best Practice: The most common issue with conversation flow transitions is using conditions that are too vague or general. [(1) ]() [(5) ]() Always test your transitions with the "Debug the transition" feature and add fine-tuning examples for edge cases. [(5) ]()
​ To learn more, see the sources I considered: [[1] Transitions in conversations flows](https://discord.com/channels/1186424376300679209/1341833492660617267) [[2] Discord message from @chad5559 on 2026-05-08](https://discord.com/channels/1186424376300679209/1186462578310910112/1502225821589442581) [[3] Discord message from @daki4928 on 2026-05-09](https://discord.com/channels/1186424376300679209/1186462578310910112/1502792992581484747) [[4] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[5] Conversational flow - Transition issue](https://discord.com/channels/1186424376300679209/1387424465268375613) [[6] Conversation Node](https://docs.retellai.com/build/conversation-flow/conversation-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy End call global promptuna out-of-scope 3 ten fazla şey söylediğinde gitsin tarzı bir şey eklesem çalışır mı sence
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer [(1) ]() [(2) ]() [(3) ]() Kısa Cevap: Global prompt'a böyle bir kural eklemek teorik olarak çalışabilir, ama güvenilir olmayabilir. Daha iyi bir yaklaşım, bu mantığı equation-based transition condition veya dynamic variable tracking ile uygulamaktır. [(2) ]() Neden Sadece Prompt Yeterli Olmayabilir: Global prompt'taki talimatlar LLM tarafından yorumlanır ve her zaman tutarlı şekilde uygulanmayabilir. [(3) ]() Özellikle "3 kez out-of-scope" gibi sayma gerektiren durumlar için LLM'in hafızası güvenilir değildir. Önerilen Çözümler: 1. Dynamic Variable ile Sayaç Kullanın Out-of-scope node'unuzda bir dynamic variable ile sayaç tutun: [(2) ]()
Copy code
{{out_of_scope_count}}
Her out-of-scope durumunda bu değişkeni artırın (custom function ile veya response variable olarak) . 2. Equation-Based Transition Condition Ekleyin End call node'una giden transition'da equation condition kullanın:
Copy code
{{out_of_scope_count}} >= 3
Bu yaklaşım, prompt'a güvenmekten çok daha deterministik ve güvenilirdir. *3. Global Prompt'a Yine de Ekleyin (Yedek Olarak) * Ek güvenlik için global prompt'a şunu ekleyebilirsiniz: [(3) ]()
Copy code
If the user asks about out-of-scope topics 3 or more times consecutively, politely inform them you can only help with Hellenic Train services and suggest ending the call.
Kritik Not: Conversation Flow'da transition'lar küçük bir model kullanır ve prompt-based logic bazen beklenmedik davranabilir. [(4) ]() En güvenilir yöntem, equation-based transition conditions ile dynamic variable tracking kombinasyonudur. [(2) ]()
​ To learn more, see the sources I considered: [[1] Conversation Flow Overview](https://docs.retellai.com/build/conversation-flow/overview) [[2] Step 3: Add transition conditions](https://docs.retellai.com/build/conversation-flow/transition-condition) [[3] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[4] Debug guide](https://docs.retellai.com/build/conversation-flow/debug-guide) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy This node handles out-of-scope conversations and redirects the user back to a supported Hellenic Train topic. You can only assist with Hellenic Train related topics. Politely redirect the conversation. Keep responses short. Example tone: "I can help with Hellenic Train services such as train reservations, timetables, or general train information. How may I help you?" Out of scope node'u bu, nasıl bir equation ekleyebiliriz conversation node bu
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Conversation node'unda doğrudan equation-based transition ekleyemezsiniz çünkü conversation node'lar sadece prompt-based transition conditions kullanır. [(1) ]() [(2) ]() Çözüm: Code Node veya Function Node Kullanın Out-of-scope sayacını takip etmek için bir Code Node veya Custom Function kullanmanız gerekiyor. [(3) ]() Önerilen Yapı: 1. Out-of-Scope Node'undan sonra bir Code Node ekleyin:
Copy code
javascript
// out_of_scope_count değişkenini artır
const currentCount = dv.out_of_scope_count || 0;
return { out_of_scope_count: currentCount + 1 };
2. Code Node'da "Store Fields as Variables" ayarını yapın: - Variable Name:
out_of_scope_count
- JSON Path:
out_of_scope_count
3. Code Node'dan End Call Node'una Equation-Based Transition ekleyin:
Copy code
{{out_of_scope_count}} >= 3
[(1) ]() [(4) ]() Önemli: Equation-based transition'larda dynamic variable'ları kullanırken mutlaka
{{variable_name}}
formatını kullanın. [(4) ]() Alternatif Basit Yaklaşım: Eğer kod yazmak istemiyorsanız, Out-of-Scope node'unuzun transition condition'ına şunu ekleyin:
Copy code
User has asked about out-of-scope topics multiple times and clearly cannot be redirected to Hellenic Train services
[(1) ]() Bu prompt-based yaklaşım daha az deterministik olacaktır ama kod gerektirmez. [(1) ]() [(5) ]()
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy Süper oldu işe yaradı, bir de bu out of scope node'una kişinin ismi hala alınmadıysa isim alınmasını ekleyelim mi
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Out-of-scope node'una isim toplama özelliği eklemek mantıklı olabilir, ancak dikkatli olmalısınız çünkü bu node'un ana amacı kullanıcıyı Hellenic Train konularına yönlendirmektir. Önerilen Yaklaşım: 1. Extract Dynamic Variable Node Kullanın Out-of-scope node'undan önce veya sonra bir Extract Dynamic Variable Node ekleyerek ismi toplayabilirsiniz: [(1) ]() - Variable Name:
customer_name
- Description:
Customer's first name
- Variable Type:
Text
2. Logic Split Node ile Kontrol Ekleyin İsmin alınıp alınmadığını kontrol etmek için bir Logic Split Node kullanın: [(2) ]()
Copy code
{{customer_name}} does not exist
Bu condition true ise, isim toplama node'una yönlendirin. [(3) ]() 3. Out-of-Scope Node'unu Güncelleyin Node instruction'ınıza şunu ekleyin:
Copy code
If the user's name is not yet collected, politely ask: "Before I help you further, may I have your name please?" Once collected, redirect to Hellenic Train topics.
Alternatif Basit Yaklaşım: Out-of-scope node'undan sonra bir transition condition ekleyin:
Copy code
User's name has not been collected yet
Bu condition true ise, isim toplama node'una yönlendir. Kritik Not: Out-of-scope node'u zaten bir yönlendirme yapıyor. İsim toplama işlemini buraya eklerseniz, node çok fazla sorumluluk üstlenmiş olur ve karmaşıklaşabilir. Daha temiz bir yaklaşım, isim toplama işlemini ayrı bir node'da yapmak ve Logic Split ile kontrol etmektir. [(2) ]()
​ To learn more, see the sources I considered: [[1] Extract Dynamic Variable Node](https://docs.retellai.com/build/conversation-flow/extract-dv-node) [[2] Logic Split Node](https://docs.retellai.com/build/conversation-flow/logic-split-node) [[3] Step 3: Add transition conditions](https://docs.retellai.com/build/conversation-flow/transition-condition) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy inbound webhook kullanacağım n8n'e düşecek oradan nasıl bir response dönmeliyim kişinin müşteri olup olmadığını dönecem ben
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer n8n'den inbound webhook'a dönmeniz gereken response formatı şu şekilde olmalı: [(1) ]()
Copy code
json
{
  "call_inbound": {
    "dynamic_variables": {
      "musteri_kayitli": "evet"
    }
  }
}
Önemli Noktalar: 1. Response yapısı
call_inbound
altında olmalı
[(1) ]() [(2) ]() 2. Dynamic variables bir dict içinde olmalı [(2) ]() 3. Müşteri durumunu kontrol etmek için:
Copy code
json
{
  "call_inbound": {
    "dynamic_variables": {
      "musteri_kayitli": "evet",
      "musteri_adi": "{{customer_name}}",
      "musteri_telefon": "{{phone_number}}"
    }
  }
}
[(1) ]() [(3) ]() n8n'de kullanım: Müşteri kayıtlı değilse:
Copy code
json
{
  "call_inbound": {
    "dynamic_variables": {
      "musteri_kayitli": "hayir"
    }
  }
}
[(1) ]() Logic Split Node'da kullanım: Conversation flow'unuzda Logic Split node'unda bu değişkeni şöyle kontrol edebilirsiniz: [(4) ]() - Condition Type: Equation - Sol taraf:
{{musteri_kayitli}}
- Operatör:
EQUALS
- Sağ taraf:
evet
Kritik: Webhook response'unda 2xx status code dönmelisiniz ve 10 saniye içinde cevap vermelisiniz. [(1) ]() Dynamic variables'ı
retell_llm_dynamic_variables
objesi içinde değil, doğrudan
dynamic_variables
altında göndermelisiniz. [(3) ]() [(2) ]()
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy [ { "adSoyad": "x y", "kvkkDurumu": 2, "musteriMevcutMu": true, "siparisDurumu": "HAZIRLANIYOR", "siparisNo": "1111", "siparisSaat": "09:28", "siparisSilinebilirMi": true, "siparisTarih": "04.06.2026", "siparisTekrarVerilirMi": true, "siparisVarMi": true } ] Bunları nasıl dediğin formatta dönebilirim
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer n8n'den aldığınız JSON verisini Retell AI inbound webhook formatına şu şekilde dönüştürmelisiniz: [(1) ]()
Copy code
json
{
  "call_inbound": {
    "dynamic_variables": {
      "ad_soyad": "x y",
      "kvkk_durumu": "2",
      "musteri_mevcut_mu": "true",
      "siparis_durumu": "HAZIRLANIYOR",
      "siparis_no": "1111",
      "siparis_saat": "09:28",
      "siparis_silinebilir_mi": "true",
      "siparis_tarih": "04.06.2026",
      "siparis_tekrar_verilebilir_mi": "true",
      "siparis_var_mi": "true"
    }
  }
}
Önemli Noktalar: 1. Tüm değişkenler
call_inbound.dynamic_variables
objesi içinde olmalı
[(1) ]() [(2) ]() 2. Boolean değerleri string olarak gönderin (
"true"
veya
"false"
şeklinde) [(1) ]() 3. Değişken isimlerini snake_case formatına çevirin (camelCase yerine) [(3) ]() 4. Response 2xx status code ile dönmeli ve 10 saniye içinde tamamlanmalı [(1) ]() n8n'de Örnek Dönüşüm: n8n'de bir "Set" node veya "Code" node kullanarak şu şekilde dönüştürebilirsiniz:
Copy code
javascript
const data = items[0].json[0];

return {
  json: {
    call_inbound: {
      dynamic_variables: {
        ad_soyad: data.adSoyad,
        kvkk_durumu: String(data.kvkkDurumu) ,
        musteri_mevcut_mu: String(data.musteriMevcutMu) ,
        siparis_durumu: data.siparisDurumu,
        siparis_no: data.siparisNo,
        siparis_saat: data.siparisSaat,
        siparis_silinebilir_mi: String(data.siparisSilinebilirMi) ,
        siparis_tarih: data.siparisTarih,
        siparis_tekrar_verilebilir_mi: String(data.siparisTekrarVerilirMi) ,
        siparis_var_mi: String(data.siparisVarMi)
      }
    }
  }
};
Conversation Flow'da Kullanım: Bu değişkenleri Logic Split node'unda şöyle kontrol edebilirsiniz: [(1) ]() [(3) ]() - Müşteri kontrolü:
{{musteri_mevcut_mu}} EQUALS true
- Sipariş kontrolü:
{{siparis_var_mi}} EQUALS true
- Sipariş durumu:
{{siparis_durumu}} EQUALS HAZIRLANIYOR
​ To learn more, see the sources I considered: [[1] Inbound webhook](https://docs.retellai.com/features/inbound-call-webhook) [[2] inbound webhook](https://discord.com/channels/1186424376300679209/1352358246371037276) [[3] Dynamic Variables](https://docs.retellai.com/build/dynamic-variables) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy override agent id değerine falan gerek yok mu
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Hayır,
override_agent_id
zorunlu değil.
[(1) ]() Inbound webhook response'unda tüm alanlar opsiyoneldir. Ancak bazı durumlarda
override_agent_id
kullanmanız gerekebilir:
override_agent_id
Kullanmanız Gereken Durumlar:
1. Telefon numarasında inbound agent tanımlı değilse 2. Farklı bir agent kullanmak istiyorsanız (örneğin müşteri tipine göre) 3. A/B testing yapıyorsanız [(2) ]()
override_agent_id
Kullanmanıza Gerek Olmayan Durumlar:
Eğer telefon numaranızda zaten bir Inbound Call Agent tanımlıysa, webhook'tan sadece
dynamic_variables
döndürebilirsiniz: [(1) ]()
Copy code
json
{
  "call_inbound": {
    "dynamic_variables": {
      "ad_soyad": "x y",
      "musteri_mevcut_mu": "true",
      "siparis_var_mi": "true"
    }
  }
}
Tam Örnek (Agent Override ile) :
Copy code
json
{
  "call_inbound": {
    "override_agent_id": "agent_12345",
    "override_agent_version": 1,
    "dynamic_variables": {
      "ad_soyad": "x y",
      "musteri_mevcut_mu": "true"
    },
    "metadata": {
      "random_id": "12345"
    }
  }
}
Önemli Not: Eğer telefon numaranızda inbound agent yoksa ve webhook'tan da
override_agent_id
dönmezseniz, arama bağlanmaz. [(1) ]() [(3) ]()
​ To learn more, see the sources I considered: [[1] Inbound webhook](https://docs.retellai.com/features/inbound-call-webhook) [[2] A/B Testing](https://docs.retellai.com/deploy/ab-testing) [[3] Inbound Webhook Failure](https://discord.com/channels/1186424376300679209/1388504212048187392) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
override agent idli kodu versene
@AI Evy override agent id kodlu versene
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer n8n'den
override_agent_id
ile birlikte dönmeniz gereken tam kod: [(1) ]()
Copy code
json
{
  "call_inbound": {
    "override_agent_id": "agent_12345",
    "override_agent_version": 1,
    "dynamic_variables": {
      "ad_soyad": "x y",
      "kvkk_durumu": "2",
      "musteri_mevcut_mu": "true",
      "siparis_durumu": "HAZIRLANIYOR",
      "siparis_no": "1111",
      "siparis_saat": "09:28",
      "siparis_silinebilir_mi": "true",
      "siparis_tarih": "04.06.2026",
      "siparis_tekrar_verilebilir_mi": "true",
      "siparis_var_mi": "true"
    },
    "metadata": {
      "random_id": "12345"
    }
  }
}
n8n Code Node'da kullanabileceğiniz JavaScript kodu:
Copy code
javascript
const data = items[0].json[0];

return {
  json: {
    call_inbound: {
      override_agent_id: "agent_12345",
      override_agent_version: 1,
      dynamic_variables: {
        ad_soyad: data.adSoyad,
        kvkk_durumu: String(data.kvkkDurumu) ,
        musteri_mevcut_mu: String(data.musteriMevcutMu) ,
        siparis_durumu: data.siparisDurumu,
        siparis_no: data.siparisNo,
        siparis_saat: data.siparisSaat,
        siparis_silinebilir_mi: String(data.siparisSilinebilirMi) ,
        siparis_tarih: data.siparisTarih,
        siparis_tekrar_verilebilir_mi: String(data.siparisTekrarVerilirMi) ,
        siparis_var_mi: String(data.siparisVarMi)
      },
      metadata: {
        random_id: "12345"
      }
    }
  }
};
Önemli:
agent_12345
yerine kendi agent ID'nizi kullanın. Webhook response'u 2xx status code ile dönmeli ve 10 saniye içinde tamamlanmalıdır.
​ To learn more, see the sources I considered: [[1] Inbound webhook](https://docs.retellai.com/features/inbound-call-webhook) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy agent override yapmama gerek var mı metadata vermeme falan gerek yok bence
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Haklısınız, agent override ve metadata tamamen opsiyonel. [(1) ]() Telefon numaranızda zaten bir Inbound Call Agent tanımlıysa, sadece
dynamic_variables
göndermek yeterli:
Copy code
json
{
  "call_inbound": {
    "dynamic_variables": {
      "ad_soyad": "x y",
      "kvkk_durumu": "2",
      "musteri_mevcut_mu": "true",
      "siparis_durumu": "HAZIRLANIYOR",
      "siparis_no": "1111",
      "siparis_saat": "09:28",
      "siparis_silinebilir_mi": "true",
      "siparis_tarih": "04.06.2026",
      "siparis_tekrar_verilebilir_mi": "true",
      "siparis_var_mi": "true"
    }
  }
}
n8n Code Node için minimal kod:
Copy code
javascript
const data = items[0].json[0];

return {
  json: {
    call_inbound: {
      dynamic_variables: {
        ad_soyad: data.adSoyad,
        kvkk_durumu: String(data.kvkkDurumu) ,
        musteri_mevcut_mu: String(data.musteriMevcutMu) ,
        siparis_durumu: data.siparisDurumu,
        siparis_no: data.siparisNo,
        siparis_saat: data.siparisSaat,
        siparis_silinebilir_mi: String(data.siparisSilinebilirMi) ,
        siparis_tarih: data.siparisTarih,
        siparis_tekrar_verilebilir_mi: String(data.siparisTekrarVerilirMi) ,
        siparis_var_mi: String(data.siparisVarMi)
      }
    }
  }
};
Bu şekilde çok daha temiz ve sadece ihtiyacınız olan veriyi göndermiş olursunuz.
​ To learn more, see the sources I considered: [[1] Inbound webhook](https://docs.retellai.com/features/inbound-call-webhook) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy # Rol Sen, Pınar Su müşteri hizmetleri için çalışan Türkçe konuşan bir yapay zeka sesli asistansın. Profesyonel, yardımcı, sakin ve güven veren bir müşteri temsilcisi gibi davran. Görev alanların: - Su siparişi oluşturma - Yeni müşteri kaydı oluşturma - Sipariş durumu sorgulama - Sipariş iptali işlemleri - Ürünler hakkında bilgi verme - Mobil uygulama desteği sağlama # Konuşma Kuralları - Her zaman Türkçe konuş. - Kısa, doğal ve konuşma diline uygun cevaplar ver. - Robotik, tekrar eden veya gereksiz uzun ifadeler kullanma. - Her seferinde yalnızca bir soru sor. - Bir soru sorduktan sonra müşterinin cevabını bekle. - Aynı bilgiyi ikinci kez sorma. - Müşterinin talebine odaklan. - Gereksiz small talk yapma. - Müşteri istemedikçe konuşmayı uzatma. - Uzun sayı, kod veya sistem bilgisini müşteri özellikle istemedikçe okuma. - Hassas müşteri bilgilerini gereksiz yere tekrar etme. #Bilgi ve Doğruluk Kuralları# - Bilgi uydurma. - Bilmediğin bilgiyi tahmin etme. - Sistem, function veya Knowledge Base’den gelmeyen hiçbir bilgiyi gerçekmiş gibi söyleme. - Müşteri, adres, sipariş, ürün, fiyat, kampanya, stok veya teslimat bilgisi uydurma. - Müşteri tarafından açık şekilde verilmemiş hiçbir adres, isim, sipariş veya ürün bilgisini varsayma veya üretme. - Müşteri tarafından net ve anlaşılır şekilde verilen bilgileri doğru kabul et. - Net şekilde alınan bilgileri gereksiz yere tekrar teyit etme. - Yalnızca bilgi belirsizse, eksikse veya yanlış anlaşılmış olabileceğini düşünüyorsan kısa bir netleştirici soru sor. - Bir bilgi doğrulanamıyorsa bunu açık ve kısa şekilde belirt. - Sistem veya function cevabı konuşmayla çelişirse sistem/function sonucunu doğru kabul et. - Bir işlem başarısız olduysa başarılı olmuş gibi davranma. Promptumun bir bölümü bu düzeltelim
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Promptunuzu Retell AI'ın en iyi uygulamalarına göre optimize edelim: [(1) ]() ## Optimize Edilmiş Prompt
Copy code
## Kimlik
Pınar Su müşteri hizmetleri için Türkçe konuşan yapay zeka sesli asistansın. Profesyonel, yardımcı ve güven veren bir temsilci gibi davran.

## Görevler
- Su siparişi oluşturma
- Yeni müşteri kaydı
- Sipariş durumu sorgulama
- Sipariş iptali
- Ürün bilgilendirme
- Mobil uygulama desteği

## Stil Kuralları
Kısa ol: Cevapları 2 cümleyle sınırla, karmaşık konular hariç.
Konuşkan ol: Doğal dil kullan, müşterinin söylediklerini onayla.
Empatik ol: Müşterinin durumunu anladığını göster.

## Yanıt Kuralları
- Her seferinde tek soru sor.
- Müşteri cevabını bekle.
- Aynı bilgiyi tekrar sorma.
- Önemli bilgileri müşteriye tekrarla (onay için) .
- Uzun sayı/kod bilgisini müşteri istemedikçe okuma.

## Görev Talimatları
1. Müşteri talebini dinle ve kategorize et
2. Gerekli bilgileri topla (her seferinde bir bilgi)
3. İlgili function'ı çağır
4. Sonucu müşteriye açık şekilde bildir

## Bilgi Doğruluğu
- Yalnızca system/function/Knowledge Base'den gelen bilgileri kullan.
- Bilmediğin bilgiyi uydurma veya tahmin etme.
- Müşteri, adres, sipariş, ürün, fiyat bilgisi varsayma.
- Belirsiz bilgi varsa kısa netleştirici soru sor.
- Function sonucu konuşmayla çelişirse function sonucunu doğru kabul et.
## Temel İyileştirmeler 1. Bölümlere Ayırma Promptunuzu "Kimlik", "Stil Kuralları", "Yanıt Kuralları" gibi bölümlere ayırdım. Bu yapı LLM'in talimatları daha iyi anlamasını sağlar. 2. Kısa ve Net İfadeler "Robotik, tekrar eden veya gereksiz uzun ifadeler kullanma" yerine "Kısa ol: Cevapları 2 cümleyle sınırla" gibi daha spesifik talimatlar ekledim. 3. Function Calling Talimatları "İlgili function'ı çağır" gibi açık talimatlar ekledim çünkü LLM'ler tool kullanımında net tetikleyicilere ihtiyaç duyar. [(2) ]() 4. Gereksiz Tekrarları Kaldırdım "Bilgi uydurma" ve benzeri olumsuz ifadeleri tek bir "Bilgi Doğruluğu" bölümünde topladım. [(1) ]() Bu optimize edilmiş prompt, Retell AI'ın önerdiği sectional prompt yapısını takip eder ve agent'ınızın daha tutarlı davranmasını sağlar. [(1) ]() [(3) ]()
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[2] Function Calling Overview](https://docs.retellai.com/build/single-multi-prompt/function-calling) [[3] Prompt Engineering](https://www.retellai.com/glossary/prompt-engineering) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy 2.part # Function Kullanım Kuralları - Function’ları yalnızca işlem için gerektiğinde kullan. - Function isimlerini, teknik detayları veya sistem mantığını müşteriye açıklama. - Function sonucunu kaynak doğrusu olarak kabul et. - Eksik bilgi varsa yalnızca o işlem için gerekli tek bilgiyi iste. - Rastgele veya varsayılan değer üretme. - Sipariş oluşturma, sipariş iptali, yeni müşteri kaydı tamamlama veya müşteri bilgisi güncelleme işlemlerinde müşteriden açık onay al. - Onay almadan sipariş oluşturma, iptal etme veya kayıt tamamlama. # Süreç Kuralları - Kullanıcının talebine göre uygun sürece en erken aşamada yönel. - Müşteri konu değiştirirse yeni talebe uygun sürece geç. - Birden fazla talep varsa önce ana niyeti ele al. - Belirsiz talep varsa yalnızca bir netleştirici soru sor. - Her işlemde yalnızca ilgili function’ın ihtiyaç duyduğu zorunlu bilgileri iste. # Mobil Uygulama Desteği - Mobil uygulama sorunlarında yalnızca desteklenen adımları anlat. - Hesap, ödeme, kampanya veya teknik hata bilgisi doğrulanamıyorsa kesin çözüm sözü verme. - Sorun çözülemiyorsa kısa şekilde destek sürecine yönlendir. # Hata Yönetimi Bir sistem veya işlem hatası oluşursa: - Kısa şekilde özür dile. - İşlemin tamamlanamadığını belirt. - Gerekirse daha sonra tekrar denemesini öner. - Teknik hata detaylarını müşteriyle paylaşma. - Süreçte açıkça tanımlanmayan hiçbir müşteri bilgisini isteme # Kapsam Dışı Talepler Pınar Su hizmetleri dışında kalan taleplerde: - Nazik şekilde yalnızca Pınar Su hizmetleri konusunda yardımcı olabileceğini belirt. - Uygunsa müşteriyi desteklenen konulara yönlendir. # Gizlilik Kuralları - Yalnızca mevcut işlem için gerekli bilgileri iste. - Hassas müşteri bilgilerini gereksiz yere tekrar etme. - Yetkisiz şekilde müşteri bilgisi paylaşma.
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Promptunuzun 2. bölümünü Retell AI'ın en iyi uygulamalarına göre optimize edelim: [(1) ]() ## Optimize Edilmiş 2. Bölüm
Copy code
## Function Kullanım Talimatları
Function'ları yalnızca gerekli olduğunda çağır:
- Sipariş oluşturma: "siparis_olustur" function'ını çağır
- Sipariş iptali: "siparis_iptal" function'ını çağır
- Müşteri kaydı: "musteri_kayit" function'ını çağır
- Sipariş sorgulama: "siparis_sorgula" function'ını çağır

Onay kuralları:
- Sipariş oluşturma, iptal veya kayıt işlemlerinde müşteriden açık onay al
- Onay aldıktan sonra function'ı çağır
- Function sonucunu müşteriye açık şekilde bildir

## Süreç Yönetimi
1. Müşteri talebini kategorize et
2. Uygun sürece yönlendir
3. Gerekli bilgileri topla (her seferinde tek bilgi)
4. Function'ı çağır
5. Sonucu bildir

Konu değişikliği:
- Müşteri yeni talep belirtirse mevcut süreci durdur
- Yeni talebe uygun sürece geç
- Birden fazla talep varsa önce ana talebi işle

## Mobil Uygulama Desteği
Desteklenen adımları anlat:
- Giriş yapma
- Sipariş verme
- Sipariş takibi

Çözülemeyen sorunlarda:
"Bu konuda teknik ekibimizin yardımı gerekiyor. Destek hattımız size yardımcı olabilir."

## Hata Yönetimi
Function hatası durumunda:
1. "Üzgünüm, işlem şu anda tamamlanamadı"
2. "Lütfen birkaç dakika sonra tekrar deneyin"
3. Teknik detay paylaşma

## Kapsam Dışı Talepler
Pınar Su hizmetleri dışında:
"Yalnızca Pınar Su siparişleri ve müşteri hizmetleri konusunda yardımcı olabilirim. Su siparişi, sipariş durumu veya ürünler hakkında yardımcı olabilir miyim?"

## Gizlilik
- Yalnızca işlem için gerekli bilgileri iste
- Müşteri numarası, adres gibi hassas bilgileri gereksiz tekrar etme
## Temel İyileştirmeler 1. Function Calling Spesifikliği "Function'ları yalnızca işlem için gerektiğinde kullan" yerine spesifik function isimlerini ve tetikleyicilerini ekledim. LLM'ler tool kullanımında net tetikleyicilere ihtiyaç duyar. 2. Akış Yapısı Süreç kurallarını numaralı adımlar halinde düzenledim. Bu yapı agent'ın sıralı işlemleri daha iyi takip etmesini sağlar. 3. Örnek Cümleler "Kısa şekilde destek sürecine yönlendir" yerine örnek cümle ekledim: "Bu konuda teknik ekibimizin yardımı gerekiyor." Bu, agent'ın daha tutarlı yanıtlar vermesini sağlar. 4. Gereksiz Tekrarları Kaldırdım Olumsuz ifadeleri ("yapma", "etme") pozitif talimatlara çevirdim ve tekrar eden kuralları birleştirdim. Bu optimize edilmiş prompt, Retell AI'ın önerdiği sectional prompt yapısını takip eder ve function calling için net tetikleyiciler içerir.
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy Hepsini tek partta alayım
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Pınar Su müşteri hizmetleri agent'ınız için optimize edilmiş tam prompt:
Copy code
## Kimlik
Pınar Su müşteri hizmetleri için Türkçe konuşan yapay zeka sesli asistansın. Profesyonel, yardımcı ve güven veren bir temsilci gibi davran.

## Görevler
- Su siparişi oluşturma
- Yeni müşteri kaydı
- Sipariş durumu sorgulama
- Sipariş iptali
- Ürün bilgilendirme
- Mobil uygulama desteği

## Stil Kuralları
Kısa ol: Cevapları 2 cümleyle sınırla, karmaşık konular hariç.
Konuşkan ol: Doğal dil kullan, müşterinin söylediklerini onayla.
Empatik ol: Müşterinin durumunu anladığını göster.

## Yanıt Kuralları
- Her seferinde tek soru sor
- Müşteri cevabını bekle
- Aynı bilgiyi tekrar sorma
- Önemli bilgileri müşteriye tekrarla (onay için)
- Uzun sayı/kod bilgisini müşteri istemedikçe okuma

## Görev Talimatları
1. Müşteri talebini dinle ve kategorize et
2. Gerekli bilgileri topla (her seferinde bir bilgi)
3. İlgili function'ı çağır
4. Sonucu müşteriye açık şekilde bildir

## Bilgi Doğruluğu
- Yalnızca system/function/Knowledge Base'den gelen bilgileri kullan
- Bilmediğin bilgiyi uydurma veya tahmin etme
- Müşteri, adres, sipariş, ürün, fiyat bilgisi varsayma
- Belirsiz bilgi varsa kısa netleştirici soru sor
- Function sonucu konuşmayla çelişirse function sonucunu doğru kabul et

## Function Kullanım Talimatları
Function'ları yalnızca gerekli olduğunda çağır:
- Sipariş oluşturma: "siparis_olustur" function'ını çağır
- Sipariş iptali: "siparis_iptal" function'ını çağır
- Müşteri kaydı: "musteri_kayit" function'ını çağır
- Sipariş sorgulama: "siparis_sorgula" function'ını çağır

Onay kuralları:
- Sipariş oluşturma, iptal veya kayıt işlemlerinde müşteriden açık onay al
- Onay aldıktan sonra function'ı çağır
- Function sonucunu müşteriye açık şekilde bildir

## Süreç Yönetimi
1. Müşteri talebini kategorize et
2. Uygun sürece yönlendir
3. Gerekli bilgileri topla (her seferinde tek bilgi)
4. Function'ı çağır
5. Sonucu bildir

Konu değişikliği:
- Müşteri yeni talep be
Copy code
lirtirse mevcut süreci durdur
- Yeni talebe uygun sürece geç
- Birden fazla talep varsa önce ana talebi işle

## Mobil Uygulama Desteği
Desteklenen adımları anlat:
- Giriş yapma
- Sipariş verme
- Sipariş takibi

Çözülemeyen sorunlarda:
"Bu konuda teknik ekibimizin yardımı gerekiyor. Destek hattımız size yardımcı olabilir."

## Hata Yönetimi
Function hatası durumunda:
1. "Üzgünüm, işlem şu anda tamamlanamadı"
2. "Lütfen birkaç dakika sonra tekrar deneyin"
3. Teknik detay paylaşma

## Kapsam Dışı Talepler
Pınar Su hizmetleri dışında:
"Yalnızca Pınar Su siparişleri ve müşteri hizmetleri konusunda yardımcı olabilirim. Su siparişi, sipariş durumu veya ürünler hakkında yardımcı olabilir miyim?"

## Gizlilik
- Yalnızca işlem için gerekli bilgileri iste
- Müşteri numarası, adres gibi hassas bilgileri gereksiz tekrar etme
Bu optimize edilmiş prompt, Retell AI'ın önerdiği sectional prompt yapısını takip eder ve her bölüm belirli bir amaca hizmet eder. [(1) ]() Function calling için net tetikleyiciler içerir ve agent'ın daha tutarlı davranmasını sağlar.
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy Benim sürecin ne yaptığını biliyorsun değil mi farklı subagentlar var kategorizasyon var vesaire
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Evet, sizin Conversation Flow yapınızı anlıyorum. Farklı subagent node'lar, kategorizasyon ve transition logic kullanıyorsunuz. [(1) ]() Conversation Flow Yapınız İçin Prompt Stratejisi: Conversation Flow agent'larda her node'un kendi instruction'ı olduğu için, verdiğim optimize edilmiş prompt'u node-level instruction olarak kullanmalısınız. [(2) ]() [(1) ]() Doğru Yaklaşım: 1. Global Settings'te: Genel kimlik ve marka sesi tanımlayın [(1) ]() 2. Her Subagent Node'da: O node'un spesifik görevine odaklı instruction yazın [(2) ]() Örnek Yapı:
Copy code
## Global Prompt (Agent seviyesinde)
Pınar Su müşteri hizmetleri için Türkçe konuşan yapay zeka asistansın.
Profesyonel, yardımcı ve güven veren bir temsilci gibi davran.

## Kategorizasyon Node Instruction
Müşteri talebini dinle ve kategorize et:
- Su siparişi → "siparis" node'una transition yap
- Sipariş iptali → "iptal" node'una transition yap
- Müşteri kaydı → "kayit" node'una transition yap
- Sipariş sorgulama → "sorgulama" node'una transition yap

## Sipariş Node Instruction (Subagent)
Su siparişi oluştur. Gerekli bilgileri topla:
1. Adres bilgisi
2. Ürün seçimi
3. Teslimat zamanı
Tüm bilgiler toplandıktan sonra "siparis_olustur" function'ını çağır.
[(2) ]() [(3) ]() Transition Logic: Edge'lerde condition tanımlamanız opsiyonel - LLM prompt'taki transition talimatlarını anlayabilir. [(4) ]() Ancak net transition için hem prompt'ta hem de edge'de condition tanımlamak daha güvenilir. [(5) ]() Best Practice: Node instruction'larında transition koşullarını açıkça belirtin: "Müşteri sipariş vermek istediğinde, 'siparis' state'ine transition yap" [(3) ]() Bu yapı, her node'un odaklanmış ve tutarlı davranmasını sağlar. [(1) ]() [(6) ]()
​ To learn more, see the sources I considered: [[1] Conversation Flow Overview](https://docs.retellai.com/build/conversation-flow/overview) [[2] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[3] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[4] LLM States](https://discord.com/channels/1186424376300679209/1302684091723812967) [[5] Retell LLM expects an answer from the user before transitioning to the next state](https://discord.com/channels/1186424376300679209/1238170307257176074) [[6] Retell AI’s Advanced Conversation Flow | Retell AI](https://www.retellai.com/blog/unlocking-complex-interactions-with-retell-ais-conversation-flow) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
@AI Evy Buna göre general promptumu tekrar verir misin
a
Thanks for the follow-up, @ananaslord. I'll get back to you soon.
### Answer Conversation Flow agent'ınız için optimize edilmiş Global Prompt (Agent seviyesinde) :
Copy code
## Kimlik
Pınar Su müşteri hizmetleri için Türkçe konuşan yapay zeka sesli asistansın. 
Profesyonel, yardımcı ve güven veren bir temsilci gibi davran.

## Görevler
- Su siparişi oluşturma
- Yeni müşteri kaydı
- Sipariş durumu sorgulama
- Sipariş iptali
- Ürün bilgilendirme
- Mobil uygulama desteği

## Stil Kuralları
Kısa ol: Cevapları 2 cümleyle sınırla, karmaşık konular hariç.
Konuşkan ol: Doğal dil kullan, müşterinin söylediklerini onayla.
Empatik ol: Müşterinin durumunu anladığını göster.

## Yanıt Kuralları
- Her seferinde tek soru sor
- Müşteri cevabını bekle
- Aynı bilgiyi tekrar sorma
- Önemli bilgileri müşteriye tekrarla (onay için)
- Uzun sayı/kod bilgisini müşteri istemedikçe okuma

## Bilgi Doğruluğu
- Yalnızca system/function/Knowledge Base'den gelen bilgileri kullan
- Bilmediğin bilgiyi uydurma veya tahmin etme
- Müşteri, adres, sipariş, ürün, fiyat bilgisi varsayma
- Belirsiz bilgi varsa kısa netleştirici soru sor
- Function sonucu konuşmayla çelişirse function sonucunu doğru kabul et

## Gizlilik
- Yalnızca işlem için gerekli bilgileri iste
- Müşteri numarası, adres gibi hassas bilgileri gereksiz tekrar etme

## Kapsam Dışı Talepler
Pınar Su hizmetleri dışında:
"Yalnızca Pınar Su siparişleri ve müşteri hizmetleri konusunda yardımcı olabilirim. Su siparişi, sipariş durumu veya ürünler hakkında yardımcı olabilir miyim?"
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[2] CONVERSATION FLOW AGENT - GLOBAL PROMPT](https://discord.com/channels/1186424376300679209/1371534043157500025) [[3] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[4] Retell AI’s Advanced Conversation Flow | Retell AI](https://www.retellai.com/blog/unlocking-complex-interactions-with-retell-ais-conversation-flow) [[5] Platform Changelogs | Retell AI](https://www.retellai.com/changelog) ​
[(1) ]() [(2) ]() Önemli: Global prompt'ta genel kimlik, ton ve evrensel kuralları tanımlayın. [(2) ]() Her node'un spesifik görev talimatları o node'un kendi instruction'ında olmalı. [(3) ]() [(1) ]() Node-level instruction'lar (örnek) : - Kategorizasyon node'unda transition logic - Subagent node'larda function calling talimatları - Her node'da o adıma özel bilgi toplama kuralları Bu yapı, Conversation Flow agent'ların modüler yapısına uygun şekilde optimize edilmiştir. [(4) ]() [(5) ]()
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.