# SMS Gateway ###### tags: `ready` Kampanya sisteminden gönderilen SMS mesajları hariç her türlü transactional SMS gönderim ve izleme servis kümesidir. * Gönderimler OTP dahil olarak bu gateway üzerinden yapılır. * Bu gateway nihai olarak dEngage üzerinde sonlanarak gönderim yapar. * Kara listeler gateway üstünde tutulur. * Templating dEngage üzerinde yapılır. ```plantuml @startuml rectangle "Transactional SMS Akışı" { package "Message Gateway" as gateway { artifact "SMS Servisleri" as sms_services } package "Backoffice " as backoffice { component sms_monitoring [ <b>SMS İzleme ve Yönetim Uygulaması</b> Yugabyte Exporter ] } package "Legacy Uygulamalar" as ui_legacy { card dijital_applications [ <b>Kanal Uygualamaları</b> ] card corebanking [ <b>Temel Bankacılık</b> ] card thirdparties [ <b>3.Parti uygulamalar</b> ] } database sqlserver [ <b>SQL Server </b> Tüm servis kayıtları Servislerin configürasyonları Kara liste yönetim alt yapısı ] dijital_applications --> sms_services corebanking --> sms_services thirdparties --> sms_services sms_monitoring --> sms_services component dEngage sms_services --> sqlserver sms_services --> dEngage @enduml ``` ## SMS Gönderimi ### POST : /message-gateway/sms/send SMS gönderimi için kullanılan servistir. #### Request Body ```json { "id": "b15e6285-04ea-413e-8afc-7d7613e043bb", "country-code": 90, "prefix": 530, "number": 2896073, "message": "Kredi başvurunuz onaylanmıştır.", "templated-message": { "template": "inform-customer-loan-approved", "data": { "Name": "Ugur", "Surname": "Karatas" } }, "type": "private-info | public-info | legal | otp", "process": "corportate-site-loan-application", "action": "loan-approved" } ``` * **id** alanı gönderici tarafından oluşturulan Guid değerdir. Gönderi sorgulamaları bu id üzerinden yapılır. * **country-code, prefix, number** gönderim yapılacak telefon numarasıdır. * **message** gönderim yapılacak yapılacak mesajı içerir. * **templated-message** gönderim yapılacak yapilacak mesaji dEngage şablonu ile içerir. *message ve templated-message alanlarından sadece birisi gönderilebilir.* * **type** alanı enumaration olup içeriğin tipini tanımlar. * Eğer içerik kişiye özel bir bilgilendirme ise **private-info** seçilir. Örneğin ektreler, hesap kesim bilgisi, fatura ödeme bilgisi gibi içerikler bu sınıfta değerlendirilebilir. * Eğer içerik genel bir bilgilendirme ise **public-info** seçilir. Örneğin şube açılışı, banka iletişim bilgisi değişimi gibi içerikler bu sınıfta değerlendirilebilir. * Eğer içerik yasal bir bilgilendirme ise **legal** seçilir. Örneğin BDDK bilgilendirmeleri, vergi değişim bildirimi gibi içerikler bu sınıfta değerlendirilebilir. * Eğer içerik güvenlik doğrulaması ise **otp** seçilir. Örneğin internet bankacılığı girişi bu sınıfta değerlendirilebilir. * **process** gönderimi hangi sürecin yaptığı bilgisi iz kayıtları için gönderilir. * **action** sürecin hangi adımında gönderimin yapıldığı bilgisidir. ## Header Yönetimi Gönderilen mesajlarda hengi marka/etiketle gönderim yapılacağı bu modül ile belirlenir. Kullanıcıya iletilecek mesaj kullanıcının telefon numarası üzerinden sorgulanarak elde edilen bilgilere istinaden ilgili kırınımdan belirlenir. Bu tanımlarda boş bırakılan alanlar o değer ne olursa olsun geçerli anlamında kullanılır. ### Kayıt görüntüsü | Header | Type | Business Line | Branch | Açıklama | | -------- | -------- | -------- |-------- |-------- | | Burgan&nbsp;Bank | - | - | - | Tüm mesajlar için varsayılan başlık metni | | On. | - | dijital | - | Dijital iş kolu için varsayılan başlık metni | | Burgan&nbsp;Private | - | retail | 3000 | Retail olup 3000 şube müşterine iletilen mesajın başlık metni | ### POST : /message-gateway/sms/header Bir header kaydı oluşturmak veya güncellemek için kullanılır. ```json { "id": "b15e6285-04ea-413e-8afc-7d7613e043bb", "type": "private-info | public-info | legal | otp", "business-line": "retail | dijital | corporate | sme", "branch": 2000, "header": "Burgan Bank" } ``` ### GET : /message-gateway/sms/header Header kayıtlarını getirmek için kullanılır. *Kayıt sayısının 100 adetten daha az olacağı varsayımı ile paging veya filtreleme fonksiyonlarına gerek duyulmamıştır.* ### DELETE : /message-gateway/sms/header/{id} Kayıt numarası verilen header kaydının silinmesi için kullanılır. ## Blacklist Yönetimi Black list yönetimi sadece otp mesajları için çalışmaktadır. Sim kart değişikliğine istinaden otp iletimini engellenmesi ve kullanıcının Black list'den çıkarılması fonksiyonları için servisler sunar. Sim değişikliği için gereken kontrol süresi için gün bilgisi **configuration** dosyasından okunur. ```xml <sim-change-control-days>90</sim-change-control-days> ``` Tüm otp gönderimleri öncesinde black list numara özelinde ve sim değişikliği kontrol günü kadar geriye giderek taranır. * Eğer hiç kayıt yok ise gün konrolü ile gönderim sağlanır. * Eğer resolve edilmemiş kayıt varsa gönderim sağlanmaz. * Eğer resolve edilmiş bir kayıt varsa resolve edildiği günden itibaren gün kontrolü yaparak gönderim sağlanır. ### Kayıt görüntüsü | Country Code | Prefix | Number | CreatedWith | CratedAt | Reason | ResolvedBy | ResolvedWith | ResolvedAt | | -------- | -------- | -------- |-------- |-------- |-------- |-------- |-------- |-------- | | 90 | 530 | 2896073 | f3fc7e0e-9e15-40b1-832f-d5a558e4c865 | 01-11-2021 |sim-change||| * **CreatedWith** kara listeye düşmesine neden otp gönderim çağrı talebinin kaydıdır. * **ResolvedBy** kara listeden çıkaran sürecin/sistemin adıdır. * **ResolvedWith** kara listeden çıkaran sişlemin tekil narasıdır. ### PATCH : /message-gateway/sms/blacklist/{id}/resolve Bir kara liste kaydını çözmek için kullanılır. ```json { "resolved-by": "call-center-ekyc-recover", "resolved-with": "2458687" } ``` ### GET : /message-gateway/sms/blacklist?phone={phone} Belirli bir telefonun black list kayıtlarını getirmek için kullanılır.