Genesys GVP ip uçları


Genesys IVR (GVP) platformu ile uğraşırken bazı sınırlar karşınıza çıkacak zira ortam UML tasarım benzeri bir görsel geliştirme ortamı sunuyor. Ancak korkmanıza hiç gerek yok, Bu noktada Genesys ile ilgili en sevdiğim kısım devreye giriyor ve yapacağınızı bildiğiniz durumlarda sizlere birçok alternatif sunuyor. Bu gün bu kısımlara kabaca değinmeye çalışacağım.
Bu noktada 1-2 Alternatifimiz bulunuyor, Örneğin JSON bir objenin sıralanması ya da 2 objenin merge edilmesi amacı ile “Scripts” klasörü (Klasör yok ise uygulamanın root klasöründe yaratılabilir.) altında oluşturulan Javascript File kullanılabilir:

function MergeRecursive(obj1, obj2) {

  for (var p in obj2) {
    try {
      if ( obj2[p].constructor==Object ) {
        obj1[p] = MergeRecursive(obj1[p], obj2[p]);
      } else {
        obj1[p] = obj2[p];
      }
    } catch(e) {
      obj1[p] = obj2[p];
    }
  }
  return obj1;
}

Ya da Server üzerinde File işlemleri için vb. işlemler için “src” klasörü (Klasör yok ise uygulamanın root klasöründe yaratılabilir.) altında oluşturacağınız bir “aspx” sayfası kullanılabilir.

Örnek olarak 2 input (islem, fileName) alan bir “aspx” gösterilebilir. Bu noktada Başta yer alan import kısımlarına dikkat etmek gerekir, “ContentType” oldukça önemli ayrıca import edilen “dll” lerin “bin” klasöründe yer alması gerekli. Ayrıca “performLogic” nesnesini çağrılma şekli önemli.

<%@ Page Language="C#"  ContentType="application/json" Inherits="BackEndlogic" %>
<%@ Import Namespace="Newtonsoft.Json.Linq"%>
<%@ Import Namespace="Newtonsoft.Json" %>
<%@ Import Namespace="System.IO" %>

<script runat="server">

    public override JObject PerformLogic(JObject state, Hashtable additionalParams)
    {
    String islem = (String)additionalParams["islem"];
    String fileName = (String)additionalParams["fileName"];
    String filePathBase = "../TEMPFILE/";
    String filePath = Server.MapPath(filePathBase) + fileName;
    JObject result;
    switch islem {
    case "0" :
        result = new JObject(new JProperty("fileExists", File.Exists(filePath)));
        break;
   case "1":
      try
      { File.Delete(filePath);
result = new JObject(new JProperty("result","true"), new JProperty("file",filePath));
       }
       catch(Exception e)
       {
        result = new JObject(new JProperty("result","false"), new JProperty("hata",e.Message));
       }
break;
return result;
    }
</script>

Örnek kod ile server tarafında dosya kontrolü ve silme işlemleri hedefleniyor, ancak unutulmaması gereken application pool'un çalıştığı kullanıcının ilgili kaybaklara read/write yetkisi olmalı.
“aspx” sayfalarla yapılabilecek işlemler oldukça geniş, javascript’lerle de gerçeklemekte zorlandığınız karışık iş kuralları için “dll” ler yazarak bunları kullanabilir, dış ortamdan http requestler yapabilirsiniz, Ayrıca Mevcut Genesys’ e özgü “aspx” ler için log yapısı yaratabilir ve kendi loğunuzu tutabilirsiniz…

Bu arada Şunuda belirtmekte fayda var, JSON objeleri gerek Genesys akışlarında kullanmak, gerekse “aspx” ve “dll” kullanırken veri alışverişi için kullanmak amacı ile en verimli alternatif olarak görünüyor. Orijinal Genesys tarafından sağlanan bazı “aspx” ve “js” dosyalarına “include” altından erişilebilir, modifiye etmek mümkün olsa da kendi dosyalarınızı yazmanızı tavsiye ederim.

. Makale kapsamında anlatılan .NET projesi olarak alınmış, bu nedenle “aspx” ve “js” dosyalarına JAVA projesi tercih edildiği taktirde anlatımları “jsp” ve yine “js” olarak düşünmekte fayda var, Teknoloji farklılığı olsa da yatkınlığınız doğrultusunda benzer durumlar karşınıza çıkıyor olacak.

Yorumlar

Yazılar

Kotlin - 1 - Giriş

Genesys Nuance-ASR Entegrasyonu Port Kullanımı

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