# Müşteri İletişim Platformu ###### tags:`communication` ```plantuml @startuml rectangle "Temel Mimari" { component gateway << bbt.messaging.gateway >> [ Uygulamalar için mesaj gönderim kapısı ] component dengage << dEngage >> [ Kampanya ve mesaj gönderim çözümü ] component codec << Codec >> [ SMS mesajları için Operatör entegrasyon çözümü ] component workers << Workers >> [ Musteriye bildirim gonderimi dEngage uzerine veri akisi saglama ] component apilog << API Log >> [ Müşteri Web, Mobil ve Çağrı Merkezi Hareketleri dEngage uzerine veri akisi saglama ] component mobile [ Mobil Uygulama ] component web [ Web Uygulama ] gateway --> dengage : Bulk&Fast SMS, eMail, Push gateway --> codec : OTP dengage --> codec : Bulk&Fast SMS workers --> dengage : Müşteri verileri apilog --> dengage : Müşteri hareketleri dengage --> web : On-Web dengage --> mobile : Push, In-App mobile --> dengage : Events web --> dengage : Events workers --> gateway : Mail, SMS, Push @enduml ``` ## dEngage Çalışmaları ### Başvuru Bilgilerinin Akışı - [x] Temel başvuru bilgilerinin aktarılması - [ ] Ek başvuru bilgilerinin aktarılması ### Müşteri Bilgilerini Akışı - [x] Aktarım takip uygulamasının geliştirilmesi - [ ] dEngage aktarım uygulmasının geliştirilmesi - [ ] Testlerin yapılıp canlı sisteme taşınması ```plantuml @startuml rectangle "Müşteri Bilgilerinin Veri Akış Mimarisi" { component handler << QLIK >> [ <b>CDC</b> Müşteri ile ilgili bilgi değişiklikleri takibi için ] component dengage << dEngage >> [ Master Contact kayıtlarını güncellemek için ] package "Kafka Topics" as kafka { database topic1 [ Müşteri bilgileri güncellendi ] database topic2 [ Telefon numarası güncellendi ] database topic3 [ Eposta güncellendi ] database topic4 [ Cihazı güncellendi ] } component workertracker <<bbt.cif.customer-info-tracker.worker>> [ Müşteri bilgilerini takip edip toplarlar ] database topicCustomerUpdate [ Güncellenmiş müşteri bilgisi paketi ] component workerupdater <<bbt.dEgange.customer-info-updater.worker>> [ Müşteri bilgilerini dEngage üzerinde günceller ] } handler --> topic1 handler --> topic2 handler --> topic3 handler --> topic4 topic1 --> workertracker topic2 --> workertracker topic3 --> workertracker topic4 --> workertracker workertracker --> topicCustomerUpdate topicCustomerUpdate --> workerupdater workerupdater --> dengage @enduml ``` ### :+1: Müşteri Servis Hareketlerinin Akışı - [ ] Müşteri servis haraketlerinin kafka topic içine aktarılması - [ ] dEngage aktarım uygulmasının geliştirilmesi - [ ] Testlerin yapılıp canlı sisteme taşınması ```plantuml @startuml rectangle "Müşteri Servis Hareketlerinin Veri Akış Mimarisi" { component logstash << logstash >> [ Servis çağrı bilgilerinin toparlamak için ] database topic [ Servis çağrı kayıtları ] component workerupdater <<bbt.dEgange.api-call-updater.worker>> [ Servis çağrı kayıtlarını dEngage tarafına aktarır. ] component dengage << dEngage >> [ Star şema üzerinde servis çağrılanı tutar ve kampanya kurgusunda kullanır. ] } logstash --> topic topic --> workerupdater workerupdater --> dengage @enduml ``` :::warning * Logstash ile direkt aktarım yapılabilir. * CDC ile SQL den aktarım yapılabilir. * RabbitMQ de bir queue daha oluşturarak aktarım yapılabilir. * https://docs.confluent.io/kafka-connect-rabbitmq-source/current/overview.html ::: #### Kayıt Deseni Her bir log kaydında bulunacak ve aktarılacak alanlar; * **RequestTime**: API çağırma zamanı olarak aktarılacaktır. * **CustomerId**: Müşteri TCKN bilgisi * **CustomerNo**: Temel bankacılıkta bulunan müşteri bilgisi * **ClientId**: Kullanan uygulama bilgisi *(Text)* * **HttpMethod**: Çağrılan servisin method tipi bilgisi * **UpStreamPathTemplate**: Çağrılan servisin url bilgisi * **RouteData**: Route üzerinden bind edilen data *(JSON/Text)* * **RequestQueryString**: Query üzerinden gönderilen data *(JSON/Text)* * **RequestData**: Request body üzerinden gönderilen data *(JSON/Text)* * **ResponseData**: Response body olarak dönen data *(JSON/Text)* #### Aktarım Kuralları * Sadece HTTP Status Code: 200 kayıtları aktarılacaktır. * Personel hareketleri **aktarılmayacak**. * Personel bilgisi uygulama ayağa kalktığında pusuladan çekip dictionary de in-memory tutarak kontrol eder. * Dictionary yenilenme **6 saat** den uzun olamaz. * Yönetim kurulu üyeleri gibi yan çalışanlar tam olarak anlaşılmalı. * Sadece izin verilen UpStreamPathTemplate akışlarına izin verilecek. * Bir configürasyondan alacak şekilde configüre edilmeli. * Yeni strem runtime da eklenmeli :) * Pod dictionaryleri invalide edecek queue pub/sub modeli :) ### InApp, OnSite Devreye Alınması - [x] Test kurulumlarının yapılması - [x] Testlerin yapılması - [ ] Canlı Sistem Kurulumu - [ ] SDK Entegrasyonları ### Uygulama Davranış Verisi Akışı - [ ] SDK Entegrasyonları - [ ] Testlerin yapılması - [ ] Canlı Sistem Kurulumu - [ ] *Custom event* geliştirmleri ### Bildirimlerin Entegrasyonu - [ ] Bildirim mesajlarının star şemaya akışı (*Bildirim entegrasyon çalışmalarının bir parçası*). ```plantuml @startuml rectangle "Bildirim dEngage Veri Akış Mimarisi" { component handler << QLIK >> [ <b>CDC</b> İşlemler sonucunda oluşan hareketler tanımlı Kafka topiclerine aktarılır. ] component dengage << dEngage >> [ Star şema entegrasyonu ile hareket verisi entegrasyonu için ] package "Kafka Topics" as kafka { database topic4 [ ...n ] database topic1 [ Fast Gerçekleşti ] database topic2 [ EFT Geldi ] database topic3 [ Hesap Açıldı ] } package "İşleyiciler" << bbt.dEngage.stream-worker >> as workers { component worker1 [ Fast Gerçekleşti ] component worker2 [ Fast Gerçekleşti ] component worker3 [ Fast Gerçekleşti ] component worker4 [ ...n ] } handler --> topic1 handler --> topic2 handler --> topic3 handler --> topic4 topic1 --> worker1 topic2 --> worker2 topic3 --> worker3 topic4 --> worker4 worker1 --> dengage worker2 --> dengage worker3 --> dengage worker4 --> dengage @enduml ``` ### App Inbox Devreye Alınması - [x] Test kurulumlarının yapılması - [x] Testlerin yapılması - [ ] Canlı Sistem Kurulumu - [ ] Bildirimlerin entegrasyonu - [ ] SDK Entegrasyonları ## Bildirim Entegrasyon Çalışmaları - [x] Bildirim gönderim uygulamasının geliştirilmesi - [x] Bildirim izni/kaydı uygulmasının geliştirilmesi - [ ] Bildirim gönderim testlerin yapılması - [ ] dEngage veri aktarım modülünün geliştirilmesi ```plantuml @startuml rectangle "Bildirim Enterasyon Mimarisi" { component handler << QLIK >> [ <b>CDC</b> İşlemler sonucunda oluşan hareketler tanımlı Kafka topiclerine aktarılır. ] component gateway << bbt.messaging.gateway >> [ Şablonlu, şablonsuz mesajların iletimi için ] component master << bbt.notification.services >> [ Müşterilerinin bildirim izin durumlarının sorgulanması için ] package "Kafka Topics" as kafka { database topic4 [ ...n ] database topic1 [ Fast Gerçekleşti ] database topic2 [ EFT Geldi ] database topic3 [ Hesap Açıldı ] } package "İşleyiciler" << bbt.notification.worker >> as workers { component worker1 [ Fast Gerçekleşti ] component worker2 [ Fast Gerçekleşti ] component worker3 [ Fast Gerçekleşti ] component worker4 [ ...n ] } handler --> topic1 handler --> topic2 handler --> topic3 handler --> topic4 topic1 --> worker1 topic2 --> worker2 topic3 --> worker3 topic4 --> worker4 worker1 --> gateway worker2 --> gateway worker3 --> gateway worker4 --> gateway worker1 --> master worker2 --> master worker3 --> master worker4 --> master @enduml ``` ### QR & Fast Bildirimleri - [ ] Gönderimlerinin şablonlarının oluşturulması - [ ] Var olan izin ve kayıtların taşınmasın - [ ] Test edip canlıya alınması ### Para Transfer Bildirimleri - [ ] Gönderimlerinin şablonlarının oluşturulması - [ ] Var olan izin ve kayıtların taşınmasın - [ ] Test edip canlıya alınması ### Hesaplar Bildirimleri - [ ] Gönderimlerinin şablonlarının oluşturulması - [ ] Var olan izin ve kayıtların taşınmasın - [ ] Test edip canlıya alınması ### Ödeme Bildirimleri - [ ] Gönderimlerinin şablonlarının oluşturulması - [ ] Var olan izin ve kayıtların taşınmasın - [ ] Test edip canlıya alınması ### Kart Kullanım Bildirimleri - [ ] Gönderimlerinin şablonlarının oluşturulması - [ ] Var olan izin ve kayıtların taşınmasın - [ ] Test edip canlıya alınması ### Döviz Bildirimleri - [ ] Gönderimlerinin şablonlarının oluşturulması - [ ] Var olan izin ve kayıtların taşınmasın - [ ] Test edip canlıya alınması ### Fon Bildirimleri - [ ] Gönderimlerinin şablonlarının oluşturulması - [ ] Var olan izin ve kayıtların taşınmasın - [ ] Test edip canlıya alınması ## Gelen SMS Entegrasyon Çalışmaları Operatörler tarafından sağlanan kısa numaralardan gelen mesajlar gelen numara ve mesajı ile birlikte bir servise yönlendiriliyor. Var olan yapı daha izlenebilir ve sağlıklı bir yapıya dönüştürilmesi hedeflenmiştir. ```plantuml @startuml rectangle "Gelen SMS Yönetimi Mimarisi" { package "Operatör Mesajları" as operator { card sms_in_1[ <b>8222</b> Kredi Başvuru kanalı ] card sms_in_2[ <b>3525</b> İletişim İzni İptal ] } component codec [ <b>Codec</b> Operator SMS Entegrasyon Uygulaması <i>Bulk ve Fast</i> ] component handler << bbt.messasing.incoming-sms-handler >> [ <b>Mesaj Dağıtıcısı</b> Mesajları kısa numaralarına ve anahtar kelimelerine göre kafka topiclerine dağıtır. ] package "Kafka Topics" as kafka { database topic1 [ 8222_migros ] database topic2 [ 8222_mudo ] database topic3 [ 3525_on_iptal ] database topic4 [ 3525_burgan_iptal ] } sms_in_1 --> codec sms_in_2 --> codec codec --> handler handler --> topic1 handler --> topic2 handler --> topic3 handler --> topic4 @enduml ``` ### Çıkış SMS Entegrasyonu - [x] Burgan müşteri çıkış - [x] On müşteri çıkış - [ ] Çıkışların kuyruk yapsından çalışması ### Diğer Gelen SMS Entegrasyonu - [ ] **8222** Kredi Başvurusu
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up