{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.LexV2Models.Types.Message where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.LexV2Models.Types.CustomPayload
import Amazonka.LexV2Models.Types.ImageResponseCard
import Amazonka.LexV2Models.Types.PlainTextMessage
import Amazonka.LexV2Models.Types.SSMLMessage
import qualified Amazonka.Prelude as Prelude
data Message = Message'
{
Message -> Maybe CustomPayload
customPayload :: Prelude.Maybe CustomPayload,
Message -> Maybe ImageResponseCard
imageResponseCard :: Prelude.Maybe ImageResponseCard,
Message -> Maybe PlainTextMessage
plainTextMessage :: Prelude.Maybe PlainTextMessage,
Message -> Maybe SSMLMessage
ssmlMessage :: Prelude.Maybe SSMLMessage
}
deriving (Message -> Message -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Message -> Message -> Bool
$c/= :: Message -> Message -> Bool
== :: Message -> Message -> Bool
$c== :: Message -> Message -> Bool
Prelude.Eq, ReadPrec [Message]
ReadPrec Message
Int -> ReadS Message
ReadS [Message]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Message]
$creadListPrec :: ReadPrec [Message]
readPrec :: ReadPrec Message
$creadPrec :: ReadPrec Message
readList :: ReadS [Message]
$creadList :: ReadS [Message]
readsPrec :: Int -> ReadS Message
$creadsPrec :: Int -> ReadS Message
Prelude.Read, Int -> Message -> ShowS
[Message] -> ShowS
Message -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Message] -> ShowS
$cshowList :: [Message] -> ShowS
show :: Message -> String
$cshow :: Message -> String
showsPrec :: Int -> Message -> ShowS
$cshowsPrec :: Int -> Message -> ShowS
Prelude.Show, forall x. Rep Message x -> Message
forall x. Message -> Rep Message x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Message x -> Message
$cfrom :: forall x. Message -> Rep Message x
Prelude.Generic)
newMessage ::
Message
newMessage :: Message
newMessage =
Message'
{ $sel:customPayload:Message' :: Maybe CustomPayload
customPayload = forall a. Maybe a
Prelude.Nothing,
$sel:imageResponseCard:Message' :: Maybe ImageResponseCard
imageResponseCard = forall a. Maybe a
Prelude.Nothing,
$sel:plainTextMessage:Message' :: Maybe PlainTextMessage
plainTextMessage = forall a. Maybe a
Prelude.Nothing,
$sel:ssmlMessage:Message' :: Maybe SSMLMessage
ssmlMessage = forall a. Maybe a
Prelude.Nothing
}
message_customPayload :: Lens.Lens' Message (Prelude.Maybe CustomPayload)
message_customPayload :: Lens' Message (Maybe CustomPayload)
message_customPayload = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Message' {Maybe CustomPayload
customPayload :: Maybe CustomPayload
$sel:customPayload:Message' :: Message -> Maybe CustomPayload
customPayload} -> Maybe CustomPayload
customPayload) (\s :: Message
s@Message' {} Maybe CustomPayload
a -> Message
s {$sel:customPayload:Message' :: Maybe CustomPayload
customPayload = Maybe CustomPayload
a} :: Message)
message_imageResponseCard :: Lens.Lens' Message (Prelude.Maybe ImageResponseCard)
message_imageResponseCard :: Lens' Message (Maybe ImageResponseCard)
message_imageResponseCard = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Message' {Maybe ImageResponseCard
imageResponseCard :: Maybe ImageResponseCard
$sel:imageResponseCard:Message' :: Message -> Maybe ImageResponseCard
imageResponseCard} -> Maybe ImageResponseCard
imageResponseCard) (\s :: Message
s@Message' {} Maybe ImageResponseCard
a -> Message
s {$sel:imageResponseCard:Message' :: Maybe ImageResponseCard
imageResponseCard = Maybe ImageResponseCard
a} :: Message)
message_plainTextMessage :: Lens.Lens' Message (Prelude.Maybe PlainTextMessage)
message_plainTextMessage :: Lens' Message (Maybe PlainTextMessage)
message_plainTextMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Message' {Maybe PlainTextMessage
plainTextMessage :: Maybe PlainTextMessage
$sel:plainTextMessage:Message' :: Message -> Maybe PlainTextMessage
plainTextMessage} -> Maybe PlainTextMessage
plainTextMessage) (\s :: Message
s@Message' {} Maybe PlainTextMessage
a -> Message
s {$sel:plainTextMessage:Message' :: Maybe PlainTextMessage
plainTextMessage = Maybe PlainTextMessage
a} :: Message)
message_ssmlMessage :: Lens.Lens' Message (Prelude.Maybe SSMLMessage)
message_ssmlMessage :: Lens' Message (Maybe SSMLMessage)
message_ssmlMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Message' {Maybe SSMLMessage
ssmlMessage :: Maybe SSMLMessage
$sel:ssmlMessage:Message' :: Message -> Maybe SSMLMessage
ssmlMessage} -> Maybe SSMLMessage
ssmlMessage) (\s :: Message
s@Message' {} Maybe SSMLMessage
a -> Message
s {$sel:ssmlMessage:Message' :: Maybe SSMLMessage
ssmlMessage = Maybe SSMLMessage
a} :: Message)
instance Data.FromJSON Message where
parseJSON :: Value -> Parser Message
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Message"
( \Object
x ->
Maybe CustomPayload
-> Maybe ImageResponseCard
-> Maybe PlainTextMessage
-> Maybe SSMLMessage
-> Message
Message'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"customPayload")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"imageResponseCard")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"plainTextMessage")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ssmlMessage")
)
instance Prelude.Hashable Message where
hashWithSalt :: Int -> Message -> Int
hashWithSalt Int
_salt Message' {Maybe CustomPayload
Maybe ImageResponseCard
Maybe PlainTextMessage
Maybe SSMLMessage
ssmlMessage :: Maybe SSMLMessage
plainTextMessage :: Maybe PlainTextMessage
imageResponseCard :: Maybe ImageResponseCard
customPayload :: Maybe CustomPayload
$sel:ssmlMessage:Message' :: Message -> Maybe SSMLMessage
$sel:plainTextMessage:Message' :: Message -> Maybe PlainTextMessage
$sel:imageResponseCard:Message' :: Message -> Maybe ImageResponseCard
$sel:customPayload:Message' :: Message -> Maybe CustomPayload
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CustomPayload
customPayload
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ImageResponseCard
imageResponseCard
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PlainTextMessage
plainTextMessage
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SSMLMessage
ssmlMessage
instance Prelude.NFData Message where
rnf :: Message -> ()
rnf Message' {Maybe CustomPayload
Maybe ImageResponseCard
Maybe PlainTextMessage
Maybe SSMLMessage
ssmlMessage :: Maybe SSMLMessage
plainTextMessage :: Maybe PlainTextMessage
imageResponseCard :: Maybe ImageResponseCard
customPayload :: Maybe CustomPayload
$sel:ssmlMessage:Message' :: Message -> Maybe SSMLMessage
$sel:plainTextMessage:Message' :: Message -> Maybe PlainTextMessage
$sel:imageResponseCard:Message' :: Message -> Maybe ImageResponseCard
$sel:customPayload:Message' :: Message -> Maybe CustomPayload
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe CustomPayload
customPayload
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ImageResponseCard
imageResponseCard
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PlainTextMessage
plainTextMessage
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SSMLMessage
ssmlMessage
instance Data.ToJSON Message where
toJSON :: Message -> Value
toJSON Message' {Maybe CustomPayload
Maybe ImageResponseCard
Maybe PlainTextMessage
Maybe SSMLMessage
ssmlMessage :: Maybe SSMLMessage
plainTextMessage :: Maybe PlainTextMessage
imageResponseCard :: Maybe ImageResponseCard
customPayload :: Maybe CustomPayload
$sel:ssmlMessage:Message' :: Message -> Maybe SSMLMessage
$sel:plainTextMessage:Message' :: Message -> Maybe PlainTextMessage
$sel:imageResponseCard:Message' :: Message -> Maybe ImageResponseCard
$sel:customPayload:Message' :: Message -> Maybe CustomPayload
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"customPayload" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CustomPayload
customPayload,
(Key
"imageResponseCard" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ImageResponseCard
imageResponseCard,
(Key
"plainTextMessage" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PlainTextMessage
plainTextMessage,
(Key
"ssmlMessage" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SSMLMessage
ssmlMessage
]
)