From 302745cb079b56e9a57740e9d320d745acbb41ad Mon Sep 17 00:00:00 2001 From: "janhavi.soni" Date: Wed, 21 Jun 2023 20:23:09 +0530 Subject: [PATCH] backend/feat/#146 : Adding extra params to send sms --- .../src/Kernel/External/SMS/ExotelSms/Flow.hs | 11 +++++--- .../Kernel/External/SMS/ExotelSms/Types.hs | 28 ++++++++++++++++--- .../External/SMS/Interface/ExotelSms.hs | 4 ++- .../Kernel/External/SMS/Interface/Types.hs | 1 + 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Flow.hs b/lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Flow.hs index b7618d07a..0b9322083 100644 --- a/lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Flow.hs +++ b/lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Flow.hs @@ -49,16 +49,19 @@ sendOTPApi :: Text -> Text -> Text -> - m - SubmitSmsResp + SMSType -> + PriorityType -> + m SubmitSmsResp sendOTPApi url authData sid otpSmsTemplate phoneNumber - sender = do - let submitSmsReq = SubmitSmsReq sender phoneNumber otpSmsTemplate + sender + smsType + priority = do + let submitSmsReq = SubmitSmsReq sender phoneNumber otpSmsTemplate smsType priority let auth = authData callExotelAPI (defaultBaseUrlSms sid url) diff --git a/lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Types.hs b/lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Types.hs index 501165cf4..403ecbb47 100644 --- a/lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Types.hs +++ b/lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Types.hs @@ -29,8 +29,8 @@ import Data.Aeson.Casing import Data.Aeson.TH import Data.OpenApi (ToSchema) import Data.Text as T -import Data.Text.Conversions -import EulerHS.Prelude +import Data.Text.Conversions (FromText (..)) +import EulerHS.Prelude hiding (fromStrict) import Kernel.External.Call.Exotel.Types (ExotelAccountSID) import Kernel.Storage.Esqueleto (derivePersistField) import Kernel.Utils.JSON @@ -38,6 +38,20 @@ import Kernel.Utils.TH import Web.FormUrlEncoded (ToForm, toForm) import Web.Internal.HttpApiData +data SMSType = TRANSACTIONAL | PROMOTIONAL | TRANSACTIONAL_OPT_IN + deriving (Generic, FromJSON, ToJSON, Show, Eq) + +data PriorityType = NORMAL | HIGH + deriving (Generic, FromJSON, ToJSON, Show, Eq) + +instance ToHttpApiData SMSType where + toUrlPiece = T.toLower . show + toQueryParam = toUrlPiece + +instance ToHttpApiData PriorityType where + toUrlPiece = T.toLower . show + toQueryParam = toUrlPiece + type OtpTemplate = Text -- | Exotel Url token @@ -55,9 +69,13 @@ data SubmitSmsReq = SubmitSmsReq to :: Text, -- Mobile number to which SMS has to be sent. Preferably in E.164 format. If not set, our system will try to match it with a -- country and route the SMS - body :: Text + body :: Text, -- String; Content of your SMS; Max Length of the body cannot exceed -- 2000 characters + smsType :: SMSType, + -- String; Type of sms + priority :: PriorityType + -- String: normal or high } deriving (Generic, Eq, Show) @@ -65,7 +83,9 @@ instance ToForm SubmitSmsReq where toForm SubmitSmsReq {..} = [ ("From", toQueryParam from), ("To", toQueryParam to), - ("Body", toQueryParam body) + ("Body", toQueryParam body), + ("SMSType", toQueryParam smsType), + ("Priority", toQueryParam priority) ] -- | SMS direction diff --git a/lib/mobility-core/src/Kernel/External/SMS/Interface/ExotelSms.hs b/lib/mobility-core/src/Kernel/External/SMS/Interface/ExotelSms.hs index 3e367e14e..ef5a94441 100644 --- a/lib/mobility-core/src/Kernel/External/SMS/Interface/ExotelSms.hs +++ b/lib/mobility-core/src/Kernel/External/SMS/Interface/ExotelSms.hs @@ -51,7 +51,9 @@ sendOTP exoCfg SendSMSReq {..} = do BasicAuthData (DT.encodeUtf8 apiKey) (DT.encodeUtf8 apiToken) - res <- Ex.sendOTPApi exoUrl authData sid exoOtpSmsTemplate exoPhoneNumber senderName + exoSmsType = TRANSACTIONAL + exoPriority = HIGH + res <- Ex.sendOTPApi exoUrl authData sid exoOtpSmsTemplate exoPhoneNumber senderName exoSmsType exoPriority return $ returnSmsResultExo res.exoSMSMessage.exoStatus returnSmsResultExo :: ExotelSmsStatus -> IT.SendSMSRes diff --git a/lib/mobility-core/src/Kernel/External/SMS/Interface/Types.hs b/lib/mobility-core/src/Kernel/External/SMS/Interface/Types.hs index bb859c6f4..ee02d0412 100644 --- a/lib/mobility-core/src/Kernel/External/SMS/Interface/Types.hs +++ b/lib/mobility-core/src/Kernel/External/SMS/Interface/Types.hs @@ -21,6 +21,7 @@ module Kernel.External.SMS.Interface.Types where import Data.ByteString.Lazy (fromStrict, toStrict) +import Data.OpenApi import qualified Data.Text as T import qualified Data.Text.Encoding as T import Deriving.Aeson