{-# 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 #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Transcribe.Types.CallAnalyticsJobSettings
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Transcribe.Types.CallAnalyticsJobSettings where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.Transcribe.Types.ContentRedaction
import Amazonka.Transcribe.Types.LanguageCode
import Amazonka.Transcribe.Types.LanguageIdSettings
import Amazonka.Transcribe.Types.VocabularyFilterMethod

-- | Provides additional optional settings for your request, including
-- content redaction, automatic language identification; allows you to
-- apply custom language models, custom vocabulary filters, and custom
-- vocabularies.
--
-- /See:/ 'newCallAnalyticsJobSettings' smart constructor.
data CallAnalyticsJobSettings = CallAnalyticsJobSettings'
  { CallAnalyticsJobSettings -> Maybe ContentRedaction
contentRedaction :: Prelude.Maybe ContentRedaction,
    -- | If using automatic language identification in your request and you want
    -- to apply a custom language model, a custom vocabulary, or a custom
    -- vocabulary filter, include @LanguageIdSettings@ with the relevant
    -- sub-parameters (@VocabularyName@, @LanguageModelName@, and
    -- @VocabularyFilterName@).
    --
    -- @LanguageIdSettings@ supports two to five language codes. Each language
    -- code you include can have an associated custom language model, custom
    -- vocabulary, and custom vocabulary filter. The language codes that you
    -- specify must match the languages of the associated custom language
    -- models, custom vocabularies, and custom vocabulary filters.
    --
    -- It\'s recommended that you include @LanguageOptions@ when using
    -- @LanguageIdSettings@ to ensure that the correct language dialect is
    -- identified. For example, if you specify a custom vocabulary that is in
    -- @en-US@ but Amazon Transcribe determines that the language spoken in
    -- your media is @en-AU@, your custom vocabulary /is not/ applied to your
    -- transcription. If you include @LanguageOptions@ and include @en-US@ as
    -- the only English language dialect, your custom vocabulary /is/ applied
    -- to your transcription.
    --
    -- If you want to include a custom language model, custom vocabulary, or
    -- custom vocabulary filter with your request but __do not__ want to use
    -- automatic language identification, use instead the parameter with the
    -- @LanguageModelName@, @VocabularyName@, or @VocabularyFilterName@
    -- sub-parameters.
    --
    -- For a list of languages supported with Call Analytics, refer to
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html Supported languages and language-specific features>.
    CallAnalyticsJobSettings
-> Maybe (HashMap LanguageCode LanguageIdSettings)
languageIdSettings :: Prelude.Maybe (Prelude.HashMap LanguageCode LanguageIdSettings),
    -- | The name of the custom language model you want to use when processing
    -- your Call Analytics job. Note that custom language model names are case
    -- sensitive.
    --
    -- The language of the specified custom language model must match the
    -- language code that you specify in your transcription request. If the
    -- languages don\'t match, the custom language model isn\'t applied. There
    -- are no errors or warnings associated with a language mismatch.
    CallAnalyticsJobSettings -> Maybe Text
languageModelName :: Prelude.Maybe Prelude.Text,
    -- | You can specify two or more language codes that represent the languages
    -- you think may be present in your media. Including more than five is not
    -- recommended. If you\'re unsure what languages are present, do not
    -- include this parameter.
    --
    -- Including language options can improve the accuracy of language
    -- identification.
    --
    -- For a list of languages supported with Call Analytics, refer to the
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html Supported languages>
    -- table.
    --
    -- To transcribe speech in Modern Standard Arabic (@ar-SA@), your media
    -- file must be encoded at a sample rate of 16,000 Hz or higher.
    CallAnalyticsJobSettings -> Maybe (NonEmpty LanguageCode)
languageOptions :: Prelude.Maybe (Prelude.NonEmpty LanguageCode),
    -- | Specify how you want your custom vocabulary filter applied to your
    -- transcript.
    --
    -- To replace words with @***@, choose @mask@.
    --
    -- To delete words, choose @remove@.
    --
    -- To flag words without changing them, choose @tag@.
    CallAnalyticsJobSettings -> Maybe VocabularyFilterMethod
vocabularyFilterMethod :: Prelude.Maybe VocabularyFilterMethod,
    -- | The name of the custom vocabulary filter you want to include in your
    -- Call Analytics transcription request. Custom vocabulary filter names are
    -- case sensitive.
    --
    -- Note that if you include @VocabularyFilterName@ in your request, you
    -- must also include @VocabularyFilterMethod@.
    CallAnalyticsJobSettings -> Maybe Text
vocabularyFilterName :: Prelude.Maybe Prelude.Text,
    -- | The name of the custom vocabulary you want to include in your Call
    -- Analytics transcription request. Custom vocabulary names are case
    -- sensitive.
    CallAnalyticsJobSettings -> Maybe Text
vocabularyName :: Prelude.Maybe Prelude.Text
  }
  deriving (CallAnalyticsJobSettings -> CallAnalyticsJobSettings -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CallAnalyticsJobSettings -> CallAnalyticsJobSettings -> Bool
$c/= :: CallAnalyticsJobSettings -> CallAnalyticsJobSettings -> Bool
== :: CallAnalyticsJobSettings -> CallAnalyticsJobSettings -> Bool
$c== :: CallAnalyticsJobSettings -> CallAnalyticsJobSettings -> Bool
Prelude.Eq, ReadPrec [CallAnalyticsJobSettings]
ReadPrec CallAnalyticsJobSettings
Int -> ReadS CallAnalyticsJobSettings
ReadS [CallAnalyticsJobSettings]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CallAnalyticsJobSettings]
$creadListPrec :: ReadPrec [CallAnalyticsJobSettings]
readPrec :: ReadPrec CallAnalyticsJobSettings
$creadPrec :: ReadPrec CallAnalyticsJobSettings
readList :: ReadS [CallAnalyticsJobSettings]
$creadList :: ReadS [CallAnalyticsJobSettings]
readsPrec :: Int -> ReadS CallAnalyticsJobSettings
$creadsPrec :: Int -> ReadS CallAnalyticsJobSettings
Prelude.Read, Int -> CallAnalyticsJobSettings -> ShowS
[CallAnalyticsJobSettings] -> ShowS
CallAnalyticsJobSettings -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CallAnalyticsJobSettings] -> ShowS
$cshowList :: [CallAnalyticsJobSettings] -> ShowS
show :: CallAnalyticsJobSettings -> String
$cshow :: CallAnalyticsJobSettings -> String
showsPrec :: Int -> CallAnalyticsJobSettings -> ShowS
$cshowsPrec :: Int -> CallAnalyticsJobSettings -> ShowS
Prelude.Show, forall x.
Rep CallAnalyticsJobSettings x -> CallAnalyticsJobSettings
forall x.
CallAnalyticsJobSettings -> Rep CallAnalyticsJobSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CallAnalyticsJobSettings x -> CallAnalyticsJobSettings
$cfrom :: forall x.
CallAnalyticsJobSettings -> Rep CallAnalyticsJobSettings x
Prelude.Generic)

-- |
-- Create a value of 'CallAnalyticsJobSettings' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'contentRedaction', 'callAnalyticsJobSettings_contentRedaction' - Undocumented member.
--
-- 'languageIdSettings', 'callAnalyticsJobSettings_languageIdSettings' - If using automatic language identification in your request and you want
-- to apply a custom language model, a custom vocabulary, or a custom
-- vocabulary filter, include @LanguageIdSettings@ with the relevant
-- sub-parameters (@VocabularyName@, @LanguageModelName@, and
-- @VocabularyFilterName@).
--
-- @LanguageIdSettings@ supports two to five language codes. Each language
-- code you include can have an associated custom language model, custom
-- vocabulary, and custom vocabulary filter. The language codes that you
-- specify must match the languages of the associated custom language
-- models, custom vocabularies, and custom vocabulary filters.
--
-- It\'s recommended that you include @LanguageOptions@ when using
-- @LanguageIdSettings@ to ensure that the correct language dialect is
-- identified. For example, if you specify a custom vocabulary that is in
-- @en-US@ but Amazon Transcribe determines that the language spoken in
-- your media is @en-AU@, your custom vocabulary /is not/ applied to your
-- transcription. If you include @LanguageOptions@ and include @en-US@ as
-- the only English language dialect, your custom vocabulary /is/ applied
-- to your transcription.
--
-- If you want to include a custom language model, custom vocabulary, or
-- custom vocabulary filter with your request but __do not__ want to use
-- automatic language identification, use instead the parameter with the
-- @LanguageModelName@, @VocabularyName@, or @VocabularyFilterName@
-- sub-parameters.
--
-- For a list of languages supported with Call Analytics, refer to
-- <https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html Supported languages and language-specific features>.
--
-- 'languageModelName', 'callAnalyticsJobSettings_languageModelName' - The name of the custom language model you want to use when processing
-- your Call Analytics job. Note that custom language model names are case
-- sensitive.
--
-- The language of the specified custom language model must match the
-- language code that you specify in your transcription request. If the
-- languages don\'t match, the custom language model isn\'t applied. There
-- are no errors or warnings associated with a language mismatch.
--
-- 'languageOptions', 'callAnalyticsJobSettings_languageOptions' - You can specify two or more language codes that represent the languages
-- you think may be present in your media. Including more than five is not
-- recommended. If you\'re unsure what languages are present, do not
-- include this parameter.
--
-- Including language options can improve the accuracy of language
-- identification.
--
-- For a list of languages supported with Call Analytics, refer to the
-- <https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html Supported languages>
-- table.
--
-- To transcribe speech in Modern Standard Arabic (@ar-SA@), your media
-- file must be encoded at a sample rate of 16,000 Hz or higher.
--
-- 'vocabularyFilterMethod', 'callAnalyticsJobSettings_vocabularyFilterMethod' - Specify how you want your custom vocabulary filter applied to your
-- transcript.
--
-- To replace words with @***@, choose @mask@.
--
-- To delete words, choose @remove@.
--
-- To flag words without changing them, choose @tag@.
--
-- 'vocabularyFilterName', 'callAnalyticsJobSettings_vocabularyFilterName' - The name of the custom vocabulary filter you want to include in your
-- Call Analytics transcription request. Custom vocabulary filter names are
-- case sensitive.
--
-- Note that if you include @VocabularyFilterName@ in your request, you
-- must also include @VocabularyFilterMethod@.
--
-- 'vocabularyName', 'callAnalyticsJobSettings_vocabularyName' - The name of the custom vocabulary you want to include in your Call
-- Analytics transcription request. Custom vocabulary names are case
-- sensitive.
newCallAnalyticsJobSettings ::
  CallAnalyticsJobSettings
newCallAnalyticsJobSettings :: CallAnalyticsJobSettings
newCallAnalyticsJobSettings =
  CallAnalyticsJobSettings'
    { $sel:contentRedaction:CallAnalyticsJobSettings' :: Maybe ContentRedaction
contentRedaction =
        forall a. Maybe a
Prelude.Nothing,
      $sel:languageIdSettings:CallAnalyticsJobSettings' :: Maybe (HashMap LanguageCode LanguageIdSettings)
languageIdSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:languageModelName:CallAnalyticsJobSettings' :: Maybe Text
languageModelName = forall a. Maybe a
Prelude.Nothing,
      $sel:languageOptions:CallAnalyticsJobSettings' :: Maybe (NonEmpty LanguageCode)
languageOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:vocabularyFilterMethod:CallAnalyticsJobSettings' :: Maybe VocabularyFilterMethod
vocabularyFilterMethod = forall a. Maybe a
Prelude.Nothing,
      $sel:vocabularyFilterName:CallAnalyticsJobSettings' :: Maybe Text
vocabularyFilterName = forall a. Maybe a
Prelude.Nothing,
      $sel:vocabularyName:CallAnalyticsJobSettings' :: Maybe Text
vocabularyName = forall a. Maybe a
Prelude.Nothing
    }

-- | Undocumented member.
callAnalyticsJobSettings_contentRedaction :: Lens.Lens' CallAnalyticsJobSettings (Prelude.Maybe ContentRedaction)
callAnalyticsJobSettings_contentRedaction :: Lens' CallAnalyticsJobSettings (Maybe ContentRedaction)
callAnalyticsJobSettings_contentRedaction = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJobSettings' {Maybe ContentRedaction
contentRedaction :: Maybe ContentRedaction
$sel:contentRedaction:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe ContentRedaction
contentRedaction} -> Maybe ContentRedaction
contentRedaction) (\s :: CallAnalyticsJobSettings
s@CallAnalyticsJobSettings' {} Maybe ContentRedaction
a -> CallAnalyticsJobSettings
s {$sel:contentRedaction:CallAnalyticsJobSettings' :: Maybe ContentRedaction
contentRedaction = Maybe ContentRedaction
a} :: CallAnalyticsJobSettings)

-- | If using automatic language identification in your request and you want
-- to apply a custom language model, a custom vocabulary, or a custom
-- vocabulary filter, include @LanguageIdSettings@ with the relevant
-- sub-parameters (@VocabularyName@, @LanguageModelName@, and
-- @VocabularyFilterName@).
--
-- @LanguageIdSettings@ supports two to five language codes. Each language
-- code you include can have an associated custom language model, custom
-- vocabulary, and custom vocabulary filter. The language codes that you
-- specify must match the languages of the associated custom language
-- models, custom vocabularies, and custom vocabulary filters.
--
-- It\'s recommended that you include @LanguageOptions@ when using
-- @LanguageIdSettings@ to ensure that the correct language dialect is
-- identified. For example, if you specify a custom vocabulary that is in
-- @en-US@ but Amazon Transcribe determines that the language spoken in
-- your media is @en-AU@, your custom vocabulary /is not/ applied to your
-- transcription. If you include @LanguageOptions@ and include @en-US@ as
-- the only English language dialect, your custom vocabulary /is/ applied
-- to your transcription.
--
-- If you want to include a custom language model, custom vocabulary, or
-- custom vocabulary filter with your request but __do not__ want to use
-- automatic language identification, use instead the parameter with the
-- @LanguageModelName@, @VocabularyName@, or @VocabularyFilterName@
-- sub-parameters.
--
-- For a list of languages supported with Call Analytics, refer to
-- <https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html Supported languages and language-specific features>.
callAnalyticsJobSettings_languageIdSettings :: Lens.Lens' CallAnalyticsJobSettings (Prelude.Maybe (Prelude.HashMap LanguageCode LanguageIdSettings))
callAnalyticsJobSettings_languageIdSettings :: Lens'
  CallAnalyticsJobSettings
  (Maybe (HashMap LanguageCode LanguageIdSettings))
callAnalyticsJobSettings_languageIdSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJobSettings' {Maybe (HashMap LanguageCode LanguageIdSettings)
languageIdSettings :: Maybe (HashMap LanguageCode LanguageIdSettings)
$sel:languageIdSettings:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings
-> Maybe (HashMap LanguageCode LanguageIdSettings)
languageIdSettings} -> Maybe (HashMap LanguageCode LanguageIdSettings)
languageIdSettings) (\s :: CallAnalyticsJobSettings
s@CallAnalyticsJobSettings' {} Maybe (HashMap LanguageCode LanguageIdSettings)
a -> CallAnalyticsJobSettings
s {$sel:languageIdSettings:CallAnalyticsJobSettings' :: Maybe (HashMap LanguageCode LanguageIdSettings)
languageIdSettings = Maybe (HashMap LanguageCode LanguageIdSettings)
a} :: CallAnalyticsJobSettings) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the custom language model you want to use when processing
-- your Call Analytics job. Note that custom language model names are case
-- sensitive.
--
-- The language of the specified custom language model must match the
-- language code that you specify in your transcription request. If the
-- languages don\'t match, the custom language model isn\'t applied. There
-- are no errors or warnings associated with a language mismatch.
callAnalyticsJobSettings_languageModelName :: Lens.Lens' CallAnalyticsJobSettings (Prelude.Maybe Prelude.Text)
callAnalyticsJobSettings_languageModelName :: Lens' CallAnalyticsJobSettings (Maybe Text)
callAnalyticsJobSettings_languageModelName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJobSettings' {Maybe Text
languageModelName :: Maybe Text
$sel:languageModelName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
languageModelName} -> Maybe Text
languageModelName) (\s :: CallAnalyticsJobSettings
s@CallAnalyticsJobSettings' {} Maybe Text
a -> CallAnalyticsJobSettings
s {$sel:languageModelName:CallAnalyticsJobSettings' :: Maybe Text
languageModelName = Maybe Text
a} :: CallAnalyticsJobSettings)

-- | You can specify two or more language codes that represent the languages
-- you think may be present in your media. Including more than five is not
-- recommended. If you\'re unsure what languages are present, do not
-- include this parameter.
--
-- Including language options can improve the accuracy of language
-- identification.
--
-- For a list of languages supported with Call Analytics, refer to the
-- <https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html Supported languages>
-- table.
--
-- To transcribe speech in Modern Standard Arabic (@ar-SA@), your media
-- file must be encoded at a sample rate of 16,000 Hz or higher.
callAnalyticsJobSettings_languageOptions :: Lens.Lens' CallAnalyticsJobSettings (Prelude.Maybe (Prelude.NonEmpty LanguageCode))
callAnalyticsJobSettings_languageOptions :: Lens' CallAnalyticsJobSettings (Maybe (NonEmpty LanguageCode))
callAnalyticsJobSettings_languageOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJobSettings' {Maybe (NonEmpty LanguageCode)
languageOptions :: Maybe (NonEmpty LanguageCode)
$sel:languageOptions:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe (NonEmpty LanguageCode)
languageOptions} -> Maybe (NonEmpty LanguageCode)
languageOptions) (\s :: CallAnalyticsJobSettings
s@CallAnalyticsJobSettings' {} Maybe (NonEmpty LanguageCode)
a -> CallAnalyticsJobSettings
s {$sel:languageOptions:CallAnalyticsJobSettings' :: Maybe (NonEmpty LanguageCode)
languageOptions = Maybe (NonEmpty LanguageCode)
a} :: CallAnalyticsJobSettings) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specify how you want your custom vocabulary filter applied to your
-- transcript.
--
-- To replace words with @***@, choose @mask@.
--
-- To delete words, choose @remove@.
--
-- To flag words without changing them, choose @tag@.
callAnalyticsJobSettings_vocabularyFilterMethod :: Lens.Lens' CallAnalyticsJobSettings (Prelude.Maybe VocabularyFilterMethod)
callAnalyticsJobSettings_vocabularyFilterMethod :: Lens' CallAnalyticsJobSettings (Maybe VocabularyFilterMethod)
callAnalyticsJobSettings_vocabularyFilterMethod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJobSettings' {Maybe VocabularyFilterMethod
vocabularyFilterMethod :: Maybe VocabularyFilterMethod
$sel:vocabularyFilterMethod:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe VocabularyFilterMethod
vocabularyFilterMethod} -> Maybe VocabularyFilterMethod
vocabularyFilterMethod) (\s :: CallAnalyticsJobSettings
s@CallAnalyticsJobSettings' {} Maybe VocabularyFilterMethod
a -> CallAnalyticsJobSettings
s {$sel:vocabularyFilterMethod:CallAnalyticsJobSettings' :: Maybe VocabularyFilterMethod
vocabularyFilterMethod = Maybe VocabularyFilterMethod
a} :: CallAnalyticsJobSettings)

-- | The name of the custom vocabulary filter you want to include in your
-- Call Analytics transcription request. Custom vocabulary filter names are
-- case sensitive.
--
-- Note that if you include @VocabularyFilterName@ in your request, you
-- must also include @VocabularyFilterMethod@.
callAnalyticsJobSettings_vocabularyFilterName :: Lens.Lens' CallAnalyticsJobSettings (Prelude.Maybe Prelude.Text)
callAnalyticsJobSettings_vocabularyFilterName :: Lens' CallAnalyticsJobSettings (Maybe Text)
callAnalyticsJobSettings_vocabularyFilterName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJobSettings' {Maybe Text
vocabularyFilterName :: Maybe Text
$sel:vocabularyFilterName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
vocabularyFilterName} -> Maybe Text
vocabularyFilterName) (\s :: CallAnalyticsJobSettings
s@CallAnalyticsJobSettings' {} Maybe Text
a -> CallAnalyticsJobSettings
s {$sel:vocabularyFilterName:CallAnalyticsJobSettings' :: Maybe Text
vocabularyFilterName = Maybe Text
a} :: CallAnalyticsJobSettings)

-- | The name of the custom vocabulary you want to include in your Call
-- Analytics transcription request. Custom vocabulary names are case
-- sensitive.
callAnalyticsJobSettings_vocabularyName :: Lens.Lens' CallAnalyticsJobSettings (Prelude.Maybe Prelude.Text)
callAnalyticsJobSettings_vocabularyName :: Lens' CallAnalyticsJobSettings (Maybe Text)
callAnalyticsJobSettings_vocabularyName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJobSettings' {Maybe Text
vocabularyName :: Maybe Text
$sel:vocabularyName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
vocabularyName} -> Maybe Text
vocabularyName) (\s :: CallAnalyticsJobSettings
s@CallAnalyticsJobSettings' {} Maybe Text
a -> CallAnalyticsJobSettings
s {$sel:vocabularyName:CallAnalyticsJobSettings' :: Maybe Text
vocabularyName = Maybe Text
a} :: CallAnalyticsJobSettings)

instance Data.FromJSON CallAnalyticsJobSettings where
  parseJSON :: Value -> Parser CallAnalyticsJobSettings
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"CallAnalyticsJobSettings"
      ( \Object
x ->
          Maybe ContentRedaction
-> Maybe (HashMap LanguageCode LanguageIdSettings)
-> Maybe Text
-> Maybe (NonEmpty LanguageCode)
-> Maybe VocabularyFilterMethod
-> Maybe Text
-> Maybe Text
-> CallAnalyticsJobSettings
CallAnalyticsJobSettings'
            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
"ContentRedaction")
            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
"LanguageIdSettings"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            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
"LanguageModelName")
            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
"LanguageOptions")
            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
"VocabularyFilterMethod")
            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
"VocabularyFilterName")
            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
"VocabularyName")
      )

instance Prelude.Hashable CallAnalyticsJobSettings where
  hashWithSalt :: Int -> CallAnalyticsJobSettings -> Int
hashWithSalt Int
_salt CallAnalyticsJobSettings' {Maybe (NonEmpty LanguageCode)
Maybe Text
Maybe (HashMap LanguageCode LanguageIdSettings)
Maybe ContentRedaction
Maybe VocabularyFilterMethod
vocabularyName :: Maybe Text
vocabularyFilterName :: Maybe Text
vocabularyFilterMethod :: Maybe VocabularyFilterMethod
languageOptions :: Maybe (NonEmpty LanguageCode)
languageModelName :: Maybe Text
languageIdSettings :: Maybe (HashMap LanguageCode LanguageIdSettings)
contentRedaction :: Maybe ContentRedaction
$sel:vocabularyName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
$sel:vocabularyFilterName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
$sel:vocabularyFilterMethod:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe VocabularyFilterMethod
$sel:languageOptions:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe (NonEmpty LanguageCode)
$sel:languageModelName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
$sel:languageIdSettings:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings
-> Maybe (HashMap LanguageCode LanguageIdSettings)
$sel:contentRedaction:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe ContentRedaction
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ContentRedaction
contentRedaction
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap LanguageCode LanguageIdSettings)
languageIdSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
languageModelName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty LanguageCode)
languageOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VocabularyFilterMethod
vocabularyFilterMethod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
vocabularyFilterName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
vocabularyName

instance Prelude.NFData CallAnalyticsJobSettings where
  rnf :: CallAnalyticsJobSettings -> ()
rnf CallAnalyticsJobSettings' {Maybe (NonEmpty LanguageCode)
Maybe Text
Maybe (HashMap LanguageCode LanguageIdSettings)
Maybe ContentRedaction
Maybe VocabularyFilterMethod
vocabularyName :: Maybe Text
vocabularyFilterName :: Maybe Text
vocabularyFilterMethod :: Maybe VocabularyFilterMethod
languageOptions :: Maybe (NonEmpty LanguageCode)
languageModelName :: Maybe Text
languageIdSettings :: Maybe (HashMap LanguageCode LanguageIdSettings)
contentRedaction :: Maybe ContentRedaction
$sel:vocabularyName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
$sel:vocabularyFilterName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
$sel:vocabularyFilterMethod:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe VocabularyFilterMethod
$sel:languageOptions:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe (NonEmpty LanguageCode)
$sel:languageModelName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
$sel:languageIdSettings:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings
-> Maybe (HashMap LanguageCode LanguageIdSettings)
$sel:contentRedaction:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe ContentRedaction
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ContentRedaction
contentRedaction
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap LanguageCode LanguageIdSettings)
languageIdSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
languageModelName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty LanguageCode)
languageOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VocabularyFilterMethod
vocabularyFilterMethod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
vocabularyFilterName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
vocabularyName

instance Data.ToJSON CallAnalyticsJobSettings where
  toJSON :: CallAnalyticsJobSettings -> Value
toJSON CallAnalyticsJobSettings' {Maybe (NonEmpty LanguageCode)
Maybe Text
Maybe (HashMap LanguageCode LanguageIdSettings)
Maybe ContentRedaction
Maybe VocabularyFilterMethod
vocabularyName :: Maybe Text
vocabularyFilterName :: Maybe Text
vocabularyFilterMethod :: Maybe VocabularyFilterMethod
languageOptions :: Maybe (NonEmpty LanguageCode)
languageModelName :: Maybe Text
languageIdSettings :: Maybe (HashMap LanguageCode LanguageIdSettings)
contentRedaction :: Maybe ContentRedaction
$sel:vocabularyName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
$sel:vocabularyFilterName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
$sel:vocabularyFilterMethod:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe VocabularyFilterMethod
$sel:languageOptions:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe (NonEmpty LanguageCode)
$sel:languageModelName:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe Text
$sel:languageIdSettings:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings
-> Maybe (HashMap LanguageCode LanguageIdSettings)
$sel:contentRedaction:CallAnalyticsJobSettings' :: CallAnalyticsJobSettings -> Maybe ContentRedaction
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ContentRedaction" 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 ContentRedaction
contentRedaction,
            (Key
"LanguageIdSettings" 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 (HashMap LanguageCode LanguageIdSettings)
languageIdSettings,
            (Key
"LanguageModelName" 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 Text
languageModelName,
            (Key
"LanguageOptions" 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 (NonEmpty LanguageCode)
languageOptions,
            (Key
"VocabularyFilterMethod" 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 VocabularyFilterMethod
vocabularyFilterMethod,
            (Key
"VocabularyFilterName" 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 Text
vocabularyFilterName,
            (Key
"VocabularyName" 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 Text
vocabularyName
          ]
      )