Skip to content

Commit

Permalink
backend/feat/#146 : Adding extra params to send sms
Browse files Browse the repository at this point in the history
  • Loading branch information
janhavi.soni committed Jun 26, 2023
1 parent 2586f36 commit 0d21223
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 10 deletions.
11 changes: 7 additions & 4 deletions lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Flow.hs
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,19 @@ sendOTPApi ::
Text ->
Text ->
Text ->
m
SubmitSmsResp
Text ->
Text ->
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)
Expand Down
14 changes: 10 additions & 4 deletions lib/mobility-core/src/Kernel/External/SMS/ExotelSms/Types.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -55,17 +55,23 @@ 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 :: Text,
-- String; Type of sms
priority :: Text
-- String: normal or high
}
deriving (Generic, Eq, Show)

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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 = maybe "" toUrlPiece (Just IT.Transactional)
exoPriority = maybe "" toUrlPiece (Just IT.High)
res <- Ex.sendOTPApi exoUrl authData sid exoOtpSmsTemplate exoPhoneNumber senderName exoSmsType exoPriority
return $ returnSmsResultExo res.exoSMSMessage.exoStatus

returnSmsResultExo :: ExotelSmsStatus -> IT.SendSMSRes
Expand Down
28 changes: 27 additions & 1 deletion lib/mobility-core/src/Kernel/External/SMS/Interface/Types.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -29,6 +30,7 @@ import qualified Kernel.External.SMS.MyValueFirst.Config as MyValueFirst
import qualified Kernel.External.SMS.Types as T
import Kernel.Prelude
import Kernel.Types.Servant
import Kernel.Utils.JSON (constructorsWithSnakeCase)
import Servant

data SmsHandler m = SmsHandler
Expand All @@ -45,7 +47,16 @@ data SendSMSReq = SendSMSReq
phoneNumber :: Text,
sender :: Text
}
deriving (Generic, FromJSON, ToJSON, ToSchema)
deriving (Generic, FromJSON, ToJSON)

instance ToSchema SendSMSReq where
declareNamedSchema = genericDeclareNamedSchema $ fromAesonOptions constructorsWithSnakeCase

instance ToSchema SMSType where
declareNamedSchema = genericDeclareNamedSchema $ fromAesonOptions constructorsWithSnakeCase

instance ToSchema PriorityType where
declareNamedSchema = genericDeclareNamedSchema $ fromAesonOptions constructorsWithSnakeCase

data SendSMSRes = Success | Fail | Pending | UnknownError
deriving (Generic, FromJSON, ToJSON, Show, Eq)
Expand All @@ -69,3 +80,18 @@ sendOtpResToText = \case
Fail -> "Fail"
Pending -> "Pending"
UnknownError -> "unknown request"

data SMSType = Transactional | Promotional | TransactionalOptIn
deriving (Generic, FromJSON, ToJSON, Show, Eq)

data PriorityType = Normal | High
deriving (Generic, FromJSON, ToJSON, Show, Eq)

instance ToHttpApiData SMSType where
toUrlPiece Transactional = "transactional"
toUrlPiece Promotional = "promotional"
toUrlPiece TransactionalOptIn = "transaction_opt_in"

instance ToHttpApiData PriorityType where
toUrlPiece Normal = "normal"
toUrlPiece High = "high"

0 comments on commit 0d21223

Please sign in to comment.