33# Licensed under the MIT License. See License.txt in the project root for
44# license information.
55# --------------------------------------------------------------------------
6+ from datetime import datetime
67from typing import List , Optional , Union , TYPE_CHECKING
78from typing_extensions import Literal
89from ._generated .models import (
1617 Choice as ChoiceInternal ,
1718 ChannelAffinity as ChannelAffinityInternal ,
1819 MediaStreamingSubscription as MediaStreamingSubscriptionInternal ,
19- TranscriptionSubscription as TranscriptionSubscriptionInternal
20+ TranscriptionSubscription as TranscriptionSubscriptionInternal ,
21+ RecordingStorageInfo ,
22+ Error
2023)
2124from ._shared .models import (
2225 CommunicationIdentifier ,
2528)
2629from ._generated .models ._enums import PlaySourceType
2730from ._generated .models ._enums import RecordingStorageKind
31+ from ._generated .models ._enums import CallSessionEndReason
2832from ._utils import (
2933 deserialize_phone_identifier ,
3034 deserialize_identifier ,
5559 RemoveParticipantResponse as RemoveParticipantResultRest ,
5660 TransferCallResponse as TransferParticipantResultRest ,
5761 RecordingStateResponse as RecordingStateResultRest ,
62+ RecordingResultResponse as RecordingResultRest ,
5863 MuteParticipantsResult as MuteParticipantsResultRest ,
5964 SendDtmfTonesResult as SendDtmfTonesResultRest ,
6065 CancelAddParticipantResponse as CancelAddParticipantResultRest ,
@@ -713,7 +718,6 @@ def _from_generated(cls, call_connection_properties_generated: "CallConnectionPr
713718 else None ,
714719 )
715720
716-
717721class RecordingProperties :
718722 """Detailed recording properties of the call.
719723
@@ -740,6 +744,80 @@ def _from_generated(cls, recording_state_result: "RecordingStateResultRest"):
740744 recording_id = recording_state_result .recording_id , recording_state = recording_state_result .recording_state
741745 )
742746
747+ class RecordingResult :
748+ """Recording result data.
749+ Variables are only populated by the server, and will be ignored when sending a request.
750+ :ivar recording_id:
751+ :vartype recording_id: str
752+ :ivar recording_storage_info: Container for chunks.
753+ :vartype recording_storage_info:
754+ ~azure.communication.callautomation.models.RecordingStorageInfo
755+ :ivar errors:
756+ :vartype errors: list[~azure.communication.callautomation.models.Error]
757+ :ivar recording_start_time:
758+ :vartype recording_start_time: ~datetime.datetime
759+ :ivar recording_duration_ms:
760+ :vartype recording_duration_ms: int
761+ :ivar session_end_reason: Known values are: "sessionStillOngoing", "callEnded",
762+ "initiatorLeft", "handedOverOrTransferred", "maximumSessionTimeReached", "callStartTimeout",
763+ "mediaTimeout", "audioStreamFailure", "allInstancesBusy", "teamsTokenConversionFailed",
764+ "reportCallStateFailed", "reportCallStateFailedAndSessionMustBeDiscarded",
765+ "couldNotRejoinCall", "invalidBotData", "couldNotStart",
766+ "appHostedMediaFailureOutcomeWithError", "appHostedMediaFailureOutcomeGracefully",
767+ "handedOverDueToMediaTimeout", "handedOverDueToAudioStreamFailure",
768+ "speechRecognitionSessionNonRetriableError",
769+ "speechRecognitionSessionRetriableErrorMaxRetryCountReached",
770+ "handedOverDueToChunkCreationFailure", "chunkCreationFailed",
771+ "handedOverDueToProcessingTimeout", "processingTimeout", and "transcriptObjectCreationFailed".
772+ :vartype session_end_reason: str or
773+ ~azure.communication.callautomation.models.CallSessionEndReason
774+ :ivar recording_expiration_time:
775+ :vartype recording_expiration_time: ~datetime.datetime
776+ """
777+
778+ recording_id : Optional [str ]
779+ """Id of this recording operation."""
780+ recording_storage_info : Optional [RecordingStorageInfo ]
781+ """recording storage info."""
782+ errors : Optional [List [Error ]]
783+ """Error."""
784+ session_end_reason : Optional [Union [str , 'CallSessionEndReason' ]]
785+ """session end reason."""
786+ recording_start_time : Optional [datetime ]
787+ """recording start time."""
788+ recording_duration_ms : Optional [int ]
789+ """recording duration ms."""
790+ recording_expiration_time : Optional [datetime ]
791+ """recording expiration time."""
792+
793+ def __init__ (
794+ self , * , recording_id : Optional [str ] = None ,
795+ recording_storage_info : Optional [RecordingStorageInfo ] = None ,
796+ session_end_reason : Optional [Union [str , 'CallSessionEndReason' ]] = None ,
797+ recording_start_time : Optional [datetime ] = None ,
798+ recording_duration_ms : Optional [int ] = None ,
799+ recording_expiration_time : Optional [datetime ] = None ,
800+ errors : Optional [List [Error ]]
801+ ):
802+ self .recording_id = recording_id
803+ self .recording_storage_info = recording_storage_info
804+ self .session_end_reason = session_end_reason
805+ self .recording_start_time = recording_start_time
806+ self .recording_duration_ms = recording_duration_ms
807+ self .recording_expiration_time = recording_expiration_time
808+ self .errors = errors
809+
810+ @classmethod
811+ def _from_generated (cls , recording_result : "RecordingResultRest" ):
812+ return cls (
813+ recording_id = recording_result .recording_id ,
814+ recording_storage_info = recording_result .recording_storage_info ,
815+ session_end_reason = recording_result .session_end_reason ,
816+ recording_start_time = recording_result .recording_start_time ,
817+ recording_duration_ms = recording_result .recording_duration_ms ,
818+ recording_expiration_time = recording_result .recording_expiration_time ,
819+ errors = recording_result .errors
820+ )
743821
744822class CallParticipant :
745823 """Details of an Azure Communication Service call participant.
0 commit comments