Serdar Kurtoğlu

Sırılsıklam bir gökyüzü çıktı ağlardan

Masmavi bütün balıkçılar...

Can Yücel










Kullanıcı Adı
Şifre

IVR (Interactive Voice Response) Yazılımları
Yazdir Yazdir

 

Türkçemize karşılığı  “sesli yanıt sistemi” olarak çevrilmiştir. Bu sistem , DTMF tuşları veya günümüz teknolojisinde ses ile de yönlendirilebilen bağlantılı olduğu sistemler ile entegre şekilde çalışan interaktif bir sistemdir IVR.

IVR sistemi , donanım ve yazılımın bir bileşeni şeklindedir. Yazılımsal açıdan bakıldığında işleyiş tamamen klasik bir akış diyagramı mantığı ile ilerlemektedir. Her işlem bir karar mekanizması, basamağıdır. Karar verme basmağında yönlendirme amaçlı önceden hazırlanmış ilgili ses dosyaları ilişkilendirilir. IVR sistemlerinde bu yüzden en önemli kısım akıştır. Akışta bir açık veya eksiklik olmaması gerekir. Yani IVR’a giren olarak nitelendirdiğimiz gelen müşteri , bu sistem içerisinde kendisini bir labirentte gibi hissetmemeli, yani kaybolmamalıdır. Yönlendirmeler esnasında ilgili akışa göre alınması gereken bilgiler var ise kart bilgileri, müşteri numarası vb. kontrol mekanizmaları olası her hatalı giriş için önceden düşünülüp ilgili noktardaki uyarı ses kayıtlarının oluşturulması ve akış içerisine ilgili mantıklı noktalara eklenerek gerekli yönlendirmelerin yapılması gerekmektedir.
 
Tahmin ettiğiniz gibi akış üzerinde direkt database bağlantısı yapılabilmektedir. Bu bağlanıtı üzerinde hazırlanan sp’ler vasıtası ile sorgulama yapılıp dönen değerlere göre akışa devam edilebilir. (Örn: 10 haneli müşteri numaranızı giriniz sonrasında girilen değer database’de sorgulanıp bu müşteri numarasına ait kayıt sorgusu çalıştırlır. Dönen başarısız sorgu değeri ise "ilgli müşteri sistemde bulunamadı. Lütfen müşteri numaranızı giriniz" gibi yönlendirici ses dosyaları eklenir.)
IVR genelde aradığınızda karşınıza çıkan sesli yanıt sistemi olarak düşünülsede bazen müşterinin aranılıp telefonunu açtığında IVR ile de karşılaşabileceği, bilgilendirileceği, yönlendirilen akışlar ile detaylı bilgi isteyeceğiniz işleyişler kurmak mümkün olmaktadır. 
 
Bir IVR’a aynı anda sınırlı sayıda kişi giriş yapabilir. Bu giriş noktalarına kanal denilir. Kanal sayısı arttıkça aynı anda hizmet verebilme kapasitesi artar.
 
IVR’ın sağlamış olduğu faydalar işlem tipleri açısından şu şekilde sıralamak mümkün;
 
  • Sisteme ulaşan müşterilerinin agent’a aktarılmadan IVR tarafında işlem yapması yani gelen müşteri yoğunluğunu IVR tarafına absorbe edilmesi ,  agent'a aktarılacak her gelen müşterin yaratacağı iş gücü gibi çok büyük bir maliyeti IVR sistemi ile düşürmek mümkün. ABD'de yapılan bir araştırmada bu maliyet oranı 10 kat gibi değerlere vardığı tespit edilmiştir.
  • IVR’a gelen müşteriyi arama sebebini tuşlama sistemiyle öğrenerek ilgili konusunda eğitim almış agent grubuna yönlendirebilirsiniz. (Örn: Teknoloji ürünleri için 1’e, mobilya dekorasyon için 2’ye vb.) Bu yönlendirme işleminde ACD (Automatic Call Distribution)  teknolojisinden faydalanıldığını belirtmekte fayda var.
  • IVR’a gelen müşterilere sistem içerisinde tanımlı bir müşteri ise müşteri veya abone numarası girişi ile çağrının agent’a aktarılmadan önce bilgilerinin öğrenilmesi amaçlı kulanabilirsiniz. Örneğin , hizmet numarasını veya abone numarasını IVR üzerinden giren bir müşterinin bilgileri agent’a aktarıldığında agent ekranında ilgili müşterinin adı, soyadı, adresi vb. bilgilerin yanısıra varsa ödeme, borç bilgileride agent’ın ekranına otomatik olarak düşürülüp işlemlerin daha kısa sürede yapılmasına olanak sağlamaktadır.
  • IVR’a gelen işlemlerde , müşterinin IVR’da uzun süre bekletilmesi her zaman sorun olmuştur. Bu türde şikayetleri önlemek için mevcut müşteriye ve mevcut müşteriler içerisinde de bir öncelik verilmesi durumunda yine girilen abone veya hizmet numarası gibi unique bir numara ile gelen müşteriler arasında sıralama yapıp öncelik verilmesi mümkün olmaktadır.
  • Yine gün içerisinde agent'ların yoğun olan saatlerde ( “şu anda tüm müşteri temsilcilerimiz diğer müşterilerimize hizmet vermektedir” gibi cümlelerin olduğu saatler) müşteri hatta beklemeyip aranamak istediği saati IVR sistemine girmek koşulu ile yoğunluk dağıtıcı olarak kullanılıp müşteri şikayet konusu olabilecek bir durumu müşteri memnuniyetine çevirilebilinir.
  • Kredi kartı ile satış işlemlerinde müşterinin telefon ile konuştuğu kişiye kredi kart bilgilerini vermesi pek doğru bir yaklaşım değildir. İşte tam bu noktada da IVR devreye girmektedir. Agent müşteri ile görüşmesinin sonunda kredi kart bilgilerinin girişi için müşteriyi IVR ortamına yönlendirerek kredi kart bilgilerinin girilmesi sağlanır. Sonrasında ilgili müşteri yine IVR tarafından ilgili agent'a yönlendirilip süreç güvenli ve kontrollü bir şekilde tamamlanabilmektedir.
  • IVR sistemi , müşterinin ilgili birimleri kendisinin aranması ve IVR ile işlemler yapmasının (inbound) dışında müşterinin sistem tarafından aranıp (outbound) ürün veya firma ile ilgili kısa bilgilendirmelerde müşteri aranılıp direkt IVR ile müşteriyi karşılaştırıp ürün tanıtımı ve detaylı bilgi için sizi aramamızı istiyorsanız gibi cümleler ile potansiyel müşteri datasına ulaşıp müşteri havuzu oluşturulabilmektedir.

Tüm bu faydalarının dışında aslında IVR sistemlerine biraz daha geniş perspektiften yani hem sosyolojik hem de teknolojik açından bakmak gerekiyor. Teknolojik açıdan bakıldığında IVR, işlevsellik, esnek uygulanabilirlik ve maliyet özellikleri çok güçlü ve cazip olsa da bence insanın sosyalleşmiş yapısını, diyalogu göz ardı etmemek gerekir. İşte bu sebepten vardır IVR sistemlerinde “müşteri temsilcisine bağlanmak istiyorsanız“ ile başlayan  cümleler. Ve yine bu sebepten IVR teknolojisi , insanın bu sosyal yapısına paralel gelişerek görüntülü IVR sistemlerine doğru yol almaktadır. Bu durum yani teknoloji ve insanın ortak payda arayışı , IVR konusunda da onları her geçen gün biraz daha birbirlerine yaklaştıracakları güzel bir örnek olacaktır. 

 

Ülkemizde Çağrı Merkezleri Yazılımları Ve Bileşenleri
Yazdir Yazdir

 

Ülkemizde ve dünyada çağrı merkezi yazılımları CRM (Customer Relationship Management) dediğimiz, Türkçe karşılığıyla “Müşteri İlişkileri Yönetimi” kapsamına girmektedir. CRM yazılımlarının temelinde müşteri davranış ve alışkanlıklarının modellenmesi ile bu modellemenin sonucu olan satış, pazarlama hizmetlerinin yönetilmesi yatmaktadır. CRM yazılımlarının, diğer yazılımlardan ayıran en önemli özelliği; datanın devingen bir şekilde sisteme dahil olması ve bu süreç içerisinde güncellemelerle bir önceki sisteme dahil olduğu andan daha değerli halde sistemden çıkıyor olması söylenebilir.
Günümüzde Çağrı Merkezleri, sözünü ettiğimiz CRM yazılımlarını etkin bir şekilde kullandığı inbound/outbound görüşmeler, toplu sms, e-mail ile bilgilendirme, IVR vb. interaktif metodlarla satış ve satış sonrası hizmet kapsamına ivme kazandırmaktadırlar. Bu ivme ile son 15-20 yıl içerisinde Çağrı Merkezlerini ve buna bağlı olarakta CRM yazılımları rekabetin arttığı global dünyadaki pazar payını hızla üst sıralara taşıdığını görmekteyiz.
Çağrı Merkezlerinin son 15-20 yıllık geçmişinde de ülke ekonomilerine yaptığı katkı çok büyüktür. Genç nüfusa sağladığı imkanlar, ekonomilerin temel taşı olan arz/talep dengesinde birleştirici bir etken olması yani ekonomileri canlandırma noktasında da büyük öneme sahip olduğunun altını çizmekte fayda var.
 
Günümüze Kullanılan Çağrı Merkezi Teknoloji Bileşenleri ve Kavramlar
  •    IVR (Interactive Voice Response)
  •    Progressive and Predictive Dialler
  •   ACD (Otomatik Çağrı Dağıtımı)
  •    CDR (Çağrı Görüşme Detayları)
  •   CTI (Computer Telephony Integration)
  •   Ses Kayıt Sistemleri
  •   Sistemsel Entegrasyonlar (Bulk Sms gönderim vb.)
  •   Operasyonel Yazılım (CRM)

 Not: Bu kavramlar ile ilgili detaylar bir sonraki yazının konusu olacaktır.

 

SQL 2005 Güvenlik/Veri Şifreleme
Yazdir Yazdir

Başlarken çok bişey yazmaya gerek yok. SQL 2005 ile gelen veri şifreleme işlem basamaklarını anlatacağım.

Not: Şifreleme deyip geçmeyin geri dönüşü olmayan yola girmeyin. Aman dikkat, yedekli çalışın.

. Database Alan Şifreleme işlem basamakları
 
a.     Şifrelencek alan VARBINARY(256) veri tipinde oluşturulur.
 
Örn:
CreateTable MusteriTest
(
  MusId INTPrimaryKeyIDENTITY,
 TelNo VARBINARY(256)   
)
 
b.     Database seviyesinde sertifika oluşturulur.
create master key encryption by password ='password';
c.     Master key kullanılmak üzere açılır.
OPEN MASTER KEY DECRYPTION BY PASSWORD ='password’
 
d.     Sertifika create edilir.
CREATECERTIFICATE Sertifika_Test
      WITH SUBJECT ='Ozel Sifreleme Algoritmasi.',
START_DATE ='07/07/2009'
 
e.     Simetrik Key create edilir.
 
CREATESYMMETRICKEY Key_Test
      WITH ALGORITHM = triple_des,
            identity_value ='password',
            key_source ='password'
            ENCRYPTION BYCERTIFICATE Sertifika_Test
go
 
 
      f.      Sertifikaların backupları alınabilmektedir. Sertifika backup alınırken bir şifre ile alınır. Aynı şifre sertifikayı create edilirken kullanılacaktır.
 
      Örn:
backupcertificate Sertifika_Test tofile='\\ortak\CertificatesBackup.cer'
 with private key(file='\\ortak\CertificatesBackup.pvk',
 encryption by password ='password')
 
g.     Her işlem öncesi (insert, update , select)opensymmetrickey deyimi ile key açılır.
 
opensymmetrickey Key_Test decryption byCERTIFICATE [Sertifika_Test]
 
h.     Her işlem sonrası (insert, update , select) CLOSESYMMETRICKEYdeyimi ile key kapatılır.
 
CLOSESYMMETRICKEY [Key_Test]
 
i.        Her insertlerde ve updatelerde şifreleme aşağıdaki örnekte olduğu gibi kullanılmaktadır.
INSERTINTO [MusteriTest] VALUES(encryptbykey(key_guid('Key_Test'), N'05331234567'))
 
--Açılır
opensymmetrickey Key_Test decryption byCERTIFICATE [Sertifika_Test]
--İlgili kayıtlar çekilir...
SELECT TelNo,
       convert(NVARCHAR(100), decryptbykey( TelNo ))as'TelNo'
FROM   [Musteri]
--kapatılır..
CLOSESYMMETRICKEY [Key_Test]
Copy , paste, F5 (Yani SQL'de New Query açılır, alttaki blok kopyalanır yapıştırılır sonra F5'e basılır.)
 

--Database seviyesinde master key üretilir.

create master key encryption by password ='TEST1234567#TEST12345789';

 

--Sertifika oluşturmadan önce master key open işlemi ile hazır konuma getirilir.

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'TEST1234567#TEST12345789'

 

 

CREATE CERTIFICATE New_Sertifika_Deneme

     WITH SUBJECT ='Ozel Sifreleme Algoritmasi.',

     START_DATE = '01/22/2010'

 

CREATE SYMMETRIC KEY New_Key_Deneme

  WITH ALGORITHM = triple_des,

      identity_value = 'TEST1234567#TEST12345789',

      key_source = 'TEST1234567#TEST12345789'

      ENCRYPTION BY CERTIFICATE New_Sertifika_Deneme

go

 

 

BULK INSERT (OPENROWSET)
Yazdir Yazdir

   SQL server 2005 ile birlikte yeni gelen bir özellik olan dosyayı okuma ve onu rowset haline getirip databasede saklama ile ilgili iki örnek ekledim. İlki xml dosya yapısı ikincisi bmp resim dosyası için. Nerelerde mi kullanırız? Günlük döviz kurlarını xml olarak database aktarmada. Isı, ses, tireşim vb cihazların uyarı xml değer dosyalarını database aktarımda, her türlü resim dosyasını databasede saklamak gerektiğinde kullanabilirsiniz. Gerisi hayal gücünüze kalmış.

 

DECLARE @xml XML;
CREATE TABLE Products(xmlCol XML)

INSERT Products
SELECT
CONVERT(XML, BulkColumn, 2)
FROM OPENROWSET (BULK 'C:\stok.xml', SINGLE_BLOB)Product
SELECT * FROM Products

--------------------------------------------------

CREATE TABLE dbo.Resimlerim
(ResimID int NOT NULL,
bmp varbinary(max) NOT NULL)
GO
INSERT dbo.Resimlerim
(ResimID, bmp)
SELECT 1,
BulkColumn FROM OPENROWSET(BULK'C:\test.bmp', SINGLE_BLOB) AS x
SELECT bmp
FROM Resimlerim

 

 

 

SQL Server 2005 : Lock, Blocking
Yazdir Yazdir

Veritabanları transaction işlemini gerçekleştirirken locking kullanır. Bu işlemin gerşekleşme süresince ilgili tabalolarda işlem yapılamaz. Bu süre transaction süresi kadardır. Bu süre zarfında işlemler kuyrukta bekler. Bu bekleme sürcine Blocking denir.

Açıklayıcı olması açısından öncelikli olarak blocking sürecinin nasıl oluştuğu ile ilgili bir örnek verelim.
Database üzerinde bir tablomuz olsun. Personel

Süreç
İşlem
Personel Tablosu işlemi için üzerinde transaction başlatılır.
begin transaction 
Personel Tablosu için üzerinde başka bir transaction daha başlatılır.
begin transaction 
Personel Tablosu üzerinde bir update veya insert işlemi çalıştırılır.
update Personel
set PersonelAd='test'
Personel Tablosu üzerinde select sorgusu çalıştırılır.
select * from Personel
Son select sorgusu bir önceki update commit veya rollback olana kadar block durumda bekler.
Blocklanmış tablo durumu

 
 
SQL üzerinde bloke olmuş kayıtları çekmek için aşağıdaki sorguyu kullanabiliriz.
SELECT pro.spid
,convert(char(12), db.name) db_name
, program_name
, convert(char(12), lg.name) login_name
, convert(char(12), hostname) hostname
, cmd
, pro.status
, pro.blocked
, login_time
, last_batch
, pro.spid
FROM      master..sysprocesses pro
JOIN      master..sysdatabases db ON pro.dbid = db.dbid
JOIN      master..syslogins Lg ON pro.sid = lg.sid
WHERE     pro.blocked <> 0 and pro.dbid = DB_ID('DatabaseAdı')
 

Proje ve Versiyonlama
Yazdir Yazdir

Projeler, beklenti ve ihtiyaçlar çerçevesinde doğmuş, gereksinimler ile bütünleştirilmiş, zamana ve şartlara göre yaşayan canlı organizmalardır. Yaşayan bu organizmaları teknolojiye ve gereksinimlere karşı ayakta kalmasını sağlamanın yolu porjelerde iterasyonlar uygulamaktır. Yani proje deyimi ile projeyi fazlara bölmeli, versiyonlamalar yapılmalıdır. Microsoft'un tamda bu noktada yaptığı şey budur. Windows 98'i çıkarmayıp 10 yıl Vista için uğraşmadılar. (Aşağıda Selçuk Erdem'in karikatürüne bir göz atmakta fayda var:))

 

 Anlatmak istediğim aşağıda Selçuk Erdem karikatründe farklı bir bakış açısıyla anlatılsada biraz daha profosyonel yaklaşım gerektiren hali.:)

 

 

Stored Procedur İsimlendirme
Yazdir Yazdir

 

Veritabanımızdaki stored procedur isimlerimiz, yapılan işi anlatacak olup dört başlık altında toplanmalı ve bu başlıklarla başlanmalıdır. Böylelikle her stored procedur görüntü listesinde grup olarak bir arada bulunmasını ve kolaylıkla bulunmasını sağlayacaktır. Bunlar;
  • Insert
  • Delete
  • Update
  • Select
 
  • SelectSehir
  • SelectSehirBySehirId
  • SelectIlce
  • SelectIlceByIlceId
  • InsertSehir
  • InserIlce
  • UpdateSehirBySehirId
  • UpdateIlceByIlceId
  • DeleteSehirBySehirId
  • DeleteIlceByIlceId

 

 

Projelerde Risk Analizi ve Yönetimi
Yazdir Yazdir

Merhaba,
    Hepimiz çalştığımız projelerde riski önceden görüp tedbirlerini almak isteriz diye düşündüm. Bu amaçla benim çok sık kullandığım risk analzi tablosunu incelemenizi öneririm. Tabiki bu tabloyu hazırlamakla iş bitmiyor. Başlıktan da anlaşılacağı gibi "Proje Risk Analizi ve Yönetimi". Yani kısaca Risk ve YÖNETİMİ.

Şayet 16 maddeden oluşan riskler yönetmekte zorlanılıyorsa. O zaman "Böl, Parçala YÖNET" metodunu kullanmanızı tavisye ederim. Bu da nasıl bir şey derseniz. Tabloda çarpandan (Olasılık * Etki) oluşan "Önem" kolonunua göre sort ediyorsunuz. Sonrasında ilk 10 kısımını ele alıyorsunuz. Halamı yönetilemiyor o zaman ilk 5. halamı yönetilemiyor. O zaman tabloda 5. madde risk olasılığı değerini %100'e doğru arttırmaya başlayın derim. :)

 Proje Risk Analizi Ve Yönetimi
  Risk  (1-100%) (1-10) (1-10)        
# Durum Sonuç Olasılık Etki Önem Hafifletici Etken Engelleme Tetikleyici İlgili Takım Rolü
1 Yeni Teknolojilerin hızı Müşteriyi Menun Etmeyebilir Proje kabul görmeye bilir 50% 7 3,5 Makine gücü arttırmak Kodlar review edilmeli, gerekirse sunucu ve istemci makinelerin donanım gücü arttırılmalı Proje Deploy Program Manager, Product Manager
2 Firma İş Akışı değişebilir Proje gecikebilir. 40% 7 2,8 Varolan kodlar güncellenebilir Bir sonraki adıma ertelemek, projeyi fazlara bölmek. Proje Geliştirilirken Program Manager, Product Manager
3 Sistemin cevap vermemesi Sistem son kullanıcı ve müşterilere hizmet veremeyebilir 20% 10 2 Proje Tecrübeleri, iş akışlarının yeniden gözden geçirilmesi Testlerin çoklu test yöntemiyle yapılması, proje fazlarında müşterinin bilgilendirilmesi. Proje Geliştirilirken Product manager, Program Manager
4 Satışların düşmesi ve yönetimin yeni bütçesinde projenin maliyetin düşürülmesi Proje ertelenmeli veya iptaledilmeli 20% 10 2 Projenin Bütçe / Kaynak planı daha önceden oluşturulmalı Proje Adımlara bölünmeli ve Bütçeye göre geliştirilmeli Proje maliyetinin ilk tanımıyla beraber Product manager
5 Projeden Program Managerın Ayrılması Proje gecikebilir. 25% 8 2 Dökümantasyonun düzgün olması, Dökümantasyonlar Firma tarafından onaylı olması ve Product Manager in dökümantasyonu onaylaması Proje Geliştirilirken Product Manager
6 Projeye Yeni Adam Eklenmesi Proje gecikebilir. 60% 3 1,8 Dökümantasyonun düzgün olması, Project Manager in uygulamaya hakim olması Project Manager tarafından bütün dökümantasyonun incelenmesi ve doğrulanması Proje Geliştirilirken Program Manager
7 Proje Takımının Bilgi Birikiminin Yetersizliği Proje gecikebilir. 30% 6 1,8 Proje Yöneticisinin tecrübesi Teknik olarak Dökümanlar toplanmalı ve bireysel bilgiler takıma aktarılmalı Proje Başlarken Program Manager
8 Analizin Unutulması Proje gecikebilir. 30% 6 1,8 Projenin Dökümanları daha detaylı incelenmeli Product Manager ile toplantı organize edilmesi Proje Geliştirilirken Program Manager, Product Manager
9 Projeden Adam Ayrılması Proje gecikebilir. 25% 7 1,75 Dökümantasyonun düzgün olması, Project Manager in uygulamaya hakim olması Project Manager tarafından bütün dökümantasyonun incelenmesi ve doğrulanması Proje Geliştirilirken Program Manager
10 Mimari Alt yapının problem çıkartması Proje gecikebilir. 25% 6 1,5 Proje Tecrübeleri Standart bir çözüm geliştirir Proje Geliştirilirken Program Manager
11 Analiz dışı isteklerin projeye dahil edilmek istenmesi Proje gecikebilir. 25% 6 1,5 Projenin Dökümanları daha detaylı incelenmeli Product Manager ile toplantı organize edilmesi Proje Geliştirilirken Program Manager, Product Manager
12 Analizin Yanlış Anlaşılması Proje gecikebilir. 30% 4 1,2 Projenin Dökümanları daha detaylı incelenmeli Product Manager ile toplantı organize edilmesi Proje Geliştirilirken Program Manager, Product Manager
13 Kullanılan controllerin Problem çıkartması Proje gecikebilir. 20% 5 1 Proje Tecrübeleri Standart bir çözüm geliştirir Proje Geliştirilirken Program Manager
14 Yeni teknolojiler (Framework 3.5,Sql Server 2008) kullanılması Proje gecikebilir. 10% 4 0,4 B planları hazırlanmalı ve teknolojiler daha iyi incelenmelidir. Teknoloji risklerini kategorize edip önem sırasına sokup bölmek ve ilgili analizleri yapmak Proje başlangıcı Program manager
15 Takımda Anlaşmazlıkların olması Proje gecikebilir. 10% 3 0,3 Dikey bölümler yazdırılması, Program Managerin anlaşmazlığı çözmesi Her kişi programın bir modülünü yazar, Program Manager kontrol yapar Proje Geliştirilirken Program Manager
16 Product Manager ile Anlaşmazlıkların yaşanması Proje gecikebilir. 10% 3 0,3 Program Managerin anlaşmazlığı çözmesi Anlaşmazlığın kaynağının bulunması Proje Geliştirilirken Program Manager, Product Manager

 

 

Başlarken
Yazdir Yazdir

"Yeterki siz yazın" diyerek ve bu yönde her türlü teknik altyapıyı hazırlayan ekip arkadaşım İzzet GÜNDÜZ'e teşekkürlerimi bir borç bilirim.

 

Copyright © 2008 - Serdar Kurtoğlu