// Returns the remote user URI. public String GetRemoteUserURI() { String str = ""; try { if (ConfigurationManager.AppSettings[_remoteUserURIPrompt + _userCount] != null) { _remoteUserURI = ConfigurationManager.AppSettings[_remoteUserURIPrompt + _userCount]; Console.WriteLine("\nUsing {0} as remote user", _remoteUserURI); return(_remoteUserURI); } else { // Prompt user for remote user URI _remoteUserURI = UCMASampleHelper.PromptUser("Enter the URI for the remote user logged onto Communicator, in the sip:User@Host format or tel:+1XXXYYYZZZZ format => ", "RemoteUserURI"); return(str); } } catch (InvalidOperationException iOpEx) { // Invalid Operation Exception should only be thrown on poorly-entered input. Console.WriteLine("Invalid Operation Exception: " + iOpEx.ToString()); return(str); } }
public AudioVideoFlow CreateAudioVideoFlow(EventHandler <AudioVideoFlowConfigurationRequestedEventArgs> audioVideoFlowConfigurationRequestedEventHandler, EventHandler <MediaFlowStateChangedEventArgs> audioVideoFlowStateChangedEventHandler) { _audioVideoFlowConfigurationRequestedEventHandler = audioVideoFlowConfigurationRequestedEventHandler; _audioVideoFlowStateChangedEventHandler = audioVideoFlowStateChangedEventHandler; UCMASampleHelper UCMASampleHelper = new UCMASampleHelper(); UserEndpoint userEndpoint = UCMASampleHelper.CreateEstablishedUserEndpoint("AudioVideoFlowHelper"); // If application settings are provided via the app.config file, then use them if (ConfigurationManager.AppSettings.HasKeys() == true) { _calledParty = "sip:" + ConfigurationManager.AppSettings["CalledParty"]; } else { // Prompt user for user URI string prompt = "Please enter the Called Party URI in the User@Host format => "; _calledParty = UCMASampleHelper.PromptUser(prompt, "Remote User URI"); _calledParty = "sip:" + _calledParty; } // Setup the conversation and place the call. ConversationSettings convSettings = new ConversationSettings(); convSettings.Priority = _conversationPriority; convSettings.Subject = _conversationSubject; // Conversation represents a collection of modes of communication (media types)in the context of a dialog with one or multiple callees. Conversation conversation = new Conversation(userEndpoint, convSettings); AudioVideoCall audioVideoCall = new AudioVideoCall(conversation); //Call: StateChanged: Only hooked up for logging. audioVideoCall.StateChanged += new EventHandler <CallStateChangedEventArgs>(audioVideoCall_StateChanged); //Subscribe for the flow configuration requested event; the flow will be used to send the media. //Ultimately, as a part of the callback, the media will be sent/recieved. audioVideoCall.AudioVideoFlowConfigurationRequested += new EventHandler <AudioVideoFlowConfigurationRequestedEventArgs>(audioVideoCall_FlowConfigurationRequested); //Place the call to the remote party, with the default call options. audioVideoCall.BeginEstablish(_calledParty, null, EndCallEstablish, audioVideoCall); //Sync; wait for the call to complete. _waitForAudioVideoCallEstablishCompleted.WaitOne(); //Sync; wait for the AudioVideoFlow goes Active _waitForAudioVideoFlowStateChangedToActiveCompleted.WaitOne(); return(_audioVideoFlow); }
/// <summary> /// Returns an application endpoint that is provisioned on a platform /// as specified by the ApplicationID which could be provided by config /// file or be prompted to the user; if the platform discovers multiple /// application endpoints the first one discovered and established will be /// returned. If no application endpoints are discovered this method /// returns null. /// </summary> /// <returns></returns> public ApplicationEndpoint CreateAutoProvisionedApplicationEndpoint() { _applicationId = null; try { // Attempt to retrieve the application ID of the provisioned // application from the config file. _applicationId = System.Configuration.ConfigurationManager.AppSettings["ApplicationID"]; if (string.IsNullOrEmpty(_applicationId)) { // The application ID wasn't retrieved from the config file // so prompt for the application ID for the application that // has been provisioned. string prompt = "Please enter the unique ID of the application that is provisioned in " + "the topology => "; _applicationId = UCMASampleHelper.PromptUser(prompt, null); } if (!string.IsNullOrEmpty(_applicationId)) { UCMASampleHelper.WriteLine("Creating CollaborationPlatform for the provisioned application" + " with ID \'" + _applicationId + "\' using ProvisionedApplicationPlatformSettings."); ProvisionedApplicationPlatformSettings settings = new ProvisionedApplicationPlatformSettings("UCMASampleApp", _applicationId); // Reuse platform instance so that all endpoints share the // same platform. if (_collabPlatform == null) { // Initalize and startup the platform. _collabPlatform = new CollaborationPlatform(settings); // Wire up a handler for the // ApplicationEndpointOwnerDiscovered event. _collabPlatform.RegisterForApplicationEndpointSettings( this.Platform_ApplicationEndpointOwnerDiscovered); // Initalize and startup the platform. _collabPlatform.BeginStartup(EndPlatformStartup, _collabPlatform); if (_endpointInitCompletedEvent.WaitOne()) { UCMASampleHelper.WriteLine("Found an application EP the Owner Uri is: " + _applicationEndpoint.OwnerUri); } else { Console.WriteLine("Application endpoint was not established within the given time," + " ending Sample."); UCMASampleHelper.FinishSample(); } } else { Console.WriteLine("Collaboration platform already exists, ending Sample."); UCMASampleHelper.FinishSample(); } } else { Console.WriteLine("No application ID was specified by the user. Unable to create an" + " ApplicationEndpoint to use in the sample."); UCMASampleHelper.FinishSample(); } return(_applicationEndpoint); } catch (InvalidOperationException iOpEx) { // Invalid Operation Exception may be thrown if the data provided // to the BeginStartUp is called when the platform has already been // started or terminated. // TODO (Left to the reader): Error handling code. UCMASampleHelper.WriteException(iOpEx); return(_applicationEndpoint); } }