Olaya Bağlı Komutlar
CEYD-A nın nesnesel programlama yapısına yatkın özelliklerden Polimorfizm (Çok biçimlilik) ile olaya bağlı komutlar oluşturmak mümkün. Bu şekilde sadece siz söylediğinizde değil bir olay oluştuğu anda çalışmasını istediğiniz komutlar yazılabilir.
CEYD-A nın açılışta ne yapması gerektiğini, eğer size cevap veremez ise ne yapacağını, kelime anlamını bulamazsa alternatif ne yol izleyeceğini önceden ismi tanımlanmış komutları ezerek (override) belirtebilirsiniz. Katsayı kavramı desteklendiği için genel yapıda tanımlı olan komutu kendi komutlarınızla ezmeniz mümkün. Bir bakıma olay (event) kavramı ile, aşağıdaki olaylara tanımlanmış komutları tekrar tanımlayarak kendinize özgü Ceyd-a lar oluşturulabilir.
Peki şu anda tanımlı olan olaylar nelerdir:
onapplicationstart
ondescriptionnotfound
oncommandnotfound
onresultnotfound
Peki bunlar nedir ve ne anlam ifade ediyor ?
https://kodla.ceyd-a.com sitesi üzerinden aşağıdaki gibi bir komut tanımlayalım.
onapplicationstart
SORU ŞABLONU:onapplicationstart (.*),(.*),(.*)
SORU KELİMELERİ:onapplicationstart,10|
CEVAP ŞABLONU:
1 2 3 |
Uygulama versiyonunuz $2 dir. Cihazınız ise $3. Sizi dinliyorum $SAHİBİNADI |
Artık CEYD-A açıldığında size uygulama versiyonunuz 5.8.2. Cihazınız ise Samsung Note 4. Sizi dinliyorum Mehmet demesi olasıdır.
Komutu sadeleştirmek, geliştirmek sizin elinizde. Eğer tanımlamazsanız adminin hazırladığı komut devreye girecek ve açılışta farklı bir karşılama mesajı duyacaksınız.
ondescriptionnotfound
Diyelim, ceyd-a ya Mehmet kimdir dediniz ve size cevap veremedi. O zaman aşağıdaki tanımladığınız komut devreye girecektir. Yine bir önceki anlatımda olduğu gibi tanımlamazsanız varsayılan komut çalışacaktır. Aşağıdaki örnekte $1 sorduğunuz sorunun kelime(ler)idir. Örneğimizde Mehmet tir. Mehmet i bilmediği için önce cdict komutu ile kelime anlamını arayacak eğer bulamaz ise askshowpicture ile mehmet in internet arama sitelerinden bulduğu resmini size gösterecektir.
SORU ŞABLONU:ondescriptionnotfound (.*)
SORU KELİMELERİ:ondescriptionnotfound
CEVAP ŞABLONU:
1 2 3 4 5 6 7 8 |
{!SET $szl1={!RET cdict $1!}!} {!SET $err={!RET contains $szl1,encode!}!} {!IF $err== ?? {!GET $szl1!}:: {!RET askshowpicture $1!} !} |
oncommandnotfound
Eğer ceyd-a size cevap veremezse, $1 parametresi olan bu terimi cevabınızda kullanma durumu olacaktır. Aşağıdaki örnekte siz papatya dediniz diyelim . papatya için cevap bulamazsa size papatya nedir bulamadım dostum veya papatya ne demek oluyor biraz çalışmalıyım diyecektir
SORU ŞABLONU:oncommandnotfound (.*)
SORU KELİMELERİ:oncommandnotfound,10|
CEVAP ŞABLONU:
1 2 3 |
$1 nedir bulamadım dostum.|$1 ne demek oluyor. biraz çalışmalıyım |
onresultnotfound
Eğer ceyd-a, bildiği bir komuttan sonuç döndüremiyor ve hata veriyorsa bu komutun sonucunu yakalayıp verdiği hata koduna göre farklı bir cevap verdirmek mümkün.
Örnekte Hatanın ne olduğu belirtiliyor, sonrasında arama sitelerinde sonuç aratılıp ekranda gösteriliyor.
SORU ŞABLONU: onresultnotfound ({HERHANGİ1}),({SON HERHANGİ})
SORU KELİMELERİ: onresultnotfound
CEVAP ŞABLONU:
1 2 3 4 5 |
Hata kodu = {HERHANGİ1} Hata detay = {SON HERHANGİ} {!RET websearch {!GET $questionstring!}!} |
veya daha anlamlı bir olay tanımlanabilir. Eğer hata matematiksel bir işlem ise hata kodu 022 dir ve onun hatasını anlamlı bir şekilde CEYD-A nın söylemesi sağlanabilir. Eğer hata matematiksel değil ise CEYD-A bulamadığı için arama sitelerinde arama yapılır. $questionstring statik bir değişkendir ve sizin söylediğiniz son cümleyi tutar.
1 2 3 4 5 6 7 |
{!IF {HERHANGİ1}==022??Matematiksel işlemlerde ondalık noktalama işaretinde bir sorunum oldu, hatayı anladım, bildirdim ve Cenker bunu düzeltti. Ancak sana birkaç gün sonraki güncellemede yansıtabilirim bunu. Anlayışın için teşekkür ederim.. :: {!RET websearch {!GET $questionstring!}!} !} |