/// <summary>
        /// Initialize from serviceConfig
        /// </summary>
        public void Initialize()
        {
            // Collect config values from Azure config.
            TraceEndpointInfo();
            ServiceDnsName = GetString(ServiceDnsNameKey);
            ServiceCNAME   = GetString(ServiceCNAMEKey, true);
            if (string.IsNullOrEmpty(ServiceCNAME))
            {
                ServiceCNAME = ServiceDnsName;
            }

            AudioFileLocation = GetString(AudioFilePathKey);
            VideoFileLocation = GetString(VideoFilePathKey);
            X509Certificate2 defaultCertificate = GetCertificateFromStore(DefaultCertificateKey);

            RoleInstanceEndpoint instanceCallControlEndpoint = RoleEnvironment.IsEmulated ? null : GetEndpoint(InstanceCallControlEndpointKey);
            RoleInstanceEndpoint defaultEndpoint             = GetEndpoint(DefaultEndpointKey);
            RoleInstanceEndpoint mediaControlEndpoint        = RoleEnvironment.IsEmulated ? null : GetEndpoint(InstanceMediaControlEndpointKey);

            int    instanceCallControlInternalPort      = RoleEnvironment.IsEmulated ? DefaultPort : instanceCallControlEndpoint.IPEndpoint.Port;
            string instanceCallControlInternalIpAddress = RoleEnvironment.IsEmulated
                                                          ? IPAddress.Loopback.ToString()
                                                          : instanceCallControlEndpoint.IPEndpoint.Address.ToString();

            int instanceCallControlPublicPort = RoleEnvironment.IsEmulated ? DefaultPort : instanceCallControlEndpoint.PublicIPEndpoint.Port;
            int mediaInstanceInternalPort     = RoleEnvironment.IsEmulated ? 8445 : mediaControlEndpoint.IPEndpoint.Port;
            int mediaInstancePublicPort       = RoleEnvironment.IsEmulated ? 20100 : mediaControlEndpoint.PublicIPEndpoint.Port;

            string instanceCallControlIpEndpoint = string.Format("{0}:{1}", instanceCallControlInternalIpAddress, instanceCallControlInternalPort);

            MicrosoftAppId = ConfigurationManager.AppSettings[MicrosoftAppIdKey];
            if (string.IsNullOrEmpty(MicrosoftAppId))
            {
                throw new ConfigurationException("MicrosoftAppId", "Key not found or empty value");
            }

            // Create structured config objects for service.
            CallControlCallbackUrl = new Uri(string.Format(
                                                 "https://{0}:{1}/{2}/{3}/",
                                                 ServiceCNAME,
                                                 instanceCallControlPublicPort,
                                                 HttpRouteConstants.CallSignalingRoutePrefix,
                                                 HttpRouteConstants.OnCallbackRoute));

            NotificationCallbackUrl = new Uri(string.Format(
                                                  "https://{0}:{1}/{2}/{3}/",
                                                  ServiceCNAME,
                                                  instanceCallControlPublicPort,
                                                  HttpRouteConstants.CallSignalingRoutePrefix,
                                                  HttpRouteConstants.OnNotificationRoute));

            TraceConfigValue("CallControlCallbackUri", CallControlCallbackUrl);

            List <Uri> controlListenUris = new List <Uri>
            {
                new Uri("https://" + instanceCallControlIpEndpoint + "/"),
                new Uri("https://" + defaultEndpoint.IPEndpoint + "/")
            };

            CallControlListeningUrls = controlListenUris;

            foreach (Uri uri in CallControlListeningUrls)
            {
                TraceConfigValue("Call control listening Uri", uri);
            }

            IPAddress publicInstanceIpAddress = RoleEnvironment.IsEmulated
                                                ? IPAddress.Loopback
                                                : GetInstancePublicIpAddress(ServiceDnsName);

            MediaPlatformSettings = new MediaPlatformSettings()
            {
                MediaPlatformInstanceSettings = new MediaPlatformInstanceSettings()
                {
                    CertificateThumbprint   = defaultCertificate.Thumbprint,
                    InstanceInternalPort    = mediaInstanceInternalPort,
                    InstancePublicIPAddress = publicInstanceIpAddress,
                    InstancePublicPort      = mediaInstancePublicPort,
                    ServiceFqdn             = ServiceCNAME
                },

                ApplicationId = MicrosoftAppId
            };
        }
Exemple #2
0
        /// <summary>
        /// Initialize from serviceConfig
        /// </summary>
        public void Initialize()
        {
            // Collect config values from Azure config.
            TraceEndpointInfo();
            ServiceDnsName = GetString(ServiceDnsNameKey);
            ServiceCNAME   = GetString(ServiceCNAMEKey, true);
            if (string.IsNullOrEmpty(ServiceCNAME))
            {
                ServiceCNAME = ServiceDnsName;
            }

            X509Certificate2 defaultCertificate = GetCertificateFromStore(DefaultCertificateKey);

            RoleInstanceEndpoint instanceCallControlEndpoint = RoleEnvironment.IsEmulated ? null : GetEndpoint(InstanceCallControlEndpointKey);
            RoleInstanceEndpoint defaultEndpoint             = GetEndpoint(DefaultEndpointKey);
            RoleInstanceEndpoint mediaControlEndpoint        = RoleEnvironment.IsEmulated ? null : GetEndpoint(InstanceMediaControlEndpointKey);

            int    instanceCallControlInternalPort      = RoleEnvironment.IsEmulated ? DefaultPort : instanceCallControlEndpoint.IPEndpoint.Port;
            string instanceCallControlInternalIpAddress = RoleEnvironment.IsEmulated
                                                          ? IPAddress.Loopback.ToString()
                                                          : instanceCallControlEndpoint.IPEndpoint.Address.ToString();

            int instanceCallControlPublicPort = RoleEnvironment.IsEmulated ? DefaultPort : instanceCallControlEndpoint.PublicIPEndpoint.Port;
            int mediaInstanceInternalPort     = RoleEnvironment.IsEmulated ? 8445 : mediaControlEndpoint.IPEndpoint.Port;
            int mediaInstancePublicPort       = RoleEnvironment.IsEmulated ? 20100 : mediaControlEndpoint.PublicIPEndpoint.Port;

            string instanceCallControlIpEndpoint = string.Format("{0}:{1}", instanceCallControlInternalIpAddress, instanceCallControlInternalPort);

            MicrosoftAppId = ConfigurationManager.AppSettings[MicrosoftAppIdKey];
            if (string.IsNullOrEmpty(MicrosoftAppId) || string.Equals(MicrosoftAppId, DefaultMicrosoftAppIdValue))
            {
                throw new ConfigurationException("MicrosoftAppId", "Update app.config in WorkerRole with AppId from the bot registration portal");
            }

            string microsoftAppPassword = ConfigurationManager.AppSettings[MicrosoftAppPasswordKey];

            if (string.IsNullOrEmpty(microsoftAppPassword) || string.Equals(microsoftAppPassword, DefaultMicrosoftAppPasswordValue))
            {
                throw new ConfigurationException("MicrosoftAppPassword", "Update app.config in WorkerRole with BotSecret from the bot registration portal");
            }

            // Create structured config objects for service.
            CallControlCallbackUrl = new Uri(string.Format(
                                                 "https://{0}:{1}/{2}/{3}/",
                                                 ServiceCNAME,
                                                 instanceCallControlPublicPort,
                                                 HttpRouteConstants.CallSignalingRoutePrefix,
                                                 HttpRouteConstants.OnCallbackRoute));

            NotificationCallbackUrl = new Uri(string.Format(
                                                  "https://{0}:{1}/{2}/{3}/",
                                                  ServiceCNAME,
                                                  instanceCallControlPublicPort,
                                                  HttpRouteConstants.CallSignalingRoutePrefix,
                                                  HttpRouteConstants.OnNotificationRoute));

            AzureInstanceBaseUrl = new Uri(string.Format(
                                               "https://{0}:{1}/",
                                               ServiceCNAME,
                                               instanceCallControlPublicPort));

            TraceConfigValue("CallControlCallbackUri", CallControlCallbackUrl);
            List <Uri> controlListenUris = new List <Uri>();

            if (RoleEnvironment.IsEmulated)
            {
                controlListenUris.Add(new Uri("https://" + defaultEndpoint.IPEndpoint.Address + ":" + DefaultPort + "/"));
            }
            else
            {
                controlListenUris.Add(new Uri("https://" + instanceCallControlIpEndpoint + "/"));
                controlListenUris.Add(new Uri("https://" + defaultEndpoint.IPEndpoint + "/"));
            };
            CallControlListeningUrls = controlListenUris;

            foreach (Uri uri in CallControlListeningUrls)
            {
                TraceConfigValue("Call control listening Uri", uri);
            }

            IPAddress publicInstanceIpAddress = RoleEnvironment.IsEmulated
                                                ? IPAddress.Loopback
                                                : GetInstancePublicIpAddress(ServiceDnsName);

            MediaPlatformSettings = new MediaPlatformSettings()
            {
                MediaPlatformInstanceSettings = new MediaPlatformInstanceSettings()
                {
                    CertificateThumbprint   = defaultCertificate.Thumbprint,
                    InstanceInternalPort    = mediaInstanceInternalPort,
                    InstancePublicIPAddress = publicInstanceIpAddress,
                    InstancePublicPort      = mediaInstancePublicPort,
                    ServiceFqdn             = ServiceCNAME
                },

                ApplicationId = MicrosoftAppId
            };
        }