Anons, Menu ve Subdialog blokları

Öncelikle yukarıdaki şekilde görüldüğü gibi “tr-TR” klasörünü oluşturuyoruz. Ardından js dosyasını İngilizce için hazır gelen versiyonundan bir çalışma için uyarlıyoruz. (bu noktada temel olarak yapılması gereken dosya içindeki path bilgilerinin revize edilmesi ve İngilizce ile arasındaki “milion”, “bir milyon” gibi söylem farklılıklarına göre methodların gözden geçirilmesi. ) Ayrıca sayı okuma vb… yapacak iseniz, temel sayı okumalara yönelik İngilizce için ön yüklü gelen wav (aslen vox) dosyalarının türkçe için hazırlandığını düşünüyoruz. “tr-TR” altında akış mantığınıza göre kendi klasör yapınızı oluşturmanızda fayda var.
NOT: Anons dosyalarının formatı temel olarak (U-law, 8000Hz, 64Kbps, Mono) olarak kullanılabilir, composer içinde help dokümantasyonundan search ederek daha detaylı bilgi alınabilir. Encoding önemli, bu kısım ses kalitesine direk etki eder, temel olarak en yaygın ikisi aşağıdaki şekildedir. İstediğinizi kullanabilirsiniz ancak bulunduğumuz kıtayı ve standardı düşünerek operatörler vb… entegrasyonlarda sorun yaşamamak ve transcoding ihtiyacı duymamak adına (Aynı zamanda sunucu performansını etkiler.) U-law kullanmakta fayda var.
A-law – Temel olarak Amerika kıtasına yönelik standart. U-law – Avrupa tarafından kullanılan format.

Projeyi sağ tıklayıp, “properties” ten açtığımız ayarlar ekranından “Locales” kısmında Turkish için tik atmalıyız, ve istersek default dil olarak set edebiliriz. Sonrasında Akış içinde de “Set Language” bloğu yardımı ile set edilebilir, Ayrıca sessionda taşıdığınız bir değer ile her akışta koşullu olarak dinamik bir şekilde dil ayarı değiştirilebilir. Bu noktada set ettiğiniz ayar, temel olarak anons gibi media dosyalarını hangi dil klasöründen referans alacağını ve hangi js dosyasını (en-US.js/tr-TR.js….) kullanacağını ifade etmektedir.
Bir sonraki adımda istediğimiz anonsu okuyabilmek için “Prompt” bloğu ekliyoruz. Aşağıdaki şekilde projemizde tanımlı klasör yapısından, ekran görüntüsünde kullandığımız sihirbaz tarzı ekranlar aracılığı ile ilgili anonsu seçiyoruz.
Şimdi de “Prompt” bloğumuzun özelliklerini inceleyelim;
Language – Özellikle son set edilen dil ‘in geçerli olması için boş bırakıldı, ancak bu özellikle bir dil için işlem yapılırken farklı bir dilde okuma yapılması sağlanabilir. Clear Buffer – Anons esnası ve öncesindeki DTMF tuşlamalarının hafızada sonraki adıma taşınmasına yönelik ayar. Immediate Playback – Anonsun hemen okunması ya da bir sonraki okuma işlemine kadar tutulup bu adımda okunmasına yönelik ayar. (subcallflow girişlerinde anons kuyruğu okunmaya başlar.) Interruptable – yapılan tuşlama ile anonsun kesilip bir sonraki adıma geçmesini sağlar. Timeout – listedeki anonsları okurken araalarda sergilemesi istenen bekleme süresi. Aşağıda “Prompts” anonslar kısmında kullanılabilecek özelliklere yönelik açıklama bulunabilir.
Resource : Wizard ile wav dosyası seçimi. Value : Free format değer yazarak. Variable : değişken, javascript veya koşul ile atama.
Interpret-as : Anonsun tipi, para birimimi, Tarih mi, yoksa TTS okuması vs. seçimleri yapılabilmektedir. 2 Alandaki seçiminiz ve dil ayarı neticesinde aslında bu bloğun arka planında çalışan kurallar, Örnek olarak Türkçe dili için “tr-TR.js” dosyasındaki javascript fonksiyonları ile ilerler ve bu kısım incelenerek detay bilgi elde edilebilir.
Bu çalışma ile bir giriş akışı yaptık, içinden 2. Bir alt callflow’a dallandık, Dil ayarını Türkçe olarak atadık, Ayrıca subcallflowda dikkat edilir ise entry bloğunda “all” tipinde bir exception tanımlayarak, Dönüş yapmayan sonucu hata olan ve raporlara bu şekilde yansıyacak bir Exit bacağına yönlendirdik, Her şeyin yolunda gittiği durumda ise başarılı olarak atanmış, Exit bacağından çıkılarak ana akışa geri dönülecek. Ayrıca Anons Immediate playback olarak ayarlanmadığından mevcut akışta anonsumuz, callflow geçişi esnasında okunacaktır. Hemen okunması için değer değiştirilebilir. Bir adım ileri gidip tuşlama almaya çalışalım, Bu adımda “Menu” bloğu ile tuşlama alacağız. 1-2 şeklinde 2 farklı seçenek sunalım, 1 tuşlanırsa “Assign” bloğu yordamıyla “Menu” bloğunun out değerini taşıyan “menuVariables” değişkeninin değerini diğer bir değişken olan “InputVariable” a atıyoruz, 2 tuşlandığı taktirde Önce anons okuyup tekrar aynı atamayı yapıyor ve 2. Bir subcallFlow’a “InputVariable” ve “jsonSession” değişkenlerini ilk örnekteki gibi Input olarak veriyoruz, burada 2 değişkenin tek farkı “jsonSession” aynı zamanda bir output olarak sürekli veri taşıma amacı ile geri dönüyor. Bu kısımda ANONS ve ALT_AKIS_2 blokları daha öncede açıkladığımız bloklar olduğu için tekrar değinmiyoruz. Bu Örnek akışla yapılan tuşlama sonrası 1 veya 2 değerini 2. Subdialog’a input olarak, Son kullanıcının yapmış olduğu seçimi doğrultusunda göndermiş oluyoruz. (Aslen bu adımda “Assign” bloğu gerekmiyordu, zira “Menu” bloğunun değerini taşıyan değişken direkt olarak kullanılabilirdi ancak, kullanım amacını göstermek amaçlı olarak yer verilmiştir.)
Şimdi, Menu Bloğunun özelliklehrine bir göz atalım, nasıl kullandığımızı inceleyelim; Menu Mode – dtmf, asr, hybrid şeklinde menü seçimlerinin hangi teknoloji ile yapıldığını belirttiğimiz özellik. Menu Options - dtmf option larının ve return değerlerinin tanımlandığı alan. Repeat Menu Options – Menu nün tekrar okunması için dtmf seçeneği. Use Utterance to Segment – hybrid yapı kullanılır ise output olarak dtmf ve ASR çıkışlarını ayrıştırmak için kullanılabilir. Output Result – tanımlı option lardan seçilenin değeri bu adımda atanan değişkene aktarılır. Prompts - başlığı aynı isimli blok özellikleri ile eşleştiğinden tekrar anlatmayacağız. “Security” kısmı da subdialog bloğundaki alan ile benzerdir. User Input Retries - başlığı kapaca hatalı tuşlamalara ilişkin kısım Number Of Retries Allowed – Kaç hataya izin verildiği. Retry Prompts – Hatalı tuşlama durumlarında okunacak anonsların ayarlandığı alan. Use Last Reprompt Indefinitely – listesindeki son hata anonsu, tüm denemelerde okuması için. Use Original Prompts – Tekrar durumlarında, orijinal menün okunması için. Use Single Counter For Nomatch And Noinput – hata sayacı ortak olması için.

Yorumlar

Yazılar

Kotlin - 1 - Giriş

Genesys Nuance-ASR Entegrasyonu Port Kullanımı

Kotlin - 5 - Dönüşler ve Atlamalar (Returns and Jumps)