Cevaplara Müdahele Etmek
Bir örnekle, CEYD-A’nın konu takibini yapabilmesi için bir komut eklentisi yazalım. Bilindiği gibi CEYD-A da oluşan bazı olaylarda (events) vereceği cevabı değiştirebiliyorduk. CEYD-A nın komutun cevap karşılıklarını bulduğu ama şablon uymadığı için cevap veremediği durumlarda ONCOMMANDPATTERNNOTFOUND olayı çalıştırılmakta. Bu olayı tekrar tanımlayarak aşağıdaki gibi bir komut tanımlayalım:
1 2 3 4 5 6 7 8 9 10 11 |
SORU: oncommandpatternnotfound SABLON: oncommandpatternnotfound ({HERSON}) CEVAP: {!SET $response={!RET {!GET $staTopic!} {!GET $questionstring!}!}!} {!IF $response==??{!RET anlayamadım sözleri!}::{!GET $response!}{!IF $staTopic!=?? <small>Cevap {!GET $staTopic!} konusu kullanılarak yorumlanmıştır</small> {!RET cmdmessageboxcallback 2,red,Konuyu Sil,,RET konuyu sil!} ::!} !} |
Peki bu kodlar ne anlama geliyor ? Bir örnekle anlatalım:
Önce, Beyazıt Öztürk kimdir dediniz. CEYD-A size kim olduğunu aratıp söyledi. Konuyu otomatik olarak Beyazıt Öztürk olarak atadı. Konu değişkeni staTopic artık Beyazıt Öztürk.
Gelelim yazımızla ilgili olan kısıma:
Kaç yaşında dediniz. CEYD-A kaç yaşında komutunu biliyor ancak şablon (pattern) olarak (ÜNLÜ İSMİ) kaç yaşında olarak biliyor. Siz şablona uymyarak başına isim söylemeden sadece KAÇ YAŞINDA dediniz.
Şablon oturmadığı için ONCOMMANDPATTERNNOTFOUND çalışacaktır. Biz yukarıda bize özel bu komutu tekrar tanımladık. Peki ne yapıyor bu komut ?
Konu değişkeni ile soru değişkenini birleştiriyor ve response adı altında yeni bir değişkene atıyor. Örneğimizi baz alırsak response değişkenine birleşik bir şekilde BEYAZIT ÖZTÜRK KAÇ YAŞINDA değeri ÇALIŞTIRILARAK dönen cevabı atanıyor. Çünkü konu değişkeni BEYAZIT ÖZTÜRK, soru değişkeni ise KAÇ YAŞINDA. {!RET beyazıt öztürk kaç yaşında!} işlemi bu ünlümüzün yaşını bulup ekrana yazıp söylüyor.
Eğer response değişkeni boş ise yani kaç yaşında boş dönerse, ANLAYAMADIM SÖZLERİ komutu çalıştırılıyor. Bu komutta anlayamadım sözünü ifade eden birçok farklı söz bulunmakta.
En altta bulunan cmdmessageboxcallback ise, kırmızı renkte üzerinde Konuyu Sil yazan bir buton ekrana getiriyor ve üzerine basınca konuyu sil komutunu çalıştırıyor.