internal void OnActiveMediaTypeCallToEstablish(Conversation conversation, TranscriptRecorderType addedModality)
 {
     // TODO: Will be called from ConferenceTranscriptRecorder after joining an invited conf & added Calls for each supported modality
     // Note: Requires Established async methods to be added to AV and IM
     if (addedModality == TranscriptRecorderType.AudioVideo)
     {
         AVTranscriptRecorder avRecorder = new AVTranscriptRecorder(this);
         // TODO: Log call established and added to conv/conf
         _transcriptRecorders.Add(avRecorder);
         _conversationToCallTranscriptMapping[_conversationTranscriptRecorder].Add(avRecorder);
         avRecorder.EstablishAudioVideoCall(conversation);
     }
     else if (addedModality == TranscriptRecorderType.InstantMessage)
     {
         IMTranscriptRecorder imRecorder = new IMTranscriptRecorder(this);
         // TODO: Log call established and added to conv/conf
         _transcriptRecorders.Add(imRecorder);
         _conversationToCallTranscriptMapping[_conversationTranscriptRecorder].Add(imRecorder);
         imRecorder.EstablishInstantMessagingCall(conversation);
     }
 }
        public void AddAVIncomingCall(CallReceivedEventArgs<AudioVideoCall> e, CancellationTokenSource cts = null)
        {
            if (_state != TranscriptRecorderState.Active)
            {
                NonBlockingConsole.WriteLine("Warn: AddAVIncomingCall in unexpected TranscriptRecorderSession state: " + _state.ToString());
            }

            AVTranscriptRecorder a = new AVTranscriptRecorder(this);
            ConversationParticipant caller = e.RemoteParticipant;

            Message m = new Message("AudioVideo Conversation Participant Added.", caller.DisplayName,
                caller.UserAtHost, caller.Uri, DateTime.Now,
                _conversation.Id, (_conversation.ConferenceSession == null) ? "null" : _conversation.ConferenceSession.ConferenceUri,
                MessageType.ConversationInfo, MessageDirection.Outgoing);
            this.OnMessageReceived(m);

            _transcriptRecorders.Add(a);
            _conversationToCallTranscriptMapping[_conversationTranscriptRecorder].Add(a);

            a.AudioVideoCall_Received(e);
        }