{-# 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.CallAnalyticsJob
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Transcribe.Types.CallAnalyticsJob where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.Transcribe.Types.CallAnalyticsJobSettings
import Amazonka.Transcribe.Types.CallAnalyticsJobStatus
import Amazonka.Transcribe.Types.ChannelDefinition
import Amazonka.Transcribe.Types.LanguageCode
import Amazonka.Transcribe.Types.Media
import Amazonka.Transcribe.Types.MediaFormat
import Amazonka.Transcribe.Types.Transcript

-- | Describes an asynchronous analytics job that was created with the
-- @StartAnalyticsJob@ operation.
--
-- /See:/ 'newCallAnalyticsJob' smart constructor.
data CallAnalyticsJob = CallAnalyticsJob'
  { -- | A timestamp that shows when the analytics job was created.
    CallAnalyticsJob -> Maybe POSIX
creationTime :: Prelude.Maybe Core.POSIX,
    -- | If the @AnalyticsJobStatus@ is @FAILED@, this field contains information
    -- about why the job failed.
    --
    -- The @FailureReason@ field can contain one of the following values:
    --
    -- -   @Unsupported media format@: The media format specified in the
    --     @MediaFormat@ field of the request isn\'t valid. See the description
    --     of the @MediaFormat@ field for a list of valid values.
    --
    -- -   @The media format provided does not match the detected media format@:
    --     The media format of the audio file doesn\'t match the format
    --     specified in the @MediaFormat@ field in the request. Check the media
    --     format of your media file and make sure the two values match.
    --
    -- -   @Invalid sample rate for audio file@: The sample rate specified in
    --     the @MediaSampleRateHertz@ of the request isn\'t valid. The sample
    --     rate must be between 8,000 and 48,000 Hertz.
    --
    -- -   @The sample rate provided does not match the detected sample rate@:
    --     The sample rate in the audio file doesn\'t match the sample rate
    --     specified in the @MediaSampleRateHertz@ field in the request. Check
    --     the sample rate of your media file and make sure that the two values
    --     match.
    --
    -- -   @Invalid file size: file size too large@: The size of your audio
    --     file is larger than what Amazon Transcribe Medical can process. For
    --     more information, see /Guidelines and Quotas/ in the Amazon
    --     Transcribe Medical Guide.
    --
    -- -   @Invalid number of channels: number of channels too large@: Your
    --     audio contains more channels than Amazon Transcribe Medical is
    --     configured to process. To request additional channels, see Amazon
    --     Transcribe Medical Endpoints and Quotas in the
    --     <https://docs.aws.amazon.com/general/latest/gr/Welcome.html Amazon Web Services General Reference>.
    CallAnalyticsJob -> Maybe Text
failureReason :: Prelude.Maybe Prelude.Text,
    -- | The status of the analytics job.
    CallAnalyticsJob -> Maybe CallAnalyticsJobStatus
callAnalyticsJobStatus :: Prelude.Maybe CallAnalyticsJobStatus,
    -- | A value between zero and one that Amazon Transcribe assigned to the
    -- language that it identified in the source audio. This value appears only
    -- when you don\'t provide a single language code. Larger values indicate
    -- that Amazon Transcribe has higher confidence in the language that it
    -- identified
    CallAnalyticsJob -> Maybe Double
identifiedLanguageScore :: Prelude.Maybe Prelude.Double,
    -- | If you know the language spoken between the customer and the agent,
    -- specify a language code for this field.
    --
    -- If you don\'t know the language, you can leave this field blank, and
    -- Amazon Transcribe will use machine learning to automatically identify
    -- the language. To improve the accuracy of language identification, you
    -- can provide an array containing the possible language codes for the
    -- language spoken in your audio. Refer to
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/how-it-works.html Supported languages and language-specific features>
    -- for additional information.
    CallAnalyticsJob -> Maybe LanguageCode
languageCode :: Prelude.Maybe LanguageCode,
    -- | Provides information about the settings used to run a transcription job.
    CallAnalyticsJob -> Maybe CallAnalyticsJobSettings
settings :: Prelude.Maybe CallAnalyticsJobSettings,
    -- | A timestamp that shows when the analytics job started processing.
    CallAnalyticsJob -> Maybe POSIX
startTime :: Prelude.Maybe Core.POSIX,
    -- | A timestamp that shows when the analytics job was completed.
    CallAnalyticsJob -> Maybe POSIX
completionTime :: Prelude.Maybe Core.POSIX,
    -- | The name of the call analytics job.
    CallAnalyticsJob -> Maybe Text
callAnalyticsJobName :: Prelude.Maybe Prelude.Text,
    CallAnalyticsJob -> Maybe Media
media :: Prelude.Maybe Media,
    -- | The format of the input audio file. Note: for call analytics jobs, only
    -- the following media formats are supported: MP3, MP4, WAV, FLAC, OGG, and
    -- WebM.
    CallAnalyticsJob -> Maybe MediaFormat
mediaFormat :: Prelude.Maybe MediaFormat,
    -- | Shows numeric values to indicate the channel assigned to the agent\'s
    -- audio and the channel assigned to the customer\'s audio.
    CallAnalyticsJob -> Maybe (NonEmpty ChannelDefinition)
channelDefinitions :: Prelude.Maybe (Prelude.NonEmpty ChannelDefinition),
    -- | The Amazon Resource Number (ARN) that you use to get access to the
    -- analytics job.
    CallAnalyticsJob -> Maybe Text
dataAccessRoleArn :: Prelude.Maybe Prelude.Text,
    CallAnalyticsJob -> Maybe Transcript
transcript :: Prelude.Maybe Transcript,
    -- | The sample rate, in Hertz, of the audio.
    CallAnalyticsJob -> Maybe Natural
mediaSampleRateHertz :: Prelude.Maybe Prelude.Natural
  }
  deriving (CallAnalyticsJob -> CallAnalyticsJob -> Bool
(CallAnalyticsJob -> CallAnalyticsJob -> Bool)
-> (CallAnalyticsJob -> CallAnalyticsJob -> Bool)
-> Eq CallAnalyticsJob
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CallAnalyticsJob -> CallAnalyticsJob -> Bool
$c/= :: CallAnalyticsJob -> CallAnalyticsJob -> Bool
== :: CallAnalyticsJob -> CallAnalyticsJob -> Bool
$c== :: CallAnalyticsJob -> CallAnalyticsJob -> Bool
Prelude.Eq, ReadPrec [CallAnalyticsJob]
ReadPrec CallAnalyticsJob
Int -> ReadS CallAnalyticsJob
ReadS [CallAnalyticsJob]
(Int -> ReadS CallAnalyticsJob)
-> ReadS [CallAnalyticsJob]
-> ReadPrec CallAnalyticsJob
-> ReadPrec [CallAnalyticsJob]
-> Read CallAnalyticsJob
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CallAnalyticsJob]
$creadListPrec :: ReadPrec [CallAnalyticsJob]
readPrec :: ReadPrec CallAnalyticsJob
$creadPrec :: ReadPrec CallAnalyticsJob
readList :: ReadS [CallAnalyticsJob]
$creadList :: ReadS [CallAnalyticsJob]
readsPrec :: Int -> ReadS CallAnalyticsJob
$creadsPrec :: Int -> ReadS CallAnalyticsJob
Prelude.Read, Int -> CallAnalyticsJob -> ShowS
[CallAnalyticsJob] -> ShowS
CallAnalyticsJob -> String
(Int -> CallAnalyticsJob -> ShowS)
-> (CallAnalyticsJob -> String)
-> ([CallAnalyticsJob] -> ShowS)
-> Show CallAnalyticsJob
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CallAnalyticsJob] -> ShowS
$cshowList :: [CallAnalyticsJob] -> ShowS
show :: CallAnalyticsJob -> String
$cshow :: CallAnalyticsJob -> String
showsPrec :: Int -> CallAnalyticsJob -> ShowS
$cshowsPrec :: Int -> CallAnalyticsJob -> ShowS
Prelude.Show, (forall x. CallAnalyticsJob -> Rep CallAnalyticsJob x)
-> (forall x. Rep CallAnalyticsJob x -> CallAnalyticsJob)
-> Generic CallAnalyticsJob
forall x. Rep CallAnalyticsJob x -> CallAnalyticsJob
forall x. CallAnalyticsJob -> Rep CallAnalyticsJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CallAnalyticsJob x -> CallAnalyticsJob
$cfrom :: forall x. CallAnalyticsJob -> Rep CallAnalyticsJob x
Prelude.Generic)

-- |
-- Create a value of 'CallAnalyticsJob' 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:
--
-- 'creationTime', 'callAnalyticsJob_creationTime' - A timestamp that shows when the analytics job was created.
--
-- 'failureReason', 'callAnalyticsJob_failureReason' - If the @AnalyticsJobStatus@ is @FAILED@, this field contains information
-- about why the job failed.
--
-- The @FailureReason@ field can contain one of the following values:
--
-- -   @Unsupported media format@: The media format specified in the
--     @MediaFormat@ field of the request isn\'t valid. See the description
--     of the @MediaFormat@ field for a list of valid values.
--
-- -   @The media format provided does not match the detected media format@:
--     The media format of the audio file doesn\'t match the format
--     specified in the @MediaFormat@ field in the request. Check the media
--     format of your media file and make sure the two values match.
--
-- -   @Invalid sample rate for audio file@: The sample rate specified in
--     the @MediaSampleRateHertz@ of the request isn\'t valid. The sample
--     rate must be between 8,000 and 48,000 Hertz.
--
-- -   @The sample rate provided does not match the detected sample rate@:
--     The sample rate in the audio file doesn\'t match the sample rate
--     specified in the @MediaSampleRateHertz@ field in the request. Check
--     the sample rate of your media file and make sure that the two values
--     match.
--
-- -   @Invalid file size: file size too large@: The size of your audio
--     file is larger than what Amazon Transcribe Medical can process. For
--     more information, see /Guidelines and Quotas/ in the Amazon
--     Transcribe Medical Guide.
--
-- -   @Invalid number of channels: number of channels too large@: Your
--     audio contains more channels than Amazon Transcribe Medical is
--     configured to process. To request additional channels, see Amazon
--     Transcribe Medical Endpoints and Quotas in the
--     <https://docs.aws.amazon.com/general/latest/gr/Welcome.html Amazon Web Services General Reference>.
--
-- 'callAnalyticsJobStatus', 'callAnalyticsJob_callAnalyticsJobStatus' - The status of the analytics job.
--
-- 'identifiedLanguageScore', 'callAnalyticsJob_identifiedLanguageScore' - A value between zero and one that Amazon Transcribe assigned to the
-- language that it identified in the source audio. This value appears only
-- when you don\'t provide a single language code. Larger values indicate
-- that Amazon Transcribe has higher confidence in the language that it
-- identified
--
-- 'languageCode', 'callAnalyticsJob_languageCode' - If you know the language spoken between the customer and the agent,
-- specify a language code for this field.
--
-- If you don\'t know the language, you can leave this field blank, and
-- Amazon Transcribe will use machine learning to automatically identify
-- the language. To improve the accuracy of language identification, you
-- can provide an array containing the possible language codes for the
-- language spoken in your audio. Refer to
-- <https://docs.aws.amazon.com/transcribe/latest/dg/how-it-works.html Supported languages and language-specific features>
-- for additional information.
--
-- 'settings', 'callAnalyticsJob_settings' - Provides information about the settings used to run a transcription job.
--
-- 'startTime', 'callAnalyticsJob_startTime' - A timestamp that shows when the analytics job started processing.
--
-- 'completionTime', 'callAnalyticsJob_completionTime' - A timestamp that shows when the analytics job was completed.
--
-- 'callAnalyticsJobName', 'callAnalyticsJob_callAnalyticsJobName' - The name of the call analytics job.
--
-- 'media', 'callAnalyticsJob_media' - Undocumented member.
--
-- 'mediaFormat', 'callAnalyticsJob_mediaFormat' - The format of the input audio file. Note: for call analytics jobs, only
-- the following media formats are supported: MP3, MP4, WAV, FLAC, OGG, and
-- WebM.
--
-- 'channelDefinitions', 'callAnalyticsJob_channelDefinitions' - Shows numeric values to indicate the channel assigned to the agent\'s
-- audio and the channel assigned to the customer\'s audio.
--
-- 'dataAccessRoleArn', 'callAnalyticsJob_dataAccessRoleArn' - The Amazon Resource Number (ARN) that you use to get access to the
-- analytics job.
--
-- 'transcript', 'callAnalyticsJob_transcript' - Undocumented member.
--
-- 'mediaSampleRateHertz', 'callAnalyticsJob_mediaSampleRateHertz' - The sample rate, in Hertz, of the audio.
newCallAnalyticsJob ::
  CallAnalyticsJob
newCallAnalyticsJob :: CallAnalyticsJob
newCallAnalyticsJob =
  CallAnalyticsJob' :: Maybe POSIX
-> Maybe Text
-> Maybe CallAnalyticsJobStatus
-> Maybe Double
-> Maybe LanguageCode
-> Maybe CallAnalyticsJobSettings
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe Media
-> Maybe MediaFormat
-> Maybe (NonEmpty ChannelDefinition)
-> Maybe Text
-> Maybe Transcript
-> Maybe Natural
-> CallAnalyticsJob
CallAnalyticsJob'
    { $sel:creationTime:CallAnalyticsJob' :: Maybe POSIX
creationTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:failureReason:CallAnalyticsJob' :: Maybe Text
failureReason = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:callAnalyticsJobStatus:CallAnalyticsJob' :: Maybe CallAnalyticsJobStatus
callAnalyticsJobStatus = Maybe CallAnalyticsJobStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:identifiedLanguageScore:CallAnalyticsJob' :: Maybe Double
identifiedLanguageScore = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:languageCode:CallAnalyticsJob' :: Maybe LanguageCode
languageCode = Maybe LanguageCode
forall a. Maybe a
Prelude.Nothing,
      $sel:settings:CallAnalyticsJob' :: Maybe CallAnalyticsJobSettings
settings = Maybe CallAnalyticsJobSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:CallAnalyticsJob' :: Maybe POSIX
startTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:completionTime:CallAnalyticsJob' :: Maybe POSIX
completionTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:callAnalyticsJobName:CallAnalyticsJob' :: Maybe Text
callAnalyticsJobName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:media:CallAnalyticsJob' :: Maybe Media
media = Maybe Media
forall a. Maybe a
Prelude.Nothing,
      $sel:mediaFormat:CallAnalyticsJob' :: Maybe MediaFormat
mediaFormat = Maybe MediaFormat
forall a. Maybe a
Prelude.Nothing,
      $sel:channelDefinitions:CallAnalyticsJob' :: Maybe (NonEmpty ChannelDefinition)
channelDefinitions = Maybe (NonEmpty ChannelDefinition)
forall a. Maybe a
Prelude.Nothing,
      $sel:dataAccessRoleArn:CallAnalyticsJob' :: Maybe Text
dataAccessRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:transcript:CallAnalyticsJob' :: Maybe Transcript
transcript = Maybe Transcript
forall a. Maybe a
Prelude.Nothing,
      $sel:mediaSampleRateHertz:CallAnalyticsJob' :: Maybe Natural
mediaSampleRateHertz = Maybe Natural
forall a. Maybe a
Prelude.Nothing
    }

-- | A timestamp that shows when the analytics job was created.
callAnalyticsJob_creationTime :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Prelude.UTCTime)
callAnalyticsJob_creationTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_creationTime = (CallAnalyticsJob -> Maybe POSIX)
-> (CallAnalyticsJob -> Maybe POSIX -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob CallAnalyticsJob (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe POSIX
a -> CallAnalyticsJob
s {$sel:creationTime:CallAnalyticsJob' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: CallAnalyticsJob) ((Maybe POSIX -> f (Maybe POSIX))
 -> CallAnalyticsJob -> f CallAnalyticsJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> CallAnalyticsJob
-> f CallAnalyticsJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | If the @AnalyticsJobStatus@ is @FAILED@, this field contains information
-- about why the job failed.
--
-- The @FailureReason@ field can contain one of the following values:
--
-- -   @Unsupported media format@: The media format specified in the
--     @MediaFormat@ field of the request isn\'t valid. See the description
--     of the @MediaFormat@ field for a list of valid values.
--
-- -   @The media format provided does not match the detected media format@:
--     The media format of the audio file doesn\'t match the format
--     specified in the @MediaFormat@ field in the request. Check the media
--     format of your media file and make sure the two values match.
--
-- -   @Invalid sample rate for audio file@: The sample rate specified in
--     the @MediaSampleRateHertz@ of the request isn\'t valid. The sample
--     rate must be between 8,000 and 48,000 Hertz.
--
-- -   @The sample rate provided does not match the detected sample rate@:
--     The sample rate in the audio file doesn\'t match the sample rate
--     specified in the @MediaSampleRateHertz@ field in the request. Check
--     the sample rate of your media file and make sure that the two values
--     match.
--
-- -   @Invalid file size: file size too large@: The size of your audio
--     file is larger than what Amazon Transcribe Medical can process. For
--     more information, see /Guidelines and Quotas/ in the Amazon
--     Transcribe Medical Guide.
--
-- -   @Invalid number of channels: number of channels too large@: Your
--     audio contains more channels than Amazon Transcribe Medical is
--     configured to process. To request additional channels, see Amazon
--     Transcribe Medical Endpoints and Quotas in the
--     <https://docs.aws.amazon.com/general/latest/gr/Welcome.html Amazon Web Services General Reference>.
callAnalyticsJob_failureReason :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Prelude.Text)
callAnalyticsJob_failureReason :: (Maybe Text -> f (Maybe Text))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_failureReason = (CallAnalyticsJob -> Maybe Text)
-> (CallAnalyticsJob -> Maybe Text -> CallAnalyticsJob)
-> Lens CallAnalyticsJob CallAnalyticsJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe Text
failureReason :: Maybe Text
$sel:failureReason:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe Text
failureReason} -> Maybe Text
failureReason) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe Text
a -> CallAnalyticsJob
s {$sel:failureReason:CallAnalyticsJob' :: Maybe Text
failureReason = Maybe Text
a} :: CallAnalyticsJob)

-- | The status of the analytics job.
callAnalyticsJob_callAnalyticsJobStatus :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe CallAnalyticsJobStatus)
callAnalyticsJob_callAnalyticsJobStatus :: (Maybe CallAnalyticsJobStatus -> f (Maybe CallAnalyticsJobStatus))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_callAnalyticsJobStatus = (CallAnalyticsJob -> Maybe CallAnalyticsJobStatus)
-> (CallAnalyticsJob
    -> Maybe CallAnalyticsJobStatus -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob
     CallAnalyticsJob
     (Maybe CallAnalyticsJobStatus)
     (Maybe CallAnalyticsJobStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe CallAnalyticsJobStatus
callAnalyticsJobStatus :: Maybe CallAnalyticsJobStatus
$sel:callAnalyticsJobStatus:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe CallAnalyticsJobStatus
callAnalyticsJobStatus} -> Maybe CallAnalyticsJobStatus
callAnalyticsJobStatus) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe CallAnalyticsJobStatus
a -> CallAnalyticsJob
s {$sel:callAnalyticsJobStatus:CallAnalyticsJob' :: Maybe CallAnalyticsJobStatus
callAnalyticsJobStatus = Maybe CallAnalyticsJobStatus
a} :: CallAnalyticsJob)

-- | A value between zero and one that Amazon Transcribe assigned to the
-- language that it identified in the source audio. This value appears only
-- when you don\'t provide a single language code. Larger values indicate
-- that Amazon Transcribe has higher confidence in the language that it
-- identified
callAnalyticsJob_identifiedLanguageScore :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Prelude.Double)
callAnalyticsJob_identifiedLanguageScore :: (Maybe Double -> f (Maybe Double))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_identifiedLanguageScore = (CallAnalyticsJob -> Maybe Double)
-> (CallAnalyticsJob -> Maybe Double -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob CallAnalyticsJob (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe Double
identifiedLanguageScore :: Maybe Double
$sel:identifiedLanguageScore:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe Double
identifiedLanguageScore} -> Maybe Double
identifiedLanguageScore) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe Double
a -> CallAnalyticsJob
s {$sel:identifiedLanguageScore:CallAnalyticsJob' :: Maybe Double
identifiedLanguageScore = Maybe Double
a} :: CallAnalyticsJob)

-- | If you know the language spoken between the customer and the agent,
-- specify a language code for this field.
--
-- If you don\'t know the language, you can leave this field blank, and
-- Amazon Transcribe will use machine learning to automatically identify
-- the language. To improve the accuracy of language identification, you
-- can provide an array containing the possible language codes for the
-- language spoken in your audio. Refer to
-- <https://docs.aws.amazon.com/transcribe/latest/dg/how-it-works.html Supported languages and language-specific features>
-- for additional information.
callAnalyticsJob_languageCode :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe LanguageCode)
callAnalyticsJob_languageCode :: (Maybe LanguageCode -> f (Maybe LanguageCode))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_languageCode = (CallAnalyticsJob -> Maybe LanguageCode)
-> (CallAnalyticsJob -> Maybe LanguageCode -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob
     CallAnalyticsJob
     (Maybe LanguageCode)
     (Maybe LanguageCode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe LanguageCode
languageCode :: Maybe LanguageCode
$sel:languageCode:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe LanguageCode
languageCode} -> Maybe LanguageCode
languageCode) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe LanguageCode
a -> CallAnalyticsJob
s {$sel:languageCode:CallAnalyticsJob' :: Maybe LanguageCode
languageCode = Maybe LanguageCode
a} :: CallAnalyticsJob)

-- | Provides information about the settings used to run a transcription job.
callAnalyticsJob_settings :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe CallAnalyticsJobSettings)
callAnalyticsJob_settings :: (Maybe CallAnalyticsJobSettings
 -> f (Maybe CallAnalyticsJobSettings))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_settings = (CallAnalyticsJob -> Maybe CallAnalyticsJobSettings)
-> (CallAnalyticsJob
    -> Maybe CallAnalyticsJobSettings -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob
     CallAnalyticsJob
     (Maybe CallAnalyticsJobSettings)
     (Maybe CallAnalyticsJobSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe CallAnalyticsJobSettings
settings :: Maybe CallAnalyticsJobSettings
$sel:settings:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe CallAnalyticsJobSettings
settings} -> Maybe CallAnalyticsJobSettings
settings) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe CallAnalyticsJobSettings
a -> CallAnalyticsJob
s {$sel:settings:CallAnalyticsJob' :: Maybe CallAnalyticsJobSettings
settings = Maybe CallAnalyticsJobSettings
a} :: CallAnalyticsJob)

-- | A timestamp that shows when the analytics job started processing.
callAnalyticsJob_startTime :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Prelude.UTCTime)
callAnalyticsJob_startTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_startTime = (CallAnalyticsJob -> Maybe POSIX)
-> (CallAnalyticsJob -> Maybe POSIX -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob CallAnalyticsJob (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe POSIX
a -> CallAnalyticsJob
s {$sel:startTime:CallAnalyticsJob' :: Maybe POSIX
startTime = Maybe POSIX
a} :: CallAnalyticsJob) ((Maybe POSIX -> f (Maybe POSIX))
 -> CallAnalyticsJob -> f CallAnalyticsJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> CallAnalyticsJob
-> f CallAnalyticsJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | A timestamp that shows when the analytics job was completed.
callAnalyticsJob_completionTime :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Prelude.UTCTime)
callAnalyticsJob_completionTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_completionTime = (CallAnalyticsJob -> Maybe POSIX)
-> (CallAnalyticsJob -> Maybe POSIX -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob CallAnalyticsJob (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe POSIX
completionTime :: Maybe POSIX
$sel:completionTime:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe POSIX
completionTime} -> Maybe POSIX
completionTime) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe POSIX
a -> CallAnalyticsJob
s {$sel:completionTime:CallAnalyticsJob' :: Maybe POSIX
completionTime = Maybe POSIX
a} :: CallAnalyticsJob) ((Maybe POSIX -> f (Maybe POSIX))
 -> CallAnalyticsJob -> f CallAnalyticsJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> CallAnalyticsJob
-> f CallAnalyticsJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The name of the call analytics job.
callAnalyticsJob_callAnalyticsJobName :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Prelude.Text)
callAnalyticsJob_callAnalyticsJobName :: (Maybe Text -> f (Maybe Text))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_callAnalyticsJobName = (CallAnalyticsJob -> Maybe Text)
-> (CallAnalyticsJob -> Maybe Text -> CallAnalyticsJob)
-> Lens CallAnalyticsJob CallAnalyticsJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe Text
callAnalyticsJobName :: Maybe Text
$sel:callAnalyticsJobName:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe Text
callAnalyticsJobName} -> Maybe Text
callAnalyticsJobName) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe Text
a -> CallAnalyticsJob
s {$sel:callAnalyticsJobName:CallAnalyticsJob' :: Maybe Text
callAnalyticsJobName = Maybe Text
a} :: CallAnalyticsJob)

-- | Undocumented member.
callAnalyticsJob_media :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Media)
callAnalyticsJob_media :: (Maybe Media -> f (Maybe Media))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_media = (CallAnalyticsJob -> Maybe Media)
-> (CallAnalyticsJob -> Maybe Media -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob CallAnalyticsJob (Maybe Media) (Maybe Media)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe Media
media :: Maybe Media
$sel:media:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe Media
media} -> Maybe Media
media) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe Media
a -> CallAnalyticsJob
s {$sel:media:CallAnalyticsJob' :: Maybe Media
media = Maybe Media
a} :: CallAnalyticsJob)

-- | The format of the input audio file. Note: for call analytics jobs, only
-- the following media formats are supported: MP3, MP4, WAV, FLAC, OGG, and
-- WebM.
callAnalyticsJob_mediaFormat :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe MediaFormat)
callAnalyticsJob_mediaFormat :: (Maybe MediaFormat -> f (Maybe MediaFormat))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_mediaFormat = (CallAnalyticsJob -> Maybe MediaFormat)
-> (CallAnalyticsJob -> Maybe MediaFormat -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob
     CallAnalyticsJob
     (Maybe MediaFormat)
     (Maybe MediaFormat)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe MediaFormat
mediaFormat :: Maybe MediaFormat
$sel:mediaFormat:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe MediaFormat
mediaFormat} -> Maybe MediaFormat
mediaFormat) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe MediaFormat
a -> CallAnalyticsJob
s {$sel:mediaFormat:CallAnalyticsJob' :: Maybe MediaFormat
mediaFormat = Maybe MediaFormat
a} :: CallAnalyticsJob)

-- | Shows numeric values to indicate the channel assigned to the agent\'s
-- audio and the channel assigned to the customer\'s audio.
callAnalyticsJob_channelDefinitions :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe (Prelude.NonEmpty ChannelDefinition))
callAnalyticsJob_channelDefinitions :: (Maybe (NonEmpty ChannelDefinition)
 -> f (Maybe (NonEmpty ChannelDefinition)))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_channelDefinitions = (CallAnalyticsJob -> Maybe (NonEmpty ChannelDefinition))
-> (CallAnalyticsJob
    -> Maybe (NonEmpty ChannelDefinition) -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob
     CallAnalyticsJob
     (Maybe (NonEmpty ChannelDefinition))
     (Maybe (NonEmpty ChannelDefinition))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe (NonEmpty ChannelDefinition)
channelDefinitions :: Maybe (NonEmpty ChannelDefinition)
$sel:channelDefinitions:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe (NonEmpty ChannelDefinition)
channelDefinitions} -> Maybe (NonEmpty ChannelDefinition)
channelDefinitions) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe (NonEmpty ChannelDefinition)
a -> CallAnalyticsJob
s {$sel:channelDefinitions:CallAnalyticsJob' :: Maybe (NonEmpty ChannelDefinition)
channelDefinitions = Maybe (NonEmpty ChannelDefinition)
a} :: CallAnalyticsJob) ((Maybe (NonEmpty ChannelDefinition)
  -> f (Maybe (NonEmpty ChannelDefinition)))
 -> CallAnalyticsJob -> f CallAnalyticsJob)
-> ((Maybe (NonEmpty ChannelDefinition)
     -> f (Maybe (NonEmpty ChannelDefinition)))
    -> Maybe (NonEmpty ChannelDefinition)
    -> f (Maybe (NonEmpty ChannelDefinition)))
-> (Maybe (NonEmpty ChannelDefinition)
    -> f (Maybe (NonEmpty ChannelDefinition)))
-> CallAnalyticsJob
-> f CallAnalyticsJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty ChannelDefinition)
  (NonEmpty ChannelDefinition)
  (NonEmpty ChannelDefinition)
  (NonEmpty ChannelDefinition)
-> Iso
     (Maybe (NonEmpty ChannelDefinition))
     (Maybe (NonEmpty ChannelDefinition))
     (Maybe (NonEmpty ChannelDefinition))
     (Maybe (NonEmpty ChannelDefinition))
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 AnIso
  (NonEmpty ChannelDefinition)
  (NonEmpty ChannelDefinition)
  (NonEmpty ChannelDefinition)
  (NonEmpty ChannelDefinition)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon Resource Number (ARN) that you use to get access to the
-- analytics job.
callAnalyticsJob_dataAccessRoleArn :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Prelude.Text)
callAnalyticsJob_dataAccessRoleArn :: (Maybe Text -> f (Maybe Text))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_dataAccessRoleArn = (CallAnalyticsJob -> Maybe Text)
-> (CallAnalyticsJob -> Maybe Text -> CallAnalyticsJob)
-> Lens CallAnalyticsJob CallAnalyticsJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe Text
dataAccessRoleArn :: Maybe Text
$sel:dataAccessRoleArn:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe Text
dataAccessRoleArn} -> Maybe Text
dataAccessRoleArn) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe Text
a -> CallAnalyticsJob
s {$sel:dataAccessRoleArn:CallAnalyticsJob' :: Maybe Text
dataAccessRoleArn = Maybe Text
a} :: CallAnalyticsJob)

-- | Undocumented member.
callAnalyticsJob_transcript :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Transcript)
callAnalyticsJob_transcript :: (Maybe Transcript -> f (Maybe Transcript))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_transcript = (CallAnalyticsJob -> Maybe Transcript)
-> (CallAnalyticsJob -> Maybe Transcript -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob
     CallAnalyticsJob
     (Maybe Transcript)
     (Maybe Transcript)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe Transcript
transcript :: Maybe Transcript
$sel:transcript:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe Transcript
transcript} -> Maybe Transcript
transcript) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe Transcript
a -> CallAnalyticsJob
s {$sel:transcript:CallAnalyticsJob' :: Maybe Transcript
transcript = Maybe Transcript
a} :: CallAnalyticsJob)

-- | The sample rate, in Hertz, of the audio.
callAnalyticsJob_mediaSampleRateHertz :: Lens.Lens' CallAnalyticsJob (Prelude.Maybe Prelude.Natural)
callAnalyticsJob_mediaSampleRateHertz :: (Maybe Natural -> f (Maybe Natural))
-> CallAnalyticsJob -> f CallAnalyticsJob
callAnalyticsJob_mediaSampleRateHertz = (CallAnalyticsJob -> Maybe Natural)
-> (CallAnalyticsJob -> Maybe Natural -> CallAnalyticsJob)
-> Lens
     CallAnalyticsJob CallAnalyticsJob (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CallAnalyticsJob' {Maybe Natural
mediaSampleRateHertz :: Maybe Natural
$sel:mediaSampleRateHertz:CallAnalyticsJob' :: CallAnalyticsJob -> Maybe Natural
mediaSampleRateHertz} -> Maybe Natural
mediaSampleRateHertz) (\s :: CallAnalyticsJob
s@CallAnalyticsJob' {} Maybe Natural
a -> CallAnalyticsJob
s {$sel:mediaSampleRateHertz:CallAnalyticsJob' :: Maybe Natural
mediaSampleRateHertz = Maybe Natural
a} :: CallAnalyticsJob)

instance Core.FromJSON CallAnalyticsJob where
  parseJSON :: Value -> Parser CallAnalyticsJob
parseJSON =
    String
-> (Object -> Parser CallAnalyticsJob)
-> Value
-> Parser CallAnalyticsJob
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"CallAnalyticsJob"
      ( \Object
x ->
          Maybe POSIX
-> Maybe Text
-> Maybe CallAnalyticsJobStatus
-> Maybe Double
-> Maybe LanguageCode
-> Maybe CallAnalyticsJobSettings
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe Media
-> Maybe MediaFormat
-> Maybe (NonEmpty ChannelDefinition)
-> Maybe Text
-> Maybe Transcript
-> Maybe Natural
-> CallAnalyticsJob
CallAnalyticsJob'
            (Maybe POSIX
 -> Maybe Text
 -> Maybe CallAnalyticsJobStatus
 -> Maybe Double
 -> Maybe LanguageCode
 -> Maybe CallAnalyticsJobSettings
 -> Maybe POSIX
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Media
 -> Maybe MediaFormat
 -> Maybe (NonEmpty ChannelDefinition)
 -> Maybe Text
 -> Maybe Transcript
 -> Maybe Natural
 -> CallAnalyticsJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe CallAnalyticsJobStatus
      -> Maybe Double
      -> Maybe LanguageCode
      -> Maybe CallAnalyticsJobSettings
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreationTime")
            Parser
  (Maybe Text
   -> Maybe CallAnalyticsJobStatus
   -> Maybe Double
   -> Maybe LanguageCode
   -> Maybe CallAnalyticsJobSettings
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe CallAnalyticsJobStatus
      -> Maybe Double
      -> Maybe LanguageCode
      -> Maybe CallAnalyticsJobSettings
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FailureReason")
            Parser
  (Maybe CallAnalyticsJobStatus
   -> Maybe Double
   -> Maybe LanguageCode
   -> Maybe CallAnalyticsJobSettings
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe CallAnalyticsJobStatus)
-> Parser
     (Maybe Double
      -> Maybe LanguageCode
      -> Maybe CallAnalyticsJobSettings
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CallAnalyticsJobStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CallAnalyticsJobStatus")
            Parser
  (Maybe Double
   -> Maybe LanguageCode
   -> Maybe CallAnalyticsJobSettings
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe Double)
-> Parser
     (Maybe LanguageCode
      -> Maybe CallAnalyticsJobSettings
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"IdentifiedLanguageScore")
            Parser
  (Maybe LanguageCode
   -> Maybe CallAnalyticsJobSettings
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe LanguageCode)
-> Parser
     (Maybe CallAnalyticsJobSettings
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LanguageCode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LanguageCode")
            Parser
  (Maybe CallAnalyticsJobSettings
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe CallAnalyticsJobSettings)
-> Parser
     (Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CallAnalyticsJobSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Settings")
            Parser
  (Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"StartTime")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CompletionTime")
            Parser
  (Maybe Text
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe Media
      -> Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CallAnalyticsJobName")
            Parser
  (Maybe Media
   -> Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe Media)
-> Parser
     (Maybe MediaFormat
      -> Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Media)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Media")
            Parser
  (Maybe MediaFormat
   -> Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe MediaFormat)
-> Parser
     (Maybe (NonEmpty ChannelDefinition)
      -> Maybe Text
      -> Maybe Transcript
      -> Maybe Natural
      -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe MediaFormat)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MediaFormat")
            Parser
  (Maybe (NonEmpty ChannelDefinition)
   -> Maybe Text
   -> Maybe Transcript
   -> Maybe Natural
   -> CallAnalyticsJob)
-> Parser (Maybe (NonEmpty ChannelDefinition))
-> Parser
     (Maybe Text
      -> Maybe Transcript -> Maybe Natural -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (NonEmpty ChannelDefinition))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ChannelDefinitions")
            Parser
  (Maybe Text
   -> Maybe Transcript -> Maybe Natural -> CallAnalyticsJob)
-> Parser (Maybe Text)
-> Parser (Maybe Transcript -> Maybe Natural -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DataAccessRoleArn")
            Parser (Maybe Transcript -> Maybe Natural -> CallAnalyticsJob)
-> Parser (Maybe Transcript)
-> Parser (Maybe Natural -> CallAnalyticsJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Transcript)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Transcript")
            Parser (Maybe Natural -> CallAnalyticsJob)
-> Parser (Maybe Natural) -> Parser CallAnalyticsJob
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MediaSampleRateHertz")
      )

instance Prelude.Hashable CallAnalyticsJob

instance Prelude.NFData CallAnalyticsJob