public async Task TransferAsyncShouldThrowWhenCapabilityNotAvailable() { // Given TestHelper.RaiseEventsFromFile(m_mockEventChannel, "Event_AudioVideoConnected_NoActionLink.json"); // When await m_audioVideoCall.TransferAsync("sip:[email protected]", null, m_loggingContext).ConfigureAwait(false); // Then // Exception is thrown }
private async Task StartAgentCallAndTransferFlowAsync(ICommunication communication, string agent, string callContext) { IAudioVideoInvitation invite = await EstablishCallWithAgentAsync(communication, agent).ConfigureAwait(false); lock (m_syncRoot) { m_outboundAVConversations.Add(invite.RelatedConversation); } int result = Interlocked.Exchange(ref m_outboundCallTransferLock, 1); if (result == 0) { //Step 4: do transfer Logger.Instance.Information("[HuntGroupJob] Transferring call to " + agent); IAudioVideoCall av = invite.RelatedConversation.AudioVideoCall; ITransfer t = await av.TransferAsync(null, callContext, LoggingContext).ConfigureAwait(false); await t.WaitForTransferCompleteAsync().TimeoutAfterAsync(TimeSpan.FromSeconds(30)).ConfigureAwait(false); Logger.Instance.Information("[HuntGroupJob] Transfer completed successfully!"); } else { // The call is already accepted and transfered by some one else Logger.Instance.Information("[HuntGroupJob] The call is already accepted and transfered by some one else; cancelling the transfer for " + agent); await invite.RelatedConversation.DeleteAsync(LoggingContext).ConfigureAwait(false); } }