From a06becf2ac4f981c6ef1be9d4386501989808658 Mon Sep 17 00:00:00 2001 From: mathowar <58790029+mathowar@users.noreply.github.com> Date: Wed, 26 Feb 2020 14:56:47 -0800 Subject: [PATCH] Update Sample docs to most recent version (#180) * update sample docs * update docs --- .../ComplianceRecordingBot/README.md | 10 +- .../StatelessSamples/SimpleIvrBot/Bot/Bot.cs | 464 ++++ .../SimpleIvrBot/Bot/BotOptions.cs | 50 + .../Controller/ControllerConstants.cs | 18 + .../SimpleIvrBot/Controller/HomeController.cs | 89 + .../Controller/PlatformCallController.cs | 42 + .../SimpleIvrBot/Data/ConfigurationManager.cs | 34 + .../Extensions/BotBuilderExtensions.cs | 39 + .../Extensions/ControllerExtentions.cs | 73 + .../SimpleIvrBot/Extensions/HttpExtensions.cs | 72 + .../StatelessSamples/SimpleIvrBot/Program.cs | 42 + .../Properties/launchSettings.json | 27 + .../StatelessSamples/SimpleIvrBot/README.md | 106 + .../SimpleIvrBot/SimpleIvrBot.csproj | 32 + .../StatelessSamples/SimpleIvrBot/Startup.cs | 79 + .../SimpleIvrBot/appsettings.json | 21 + .../SimpleIvrBot/wwwroot/audio/speech.wav | Bin 0 -> 164524 bytes changelog.md | 3 + ...nications.Client.Cache.CacheContext-1.html | 1 - ...ph.Communications.Client.Cache.ICache.html | 2 - ...munications.Client.Cache.ServiceCache.html | 2 - ...ions.Client.Transport.GraphAuthClient.html | 1 - ...s.Client.Transport.GraphClientWrapper.html | 2 - ...cations.Resources.ResourceEventArgs-1.html | 1 - ...ions.Resources.ResourceEventHandler-2.html | 1 - ...Communications.Common.CollectionUtils.html | 1 - ...Graph.Communications.Common.EnumUtils.html | 1 - ....Communications.Common.StateMachine-1.html | 1 - ...ns.Common.Telemetry.LoggingExtensions.html | 1 - ...ions.Common.Transport.GraphHttpClient.html | 3 - ...ansport.HttpResponseMessageExtensions.html | 1 - ...cations.Common.Transport.IGraphClient.html | 2 - ...Graph.Communications.Common.Utilities.html | 1 - ...Graph.Communications.Common.Validator.html | 5 - ...Graph.Communications.Common.WeakKey-1.html | 1 - docs/index.json | 2438 ++++++++--------- docs/manifest.json | 49 +- 37 files changed, 2441 insertions(+), 1274 deletions(-) create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Bot/Bot.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Bot/BotOptions.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/ControllerConstants.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/HomeController.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/PlatformCallController.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Data/ConfigurationManager.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/BotBuilderExtensions.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/ControllerExtentions.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/HttpExtensions.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Program.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Properties/launchSettings.json create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/README.md create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/SimpleIvrBot.csproj create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Startup.cs create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/appsettings.json create mode 100644 Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/wwwroot/audio/speech.wav diff --git a/Samples/BetaSamples/LocalMediaSamples/ComplianceRecordingBot/README.md b/Samples/BetaSamples/LocalMediaSamples/ComplianceRecordingBot/README.md index 3ec5c849..a013d953 100644 --- a/Samples/BetaSamples/LocalMediaSamples/ComplianceRecordingBot/README.md +++ b/Samples/BetaSamples/LocalMediaSamples/ComplianceRecordingBot/README.md @@ -2,7 +2,7 @@ ## About -The Compliance Recording bot sample guides you through building, deploying and testing a bot. This sample demonstrates how a bot can receive media streams for recording. +The Compliance Recording bot sample guides you through building, deploying and testing a bot. This sample demonstrates how a bot can receive media streams for recording. Please note that the sample does not actually record. This logic is left up to the developer. ## Getting Started @@ -11,6 +11,8 @@ This section walks you through the process of deploying and testing the sample b ### Bot Registration 1. Follow the steps in [Register Calling Bot](https://microsoftgraph.github.io/microsoft-graph-comms-samples/docs/articles/calls/register-calling-bot.html). Save the bot name, bot app id and bot secret for configuration. + * For the calling webhook, by default the notification will go to https://{your domain}/api/calling. This is configured with the `CallSignalingRoutePrefix` in [HttpRouteConstants.cs](https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/BetaSamples/LocalMediaSamples/ComplianceRecordingBot/FrontEnd/Http/Controllers/HttpRouteConstants.cs). + * Ignore the "Register bot in Microsoft Teams" section as the Compliance Recording bot won't be called directly. These bots are related to the policies discussed below, and are "attached" to users, and will be automatically invited to the call. 1. Add the following Application Permissions to the bot: @@ -31,15 +33,15 @@ Open powershell (in admin mode) and run the following commands. When prompted fo ### Create a Compliance Recording Policy Requires the application instance ID created above. Continue your powershell session and run the following commands. - * `> New-CsTeamsComplianceRecordingPolicy -Tenant -Enabled $true -Description "Test policy created by " ` - * ```> Set-CsTeamsComplianceRecordingPolicy -Tenant -Identity -ComplianceRecordingApplications ` @(New-CsTeamsComplianceRecordingApplication -Tenant -Parent -Id )``` + * `> New-CsTeamsComplianceRecordingPolicy -Enabled $true -Description "Test policy created by " ` + * ```> Set-CsTeamsComplianceRecordingPolicy -Identity -ComplianceRecordingApplications ` @(New-CsTeamsComplianceRecordingApplication -Parent -Id )``` After 30-60 seconds, the policy should show up. To verify your policy was created correctly: * `> Get-CsTeamsComplianceRecordingPolicy ` ### Assign the Compliance Recording Policy Requries the policy identity created above. Contine your powershell session and run the following commands. - * `> Grant-CsTeamsComplianceRecordingPolicy -Identity -PolicyName -Tenant ` + * `> Grant-CsTeamsComplianceRecordingPolicy -Identity -PolicyName ` To verify your policy was assigned correctly: * `> Get-CsOnlineUser | ft sipaddress, tenantid, TeamsComplianceRecordingPolicy` diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Bot/Bot.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Bot/Bot.cs new file mode 100644 index 00000000..8e709036 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Bot/Bot.cs @@ -0,0 +1,464 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace Sample.SimpleIvrBot.Bot +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Linq; + using System.Net; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Http.Extensions; + using Microsoft.Extensions.Primitives; + using Microsoft.Graph; + using Microsoft.Graph.Communications.Client.Authentication; + using Microsoft.Graph.Communications.Client.Transport; + using Microsoft.Graph.Communications.Common; + using Microsoft.Graph.Communications.Common.Telemetry; + using Microsoft.Graph.Communications.Common.Transport; + using Microsoft.Graph.Communications.Core.Notifications; + using Microsoft.Graph.Communications.Core.Serialization; + using Newtonsoft.Json; + using Sample.Common; + using Sample.Common.Authentication; + using Sample.Common.Transport; + using Sample.SimpleIvrBot.Controller; + using Sample.SimpleIvrBot.Data; + using Sample.SimpleIvrBot.Extensions; + + /// + /// The core bot class. + /// + public class Bot + { + /// + /// The prompt audio name for transfering the call. + /// + /// + /// message: "Please press 1 for Sales, press 2 for Service, press 3 for other questions". + /// + private const string BotIncomingPromptName = "BotIncomingPrompt"; + + private readonly Uri botBaseUri; + + /// + /// Initializes a new instance of the class. + /// + /// The bot options. + /// The graph logger. + public Bot(BotOptions options, IGraphLogger graphLogger) + { + this.botBaseUri = options.BotBaseUrl; + this.GraphLogger = graphLogger; + var name = this.GetType().Assembly.GetName().Name; + this.AuthenticationProvider = new AuthenticationProvider(name, options.AppId, options.AppSecret, graphLogger); + this.Serializer = new CommsSerializer(); + + var authenticationWrapper = new AuthenticationWrapper(this.AuthenticationProvider); + this.NotificationProcessor = new NotificationProcessor(authenticationWrapper, this.Serializer); + this.NotificationProcessor.OnNotificationReceived += this.NotificationProcessor_OnNotificationReceived; + this.RequestBuilder = new GraphServiceClient(options.PlaceCallEndpointUrl.AbsoluteUri, authenticationWrapper); + + // Add the default headers used by the graph client. + // This will include SdkVersion. + var defaultProperties = new List>>(); + using (HttpClient tempClient = GraphClientFactory.Create(authenticationWrapper)) + { + defaultProperties.AddRange(tempClient.DefaultRequestHeaders.Select(header => GraphProperty.RequestProperty(header.Key, header.Value))); + } + + // graph client + var productInfo = new ProductInfoHeaderValue( + typeof(Bot).Assembly.GetName().Name, + typeof(Bot).Assembly.GetName().Version.ToString()); + this.GraphApiClient = new GraphAuthClient( + this.GraphLogger, + this.Serializer.JsonSerializerSettings, + new HttpClient(), + this.AuthenticationProvider, + productInfo, + defaultProperties); + + // setup media prompt + this.MediaMap[BotIncomingPromptName] = new MediaPrompt + { + MediaInfo = new MediaInfo + { + Uri = new Uri(options.BotBaseUrl, "audio/speech.wav").ToString(), + ResourceId = Guid.NewGuid().ToString(), + }, + }; + } + + /// + /// Gets graph logger. + /// + public IGraphLogger GraphLogger { get; } + + /// + /// Gets the authentication provider. + /// + public IRequestAuthenticationProvider AuthenticationProvider { get; } + + /// + /// Gets the notification processor. + /// + public INotificationProcessor NotificationProcessor { get; } + + /// + /// Gets the URI builder. + /// + public GraphServiceClient RequestBuilder { get; } + + /// + /// Gets the serializer. + /// + public CommsSerializer Serializer { get; } + + /// + /// Gets the stateless graph client. + /// + public IGraphClient GraphApiClient { get; } + + /// + /// Gets the prompts dictionary. + /// + public IDictionary MediaMap { get; } = new Dictionary(); + + /// + /// Processes the notification asynchronously. + /// Here we make sure we log the http request and + /// catch/log any errors. + /// + /// The request. + /// The response. + /// Returns after notification is processed. + public async Task ProcessNotificationAsync( + HttpRequest request, + HttpResponse response) + { + // TODO: Parse out the scenario id and request id headers. + var headers = request.Headers.Select( + pair => new KeyValuePair>(pair.Key, pair.Value)); + + // Don't log content since we can't PII scrub here (we don't know the type). + var stopwatch = new Stopwatch(); + stopwatch.Start(); + this.GraphLogger.LogHttpMessage( + TraceLevel.Verbose, + TransactionDirection.Incoming, + HttpTraceType.HttpRequest, + request.GetDisplayUrl(), + request.Method, + obfuscatedContent: null, + headers: headers); + + try + { + var httpRequest = request.CreateRequestMessage(); + var results = await this.AuthenticationProvider.ValidateInboundRequestAsync(httpRequest).ConfigureAwait(false); + if (results.IsValid) + { + var httpResponse = await this.NotificationProcessor.ProcessNotificationAsync(httpRequest).ConfigureAwait(false); + await httpResponse.CreateHttpResponseAsync(response).ConfigureAwait(false); + } + else + { + var httpResponse = httpRequest.CreateResponse(HttpStatusCode.Forbidden); + await httpResponse.CreateHttpResponseAsync(response).ConfigureAwait(false); + } + + headers = response.Headers.Select( + pair => new KeyValuePair>(pair.Key, pair.Value)); + + this.GraphLogger.LogHttpMessage( + TraceLevel.Verbose, + TransactionDirection.Incoming, + HttpTraceType.HttpResponse, + request.GetDisplayUrl(), + request.Method, + obfuscatedContent: null, + headers: headers, + responseCode: response.StatusCode, + responseTime: stopwatch.ElapsedMilliseconds); + } + catch (ServiceException e) + { + string obfuscatedContent = null; + if ((int)e.StatusCode >= 300) + { + response.StatusCode = (int)e.StatusCode; + await response.WriteAsync(e.ToString()).ConfigureAwait(false); + obfuscatedContent = this.GraphLogger.SerializeAndObfuscate(e, Formatting.Indented); + } + else if ((int)e.StatusCode >= 200) + { + response.StatusCode = (int)e.StatusCode; + } + else + { + response.StatusCode = (int)e.StatusCode; + await response.WriteAsync(e.ToString()).ConfigureAwait(false); + obfuscatedContent = this.GraphLogger.SerializeAndObfuscate(e, Formatting.Indented); + } + + headers = response.Headers.Select( + pair => new KeyValuePair>(pair.Key, pair.Value)); + + if (e.ResponseHeaders?.Any() == true) + { + foreach (var pair in e.ResponseHeaders) + { + response.Headers.Add(pair.Key, new StringValues(pair.Value.ToArray())); + } + + headers = headers.Concat(e.ResponseHeaders); + } + + this.GraphLogger.LogHttpMessage( + TraceLevel.Error, + TransactionDirection.Incoming, + HttpTraceType.HttpResponse, + request.GetDisplayUrl(), + request.Method, + obfuscatedContent, + headers, + response.StatusCode, + responseTime: stopwatch.ElapsedMilliseconds); + } + catch (Exception e) + { + response.StatusCode = (int)HttpStatusCode.InternalServerError; + await response.WriteAsync(e.ToString()).ConfigureAwait(false); + + var obfuscatedContent = this.GraphLogger.SerializeAndObfuscate(e, Formatting.Indented); + headers = response.Headers.Select( + pair => new KeyValuePair>(pair.Key, pair.Value)); + + this.GraphLogger.LogHttpMessage( + TraceLevel.Error, + TransactionDirection.Incoming, + HttpTraceType.HttpResponse, + request.GetDisplayUrl(), + request.Method, + obfuscatedContent, + headers, + response.StatusCode, + responseTime: stopwatch.ElapsedMilliseconds); + } + } + + /// + /// Raised when the has received a notification. + /// + /// The instance containing the event data. + private void NotificationProcessor_OnNotificationReceived(NotificationEventArgs args) + { +#pragma warning disable 4014 + // Processing notification in the background. + // This ensures we're not holding on to the request. + this.NotificationProcessor_OnNotificationReceivedAsync(args).ForgetAndLogExceptionAsync( + this.GraphLogger, + $"Error processing notification {args.Notification.ResourceUrl} with scenario {args.ScenarioId}"); +#pragma warning restore 4014 + } + + /// + /// Raised when the has received a notification asynchronously. + /// + /// The instance containing the event data. + /// The . + private async Task NotificationProcessor_OnNotificationReceivedAsync(NotificationEventArgs args) + { + this.GraphLogger.CorrelationId = args.ScenarioId; + var headers = new[] + { + new KeyValuePair>(HttpConstants.HeaderNames.ScenarioId, new[] { args.ScenarioId.ToString() }), + new KeyValuePair>(HttpConstants.HeaderNames.ClientRequestId, new[] { args.RequestId.ToString() }), + new KeyValuePair>(HttpConstants.HeaderNames.Tenant, new[] { args.TenantId }), + }; + + // Create obfuscation content to match what we + // would have gotten from the service, then log. + var notifications = new CommsNotifications { Value = new[] { args.Notification } }; + var obfuscatedContent = this.GraphLogger.SerializeAndObfuscate(notifications, Formatting.Indented); + this.GraphLogger.LogHttpMessage( + TraceLevel.Info, + TransactionDirection.Incoming, + HttpTraceType.HttpRequest, + args.CallbackUri.ToString(), + HttpMethods.Post, + obfuscatedContent, + headers, + correlationId: args.ScenarioId, + requestId: args.RequestId); + + if (args.ResourceData is Call call) + { + if (args.ChangeType == ChangeType.Created && call.State == CallState.Incoming) + { + await this.BotAnswerIncomingCallAsync(call.Id, args.TenantId, args.ScenarioId).ConfigureAwait(false); + } + else if (args.ChangeType == ChangeType.Updated && call.State == CallState.Established) + { + this.GraphLogger.Log(TraceLevel.Info, "In Established"); + + if (call.ToneInfo == null && call.MediaState.Audio == MediaState.Active) + { + await this.BotPlayNotificationPromptAsync(call.Id, args.TenantId, args.ScenarioId).ConfigureAwait(false); + } + else if (call.ToneInfo?.SequenceId == 1) + { + InvitationParticipantInfo transferTarget = null; + + if (call.ToneInfo.Tone == Tone.Tone1) + { + transferTarget = new InvitationParticipantInfo + { + Identity = new IdentitySet + { + User = new Identity + { + Id = ConfigurationManager.AppSetting["ObjectIds:First"], + }, + }, + }; + } + else if (call.ToneInfo.Tone == Tone.Tone2) + { + transferTarget = new InvitationParticipantInfo + { + Identity = new IdentitySet + { + User = new Identity + { + Id = ConfigurationManager.AppSetting["ObjectIds:Second"], + }, + }, + }; + } + else + { + transferTarget = new InvitationParticipantInfo + { + Identity = new IdentitySet + { + User = new Identity + { + Id = ConfigurationManager.AppSetting["ObjectIds:Third"], + }, + }, + }; + } + + await this.BotTransferCallAsync(transferTarget, call.Id, args.TenantId, args.ScenarioId).ConfigureAwait(false); + } + + return; + } + else if (args.ChangeType == ChangeType.Deleted && call.State == CallState.Terminated) + { + this.GraphLogger.Log(TraceLevel.Info, "Call is Terminated now"); + } + + return; + } + else if (args.ResourceData is PlayPromptOperation playPromptOperation) + { + // checking for the call id sent in ClientContext. + if (string.IsNullOrWhiteSpace(playPromptOperation.ClientContext)) + { + throw new ServiceException(new Error() + { + Message = "No call id provided in PlayPromptOperation.ClientContext.", + }); + } + else if (playPromptOperation.CompletionReason == PlayPromptCompletionReason.CompletedSuccessfully && playPromptOperation.Status == OperationStatus.Completed) + { + await this.BotSubscribesToToneAsync(playPromptOperation.ClientContext, args.TenantId, args.ScenarioId).ConfigureAwait(false); + } + } + } + + /// + /// Subscribes to Tone. + /// + /// Call Id. + /// Tenant Id. + /// ScenarioId. + /// + /// user subscribesToTone. + /// + private async Task BotSubscribesToToneAsync(string callId, string tenantId, Guid scenarioId) + { + await this.GraphApiClient.SendAsync(this.RequestBuilder.Communications.Calls[callId].SubscribeToTone(callId).Request(), RequestType.Create, tenantId, scenarioId).ConfigureAwait(false); + return; + } + + /// + /// Bot answers incoming call. + /// + /// The identifier of the call to transfer. + /// The tenant identifier. + /// The scenario identifier. + /// + /// When the call has been answered. + /// + private async Task BotAnswerIncomingCallAsync(string callId, string tenantId, Guid scenarioId) + { + var mediaToPrefetch = new List(); + foreach (var m in this.MediaMap) + { + mediaToPrefetch.Add(m.Value.MediaInfo); + } + + var answerRequest = this.RequestBuilder.Communications.Calls[callId].Answer( + callbackUri: new Uri(this.botBaseUri, ControllerConstants.CallbackPrefix).ToString(), + mediaConfig: new ServiceHostedMediaConfig { PreFetchMedia = mediaToPrefetch }, + acceptedModalities: new List { Modality.Audio }).Request(); + await this.GraphApiClient.SendAsync(answerRequest, RequestType.Create, tenantId, scenarioId).ConfigureAwait(false); + } + + /// + /// Bot transfers incoming call. + /// + /// The identifier of the transfer target. + /// The call identifier. + /// The tenant identifier. + /// The scenario identifier. + /// + /// When the call has been answered. + /// + private async Task BotTransferCallAsync(InvitationParticipantInfo target, string callId, string tenantId, Guid scenarioId) + { + await this.GraphApiClient.SendAsync(this.RequestBuilder.Communications.Calls[callId].Transfer(target).Request(), RequestType.Create, tenantId, scenarioId).ConfigureAwait(false); + } + + /// + /// Bot plays notification. + /// + /// The call identifier. + /// The Tenant identifier. + /// The scenario identifier. + /// + /// Returns when prompt is played. + /// + private async Task BotPlayNotificationPromptAsync(string callId, string tenantId, Guid scenarioId) + { + var prompts = new Prompt[] { this.MediaMap[BotIncomingPromptName] }; + + var playPromptRequest = this.RequestBuilder.Communications.Calls[callId].PlayPrompt( + prompts: prompts, + clientContext: callId).Request(); + + await this.GraphApiClient.SendAsync(playPromptRequest, RequestType.Create, tenantId, scenarioId).ConfigureAwait(false); + return; + } + } +} \ No newline at end of file diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Bot/BotOptions.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Bot/BotOptions.cs new file mode 100644 index 00000000..02d87056 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Bot/BotOptions.cs @@ -0,0 +1,50 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace Sample.SimpleIvrBot.Bot +{ + using System; + + /// + /// The bot options class. + /// + public class BotOptions + { + /// + /// Gets or sets the application id. + /// + public string AppId { get; set; } + + /// + /// Gets or sets the application secret. + /// + public string AppSecret { get; set; } + + /// + /// Gets or sets the calls uri of the application. + /// + public Uri BotBaseUrl { get; set; } + + /// + /// Gets or sets the comms platform endpoint uri. + /// + public Uri PlaceCallEndpointUrl { get; set; } + + /// + /// Gets or sets cosmosDB Configuraiton account uri. + /// + public string CosmosDBAccountUri { get; set; } + + /// + /// Gets or sets cosmosDB Configuraiton account key. + /// + public string CosmosDBAccountKey { get; set; } + + /// + /// Gets or sets cosmosDB Configuraiton database name. + /// + public string CosmosDBDatabaseName { get; set; } + } +} diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/ControllerConstants.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/ControllerConstants.cs new file mode 100644 index 00000000..5bcfe3f3 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/ControllerConstants.cs @@ -0,0 +1,18 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace Sample.SimpleIvrBot.Controller +{ + /// + /// Http route constants for routing requests. + /// + public class ControllerConstants + { + /// + /// Route prefix for all incoming requests. + /// + public const string CallbackPrefix = "/callback"; + } +} diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/HomeController.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/HomeController.cs new file mode 100644 index 00000000..b4baddbb --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/HomeController.cs @@ -0,0 +1,89 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace Sample.SimpleIvrBot.Controller +{ + using Microsoft.AspNetCore.Mvc; + using Sample.Common.Logging; + + /// + /// The home controller class. + /// + public class HomeController : Controller + { + private readonly SampleObserver observer; + + /// + /// Initializes a new instance of the class. + /// + /// The observer. + public HomeController(SampleObserver observer) + { + this.observer = observer; + } + + /// + /// Get the default content of home page. + /// + /// Default content. + [HttpGet("/")] + public string Get() + { + return "Home Page"; + } + + /// + /// Get the service logs. + /// + /// Skip specified lines. + /// Take specified lines. + /// The logs. + [HttpGet] + [Route("/logs")] + public IActionResult GetLogs( + [FromQuery] int skip = 0, + [FromQuery] int take = 1000) + { + this.AddRefreshHeader(3); + return this.Content( + this.observer.GetLogs(skip, take), + System.Net.Mime.MediaTypeNames.Text.Plain, + System.Text.Encoding.UTF8); + } + + /// + /// Get the service logs. + /// + /// The filter. + /// Skip specified lines. + /// Take specified lines. + /// + /// The logs. + /// + [HttpGet] + [Route("/logs/{filter}")] + public IActionResult GetLogs( + string filter, + [FromQuery] int skip = 0, + [FromQuery] int take = 1000) + { + this.AddRefreshHeader(3); + return this.Content( + this.observer.GetLogs(filter, skip, take), + System.Net.Mime.MediaTypeNames.Text.Plain, + System.Text.Encoding.UTF8); + } + + /// + /// Add refresh headers for browsers to download content. + /// + /// Refresh rate. + private void AddRefreshHeader(int seconds) + { + this.Response.Headers.Add("Cache-Control", "private,must-revalidate,post-check=1,pre-check=2,no-cache"); + this.Response.Headers.Add("Refresh", seconds.ToString()); + } + } +} diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/PlatformCallController.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/PlatformCallController.cs new file mode 100644 index 00000000..d65e0f9f --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Controller/PlatformCallController.cs @@ -0,0 +1,42 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace Sample.SimpleIvrBot.Controller +{ + using System.Threading.Tasks; + using Microsoft.AspNetCore.Mvc; + using Microsoft.Graph.Communications.Common.Telemetry; + using Sample.SimpleIvrBot.Bot; + + /// + /// Entry point for handling call-related web hook requests. + /// + public class PlatformCallController : Controller + { + private readonly IGraphLogger graphLogger; + private readonly Bot bot; + + /// + /// Initializes a new instance of the class. + /// + /// The bot. + public PlatformCallController(Bot bot) + { + this.bot = bot; + this.graphLogger = bot.GraphLogger.CreateShim(nameof(PlatformCallController)); + } + + /// + /// Handle call back for bot calls user case. + /// + /// returns when task is done. + [HttpPost] + [Route(ControllerConstants.CallbackPrefix)] + public async Task OnIncomingBotCallUserRequestAsync() + { + await this.bot.ProcessNotificationAsync(this.Request, this.Response).ConfigureAwait(false); + } + } +} diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Data/ConfigurationManager.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Data/ConfigurationManager.cs new file mode 100644 index 00000000..1ade8c68 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Data/ConfigurationManager.cs @@ -0,0 +1,34 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace Sample.SimpleIvrBot.Data +{ + using System.IO; + using Microsoft.Extensions.Configuration; + + /// + /// The incident request data. + /// + public static class ConfigurationManager + { + /// + /// Gets the AppSetting data. + /// + public static IConfiguration AppSetting { get; } + +#pragma warning disable SA1201 // Elements should appear in the correct order + /// + /// Initializes static members of the class. + /// + static ConfigurationManager() +#pragma warning restore SA1201 // Elements should appear in the correct order + { + AppSetting = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .Build(); + } + } +} \ No newline at end of file diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/BotBuilderExtensions.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/BotBuilderExtensions.cs new file mode 100644 index 00000000..453b3ec9 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/BotBuilderExtensions.cs @@ -0,0 +1,39 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace Microsoft.Extensions.DependencyInjection +{ + using System; + using Sample.SimpleIvrBot.Bot; + + /// + /// The bot builder extensions class. + /// + public static class BotBuilderExtensions + { + /// + /// Add bot feature. + /// + /// The service collection. + /// The updated service collection. + public static IServiceCollection AddBot(this IServiceCollection services) + => services.AddBot(_ => { }); + + /// + /// Add bot feature. + /// + /// The service collection. + /// The action for bot options. + /// The updated service collection. + public static IServiceCollection AddBot(this IServiceCollection services, Action botOptionsAction) + { + var options = new BotOptions(); + botOptionsAction(options); + services.AddSingleton(options); + + return services.AddSingleton(); + } + } +} \ No newline at end of file diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/ControllerExtentions.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/ControllerExtentions.cs new file mode 100644 index 00000000..e8e27ec5 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/ControllerExtentions.cs @@ -0,0 +1,73 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace Sample.SimpleIvrBot.Extensions +{ + using System; + using System.Linq; + using System.Net; + using System.Net.Http.Headers; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Mvc; + using Microsoft.Extensions.Primitives; + using Microsoft.Graph; + + /// + /// The controller exceptions. + /// + public static class ControllerExtentions + { + /// + /// Convert exception to action result. + /// + /// The controller. + /// The exception. + /// The action result. + public static IActionResult Exception(this Controller controller, Exception exception) + { + IActionResult result; + + if (exception is ServiceException e) + { + controller.HttpContext.Response.CopyHeaders(e.ResponseHeaders); + + int statusCode = (int)e.StatusCode; + + result = statusCode >= 300 + ? controller.StatusCode(statusCode, e.ToString()) + : controller.StatusCode((int)HttpStatusCode.InternalServerError, e.ToString()); + } + else + { + result = controller.StatusCode((int)HttpStatusCode.InternalServerError, exception.ToString()); + } + + return result; + } + + /// + /// Copy the response headers to controller.HttpContext.Response. + /// + /// The controller. + /// The headers. + private static void CopyHeaders(this HttpResponse response, HttpHeaders headers) + { + if (headers == null) + { + // do nothing as the source headers are null. + return; + } + + foreach (var header in headers) + { + var values = header.Value?.ToArray(); + if (values?.Any() == true) + { + response.Headers.Add(header.Key, new StringValues(values)); + } + } + } + } +} diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/HttpExtensions.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/HttpExtensions.cs new file mode 100644 index 00000000..d4ac9971 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Extensions/HttpExtensions.cs @@ -0,0 +1,72 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace Sample.SimpleIvrBot.Extensions +{ + using System; + using System.Net.Http; + using System.Threading.Tasks; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Http.Extensions; + + /// + /// Extensions for ASP.NET HTTP request and response. + /// + public static class HttpExtensions + { + /// + /// Creates the request message asynchronous. + /// + /// The request. + /// The . + public static HttpRequestMessage CreateRequestMessage(this HttpRequest request) + { + var displayUri = request.GetDisplayUrl(); + var httpRequest = new HttpRequestMessage + { + RequestUri = new Uri(displayUri), + Method = new HttpMethod(request.Method), + }; + + if (request.ContentLength.HasValue && request.ContentLength.Value > 0) + { + httpRequest.Content = new StreamContent(request.Body); + } + + // Copy headers + foreach (var header in request.Headers) + { + httpRequest.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray()); + } + + return httpRequest; + } + + /// + /// Creates the HTTP response. + /// + /// The response. + /// The HTTP response. + /// The populated . + public static async Task CreateHttpResponseAsync(this HttpResponseMessage response, HttpResponse httpResponse) + { + httpResponse.StatusCode = (int)response.StatusCode; + + if (response.Content != null) + { + var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + await httpResponse.WriteAsync(content).ConfigureAwait(false); + } + + // Copy headers + foreach (var header in response.Headers) + { + response.Headers.Add(header.Key, header.Value); + } + + return httpResponse; + } + } +} diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Program.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Program.cs new file mode 100644 index 00000000..fa1fe033 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Program.cs @@ -0,0 +1,42 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace SimpleIvrBot +{ + using Microsoft.AspNetCore; + using Microsoft.AspNetCore.Hosting; + using Microsoft.Extensions.Logging; + + /// + /// The program class. + /// + public class Program + { + /// + /// The main function. + /// + /// Array of arguments. + public static void Main(string[] args) + { + CreateWebHostBuilder(args).Build().Run(); + } + + /// + /// Create web host builder. + /// + /// arguments. + /// Returns WebHostBuilder. + public static IWebHostBuilder CreateWebHostBuilder(string[] args) => + WebHost.CreateDefaultBuilder(args) + .ConfigureLogging((hostingContext, logging) => + { + logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")); + logging.AddDebug(); + logging.AddConsole(); + logging.AddAzureWebAppDiagnostics(); + }) + .UseStartup(); + } +} diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Properties/launchSettings.json b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Properties/launchSettings.json new file mode 100644 index 00000000..47f325a3 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:3156", + "sslPort": 44321 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "SimpleIvrBot": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/README.md b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/README.md new file mode 100644 index 00000000..00b0ffb4 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/README.md @@ -0,0 +1,106 @@ +# Introduction +The sample demonstrates a playing a prompt with a simple IVR menu, subscribing to tones and call transfer to an agent. + +# Sample status +1. user calls an app belonging to an auto dealership. +2. Bot answers the call. +3. Bot plays a prompt saying Press 1 for sales, Press 2 for service, Press 3 for other questions. +4. user selects 2 and gets transferred to an agent dealing with service. + + +# Getting Started +1. Installation process + * Enable an Azure subscription to host web sites and bot services. + * Install Visual Studio 2017 + * Launch CommsSamples.sln in \Samples with Visual Studio 2017 (VS2017) + * Click menu Build/"Build Solution" to build the whole solution + * Create an BotService in an Azure subscription with Azure Portal (https://portal.azure.com), then enable both Teams & Skype channels on the Azure portal, and configure the calling Uri of the bot. + - Go to "Bot Services" resource type page, click "Add", select "Bot Channels Registration", click "Create", then follow the instructions. + - Write down the application ID **\{ApplicationId}** and **\{ApplicationSecret}** for next steps. + - Type "SimpleIvrBot" in "Bot Services" resource type page, Click "Channels", Then select "Microsoft Teams" and "Skype" channels and enable both of them. + - Click "edit" button of "Skype" channel, click "Calling" tab, select "Enable calling" radio button, then select "IVR - 1:1 IVR audio calls", and fill the Webhook (for calling) edit box with value "\{BotBaseUrl}/callback". + * Configure permissions for the Bot. + - Go to Application Registration Portal (https://apps.dev.microsoft.com/). + - Select your registered bot application. + - Click "Add" under Microsoft Graph Permissions --> Application Permissions. + - Select all permissions starting with "Calls.", i.e. "Calls.AccessMedia.All", "Calls.Initiate.All", etc. + - Click "Ok" and then "Save" + * Consent the permissions + - Go to "https://login.microsoftonline.com/common/adminconsent?client_id=&state=&redirect_uri=" + - Sign in with a tenant admin + - Consent for the whole tenant. + +# Getting Started (Azure Version) +1. Installation process + * Create web site in Azure + - Right click BetaSamples/StatelessSamples/SimpleIvrBot/"Connected Services" and select "Add Connected Service" in project SimpleIvrBot in VS2017, then select Publish tab, and click "Create new profile" to lauch a dialog + - Select "App Service" then click "Create New" radio button, then click "Publish" button to create a App Service and publish the code on. + - Write down the web site root uri **\{BotBaseUrl}** for next steps. + + * Update the following elements in appsettings.json file in project SimpleIvrBot. + - Bot/AppId: "**\{ApplicationId}**" + - Bot/AppSecret: "**\{ApplicationSecret}**" + - Bot/BotBaseUrl: "**\{BotBaseUrl}**" + + * Publish the application again. + - Right click SimpleIvrBot/"Connected Services" and select "Add Connected Service" in project SimpleIvrBot in VS2017, click "Publish" button. + +2. Update process + * Update code properly. + * Publish the application again. + +3. Software dependencies + * Nuget packages list are in \\Dependencies\Nuget in Solution Explorer of Visual Studio 2017 + +4. API references + +# Getting Started (Local Run Version) +1. Installation process + * Install Visual Studio 2017 + * Launch CommsSamples.sln in \Samples with Visual Studio 2017 (VS2017) + * Click menu Build/"Build Solution" to build the whole solution + * Setup ngrok. + - Sign up for a free ngrok account. Once signed up, go to the ngrok [dashboard](https://dashboard.ngrok.com/) and get your auth token. + - Create an ngrok configuration file `ngrok.yml` as follows: + ```yaml + authtoken: %replace_with_auth_token_from_dashboard% + tunnels: + signaling: + addr: 9442 + proto: http + media: + addr: 8445 + proto: tcp + ``` + - Start ngrok: `ngrok http https://localhost:44379 -host-header=localhost`. You will see an output like this: + ```ymal + Session Status online + Account YourName (Plan: Free) + Version x.x.xx + Region United States (us) + Web Interface http://127.0.0.1:4040 + Forwarding http://e6c2321a.ngrok.io -> https://localhost:44379 + Forwarding https://e6c2321a.ngrok.io -> https://localhost:44379 + ``` + - From **your** output, in line Forwarding (yours will be different) the first url`https://e6c2321a.ngrok.io` will be your bot base uri. Write down the bot base uri as **\{BotBaseUrl}** for next steps. + * Update the following elements in appsettings.json file in project SimpleIvrBot. + - Bot/AppId: "**\{ApplicationId}**" + - Bot/AppSecret: "**\{ApplicationSecret}**" + - Bot/BotBaseUrl: "**\{BotBaseUrl}**" + +# Build and Test +1. Create a tenant in O365, with Teams enabled. + +2. Create multiple users in O365, with Teams enabled. Get the objectIds of all. + * Update the following elements in appsettings.json file in project SimpleIvrBot. + - Bot/objectIds: { + "First":"**\{objectId-1}**" + "Second":"**\{objectId-2}**" + "Third":"**\{objectId-3}**" + } + +3. Install Teams client. + +4. Login Teams with user as caller for the scenario in order to call the Bot. + +5. Bot should play a prompt with an IVR menu, and let the caller select a menu option using DTMF tones, then transfer the call to the selected menu option. \ No newline at end of file diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/SimpleIvrBot.csproj b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/SimpleIvrBot.csproj new file mode 100644 index 00000000..c6a19c0c --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/SimpleIvrBot.csproj @@ -0,0 +1,32 @@ + + + + netcoreapp2.1 + 5dedc36d-1522-49fc-ae69-0e7e9440d29a + InProcess + AnyCPU + Sample.SimpleIvrBot + Sample.SimpleIvrBot + false + x64 + + + + + + + + + + + + + + + + + + + + + diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Startup.cs b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Startup.cs new file mode 100644 index 00000000..5da3b2c8 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/Startup.cs @@ -0,0 +1,79 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. +// + +namespace SimpleIvrBot +{ + using Microsoft.AspNetCore.Builder; + using Microsoft.AspNetCore.Hosting; + using Microsoft.AspNetCore.Mvc; + using Microsoft.Extensions.Configuration; + using Microsoft.Extensions.DependencyInjection; + using Microsoft.Extensions.Logging; + using Microsoft.Graph.Communications.Common.Telemetry; + using Sample.Common.Logging; + + /// + /// Startup class. + /// + public class Startup + { + private readonly GraphLogger logger; + private readonly SampleObserver observer; + + /// + /// Initializes a new instance of the class. + /// + /// Project configurations. + public Startup(IConfiguration configuration) + { + this.Configuration = configuration; + this.logger = new GraphLogger(typeof(Startup).Assembly.GetName().Name); + this.observer = new SampleObserver(this.logger); + } + + /// + /// Gets the configuration. + /// + public IConfiguration Configuration { get; } + + /// + /// This method gets called by the runtime. Use this method to add services to the container. + /// + /// Services. + public void ConfigureServices(IServiceCollection services) + { + services + .AddSingleton(this.observer) + .AddSingleton(this.logger); + + services + .AddBot(options => this.Configuration.Bind("Bot", options)) + .AddMvc() + .SetCompatibilityVersion(CompatibilityVersion.Latest); + } + + /// + /// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + /// + /// App builder. + /// Hosting environment. + /// /// The logger of ILogger instance. + public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + { + this.logger.BindToILoggerFactory(loggerFactory); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseHttpsRedirection(); + app.UseStaticFiles(); + app.UseCookiePolicy(); + + app.UseMvc(); + } + } +} diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/appsettings.json b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/appsettings.json new file mode 100644 index 00000000..72d017f4 --- /dev/null +++ b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/appsettings.json @@ -0,0 +1,21 @@ +{ + "Logging": { + "IncludeScopes": false, + "LogLevel": { + "Default": "Information", + "System": "Information", + "Microsoft": "Information" + } + }, + "Bot": { + "AppId": "%AppId%", + "AppSecret": "%AppSecret%", + "PlaceCallEndpointUrl": "https://graph.microsoft.com/v1.0", + "BotBaseUrl": "%BotBaseUrl%" + }, + "objectIds": { + "First": "%objectId-1%", + "Second": "%objectId-2%", + "Third": "%objectId-3%" + } +} \ No newline at end of file diff --git a/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/wwwroot/audio/speech.wav b/Samples/V1.0Samples/StatelessSamples/SimpleIvrBot/wwwroot/audio/speech.wav new file mode 100644 index 0000000000000000000000000000000000000000..e9eaa95dd33ce2eac4148d9cb816c6fc2885ae2c GIT binary patch literal 164524 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�dDE$J8XC?y@@#GG@`k;(54OIx{dQCRBimS;vi?cK zul0rY!?rBssC-}>>lo0`;8^b%>{7VeIB&Xtb0u@$uHU%{oCk3d4)=I+2zLzlE{B92 z1uKf^8*=6hcI)9 z*33KN7pxcN3diYIKpxmgBBBI1K4+Q7oXDtwtwhr&k;!hPu%4R9SI`@|Ddb?PrQ4ve zxOUO=F-v%ivhq7AhKr>$JR$TWA(4}_FWs5cTYfF_O!*<}&UH^P-A(ujIS~hWEc8K9 zBb=jJB3s>EL{uoLi(Gr^2O!zez?J)&WW;vVG|Z`mPz2tZOmyR?BOBmQ!3+7&x(Mx= z#e$sJM9a8b^eX;AwzqNcaf=2fP%q41bR)k94%c1e0-7VdCQl(Z#2MPIY57=g%+P~_$D z7F2Wt5HGaMT0~I|7q$v(nfab5#LIN1bGe_X6oKa-vKt-C6ir>tkSA{<&&tjA*Q$@s zZ^$C*vimK)k8e)>gdByBJo~6Gi2GatZAP9=lTb`waL=Qc6WN|RW;b%U(D2-g=SPvr z#6|8l9mhSSHt==i0eBl;qjI<$YOi=%eCa+zi>fhIPtNS2?+nk|SQ^v^$J`CIpJlsViJ01s^@$LWlFS z$php*&l&cZX9anj`rRGPF5#lZ<;)A09e#q{_{VHd_Zem!JVjF}&NGS~=h;Z7Lytxw zuUj=@f;{Y4*BbVs@Q_<5yXb5uo9tUghs>-vf6Pk!W{(W|)2bQ_PA?ZE#hq%nKl^>kCgA2@t#5#wxu zPupzaDy86$P{Xi}n+NaGg`@(=l71uy9I%(b)w(6DAwMHpB3J52VKK25`3iee;qbXT z56{L~$ZaweK8e0G!%d^!67#uurlqGH%^<4q8rg^6LSN%nQ-wTD?gD;R1Gx(EODwmQ z{++W>x#C^UBEM?yr`qj|Cl@eR><=}~ZQT`1x$D9;=AAQ6`N;N-YKyB2(OLeaK3enK z;ZJ=6H$vGzxisM}eu4+t}8 z6Tb*JO}#zOnbG_XVinn6uu?r?Yh3W2T?NFlJa}A|3){#pq6sxD7!j$5$r;=NW-ISa z{0fimF7#dDxmXFTv-im5_6B~X?};PGj{1s7BKq29O=zjWVOzVY%hMPm`uA}1LTuj+ogQ3;EaLKiS3cw zFGA=+vSJFbyMl<*ux^{EyZm_abE27WgbEj?0#maWF!vO&8DroP+!J@k04Xj2mLm== zd;pWM z24J6^2EyS{Ab?&+)~6#tI0U{X@JqLV4|deV*RYe3z=f=aSN9)4f!qNcw@=7Ubq|r| z1d%G5fsu(Ec|gxA0FrSRAn)oBRZs%#yD309boIM4*~jN9?= z1$b8--uMHMIp{Wy`O*rb{1%Dhk!hL z3>a14A`+q&{t^3uPxumX!A0QYC*0KsZ)%Qr#sUiyId6eNRe&ghbYQeLg*{UNw{#SI z@P`0RmIS5sxFZq>;X^>13izr6z}bP|vkf^UU!p`-;N{9ejhBQW340Tcr%1U-6T#WX zpqc|psS)pf2%NV(c&oc0p-14L3kY`gxcU)W77#BVfk)3!0-JadB_x0@%iy_E&QJ-z zya$fV;7T9xY&0mFfbVg@Q}zamRxpkO!JDQ)S0><59tbp03W&T$U_$0VdX+$MBZ0KX z!dw1{Sc!aN4*26LP&y6nNCS_k#!>_V@v|E5F9pJ-KaN;DIRVyB2YCdcj@FBr+S|6_|_9@b)C27C(i@eJn84Ujhf=6*yA^ z$rM1Z)9|!_P;63WVsQ^eZ2s-T#$>|`oAjnIH(tAKNkCHm@R*8xll%yUd zC`1`DP=+Lw=Uro&GEs&&a4i9QDy}30Up5VACHPk!xKWD#mViGEs0FpqK07#xz#qtu z0H2kJ^f5p-YP?m6-52zzL4^g@)E~SLfmD5QY{HQ@KK1yY8Jh+$fJE9A`q?5>cWglsp5v7mxEK@FWgbQy{5yoJ$f-05>wh z0m+IpDn5hI*y}g=WxdhP=G-8QiE{QvDCc z76ds);4=WF@`08G;F<;Z`J+TuSO_iTuEIYxI8s8AH0%LDH?c`I4Ba1m@}R)os6#wH zojBug-385Tz_0E`I;DE)Y1B3sercC4iXf!~&(&h^e2Q+?4 z-;$jPZoC?bGwIhr$li)iA4o%zf)_Y$#gU{P7Ccvyg%M9P;8VIol9{1#m-1pRP%|C)H7jI}+Xuero);q|+>(%tPipWGmo0(#qnP z!+$-vD(Q>#7DWjUR3dt5rbn_^&M6slGJZO?=mg<}W8YX>9C6F}he|(WNOtL@! ztA7-Jb>djWJ6zzGM86YT1J0#ulK%6J=kCTkB(5|x(kSVxlsjCaNV+OLN8*u)=ZN4N zjkinhl<3fabCTVa`XN#qrEHYD5>l1)LaMu39QicXWXZz7ioBO}^F&;Knx+5KTXTeJ6psq=^vI3t{ zpU4iWN&JvBMABrby^-pKR8omHf0RIKbDCmng%-Xo+Kmn_pa1d558RXLlvIBu>mtdEhgQ{qqB2k>l}IW}0?P3Y zxJ>VXp)KLXJ;HVeJ;&>qwY!0pwaXY=-NFdq267TyMnCrkj<4hMUyKuO;LgYB*F3?0 zo;3DyUN^Qyap2IWMh@hmwUu~KjQ2{t1sk+LvhR}KNp?{Blxnin?njCEHeQ$Nzhph6euQKjq@IHGt;4@1X{zzN0-F-&l1!x|soV^X{%3Ec7D&=ONvowA zDoKI^Ph5@KD%Du$|6h}SBT*M5n}ENd_DK3F)q1M&iBfNYY~(DBXG_{ES#PN|k@Q=G zZ?cgVwy}%~TvOv*>LJN+Mcqh~WcQ_#OJ$czBek49&;hAs4TMgILARSXO0@~(+ZMYd z<(ANdj*b0^_Bd;U<7U{J;`e5depA$nNIV0{;2L#Y>Q_n6*W;a%rIV}x4NX9bPe{TJ zEtl+v9oD6yQASdWmWw0l+y=QxI-iZBO0*~Cjr|VETGgONWZ^z1{$GeEq~lHp&T|_r z7?5Oee<_|(jPLqJTWi7F{fMv8Ga8SaH*ha35%XAVzDs(A}#*ncX7J0V;MkF#_?QTG1)w z3B`!){)DLa2f}0FlJH2lCPWLjki+&Bwkkw6Rtru<-8KW>@L+L-I0LB3+c26t3*CN! z8k`RvNbR2v+;4?CHV9M?MJA_-$X_!Xv9zm@BWFLTj|WwiL=AAX1Ibp16(3KoCf8&3 z^#bC;K9Z?q9X8BNP+pWDt&5JOWb9kH|RSFV+dE!cAlZpDT=HvK6z6d)ZSOs69 zl`u@0k1W4Ch1)_R%4!6<`9NTm??c^v1&QcjBYI;t;b)ZLcVuWuCh}1RJ!0E^$#HI9b?ZN3*I(+bf`1nEE)=48m@IUrM^JWZVpuHa9~r1V++A-X9N)Qy8u;ts5nv_BThrsh&4c2 zKaOlBw_$k_A%k*gksNXkfDF2U|D!POnG60e!8_N3Q(K@x2Y_*V0_8Z4tQLRZ_Beg)S1DxkN2gKaAQKMei#E{!!Nw9%?4K(Ev;OXIj&=yO414@v4#7r-h?J?M1M zk%g;Le_OKUlD|HOcZ9;NBv%4aGRh1>dt#9_hQR z(FRt)>eQg`D)lNE^d}^%Wya1nwt=QbnGwQKq-z@k=iyCbN%~H?Yj4NJ^*3KVx z!;D|duz-FTRrui-sh{N!J79uLe6a=MTe73N#!Us=BlTBkv~`jt_Mr4qKcp5EmgA_T zv9*$ViDft|!Y1`Yq&X4EB1o3O4vtAP3{tN}YEvXj-T+zsudSEC^0_hYb~f5gdE;B; z7;m~!Vn?HuDTB=@2ahYjn=I5fY1|UiI97{?_QZn69~$|X0*)nPmw5TVmbjv^Zc5{2 zJ2+><^ZwU2rN9{qe342oal{`sFa(;@9M-Z4xY7oruLxL;4vjMionSqsIfYKR{u%71 zRL7g+*H*aR9Ia;rEN`nu9!f2ZG@7=c?;?i;7_FwCa7WU;dOTMe9jLJzA#q8XlH9bQMCz|JMOzTs zX!RwULSf_E;fmA>1cS;pIB$Y`r1Ca_oSUJn()cp!|2JQ>B2syzQIM2fPU^o0G-{MI z>X7<~5*04cJv!4ho{)@W0THa;otW$7xEfXmar?O9#b+nmep8evcMZ@tSf1t1N!L1 zF13_IW2+_gV2mi4)GA7H2?bvwu(w4Cn}Q1+8~Z@baMTt2X^XR#jZ*9aiA#4h1CN5i z5$V4YFMLoBg27j5MEJjvzSKU-QTOzXGM4%yQeT&bMoXhCsdm)jvjlRifYwz&vbB)1 zR7=WH8;ToiOaZP+a}s6Hf;^O`9HlG3Z&KMZ@tqD{=HiY#lsyZYpNcI3*QC*VDt=8w z-|HhdEM1Gnw={Zxk7p#IHe}Yy|dQ9!=Zh`1h-mU`jRI6@kiR^nMTC`S>f$!zQc6oZl)yy<`AR1sIDezO;{fmLE& zH3D@<>S0Rbi{UsP0)EQTE>_`L9iYMO@tzoHw;6L}G%`uu!<=vm+U6ISIi21po%X=Q zNJ2TbV|M>Mtn&u6A1Bb-%|v^&2kWKhv1+%Qc!HMY5ahK7Z%`p`o}m%N9JyEU?*dr- z5^*WAdei_P=r(Z~v|UEq5rtM`I%Zli^8#d%F<71KiR?TPh`*~urVl@4xA+U08E1?8 zg?z-Cp8+aQAhO>PnDyQ*Wf{Qy^d!u)rh((qyeRNp#600EqBr?cT!gvkrsz-Ppaq>u z3?~<1ZE?1^SRj!R;xCkWH~d6?MV9-wXqUc1&XL1Jd+H~$GfFcJ`28`^{_f;eAW=*O zBIE|-Q{jaz!WrTOqUM_6iLbCiu@718uMob#*1m+CAROr=Pmsw%qWFgy-B2Ao46gq?$u~2@m>>!~p(2A582b3y|sXI$43-X)?h9G`1XK zIeA+AN9Zqn0+Qb?WJO#|`cO*XQ9c(B1My}hBv2v#MOKmL|Bs`q0I%X$qia`lbKP^} z3Blc^xVzKh!L3l--L*h*DORL-aVt=qxC?Q2&-LAXC-3pmzTDjI&d&Vv&+MG@p9Acq zjL0GnliQ)N{)$V6lT|d%Wg#zu9nv_g&WEu-Du7nYSe#qWfTG4cG6LgV4*i`w@R?r> z<&%-{hNy!!=3V%jtJqxbH+b$gg>w#pv&)_EYwE&%hr8r`vNh4L3mAgfyv(h^ZsjWX zADk=F;Ie7t4npUzDfS1|z$$V*^QOhA?iB3og1 z(*`?DKj;u-6SuLCS%#YOD})VWRE3Os9y9(5;`1S9G()`O|3uzOfV)O>{t5Sv3x$VT zCcgu@ZZJH0mUAtDJq^Gfw*Whvx7f8QfD)`AUJwOD8kBtO+(qnDN8rSn0+ulZiuQZp z{q%`j3-2i{>cM;R-f%_|0OM!@1(SU2*BVY`F$a)WkMc9|#?>BUTuD9#PV)giD?wZw zw-bJttDv5+44!^=P7YK_Fidk;}YN3Q~ z(^ur|cHnC?0mifpZ-Wi*$@kETa_r{zBa?~#pNEo=y9~rdJckS}U#)R37HdcW{>weY zETROf#%AQs9>~mIm`S@a7k`DKixFzXnQ*9TKwXCN{y zmDopq!28Enyg_(jS6T=MuT1!KEh1h5{cVj;-ofp%!87Lr{yz;Bq6hHzx{fTh2>08D z{4p2nogVk25sm-x)A<(2Ef28k4u#X{A^spg1s*wH;TSXlyW%W3mCZ(rhhR1O7oVKL zSllB>ax>WxZwXH@o~3xFm_#b6msA|}nc9i>1sCCq782A{>KCdFs->rr2cUTU85-~V zfP@#rU2+0&!+VH69o{OPSXb^N_c{<|$*2qGxV2noX#Q;B%v>zq6{?|2BV{MBHdLpl zvUlOgvzzs0+p$;K?s(7W#7VhU+yW^5xHu`^k({`~PGA#fvD2P|72qjmS`4uj(R7Zy zK>m$+b&m9*QmAIM2fdr_D`+MhD?Bb-AWRYT6zmlY6m}Jz6wN}F>N4S0K_+vB*~O@s zk@QUJ5*dckyv?`bS8`9-r|!otPuFax!s&3FaY!9=?TNNiwrjS>HoI+*eTKcWz0M}G zFSpxJ2j%D7=ZtdpcSS<0<{~>3Z+R{8t}zJ+;b@{O*_<-c@wAP;PhX|;=-EtXfl0Vc zI8gXX&`{=s>zVt)*3TKe`>=mu^E}qw8?o`CY6-wcsFe zy|9^iR1@cRhr5!TCmjRqw{1oo?%b}ITZ61=_4n$p*Ketx zUq7;5U=`bD+TPk^_R;p^_OXtw&cUukS0DFSx7Iz=Jr}M$hoEiTl2nm}ga$6_wx}<_OL*W@bIq zCp%Imyk8pdcOli0$rFSN*N8@m!oelKCg>`7j9$1U$Yz?-6;Q>la&L6iJNrAo+7HZwRrjqfudcH0WZliW$Mv<=U+jAv7Uyi|1m_H=-I?L~ z0Oh4YTrt*%S;*zP$&b_rx(U;lIRhu=jf_Fy5VXb-`T*fWVW6m^sJ-Yas;zqpzX=`) zwg^580)>f!Vu4UN2^vv1@dWJ!yP(6=R4`2NhWWw_5oiUm%v9ljQa{Bz^();Q{WCbV z)Tpe=K`K`1sR;1QmfU8d_@3^)b{5sm;>thEx|i%LjL5%~H!s(nGbgu6UZ;GfU{Arm z!Uteq=9jD}bC-u!_O2?ZQrGmaZ4W*CrM7JQUyiHJM(z>pG;RbK9fO$~!5+~($smst zQ2b|=htwxEy>(mkL55~V-Z5N*nX1|(K?v#sU^Cd#jD#3oHioQq7 z=x^jIIB+_ln$rV&x36Sl(IbyH^4sc_+P~C4E4RqYJ!p@a()FTd4E7WDq-s}LXwlxh zL)rT?CZ~D-SeR;0?VMJSR-dlOYLc@rZ*<|F;&r8m%4;fGRr%CxtL;-4T0g~FY;9^E z>|F0Y#F@yM)bPoAB!e3QwJC zsa9n0)5R)_Jxw0ok|H5Z{lzYI)Kzya8J+(ot4mt5ls8Gel0PKhO0G{?_CuC7G-G&< zu;4*)blH%KW0g5o+108#f9nEkjddlQ#79_<+3z~rv*V#aQ%5$Ve`BHrzTz#?KV{7n zqgDT^om!)z7ygV#C2X0|YL>$%=9zht>6E^u?t*qT>M?)Tlqk2#Tg!TjbC|RAJL)lZ zOB2B*Im))h-eWXd!Cq(U-1}KISH-iU?yB2{6z?8>XDvpfuhydYBKuX^k=e~Xv{}k~ z=lzvYklZf868|XnX6&uFqPRB+!6`*QA~Ju<-&EYEyre3*rfc1)`eXGA>xI_c_3!Hr z)%Uedu}0e>9QU0Q-8ImCJ4J;FB1EGkOFS}UqvVH`oz%Z+Jat(*ht9(=#~5v#VahSp z7!wVb3=<4;!$p0z_PlxnoFH1tZc8tT4+;k{c5*&BjJiYpMXg5dK8F>7CSTE?84cZ& zKIqZfp!EAMq_C+l*vI@(DfBo5aN`;oV-GFgkTECraKxeTk>QWRXGZjm634EL?~wdC zy(}lT@Lu`V+A(mCryOy%^7<{cy4oGJLu)!!EvYzN{f6-LtDaMNzgz*hZDEmL;pl?&LP_b$ij}n+9DBIt zbQh7YbhPJ8P99o3X@LZnB$0&7;j%yp)z2uMd_j-t)cZTl~xp z!yf%LjY!FPUiU~4ag3BnpqtVj)FYfG5>V$EN=Ct-E{vSbS-IEJ!{!5lKY}0n_0Wy> zs22VZ4wd)`*W1q(w@6Qj$qV<143Fv;O+~pPM#PLuOiDSM@hz{uSXU8N9aLX!ZC}5k zI<<0l<)HFyB|*h63Y+Gy$bFIDxHP`9SDlyh8y7&m7M}BXt{AD2>1?`9hBt;GhKa^k z#$E=QA;@^$SYkTobr03~VO}Q70&mWzr%!K7hFNYJr`Kqms<-ky=~K}I!9?aOJ(aeT zW|GAjNEfj9eqc}GOHRVuL9mD1%k956V1V~8nj0QR#QVhiB{9rUo4mMRdi%Imkued^ zBeNn`M(&7AjZ((_ku)GJCA(?y_R3Q=jq7~sXVtx^xmw+-dPLRo^6H`v`4@7(gYKyFU-0#U2qFbI5)q36U`ksd8raNBi%#`_!`HiW{s5g6gInCuJwJF<7dxu)? zSR#DpbT>W6Twbg@FAy|3>L zh^xY|&}1@Y7;YK!jhl={b1SchUImslmeH2EJ^{YPK1cnM{fs`Jy!^~v4UM45mMK3d z`zm=a{16Ip9C8m)$+ja@@@-znEj>)@wIAfIJwJGs%I1sH*a6jL zMbon1Cu`$J$Lx<-9~KsND8e^-QOxML8_AP1{?4UJD$66vjpg^sTUQ*a_@g4Hth(et z5t08Y?_6QK;_Ib;)r+m`oX=SY5h~090KZu)Hk{D&sI8f2NHxTp?wD_xf0&#`KeNGW zlUExb){ph?5U>O4eItD8yh~7#+`((IVTjttbEfp7cy&on&--R=|^EYf3t2+S-ZT=DQ99^MtMbkk937+fAbC- z6!j?fNTMJuBfCSv@Z!|cmgOtTpO&2{dsY6rY);Ai;@Cp(f~f_Cg#${0%ZF8;wvBQx z;g(P>M3vH!3QAL;`=Gz3{i3~Ucx&jY-=z;WYD`YU65}SXEtWRkWxjL$tNm1dNBk!H zclX=mljSwkNa`G_t%?qwB9CxMg{Yh0A+t!Zju}87q~|dc1$E3DXammDtn}~UmtzXo zd{JqjLU>G8BB*rjtNyL{V@6$kN!0L&ClQ&E-y@U}HzL=?HA+=vUdmfnG9N4N?&{EL zN#)t{O{Mpsm5`JBBr7p%dRBFof1XcaqtdeKo%Ss5HoZ_d++(iNp}we%(0$V_)V9@} zQqNU)QfI2psC#RsXpb8nni%sAONyU7aAu$~u*iR&|5$&s-#*KE!&2>a)hW*@9?d=8 zN=ikMLYYt}2w{AMUXq_BLq)$an}lNh^PnC6tVy6ht9h$EtGVa-yD-h|uAW=EGUu0s zM|Z>UQC`ZGmY2v1&*bH0_esCM^z+t{zmr#O3L$x~n;= zZLNEtou`?n`9~#HFv^3fk*WjG)e-CWnNNGK_R|M#4h{`&*=SP8!$$i9_5QKGzgn*A z>#>XTkuu_c#leyXq5|xM^5L@hTG&VwF8W<`TlhN_OSV#Te*L``Y2L`!Nh3URrK^R( zxFW;2U zo*TW>fBV4bl@bWeV=R{UCO+fUs`&) zaz<^ay~Z_*5Q;)Q#>+p*o=9%U;ys0)R~7RVZxl_mq;`(>sA;-ot)D2kdvNzAQ(6`@ z|I|FM<@FX7&382$)u=R}MS#w~t4> z+v|wlPZzH~sDe+2{D^dwXbE-2eX;)M;z8M?vI;WOGdxpk*^9;b+%95*O-YV^$L(~-i+!%_2ND-t7;|NF5&yM6wGlJv@T)m3%Fog>*y zBAGfs?G<>4?@5w9ZhLI^%v5*RFEAvS&UyC;I1)U&G2QfV)4MITZ7;SBZ@r<_?`@d2 z16mQy+cg`~WM;^-kocfJ0d4%te4F|9^Zwh5gi?aP@t~pHxXx?0m(I{vzgeHGf2r%G zTrPVn9V{6lB>7j?0dlZMYB=zsN<2M z@SyLb!I*|mjl^9Rj; zYB9ZOXcKFb7a{S%+XCMP{1LFlZ<#OU^TV&VpSO3o#Sg3DDB~a6%j)x0w`f#{YoqoPew z!BM@U#>O~e|BAnx@Gfz2%9tM=(=TVFWxvexD|}w^YuVh&R@IAZ&)aS~KcO1H8?}o0 zlC$#3s_p83boY!IUQc}5`OOX}4r9+jSnQTa7LTse=51qk_i=E(!4PTkW&Y*W3FdlvMBQ1NDhu@U!}nfu;V} zeKr0;e(n8JeY*LidcQSyK%MwbLw6_z&rlzdZ~Usu!`#u1Iqn~hTlNFabM`T| zJjVlTKifWAl5Jz%a7SYOnEGeVE7d8EA0TxV+ppDqceSf4a5i=L*v_~n+TOaV9cI@q zr#D;cT<4EiulNTSEg~!asWeR$;`vt#p5^4n_be)DPPb5wt*WkR- ziw|Y`z>On@&E~E%$K8jal+Ke?tUvjUJm9XQIoDM(nP6Bm^^&W_x%Et(dyfN-wil`}C#);$uqK{NMkdJ7c98#B>PCw@j*+1r9lYp!UZa~^+? znPV>!1UiFgcrEao2oH8M)!KcF4tEX1$)*;&Eu|}#Qn1UQZSL*vNB3gWab|G^-!10{ z(ObF6&|Eygt%Hx&WoH-05BSPh=4aO#sJm}O%~cei0bIBx{=NoMHin+*4x~e&!CHZ{ z>@M(n6ADf4Se%g$WZTid@EySIA4Im~VySUJGy0JpsKw~aiGgrc^A?~fpOJU-h*j(? zdcXT4IgeP(4q(o?R**b=BxX??xh2qV??^PoxxE=D>8MLV-Ni{Rn=A+7F_n4?SA%{y zC;m*$Llw(3Viw<-?(0@CaZp@t&#Z!$em`zD$q^qLoG9F_s10O$R})c{)0>Q-)}YpL zGIt)e8$x(PoToFm4EA5aG{@O22$JD1JJhJ#`a;XuKna-s+H>+^Nfw;R?=ek zpHw+27&i-iTrMh}ceoDRpf^mK0|UeOor z7Re~vJmG7%gt$osxdQ|poc)CJ90LU_*);wF73use5?Fnu2FD1JW-i-0NSoPwgje0G zh*)a2qh375_K7i&zc`+Y=hX3*z+gIUaS2xsR{_J=p zzH2KJRI&%yI!5A5WEAdiWIX0)Jf(HD7M#UZXVO!h!vvq*U*Ttd3_dm+oqL!v=q`*9 zM_9`RiwT>fSXAjS({H(QC|Qi*Zqaqll}rHlknaMovYX^6Aa+6AJ}Q&dliT2Ku?dcG ztEne^6nC3Sc8w8?biE}HkxN|3!uF1C%y<5zYoBPFUCHbrtS%Q*m&$rcnhQ554i2jcc+Ef>>h|2bQ!axIqyYgvKpq;86=qCZbf{i z+c>qtzOFvhaee{+kR0e9#{{^iQ-^_4A}63aYA`3J8>4b_Dfbiih}r3^qeD0|@s6~y zL#O~QjO@UV2WmSRPKR;sLLhHxu1WzxJNA=W zZUj}%ZXrK$e}bp51-MZY?j`-Vt3BO;zs-JN)Tqccx{nhw`aC?DUO0}?^Y{|B6}<$n17u`ygJc^>X3ABm&fE>vuGgM*v_Bldv|X4TXfIA=uhn}NhtvQBD@ z`z6_fc))%oH*-T!%l9AY12pa{X=0mGhqw!TDo~bQ@Q*1(4sDEjs!&3MEPf3vF(2|h zJB6xbTOot)MR~Upu#i*bU^c8*=I` zvX)&4hq&Lt1lSBu$^^C&E?I$4j%|Y|V>ufU#N9#9{=`ouk8%T%b@zea_JXjWQdG#d z0#3J{yFw;&#aJneftdbGEQS}&WAXxLMb)VeRj0+AlAOS016>@9>wn_P{Iq@0QS>G^o`VdDEv9EyOUx5EbbJPajLlpdjs=L2|16HFB z)=Gr(F^G#;umESGV)Yt79Nxo6fi)Kc|8L3fLFJkUVsr61t5oB*af7C5j7Y|AcKmmRpzPvGZR zfKVI*e>Gaqc5 zhAI~+*7PVK&K>Z{EJSh;7;YZm$C!YZM`O?6g`b;(3CRJ!*5R6FL~agvG4*J9+5dSw zV&V?2)KDwdjJS%uL_OO22rM2?^im$4AqB1e2DG?=Idm4kPX&HV;aP9uH!r}pj>LcQ z0w{9?m{lIAe=Njr;rN4Imw+GRg}p`+TJOSG6oY-kf)^76+2Ez$R&iorxJ& z&cUehU>%LaH!8r@cz~yVf>C;aXQ~08Y9^QvJ&FIoPndwX7NYVo7CGe<#w7&aK`pV< z3&Aceo$o`OK$~wMKI~v6EJ8J_6g`%R9&f0FI)Lo?8uyFAI97o77>7s-M*O!z)Muf0 zZ-c|v9+C7BoT~=r{5Q;`*2HCub||i2fWLwGsVP`D6L7DAh$cCnwLKUuA;=7o{0OwG z7gk;#ZEb~^4?*00#;p6ypTvkoA&=a|{MZ66k_VB?Pa}4~vAGL+uqj&I3k-~*K=0(} z>w5G=6vlK0c6;Z+J`6)V`{6qT@f$w|efb)Z)KD4NQ0;V>zlqT$!2tOW->!f*K^~r9 z5UQm&U}k!NMZ1k(3I0q0B8$U{P>3iXF-o@)3%`MDR|w4A7g?+tvuhU^UPr*^$iNIP z1+V28e;DJRkC;lucjqA2W@4sI$CLKNtmuTF8Y*IM;JM5B%lvj^(S{1=6OtL8ROS7bgh!xrZD@p$98522C;Ru3#q9XeHQJxPC1^ia3cYK&23I z+)%yL6!B$3yPde=CbY*3eBfNHClZW%Uwl3pjJD=@!sTd-1S}L0n9aF}{q|rEM$yP5hKHp6NI>T6yiP`@m_@p_X5l6 z4tOR*5F;N^{p`dWMm&0SI=(@DU8e#wHV4lejL*6ee<4~+(f0z3 zoE01#)S{!$8Zt-_o*@H$&0y?%;ra#0-PiExQ^arr*eq?}b5)9`Wq@-8;$BxU8*YNp z^8-1z0I^PD?&qTKQt-4T$XV-5cc zdM^OE;TfK=VN7_$Mg;oag*N?+-B#Fl(CN+VG-AhH1#f15kq>jM!;ldpq${0y0|!zC8q= z&&9Zv;pbG$@lv!Q3uE68Jvbj@*O1Zv0W<46#!ZfS7l`qdWA=NY>f0N9%iFkqI^Jv> z>Y7^;U$LG!@%siwYCZV0{n3jt_+28do{X#JVnt|)p0QyKX{cV!L(hK2_yk}?n&4Ya zFyap6f&cjK$Y9W={(nwB4~|+xMQsPw;UsI z0V7a_{4y2$YA@t|0q(RF@p1^?CGo9P@PlM{w$@lZ0`YApa_Im(=~0aD53r;f>Uo<$ z7vLuR9()m}qp`1hhuuOx?h%5gJ&jyC5aa!ce-Fl(AMXE>|A2RQEAH4(6O@VQs6;k- zkJXn#Pv0SiVh`hkOfVPG+6NhFG@hg_R%r*aaV2`BC$8_r-1A0V{d?rahU&P+`0bw< zgBZ-zbJ!US!+dy)I647l=v!p+w#Z%6Ftf~9BaB$HvQgLn5hs!ROLp z{Q4lfcSjzWh-a{Xow^-kJ_Bo`FM6&M_OE7)fD`=7u2_SfApSq2_46<%{^j=)-pK68 zTiC7jNB@cbp9{^zpJ2QRF=D@Ce(l2({Di&=#nbjcuXRR$E+;8=8+gz8sN492EB}Ex6^32$Z|K9#d=znvn}%zI;>sft-A%ER55s70hKF4#p+wXz zLjRRuulo-^)q!6p!K`38DftPxPmEmu6Nz;L{7zpYidfEfAzMLdW)WX!uK*1?UZ0I8i`1{&A-7a@*6aL%Hd0Jgy_!A zr4r$k_Y67|^~4BhoowI+P>tbq=z_A#3ThYlwYLzX1oSw1QfHw1(GC?U=}>r?1*Cio z{1N@Y^}Nl+lN9?7`|v&(*=KMnJkNF~SK%Z@NIYh>RHVBTISMX)0%AHh3Ow8-uum@$ ztGO_YdT+Q5O0Yg&;J6p?G50HWL zM;W;fpB%tW;1jsGI%t->#<^7kQ}iO&kJ`;m!QSm(t_5)n{MI#m0a(aSF$OWjCVmJi zrA}bA+=SMD;7r&v7z0ENJrUotf}2}|vC2c%DTE8H zn0$zQ;Uu==Pg|@eKM)f(FqF??-wy>8E-|LYtp$>oP|in z9`OwHsb*qsJi!wNfP1?HD@-`@@>t}m6^Pz?I28_p`{#S?C!&$H0>DgvhPx5y+hSzB zSy+Mcam`1FIz95wRJ7?4*6D-TBjw|rDi-;qfk7{WuWfs*Es+@Ep`-`&q4Zcqg2@R) z9QIJ-peho`&n5d{e~|(1XFue-uV5&jAe`JS{yOH;AyH4hTv_Qpe7Dg%r&;6YL6S-s>R;s=DzCSYcee~T@>|b6Z z_btFX#8RRIS&O=^lUUVKiKk>3b&ec|JFX`WQKzY^1wi& zoCyYT!!BzgQA&KrE@&F6vx>3yG{MtVppMSX-2}V+8#tjSp|w`RrE&q>N^Te@;qaEv zjpc&5Z}5-Y%k{zkJI-;eA9&p@xi2{9JOUo{S?)A92t49?ZX4Lh_we^IvSY*h&PtpZ zgksD#6L$z7vIE#3b;Mxu8R;aq;-3yG3|=N~>MB)6wV;2YKhe*?66sI3r1PonG)JAJ z9)R(9hFpNkv|J(#>*We$o>6=*7s(Aot=w4dHrs;5X*fHZZOZCcFE~Awy9css*q-ca zcv-$-|6wn(@7N#U!w%)vqsneG_lj$R{{IDR-6*`ZDKK_Xs7-W(J-!%!#*t@93jbp$ z1w~VhsL9k=YBV*0f@K{AuUBd%bqp?i(G*8*qMr+FLRxfOlr9p87m3G8w9+TiL(%Xz*T`K2U`_DG`pVz&ssju!VYlDP78}6eJ7gf`$7` zcu90ZY?5S2I!jwgcS$cvCrUR-3#1>VC#74Y9@3|hk&>-&k>2YR0*@D}{V)H9!i zW5s4kzQj-ZO!BLwlk}@}u*Z9kENO_OO8A}WPLq_Jc+LLddTytHppiA}EBlonD1A}f zt>|^3sAyb~w5XtPYLU1&w|I8x*7Bb#v#W;I#MC~mpJWTS-*9$wd$2vZC}ge(_%QrI zw`G2Vlg(J+CsC%ji)4s&3Djvf$<}&$%Q^YqiU`FjWsoWrJ_d7?s}w8bH$BT`f61E5 zGNel-&BZ5$*-Re&l)g?!z>UZcJZUL&OnlE{gnW;pseHCH9bN`_t%yiCa^38Ao#}3cV_t)c0`HobLz?H@Iiqcho*xhZ%ojG+@qZ_zBp6|Gb^ zTDeTpj@Dwo^bhfrb=G|>d6-?8Iwy%t{2HfgC!~+V+}%)bZ+C z^%w0;!zdGFo@t(7PB4$NeDS{Oa|s*nZRU^0iH0@0GEKH>K9Jrdk(CZ2Pw{SdZ)ZEl zTHDsTziSrMj&;C~np%Y#$YgFF+UiK#8c;L zww3Ue=S2B6$tlJ_FJmO4DDfIWZ+C4CR~}wkT}&3X$zGTIG+G%kE_`G7#BlfbjIZ*q z^S=*^(#N++-j~)P%bGi;6LBpXGC=tNg- zU15!P_4cwg1w%8vljU(C(SJtviJ-st`h4Zn^DpeTYvInQgRyNA7Nt6~Mi(qE6;ugX~tggxtOlosHs)RWp;6$aJfLqh^WupB3BPbxb3t3E>};k zV!JvIy9I=uS?cjfrWH?NnhP39JIjBOtrK=4o;laqmpLxl##UV~m;l$qM=5bh{&60W zm%n}ceDuqc@3X>#!Z(DcM$Us9Ww(s(IZq0F;AZ-;eytlPWK@P=t2ENH72G*o>MV^= z_gLTBSYwFOKiA(gd^7GcT{GE@2aOj^d!fa=+cL<~+w#J4+*|6CdEGrgE znf35o|I>BT@wjeV`NM+F*^knbQ$rF*N0)^C`mOHE=P!SJ9r<=7IQ$%ttv@m7_}3*!9Cq2TZL@lTE`+&rRdu(>BXuf(zIf zONjR+=x6WrS?qn)+t;_b?;Y=rmO#rn_&QU@ar&RMf2%$z+RL>bTSXTIpXeo+!7`Ra zEr^(?Aah*X9Fw^3)EvQM@lf$u`UCAR?JK|Sv0T^>jNXs%wvTh|s$W#GxVR?YH>YiS zc2ZsJt4K?@GVIZ}&0imWE&KZATTJ+q=(xCq#63T{Wxvn=Q9Q8nN!>`tVknpP70wkG zfuA@{b6DF`m#-UXXlc4(9_KaFe8Z&k+GfeH^nf$leoL@-ktYLR zPwG245A&y~!&Eb3Ft4KXMZZd}ik>nd^muv${hrKcjgJ57T2yZ;w-t5GGh{9KF+DLO z_Fi;kWUq+Su+iVszKO!?BELj?#vM-VpV}(pm)!2fVded*DQlW*A2Ep8C0-2IUb)Ju z-3AAOeWq%!0&lZVf8XEzn)$Wzo8mtspj*I5IBmPZQd|JXms$Q=za73#pZ?y_s1`V2 z?4xh38LIS@2g!bx*>I&Q|9BLRJVqN^)dl6~XFw-DBfQQ)lxCc=nF<>EheZZz8avw9f^39yxMLD3zZToay0hGwE`OKB-IXv4E(&DSVmKrYWG2x$#7%as^PTOd zdS%VJ@^wX>@^)usq;*NTm~blgX*3fR9`QJ0S47{)r_nL7x$&Em_ovOsipx7v+_b`@ zmb9OBClD1(OUZc8Ka@hvJKgWbQu8xQw0E43*l&-2WWct7IR94xo%cJP0$v2H z3FsW)>Ho}^_4(U-m)C34ZLHYa;ZC|uu9MYB!i2xm!^ziNh0E@c*&kV-+MnAsbvZR> ztuE(c_pi<#j(M(g{NI!ZT}%{!pOQkcWDhROX>>HVMb|c~EG*ex7?Haz^J}Uq>1F(Y z*jrJ3Bf5k?4v!C4NBkA3k1@sfNIISxjyP&s)TcbHx|4O4t2NnAFhRUoRYeYAi9NaBvU*L$q&;D^f z3d?765BNgw*DO;;c(QOpza$(%ePG|Y9=V3NAKJgyc+}3ZzPHV=ZmR85yTbb1G1vLr z{=wSF?&aR)7CU~o&apPK-mZIHU0A-cWN=|--h-ST8RJtvC$>po;=W*2mPE{sSQPms zGCFE|Ojz8Nq!vHCGp^-~C>&nexoQs9v{ zpjFTVI9R_4YTQWO$Pzpu$QI<^s4{qJP|v`Hfe!*B1A6)&_3i9a>iy0_nI{;6b?Izf*^aUhZmFUv@kj;O_2R%Hr)RjbSQ6v+!h^8&M*rgu*nn6Nr_WQ;AU!69Aw{mgf1c<%^9WKHDsn8*ZE>K|#7 zGw0{A#ceCN>YY~3d4uQZ?IN8=Bl$fzeyI(gjg!3W-b&vCzLdWvuqH4z@Ltf8;3kcV z8f7)AZIskV5OOeNX2{h>H-nRcHU(t{9t$|*7v!_ma@VWcbYFi+qf_-zOz~Wd_p(XC z4C)h=iyF$0d=l%!es;HE&#)ieMNS{*2xli}u0!M~v$n2#RkOKfbTw1ayCk%*dwxak z{_HR5r&F6IcSs6Kybwpl?vLpk^CYG;COB3W|2DxVX0i;YEUNfoA(to0{hW0IZWb%jyi#M5 zYm#e|e@Xt9RG+joB`4LK7L@)by=B(M+@<+L3VRpFl;&5AuP&=KTN7;aoGaKb`~^({o0oV^w`5w1y{mj&J~Mo_A^*1Vo$qtr zJHxWYBDb71-!{!LPDZuXBz=Ev7dYmfPzR{*D8I|Ed5-gxdajpsmpa5D;!4z&*3uoQ zPdGK7!D?KG>?f@c>%P>qsX9}hS30eDOkr65>D-Pv?yO;%vFWZf-!z}JQEBsjFhAP= zn3$HEHZ1+ujQ*LAAmpB9w?bXvzJhJ}8}h>Pp6AWa`;b?byD-n4mjkDiiv>*K zm_lQbq4-IOt&}PIQGT;xcGUvZ@%F2utt0I_9AVCA*MDqxoMd&P?$NshQ$?L|x-(sR z)&spNkCAs#xD`@WYxQV#y{c4wR5MO9SF=u|);v?!tJBn<@uqrMxl=hz*<7JeQ1WiF zBeLTj38=a;i1j#saSMJD{73&l?b#MG5=s?gxFf8dHM#$B^>k%Bgw8K^FMD@8W0%@n zp#t=kHN|?vYONn>{k49!Rd4&-YPPPh=0bFDp)J@x-EMRU9f^)~IKWSZ=lf~bVE0=0 zQ#O-r&)w&?bAx~mw?Ym2Wr8LBDR9B4Sn39~nC?x#pl{HZ=+?|bdN^|cf7>$q=~p-z z+J|$)CG-Nij8f4p=%48;)Lk;3+>N^R>C_xD6o|Eid<8{5mF)nEv`MJ@1noXabDieHUW+vZTlDut>}6rah>gSNmaRC{*8S?fRGQ{3ZtXmjku ziS$e8Lihs@;-TK<2@Q^JK%`dk2Y^o~aBdw0cF=BO3Gp6hrzt?W9+PK*SpNkjF+CZ8 z(_aPk16m$|;0UFVab#<%7TN$EP*2AZ>!2bqhP;Lo^~2D{VhOyS;1qci&VeUEn_?eu z&y&P0u#+Ot6GDC#X9mM?GNIs>LhoW3H<9SbcEFRLI})b%yg!;G~827(W_vj9^U;)sFML-aa5CZZA*N4pI zy8|QI$Ug&*OU1h}d)EMO^~65M8`?7GfGE5LMlu$d#!)cHl7X97atrwgpyFQm&IRHd z@CpfE225uwpGJ-W`jiTkP)&B@A8;vfGie4UR3x}!ZtxwTP)uF~CcGYqLt`M64DLG^ z(R2di9EdTNK;`~DUx60%1umusUUGm3?!sRL_WCE@h%z`Kv6w$drr-+DECgoSm0v(s zf-!LjC+<(6y3v#j=b(g6z6D;|6X)a=TsK_p5cKO$0ju)?Tlh783Lqxo&p(I~JbMvEU?iLz>6Dn&we6QKzHKseC5C+8sV-r#8q%w`r*Vp z4Y*|wV4)OL@q6(kxtuc)aCN~5m$1hXt80Nt?uOn$1(+WD5aSD=*t7|~I+gE5o&pae zh<}dJjpy_j-&{Or4v;Y#9JhO5G$sIHol5lQcR@2JgggplE&~`;RDC^WCBA#PJ z?<2$LzDPkzFTXi&_ZNiG1R{UFBn3fN<3fzd_-8E8;dGGZS7;QInMb%Naz3XVV) z;&>DH6A<#&h}8zft`iUyJ@Ej1#&G@*pndR`0-6>8Ogx`>0N%o0=vMS2ZCnXZxL#1Q z`v>Eb2#4bRK&i`t=`;ZY$z!KG6A-Xd!_<4@d8e0;<*nnXa7g4TYk5Tz?!NNN(U; zVyu^-M}7fDJPBy|F`%slz{LZ>9D4$Vq<&;HxIrs1&%fbk8kw_*pM!tC1d=QOIz0lI zjs!oskqbodEvN-b+8HRc8Mu5B)Q(PYWl&}L88hTpejnMO?eYs)t|j1ultHbe6KW?W z!#Us>yiz(KPt|c95j*8v2-JNp0VACNR->8dOf~@{WeMj0T{0P**Y|kR`aGCi!%m^D{WFZyH#q=+6!qtwMM|$bsLt0)n;;^Yjp@LOitu z;ys%D4{WPa?iukFj6VwK`EGCsPGeM|i@e0QrSZD|r@}d;sp<2@HkxSPecS zCqG4Nrr~)>eC9*8LI1o2R@k7_jSk zte}5DHRva>+LFKv*@H2ih`H+n&eUO|74*8EBa<${KgYtmrG(P}yAFYt&J;L~d_qq8 z1a9OGL~|xSvw~f55{gc*F?%N<)7(Th1DE^%oR)Wxlbs9?jov_OmB>>+W6e1Ox1q+E z)jP3DY~`;3GhU4>uL2k71irNiE%3nAo0HEmienI`e7 z{3}B=Ud1eG;DKENdt(mRA@9JcGXgX2j@F;!Kcb!65S@eg8_;hG!hE}qoYEV8)eq~` zYuu?E$m?Ci*%`#Z4(uadfaCEEt5Z+>ek$RtQYZg($sJ6prfMyrQn4vxZZlqJf@8Po#m4Ap_Ap)VB5ykZUregJ`O zDI6huAh0v<8IEZuC}FlRcNs?TlzGey7AzJh1?vP_VT^E!G{f_QVyk++ZmXfA@u@+h z7iupkZ+H|4S#qyiW!ql!XT`M=dEtV*wK+ug=&W^F9kOTU(0TfTgrbPjUKR4{L3LNG zyX`NXTisvSM6Nk9=Q*&!3$U|nj=iW5430v!5%-WYfXDDB`GZ;p=j?ou9G>xSW&g_O zC<9ctRd$seRnvc|%9JOR1&TZJYR}f5Z#@2xMoUt~Wl(Q=Crl7N7j_m#2}TQ(B%z)i z6(3bybtesb4D0mUwEa}yWRpZfs>Z#+Hm~||*@NPF1^V3QS#2^C(jTOCPs>XilQB25 zEGs@Yt>9U4d6}b&%aXRm z-;GU;?G=AKp-qx8^ zN#nV#b=`{pP9K{P9KAXG#PL1%Yp-0MZ>Az&{%&jh5Qg*Z|u}_nMA1u{Az*zgc_10eB8-RXfwa2)+rmVvBUCtg}2oS*|{> zn`)>tCYpb;%(UF_DmL3qzQ)tKAsTO0m^@b&=OOWsNViDVN+goy;_>1m;(p>yqEo`7 zqCDAj^$vX>%kY2&!3%?z1upZst^eks=Rej;iW_IFO6V8u9dS3z9kw@OarEpsL*n_A zrs?&WEpmy%+LF1I3AI*RvFj3d27Aq(yn)^0Ot8h&ZK#=C?NOas{co+tI?%zo3;15t zBc`J;SoF78Ev=PmWT~FviW{oEcssvocw)>l8cc0XQ;c8qH*~<@)uif(LLt8(+u*TP zS}A!Y87BEGK8jZR!g=+!NFX{SD)JnrzhRjcIKSz~7Gs+qYuwZSh`ytw#&NA|Q_ijw zDz-54d893Jcl7YM%!F@AM^Y?5x}caVUk4IUMExn~EZQjEA{j1S=n*R$FPA9atM+U5>G~V~$I?|mw{bOH zX?MlUESc>%4l`rJ4Wk2Xn3Xtp5<79s%p_ZqZGpwoYNdbto&W3+*b91Z z9_-thd+!XATjd)S7ZuAClN4hW5sHWMT-g_Cf#kS2UHGS<4gV$gAji+1%GR@9vm#k) z)ty?Ki2b(OwT#I zOXw@|2W2tsEQ7-u%vNw$@}BS~fiBi|agKzLK9&XL2;_qupkk`^s;?@mDq3}1L6SF0 z=86yj#>?YO;dt2}AmjFE_FPsf)5zS$e9y?F$1x`G2Fh22jcyj*+S;mHvr64@k&rsc zH_bd)Ke#NnuucAf{9y&#^Gow4u&y)LG4+gd z^lr35nvc^(x>5Ti_HK&{2}h&5tGaSekb|zS^-8^|tYy)V{9$?Pa);*(%s!aaDSJxp zt%4b))an(+xea$M)z);Y*PKv)$+)ogH~rkIq{_sqUsXxfgKLkO7Mi(szdJn8K>8gk zp$6z&=6YrrOU?eBGl#p4*HZ9PSR*Sh{=cD(kycChxl+MslUcf7Os zrC>Tw%3-pinLU`(nRFHgewz7!IC@CGNR!bBN`I=76O{Nhvtt=8(D?Z9)skkkp7;%W ze%+7SC;BcGw316jLkimGe$Q!@Tbrva^p%RLO-8Pzm+h1-#fq5EnMN8e)r6|`RpC`@ zDruF0ik4NBnqS8L=52O`w>>eG{2#WJW~aYk^ki;gDp;M^6F3GgUyvybh)zfr%ihRq z6pvIJAZn!3&>UHfN^wOU5myLSUuQP?2DXT+;zMv{t}^CG!Rs*#XH% z(eHw1+~({r3>uw7+em#xoleW4u|SiCMysNDAUCWBIYe$peoosc@G03q|1zPLRGY?r(Ed;3RcpPOVlJp3 zU6*QHRC}#@MrHSkhZU=<+Z)%LXF6v2eiBbfE732M5i}jc#XQE2ML;zj0f{Hx*iNbe4fQsM!|6C||Jpdk7O*_G{<3Ydb+&G8XlDGTUsipy`eNf`0{6_KE?vB&zaV}g_E%y$Nz2VDa1 zF@MW|JJ2fdn}3|g0c$dUeRv(q)L_b~FEWp}J+aSr^4t>dOuvkHL3)UtqCI6CW{qdJ zXJ2ARa{6#Cawc-tu`5|h*56Dy>k;c2>n)6sYW5XQHFqJbXqtnzz+B!~ZhOu`Rv2?1 zV>^8ftpoIZIi(g|1aY_=csA>fL}6zs1U3>=Fn;5YmmX8+X$LFgg{0)z3AyF?Vgm>}MQ1T^Y_i=TcW9XgWHav+Y-Gi>-Ne6AdiG)tc&> zwI+9coh8gM%a!EO;5P$bf-jI8SOw(;y*X3Hv@x>5^Ztc?l75-dm9w6=hyR~28QP*$ zaE>qIE$5mzZMn_(KK@4De$GYada4XPLN<}Bk&|e5ECcX6qp`237`uUe$9R-v$`-1f z+DQ3~P9j@LrHoQ}o9Mz8&01ZIo+@ciT^0BXe+kInU?|%^*5a;sRyec3S=6?2t5IwX zI_jL$9p&~H_F&^IhuX8!x7E8F(z9Q!ON5y4&@y{jc18c{2#9taHiuc8*~hyIJ@q&! z`=T2mmbnr`v41fdmCYE;F6W%*9_N1JwB(NF7YM_p{T1I7T*YX)NV-KlLJ})!gx>Z^ zc#WX-4e$nxWZzTqqsBMu z8@Ey2o;?R*VP5c%9`O%wNi2&i_4%B}cP3!|XMB^@FO2ih>GvyU8r7BmJe@?W!? z>c>|G3%cij%3ogKFCvwb^#aqpy6dJ1^)=>tYlA(}UFZJGami|G=nGFQ75d-x52}l+ zV`@*=McC-h{+=9MMrwr)qNXy+SkKt8oCoZ3_GONYJB&Ms`#WzCzlh&P)JOV37A>Es zh*aS!vHCXXf7K}SWma*b_@XeKdySpLYzc9P%~(q`3hhBo1m@H`$lrPmnUB_iXSqE1 zjkrL#Ap>j++>0yN>$J3}4$*BQKFLROe^JIj{*7~iQT9IOjiy!Q()^D(vYe+ms|zZ@ zxw*ccXQo&-+Me1ntru-48}n`5tnC}N8+X*A`WqEFd0Q7cuEs#3*tS-Qk8 zn$N$=mN4egDyd0W0-6KQ5`Tmei9ZPksPYPlBf)8*U%_+4GJKi;g|8n(vmXciz6*E? zJ6)F*vn);;wMbPhR5F>A&&aJntm8$)2*a-OYXxI-in52~l@*>Ze^mRU{vY!uE6ZMH zPjn1(kQ?KyxS3yHY;fwESMDw2l)WtbQOPlcHLPiT>77mTQtB9d4vY7lH-OiUcaBdM zbmeX4UI)xlSI#Z&YyL1%f}}wvSNG5r>n?_k3vZ{Jt|8PD)t{AAS+?*X|2^kl`cKME zN+R|Q=>;0J>qte!6ub-GlGqM9*%w1*q5!|{|KdI6neDsj|LFVEy9^KGv<>eQvoQK; z#9{Rz$zSY;*iur+H_-O8eu|M>)-7jD#;J_2+0?>y<^RS=>6#XU;ZGf7UzZ zV9r7AI&K;NvA97hQ2bCW(7MBpgkjpL8WThyx$^nauHt@tGmFD`Orueq5IK@zX~G*r5vv{G&rq;>~HP6Z1b!?EP3Wl=A`<&#=$keDz=xj zDEY5+T>0zjg{IF|)Sc+NMfg!2qd7N8@Jeu<--=(z-OSm?y3asCbG$|k@R3AK!0Ro+FY$jylbauI_9A9wqpJQMxz+Ur8ucZCeAr1{9U$GUZT1b z))&;~7~xU6Lz+~@A_+@)iEX84(YI4sXgwlAbl}xG0MQ^4c=p24G|C{#60DH25}g2i zfImWmg0F}G-qW8E_*3vYW@Wr7zD?|h@M!fh?j0n>zrsGle6y}yMM}oiq=Dbu$-~nX zxjRcG#_86V&L5slu02kl%MI9)b?$yvlj%s!lJb_tVTDhM(28We$AnlHIAQ>G6-J%S zzRT+;7R&O*r-dB8m;DFxA$1oehH8PdbDyXO8AHz~?ZMnnHDWuEk%$jD3K4=*@NMCwIpj#tBMoAAFdVyy4kBG67J#a4SE3HT z>GcP?h`L87#7>O=5qlzhq=xecgRP$#@afYhE~5Wa~2*hcvYBFiqtyl8I6QTM|?u7m~**pM5VG?*(s?- zG?Ev^nn&A#Jw=8<{O&%e1!6QeGnSVj49YKQCWQ5mXcqA?%%c-)uP8oA!bC=16kA63 z!Hh;jQbROgD}4>_AhD3S$Z>QRmPeTeJcB>6PFOy99{4y_!6dx9-yPrxtD_c0--$!x z&W1l#uig#rV~^}% z*trdbHQy^HmDux@g$ZR7s@-MKiGgeWTL!a-C zB%m*-=jr>ID&AJ%SLrLYT$iL9A8|e+COn{PuBrh=x9j|q>?2GQHHZvHw~^n07rq2k z_P>ML@Bp+6)k2w1-3^G;i`W4&8~oS@LT!lE{_cU+f-{jLqO`FmV?+`2G#`08ksiJz z>#~Lv)9w;e+TG*}-&Q3>|59a3ONSd~HLmmS_SJg|JfnO;z?hVIMmyupn`_aED@8L3 zhZZ_ZF6xbSErEx?@pD4SloPDGg8!t$WshWpgw5a18cUx^*@$*TS79aCH%bj{B$MFu z6!et7Q5S26g~db`L|h9yt~sjMDYJ+V@H=zsK>=_els6S3C3TP+eko*qSc<*@@1y`c zPT!~Nb0Q{ta$PUN5A6Y#z4clI({iV-JZPd`_`m!Kc{58C|asN zVxH-2?tbpx>(2N5@Rxeuxqmpz%u*x2YIV`Pg6D-;$>Pd(21&!i#t6@>KqC^%IKq7) zS|Z&jlSyrYGrqTefAjW!9E`lDq49$hSVT&MUzdpDQPbR)|A^;_A z2tOT>q5Y-K=P$yNg1=mcZ6dS2^kHU1>Vxl7lRl)3PV13>ywYPhZ27lwV&f`jrRSEn z4pKN;?ES6V>bmK>l*gB>FVU5+tUOgCufJ(4bhi(@CNHHw;fxX-5xZEU4_VEF|qq}=foD@gn9RAO=r_w%c{mvj>-0gwt%hHGTMMuOf6kg z+M+a6+@W}L>4>UQLxsidnCm$Z>`xobY0We6h6*FaS0x5<45(`cxn1~bp}Ct0VqC_$NApz6vznM+;QK--Q2)7?S2NayrP4D#DZ>6+<)y+NWAuxIZE`YDmne z=)Ey{F{0?i=!uaHy5X8)rCRY&x<8bpt!o%udQwwdH3+a5Ud?hF3>Acp2r zWc2Z@tz4$SC;TeDBRwFeDC5-+Gy-jQSf7Zy5!NVp0En3vH!JR8+@&~YO!F9e%)6+U z5f{Uh+8wGK`D@8-;c|Xo?iKbsR!@e5x|*WK9-;4%F%ZkU7EB~{rhTNZp$}j!XZ8o5 zZ%^uCiWxZsEXV>p*E!U>x^8sM$cov;YxCpt7`eq+y|XrEc+&=E^0KP4qVlTpiK2?q z&Sgt0c30+BF4m{jysm9!+-bU47gN8vVWs7?jqEVGJYKKAC$WH3f}F#)(5NgnC!R+W z-Vn8rtdu1vl9hAS*J`CUbA*m#o5UOU~iEh52;_or{TLQ;Df;eZ{jX zkA7?ITfDI@3`m~rgS+y;IpQ9jgVlH!aC z(M|}v7mh}zMV^l88q*NdGq!*1p_pbd6@aE39vJ|2;uLLX%^M|05iOHQhKj8G9=zuq zCVLXIfI)yKl3;XT&R{%dXc)ceJ82b^{gB<^C#>9_!V?1FdFC9@s5jrLduqtgM^(B? z=M~o!9L%fCNz2w|S7gz$Ph?-s9-8wZ_kP}xf}Ta~O3svxu2@%9qyMY6!WdgW#7wjG zvhQ}fVLfo&?+dg9w8nL`kusXTmU)gH&WjUxguNuUWa*$oeooU(cQec%-aT?{lrt(j zdSlFhm~kLcQ9TV*5&E%Y9wPsFa#xvT{m(hMv z{FERTi&3!e$QGm}@*4R2%?K`j8u%qcTzPhlZHM_`UC0b4+{Cp|5q(f14fw~|u zKQ-@OUWfcG`MnA(g`0}YOZJr=toXfZrM|4zV{BEw+HA1W><$Ow=6hv+USJ9+I~J13 zkQd=0?HFSQt1E}b!vqDwr{Xr!bFxK>3}u~4s9|Z%+7jJ{u=}u$hc(z9U8Po|+(p@r~- z=J&Ptc5^>-9BhoVj%$dmt1_h54Ah^fYFSxczNlcB5gA$z6A^;g)5ct%rSn1c@F~?Zlwu$!pjsdQv z?zY}W-w>P(%7g7e??8oYM~`5aDQ#)H=*Jml%ww#VkaJ)@_Y`e!PE4WG8v0RS0I}KL2`x2!lV3KJ+oZ>9RnMWTUnNk4e#qlnBE!A*DkNw zs=utK>)YxN>u2e8HC=1cYcgxI4Z9%?-GGMK=8u+%!Q}5V7X6w{s?P zpYvw$mkSKQt(1t;gp;8))S@<`B|?kfFYvBb@Tz$IdGk0g*d5tLtb@#2#!f~IGljjE zJ(GQr-I^7{ZeVNKr&zmLi4dz|F;rA5T0x2n`G`Y)rI+IR-gwbUH*c%kWZYV7s7a{Z zuRo?w)$6O9*TmHZYiAobnZDP}ZSb0JLY!w$W1RhlBgIAbob=4`{_<_`|MIWHF9!ld zc`ysGLRI9h$P9D__KMPvrlt>N%wXoTnsE+tu5m@cCARYiLVxNk>?FD&`c2qJ&`a=+ z--nmLo6md0iDCPgzcCLmF3|_m$Ixz3KU0TLqbcbWI;((F#aYPZaXg%z+@9P{+*po* zZDCDjkg?^V=eXB1$9>t+)>>azYUp1xu6j-7*Rry*qVf(EE2DQ6Y$1fU6wLYnxDcpoGwT`K7=ZX;?3{f8^u!`E;>v03b)EH^_%=L0e$of;2{ zx!Gu6>X( zgtA)$BLb@f2Z;XyiwO*{8?DJ&REYge5z#j=*28My4JU*5N^nWoPdp#WZ3f=r32`g2 zSy(5SEr{W}Ih9N*BZoeb){k-;c<_56+uj2}<=qZl0kw@^$Q~pXSwud9Zsj_qqao72 zOM*!NpeR`f zle`-=F6M+tK?flQ<%#2@O`vaSCkrXhxia}GYoE6v zLBGCie$j_KL3Z=>t^s9$9$1Da`FHqt0Ahj~Tt>Q!-k^M?Ent3P&*EJbB#Tx^%Vlx$WW`EVwX#}y z4YG1b6q<$sKVd#H!r9cbu6_CA|(f^qt6%5iXQYpn*yFKlpw8I6e-4gf9!+3`m1( z!D}}uc!zY8IY-h_ZkE@}%%Vqvul!lOD()lJBJ4hK(|OVs`)dzm+FD1a4jdmZ7wJgwF1uHHHAW%4$R`Ms!C zS;hBqZgSdi|78D0*$)ikU54Mv$_hmV6Z1yrAX(qiC25tZk1{sp%`XjBi|b}uH#(Bt zEB!=JhMokT_yMYjG83JNoFZQUttM$`crXF*P`imu(4QWVP}GfyXnKZ;y^eQGkSkg$ zeJ1a#OajJJ2km;zSzz{!1D14q#T40l@dtsOo6P>k+(VC}CZZcjQ-bRPSN*3U?@&+g zD^H52v-gu%ruLho%c>p2%sAjY(RI;Qvx^Q(~RTe#M?$3cgF8&;vPS1-hVOK>O zx#qi#Lp|kzzsdEKGmLwHxv;ZtvYs*5FxJy2(b|EY#d|ayc|x8I`ZQj$7?VOQ>lWi2 zt2=i*zn$=!gsT{%T%+2pX``K@;cB8Z*Z;>q766(gTiB2HfIXM_4~<8;hr9_L1|E{1+;0Q~q2zK{Hi1CoDSrxA4AU;ky0WjhdON`|@Fu8G;X-Bql+7iwz)uBLY4>@Zx?t z<~Zg%R@jZU9=0pCLye0a)vg7eO`eb5-JwDBA)JrAIf4xSG%lSxpT9~pMtql-Nb3~p z?@6`}tKVnD^dCx}=ZP||r*!`@H~ISy%CEH4n;DHcBMV2BiS#W@^DW6v6mL)31t^Ue z#zf|A)-4Xfix4d2-{L-G=faApm|>?g58?Q`P z7icSW-*pC^C5#&}E~0CAKs!slO>s^7O8idPo!6PQg|-C!1?=#6|1nRkYp1h|Lu!9z zdtyzrV%B2o2z$Vh;Jokp%@3+I$RlhCbv>;WJ%MqFsel!vh2f=~0=4H9AIp8p{@$|L z^tD=9-n=+9e{*hm_Q6W$o-M*$lDR$BQ8X&4mavbH6dka$zIku?uKC{j&cZ7D6tO1skrYerOu87%3%taSK#s+$Zmlz58)a72`D?j) zQB{0}wY02wS&^h@S<&;Ng~iDwfzq$#$E(KHyf*Z!>tr5io8VaI?&2E+{K=&uggge> zgl1wQDx3C|wu&CkfLwD7oUwwX;M8zRxCHMzAjy2fd*YYUZ}N#sl4`N4Tyc?C;89#2=5{9dQY+IkyGMKbR4x;Hr}uuus*Q# zv9z-=EScuk=EjD;<|F1i=34Us%XxA)*jGeLWW@2>KUjc9NZA zSJ>OwyTaDfzRdpKKEUzW!E$bL{&dE;(p|^hojuPzL%kKix$EM$`LE%90`-CG#3H~o zp8|w+IjC^ykR(6}KSR4<->?>x4U|gAhPQ}YmkUJqOkR8ZVgaI-7uIO6e<~>AH0G*wVmZD{l6|fOyVACM$UOH+6 z9D)lCpfup_oksVg^Uy`;?~q9_54nr{i|mJJvLEtI?1rljC07DRU;^m9v4M+o3KX~N z0EL|r+!yQsIXC|!UO*<>O+S-|iq0WLxWXh_Zh)P5>382IFtEtBHx@jXfkd5#hS4`G}>Q)XpmHZa=ABSxN=#dQ}w}r$Z2ss38{sOS}yMenk5zzOs zz@+j5+v`7I(HsTN*j(WE3=g#pMFBEi65>HVXiv}|tPh$YQ@AVG2y8kUaO{MzUk&T8|W)8gZ#q_fWa^v6mow9&P7Y$!D-+c0^r;EftytaY{VL1{gi?(V-YA$ zH)*=2!mlO4-zmUk$_BP%8t@dd;O}xMLm?bh0xM;Uts$Lzm*SHZOTb+fwFiY!b=A} zqzX!@Bt=4LTY?f_cVGnk2K}KA)M7NW*#uC^9SfEo4;-tpz-O2MjE+gb+ZhhW41i;L zgQ9p_II|gO#l^vuvbK@Cfx zZpHAK2X)Ja?|Jabh1wSW&k{NCzouFj|Ns6bD`msJCY{!F_|{~VJb2~8s|c=D1pAt7 zRtCDc6=3ah_$@2^rV*56t^eEH@NS3FI6-aN2h2hO+J=DDAQeiBzzYMt*Ct(74)D9U zz$KAF3-ZBAO-kQ#VA)7PH#ZDkk?^ht4onQ}i-b)L?2stvF)G+VECqO)VmMv~=Qe31 zbKsNlKfAEumniTXWUxL0-^fjzDky^=JOF;MQInM{P(C}9xE{7zuoon{{NJY;{x-o@ z2cH&rZ_=%`!Z#P3WreewK3z~V57^uXs-q<6c{se|P*-RQ(0WGyS3d^4Q=vRms3UMR zp|3a9mImL2P-8aKn+^YI8Uan5JSJ?AAQir|;JhXkgT?m0G-Qb(6bVN zOWXpsHn687yte?3SbO-^4!*U9_XIevX@3-4Ck8ex*k1?lVrZ!_XaOGlsvJ~qCD0a4 z`tcmtxUd&oDgSF74jd=`UyBQ%%-sLIn%afkWH8|05U@415$S(z)nthf*ft2-x+vI_ z16St5adbF70IHob_&o&bqXsox6yAk!lmh<8g0q{(83oG5fNwJRriKxd0B1H`hYs9Q z18@-QKqEF9`a}%WPyu%1f-PEsO&y@(+#ZhW1oKc2IAS7GR&4%6)3*|(iBsYOC{S)q92{4Zcf&bMKt^(SDz@v)? zWwSJ>QxWjOe4t#3Llmn8c^=e$GjOT)!FX%Z#9RdIvi-obP6~>ES-k^B-e{POhr`U_ z0zJ>oz!a+{)c~hxFWg}Ul21Z*mDynHsh|Sf7L+Pigq{K>?ls)O_rfopgx*^VI-NHl zzr|bN-8PcGG_h~tF0laWmlI-##sZV+Cvccf1Z#sIfN%2yY~TVmSYKc-E`;-U1G}~o z*pM`sh4Wy>S_3NMQ-F)L6c~BKfPs1ebVG5_2JQm3*#|7iZeZ!>FmG;#xjqKwax-iX z!EcocoXBQSi+Eta?FX*ccbM;X1G_FGG!B?ojo>L70{4igFdF^9VcQIItqsN*9cIa; zq)$-W%cRH9HlKkh)&p3Wvw=I^1&-VfrD_KDYzJ5U66y$6I|;vg3R-$4+*2OHy`vIp zus5_0>|%mha5B{Y49N!EJsNOpt6|1&QUg8%{W}_1b0>iB`!8^rS#aOl3hgi*IG8zL z^?2ZRw;+>&=lKfC>VoSeLjU>>Y|G0~-_Ovd(?L`BOYlKZ5b_7x!+bIun6e!5WO9Gl zSmXoHFVf)-dIETBui>7t80OF8z`lJ6R;&)@1dqY_dPFa{Qg?{IeutyxLJQ3Y-PW;?x!@eMtQ}^@PGHBOpr_lEp`c0O{yd;I zBrw)Ako93Q@Zt0@Q!ar$eSq7z0WAFvn4w=m*E$_|tqd4}l~C(w;C2oK=HnYUTMqaA zcHl`U1Mc_$V2GUomE7~NdMgT+1aCk|fH6;+4rk7R`{znv(O(4HZU)}v1yE5R3fD>} z8A!i?X}S`&POx4%0Y}V%cHas;v+3Gv|Ho&BT7l~8M?l2v0e)pQX#lw#?z*0k0_OLB zfDJeXM&WH><9CF9YlaowY0z$N0PAyLr1T(N1!aInQXKg(tXMXKX7G0y;VjUVJ__Rw zgElJwd(xmq6)PrzPNVEo+%PUJ*5nhouJ z8*KLgMkW{d>2Ba?4u>9vKtK5kqvSUjWolprw}UyiBh)1V)*pLG??Jt{H)P0avOom1 zMn^bjKkzrZ!%A%!{Q6{=Ic|a_ufg5@H}Y`M$}R*e2f@y3poXRJEOed3BtL?6Ob1xc zorLv{AJz$F&?k1lyyyq6-!ABj9ie}XZ(`TOymt%wzW_$`K9~iqpiQBGBLEW#+O`jZ zOgL&h%u};qR{0xNbc;gGK|y;Nj3XxWoOQ7NNQ4<_9L(W1xXY7Z)>lC9`W?!=kTebE zc>`#>w}yG^Ae2u@=8)@P{@Vw(_meu26UfcT-N;4c{^(Zp5A+`T6Qu&~dm7po*7So> z2^xV`A$lYk84T(=`Q)AC*04Ul2II;LJqUUWaKpEQKXpE63qK)N5tCr0-jQfUh=}Kb zd4a`&ZGpXkO@UE?m_VDr*g&7a)WBBQ-UnQPZo~*c&VC}?gf7?|Fir2Fg~!6`8iPJQ zjx-Bq%Qv7f!Gp5RBHt&wAXnG`WGp-(X%G*&9G+FagGRSJGuO@c!c= zd3v}Hxw^Z2&RVC@`N_G@dC}>1M!I^s#<S@11df##$8vF@~UjLxk7oRPe8{${~H0*>H5?;&S9 z>mK7KtsP|qax@fAZ1E5DpP_X(_ml!Q`fx4A?7xwPBq6WUzPnR zSyW6do>*)sZd*z&pIkXo-%xwN^tPd^mDCvT;JL=SAA7jIIR8RGxW#~;%W&XUM<^|JZkNf{yv6W-zP z;zqDnF$$@lvGIr@bSRieJi)*FFZyHrdwo$p4n)wncnp3TuOv|HIn%+ND6+`^bCs!}&^i^c8Ywc1^rz&Oc#f!};52s{Tg|MXQK(l?8t4M-4^{`R;N5YT|E9mm z@6#54kM9h;1a-JDf)rXn`^g_GnW-GC`zx$am#FzAJ1AhWTA}TT-@L1AeGOB}Hy5nW z;-%I8T=k>>&&XdN(|Tl4@@Fe_Cd^-LP*93M2C`3N- zBsc`}6`UnIkg=2lG!kn=@f4u0fqjCIt?I-3fd(zTJP^Z}6x3H~0sEN5d3|qx9j) zrHJZ=CSSW^NOkp*knYhr+Y+O|5sM=Y4ICn+noHSwTlhg}oaT#;7CHYA4)bdT$ zPQ&enZ?@)6gNx~I@20y`oj%75CkMv%UUwe2kwym8kS+2dV!>9>5}3EytGFg!4`G3L zoisw;PRUna)0_j{zHho@-9p_A-FV%6Ee%+3F-pHoD(x%oB|O7>!Cubv(?(M!qjMoE zgpp`XtO%swPw)x2%)i$6-Z#sS`&;0xaExG3C4w61Le(hkR}HRgCE3ndNeu>9xU;OW zb#JRoMR&6Mq}8N^elAGSr}oMW!3YDuy`a7}en-8Y?c?SI;OTk|Xw z>oMzO+Z{XG?e!iHJR!-k@w9o&*&HfgD@YPVfEsj!#46b%IU$)22-I-J1K?4QQ=e61 zngHni#^|73G^^ECJ^k>1gG&%Gt(bX> zGn@ZJI9uFG(nB&_@>8-(nj>{c!)3*?WVs6BTJzMU>iOC;x|6ygx)xegeM@;$F+{dQ z{6pY{_;Y{8YHAuLLbZqk?jSm{37+%HK<$4!IRRmlM+757t5_z*p0J^j)sRwesAM@e zjP@>sdlohRQ=e8PDEv3`Sc)mBPqHJWE~9JihXP^AnDVDpqiah{#)b=4v+ayE!u;HH zymnMgcl|hhtC}7)b+w76#QHhbGtO_mx1o5-G6sXwj5nI!MX*G$6tIjU@j>BxL7CuB z;XYAo$wXNT4B3jx(QnN)$a6$Zk?BHQQ;O1^Z0SS0w1C8nhW_0Dyc`YKt@s+2xS ztCAqG@P z-A8jj%O>kbtIdL&eRYQoX*K(*sg;_F85QMKYy+$Amid^&+1j~bqR1|hKg0B4vT(b0vc{~;mPLr;xPzD$ z+8yjZ%+EbAAt;mmLcd`qtOMl`O+|k}ZBBiM93bBnGGZuEkCYW63I9ISxgUKf_ShF| zQ5dUBd70}|7W`^RH)dj4{jwr*1O?AZm*_tlJ2dQSyyxIGVpgB|P~CaMty;N$UPZIg zh+7d`gg}RO2 zj_G3DrERZi1G+bBE3@yq$pp=)$ls_Nz&uGOrsI$bfOVoCX*l`m_`OfGAb=W{@g9%uZ) zk@8c7PVso@Zs`m0F2Q0@tiI1)&tUxIY^Lsj zHeF$s)QZOOZZh4pXP}I0ChsH>NESqmFJN|TKKdMcMzupm=w@g&Q5703=oMC=oF$6k zmvN?XZ?UdZUz6$nXZFJlPs+Ar{7Ac>Da!HY9?hZV%*kD!|Dde3A!xcD zzfM0Czt*Ruq|8d&keyYyy!@BG)Tl9!vro6LFc+Fm)^w{_Ub?R+uE3Skke-@(FaIt? z5&3|u{?B`k+=0@Di3nOt9g6wN|D+lbCj87B#;sx}Fg~)j@_O+`3Oh>oE9nteVz)PM z)uwk_N$WOkx3~SP&Fwaw5;jFM!rv%2Nk59~cxp~8`vc=Nt0iX;s|TwaYa)xyy~Rmp z5$wZ^G+J+dXYp~tE#7E$h?T?U&_9u124;BMxbiGJtFww#h0Al|GyzGB-+6bBl}?>8-A`vbRKA ziWAJu#>H%md>sx-)2j2za`_?YPHBnwx`-o`^Ez<1a$j>DoawCpXp3m4xlh3@)|@+) zBjKd8uhB+P?xL$8*X(7l%u;DsQT?v0tn^;-j6$^VLEea*FWCdK1G%${4i+veC@<)h zhvjw4>z%zZN1D4myGu?&R!o*7$Cux(v`@wOs`j-D>;JG?9N;|j&j3{40CFpeof1JU zV{Bkmv;O3DDKl1$l7RkiL!cuizs%*bYz_=_#Rw0M$WZSkmuC*f8?r}(?E>teH_ zUqwxd`~le565Va}85Kk6SGW{=!A0&FhJkvFszqA+ zQ0G@$gjHotHh!!sEN@ZvM|rQZhlSO7n+mvvJ@S|5e#=s4C1gF%9FSR_wk7pr+Ke<= z>gO~~hA;D5&Z*p~1%ry$m!?*^}6}$&7f@lO*c)mUV$oqmj`8YrB#9kUMY7Ydk!31*PNF*89Bn7=GjX#uVlW>x{x(LD<$(pR((#pd`JEt z`PU2cO8S=fs;aM!si7J_*1c@tTHD#HTz$No{rdx}LbK5)lue91tZYu9kS+<6t(U7* zG1|(o-jO3BxX}kMgMg5rXQ1y3PsNFe`S;rpWNMG?j4i`SLBFLRYks*iC+#eI zFB&fz$G^dg<=zI=`z`uS>SWB1Ehjre?SiLp3%n5wMVTW1T zu(58ov0Z(%QDeAdsMTX8bRyBKT1{!wgtBjAUYmKW7>uWF9m(`qTD5?7nI@*iO z;~EDwu5qk(dY#`rJ3w`4Bc2iH5d2A;CiNnJM&i)FDOadHsOy+Y8iU!MRl^+0WwI05 z|8ZAx!#U6R9k^-S7|=h}@|~PTTo$*USIic0qq&!vYd9l8YqvS8j1j|FN}oZyNIQ$Q zq%NSmN48;e5G5#uH+gXX2IWo%5fSVQ80%dGo3Qz>2Gn?(e;!fiP4@qVS9lKuzIl^z zoqv{hM&NE^Ic5M^41% z5l#vn^fn(L1))#aCIZ2DNHk=-`9w6JG~l_~(G|oWXs_T(G!--}zauk=5$FiW#*M++ z{T!&W^U)mqE%|sTHW)yb;{PB-5Mrw63Vb};g9rt$Vr{+Y6f*IQ$U{&2%g{o+4tYQr zA&*;ve=DutgFx+piek}JU@7mybChItpc^w zwjTCqA>30L5GLx1EVRe@zvy?151|Ff;sB0l;VI2Wk_As7BM3H{7)U@f33q54a@t==tMlxk zED6RD7Rn^AkJj4v66+W=22-%5-mi>qp5c@`p)G;Al;}~ zFo{IuY={>8h8_+K24vzf|1Rn;-yeX7?d(6x*x=emzly`tByE_}!|LH)iZzn{^f4KI z-EHZ^eRT9M(j-5f@zS-Owv8ww?xL>(k;oQeI`*HxJ1Qrw4XmYb{V2s8SV`)OzVlhA z;kXQmCa(;fqX4@U9SDBJ&q&w69rSB(U}zqBB52t*d4FFAcOv(Q6!JcjBM6G05HHb& z{zg_3hY=j&KK-yle-sJ|qQNa>$Y%;Fc3Y8Dd=L7V=n)!=Dg$}Q5Xg1DJ-9y996225 z0a*>1r0U>4WKqBh3VT!harE!rVW2|3*x!vZ7f`?j&^GtTPY41cJX3??$$d%piA@NV z^qv?2qqR@474%VcD2RL~#zJi55#(+k6|9Hy%_5hPi|~5vkHCELaL9g_hDZV#=-{9$ zluQ1lC1A@cQ@SK-Q6kf6nBcWxD_bwZpGc9XmM+C9?#uvHTs>Q|L^T@ z-|l9!$;_QQlH7C7ja1qYAP9&Cii<-Cr#xjPxdGFGT`JvWH!G{vpIAYf$*GbD`I&r_ zWbUEJ@+nGR4@SAzxM_*<$FM z_l3%3b12ES1y1B25`=7!W0j%mapa&6LzLnwNtDi#p3DY$6gNRukXQV=;!SobE^Hwb zt3R;gutpmM1k`2VAg1Ho^*9e`4VSWAl||$^?$-y9`RLoZh!2fY_mkDgvFX4)|3RcC zq9_MQHMJf&fjiwFzy&{t_`)mryEo~J2+vr=)V3f7ny4Tqhi?ZUqSKl2QBn{|`64fd zrsW7IVvI-B>#NclQ8f?J8JS7X;?Dj=>{o^yj){nFq$5r@RjtQbpd&mPF^R5h8$wi1rWO{S8KIFVhcibzQpo_JvaDN!Ta_ zn#6x7mzh6FIh3E{FoG=)u7#c0;;o{R9EC~ ztOQ-k9f8i{C?H@1#M9M2mOy2?=KL@6;I428#N5Um}L zJLZkBM*`wC^AS^t#G?x$QOQs$j>YWt5}Ki*h&1-Yk<;O$G~4+n#9it_ah8R0Z4ol7 zn!p37gt#Nc0`x$Hi@`5$AueADIcsYpp7j|~rdFu!Uc}+&;OuMRRg)1BE z#KUNYUICFT8=et}*OelRW&+Cb2)LL|IN~kD)B>?D%@=J%XZfjBSCo$QO6Fo--o zN4(q%UY3hUTzy2K+_7qLL%(!Iq|+V83dR{|4*L*1JaErD4v(6swM<*(SL#W-Mv_t+4h^}w%bhHxEP-xq$XfgNdf zZxFO_1}|8?6lL;39E{>f%&=A<^B!fdgVLtss4~3n6XNVT^!i-f?`(iQzCs-+8!@_6 z#L**gxn_dbFsREH)H)O;jK-02epo>Rj0MdsUlTZqHyCFOuop#UU5AZ3;FabKPelB) z2~?kH9%*01;*=i4IW}auzv*V!E{}4WJMC5WNGOPZr9zrDX1|pJQ5Y2Q`!w_+P z1fA%$(Ce6mIwOh+++C`2Ts;b`z&I%Ej{|~kFXM`tH~~@ImrNwSJ4>RO1gs|Pgo92_ zU3g=vdJ~*UC#;-{(c~~jy1AHBx5HC6VKiKi*sKdy;*A-CwfJ08fE6oYhOnp90rDHB z3(Kj)6+dzcHhc{18CAZnOb#h0)Lo=K6vzwF_Z#BO!=c(;i=C~;E4!F_ECVD&PxT!} z`(272Z4$zIsedb9pr3sRb5C2+5$a=q5H0X4bujmgCsE39#*b8I0#yrERxC8Y6Ojja zG^ww=Q;}U1Havq&HNNB)G^8E!V%%qrRkt9Iz;v=o%~IB?o5^JG>0H^Z%t3iSYTjLa zC*Na|FpE!+@|mUFExE1SlRZNs6+}F2z~ZJ*>!tDovCTWGA-^49r6H78gr=r3~m$yAWiu2P)&Px|DmOM9aR& zRWP5JltpqBN#xclH>Bn2pX?g83G%VJlIf%}+I*d2Cdij8*Jl19-b{wP5PLj;R>(lL z9r=~qQhrj#k>AM`D5`G-G9wrB(pUIhL)DIBH&V~bXQ5cU6q%$qlfTtc`6e0362+{9 zu#sGSsfF^49Zrrz9V!Ky%UC^Q7JI?;Qiyt&J%^}yebozVsB04$YzjFq^Ju5NY$xWud;)9qZQN0Dx0K4Z;E&0P(tPG`ZXc5% z4OM>Owy?{kBT79I%dS*8#fMpgDD)L657$sPNwK2Jnedt=WFXX$t3jEgJ{bu-9WvM= zHhobU!kCme_A~HH?br*5;nz}QxTWN>6eRB*2J({l03|g|&0|Uka;r<_#6o%?$3ck7u%*lbxlD2ARLKxBcd9$&DNqjSjI~NM`?H!O1u-e?apr8_Ru_=iGVbFR2crW4{Ag;7xqUR^~14?|QOpu*&sd zTQN!OUu)tD#0hG`=K*~125mNzR}<|G-XjwVB( zp!A(A1@d8xav1p<4k|1VWG$Hxxv}z)`%HQx_pk}Rwt+FJG16_|qOW7#xG(0YlUN5C zu5^(4v(up1zd^097};xBxtvr?m@VqDZOBFGXQot1Vn=X`rI|uUu8aPVcwai8CUD=l zWbwZGnsg@}#BJm^UADAF>Z)928)_P;cbyeXp!S%uPkO0T2Rt-EJg(;Q)tPh7PHI=} zU2e26-La70t1DL;+1n_;>dKfJ@&l)WtU-O>%CKX|& zYFCaahsb0oSf&b7l*(Ew`prbyp!C*MCyPW2u7&=@bxA#}aw>7hly~A-qVnt1<3c?9 z3^U7EjQk_W6uB|9-g&MLb6NQv8V$&MuC8Wd|0=9COP}62Q=kOg8W7hG;=f| z&iZ0otzJ9Fc1!7|t%`9qNvN!@)QsnxVhfCzE0s$6A?hr98S6l<@~KQSa$Z>=Pa{@& zf#xGvgr1zAvVwapy;C+YVd`h%qIBZT!UtJl7n1t?d3z{Xr~U$-$tp(~7#;(-dswe@ zVO9#Eq|uslSfj?u^`&$Ar^-jAmb4QZ>surfmn*NpTtVdq#Mw(UpAm>!!Hrq;bhkfsCBRcrYoPi0ze3HbnTokS*{giv;gR-1C zM{Hz_S}w+7)`=$9F?x!mo-|Kx#ysKft5H~KG*NzIZW9^zWA+0XN>@Q2v1Y53Jafn+7b}U|b8#$K8!9%qsR5@=Db!wTP>{ znOtIn)PBlaiDO%GQT9Rh=D*d<2t}B3ULgNe>bToJKwFI<5})E49fx;I(vg&CdQSUtki*aBu*cGvC;9 z#RFFl1Js4=TdXl|<65;Ad4q8)MhQ|LgLBXdxXKl{JEvnbSW6CORi=Sl3%VE6feP({ zQDh)ifP^s2J>?3Jc%Ok3ouXD%!j<#PZt_&UD{sWwts@Xu3$P}%;a*W0u9;pbKckk3 z%nV$uC<=>r?xZC-jC)@MNUzPvsnda(hjn=cGHpy^S|Eqd9?ZILF-v)12Dn6aGS4sy z9_L51zksc9QFUcIv+i6evLK|&-I#U!1LVtzQ}(D$SOwRr?{O_?RidDACNfKup;)mD zAw@(|TF5f4cZ;#=P6S{3C)`>3jx}8l@U-uN8u$zAuj*LkX3B4r0w5R1s-to3TZYwj z7Ov8>lpg9nVCAl3%Pg!S?;uCXFx&@dfNR{k#7t)4ieVg9tWn@*{DFIdqj3-7DLDkZ z&N${Fd4-kzYM}izOdd2{QZZ}%igO3@=lFS8O%yYSS$F;=x0SumTp%CWV7>=80{U!+ zm@^~}Sh69c4%QJG;6s7r29onOuJ)z?14)z>^6&B>AX~c2tUN_JB~6lANWVz`h?$ZP z6a@Q-<3ywU0r`Xr#3{g01t@cV9=4W&3$uV^-7|dg3tC;ER<9KSX?zn63Y`bo$X)#&1Sr=G)TLx4R z%LQvg+dmeAWq`G%eTluuwimpu&CajFbK$&DPkb-+1MYb`t_?I8C7yG;c?)+GNU#Ok z?mD~nSM4KhhHjmHwZ2?eqV>>i(cRRY)SX1`uvOX+UAnf9M#Hn3dQkq_#rNhmvAwvC zyer>_Ys_utz5K-+$UQdK?VLw5kDolEJ=c3kuGP(z4AXUowO6<`%p!S+ zleZ;TWRzVi@h>hbEX{9`cPIC7ZfxGdyw|x*-kSV5`6Ke` zbJ_c{>~cR#o@JkPrER#Qt+-2`rF2!dlPr$W%+yvjB$z{74nBR;jAD$|t27k??* zP#BX}oHa6gU9Ma1u$ zQQwk)@}PUzd??P~Gxui=~y?mj&vcT=F>u?uevtaZvY}MTYV{M@}li$a; zF}b+!G)EX+%z17m&+~3^=9b6{w?LOqE(&Kr@7P^dxzLeyGi_2zUedbnQ@`!_a{f!| z*MZ++zK#1G5*LmgVG> zCF~4MGu>%JLl<`_=6Cg3=XWFEebDic%3xe<3@T^x_g>uYWvhSX^Ck^ z(wOx3>2ovcWOm7%nprPvXI9PZ^6dFJt8yFV>kzT>Dm_`z%eK&=7tL6|)YI5>Hw_O> zFJ13@-1Iu+-4)86hM*xq(}E|4P7j|KF)d<2M9avwQM;miqkfAV6}c`~zsc+M0*#Rour>jF1HgR?WGk$>A+&&!qEJBIo&fuGiIh=Pi>M?n4FnhEoDY)g{%Ql9ra4`8L}x_f39uNso#|Yr1`hIEy*TchEgCjCDEd?(}r?x!^Z3 za6s^Y(8uAMBi~1b#jJ^~62CZMQzfBNze;Z^?Wp{q(wKylxSUv1?2M@I;g3UegE|JR z^4;Kd+ah*vX*5z zGM8p;%3hn3mP2w&bGPRg6eg5BDYcaQ*mTZ6#A(VHV&(2>kAk=U*5$Z+p66O`SKl{K zS~?ZjHMk(8URdq$b>Z*Bmqtv8bd3s*8W`CpA}4%V_}Z|2Aya||2X+fM?c2vI)4jf1 z50?Vtczp})M&8K%#T3X(q$o)gzB<0xHd(9N7CB3WAfXNP9U95e$`>$0FDmVn4)Rga z=`=Z6M+emVN%@engC!S><`)htXqWGvw=HL6_Li(RS(`H3XM9gLWGqkLlr}$&q)6-OMKp zRdsQiS|EVw)FJX*@wC(ASZE8d-mqlYb~z3>6vr2*AdCV&w4L-jv=A8CES*H2RE^;4 z40X)0XV_k2{xDS>DH~lnv*cyb%Yw=I{qy{CPhSuLdwG4oEX)sSW0;#S$yzR>I8ha&T$ z%A+;t_lM)2$L)<96qglSGq!Qe{V3naUg32^s|D)<=lhj;H}gE=Hq#}ut6Kb+Pbun=`%C#WwyzV z$ZekA0r@#LB9D@6D}wUQ9`zop(Q?ozXWgoJe(-MZX9<`Tyb7(;H}Y~+<(Pi4j@X~$ zUdDySm&CP4xsP#vSYFR zvVFR}w~ew$b+4_IP`ByT6^Ycd!q$dmsz+X6p&diHZm1ugV6O z78GX|9WCsKj010T7v;2oubDDKGU}%9Piv5NC-r1+jF1frxi9R zNi92M*=nCH%#+tLi@4L;L_?1GgWGk_Uws1nF9d2sqQU|rK1Ys?J{xl}c0-(Ze4F^G z@tx!E#QDTIVzx%tk6IpaEbOqSZ;!KA zvbk7qT0U3&SrKnJZP{oUW0_)YWg7zZ)SC7-_WAZW$1+EhVtqR$)$y z{F8<4OEl#+i?1U>gnBhO$$!(unQFO4cvSNK;@czOc2HVKcG$a!rBU|iz*sKsRb1Wp zG4ZqGgX53ImBv1gSrZ))H7nvy*rSjqLDvF?`&IF|>uGX7=hD?w0_+JG`M6uV6;ay; za%0IuJS)5t^x_`jh12ew22GxA!bHJc_~eWhx(geevmBf3i*2K=)hxf1uLAmbM3JVj zasD7=b~%?h0@+2jrRq{1CcXJy?fd1#_KDt!!xCe^dnDCL-kuVWmI58db~$JAniU3> zu;qo8%8sStGbMqYpxLfZHW}P}Jd3?&`)LCA1?Pm8hd+uO8eJSSGHyWqAA z?)aP=SsgR;)6b`^P92c4Ao-u90ZDa|h9ehrr{uONzo!11HZ7xDR^6Q5dCv;^7nhd) zRdLR?+PPY~rG949H81shO+#F@9uK|h`L^)y7uYt~BlI1-u0v$^D7WZ;qoZRg$JC7} zi2g0QEXo=AE@DS`^RUk$b%F;3&heiMl+$p}YVKcM)|zG*`s%7{BwUFdL2k(U%4FFt zo`(WfnYaY@n_Dd>C%=}jU+u5%ZzV81T{_XX*XNmIn1<5T_Tcq#Iv}do%n^QQo z-ErQo_}JXGdLzp3SS@TAKfg*H})Gwg?S4elPw>z!9EMLkSmW?S{Ty(J@BTvX_lKp$; z-|1D;UZl)Su9npC`%|dk=6{P#T$>p5UHV=rc}U8=)Qiw}`;=WZFSB5E@z}CymWlRt z!Zo>=af8ZJn9=Bx;daWihR;DiXMj0aA6gLhM?^A4?Jv>4$H*~FW9!GhjOiKkDEeE} z#mHU}*02G{Wsn$n+kcJkV5rNdx$SZ3W=hkq*1qQLTyu5=qbjrHk6>(lhh~Vo&|BCo zOb}#emeb+vB)k`%2+f7J&RfnQ&NB|HJ;(OWnrX?YI8S;Anr=$d@h{*-Xrj(yk>ZL}fwMajl(LSqAPFJjY%8PcEPOTVXYvPQQTB?+RQMJSH>{E4SYxCqaqzSad~nV)VLbC8|x-^vFdK^}|nu zhJ?%x`aR%~-$|eGUeO+`Te|s-ak4&8+kqd*Js=GcL2oJFk`_yOVz4+%*eZMzilAk+ zSGXxeh{wgt$PO3|-L5}{NTHK+lw*y3jcvL$-g2Tmtn5&USMj96^ZACn3Glk6na|S4 zqdtRE9wb*u&Q5xrRG2g~xlu}u)ShV%(^q9~%zgny)00J$N*7lguzhgyh=6S5GPE^~ z16+o>_x5V*>l?5ps650gJU`+=REwC|vBTr6aZ}^>#E*b-`oOqevHfGhqGv_k2>$?0 z=u3fv{WETK8BAD)bdE%C?m*FX>Rs6`e2Wns3Rykh3hiUY3yIpV2SF z51;9NuL5+z86g|Okc%pESJe9G7BSmnPRE>x=@auZIxspmN{u)f9v(J7YP2aH)i41}RIRvSSm11=$hrAdYN%nth#pgngR*n!UcGv!k9P z))D9kL2k!s_RpAWms#IfK2=;TpHLQCswugT6~edtPI-kn53;9ZRm*hGXqkQ^twvgU z>Z8dKT6Nkf7maYxBADXg|2}fe|z=y zedwPN_&j)HsDJpvh$oRJqiRPVjeZh+HTu`+(x@6y^&+(q55xL~-Uu!YEb~wHec*k` zbB}u$SF<_Aa7>r0nZ{3MPcpUDY&k*hDvc5s3Q5in&TQuy=V0dy=XT6PgN0gxo8TfO z2;ssRXQ;EUW4FD+R$#qv8DF6wGn#wJOk`s!%ZtpNnf)QNMaJp0HmPFrrzG#BrQeO; zpCo?6m~i9!>7>`mHB!%|9m>ee`YG3$f3@ggXEAGxW`|vZOyX{PVE#vgV+&=t18tHraHRVeQlA}(h9kJPXdvhZVu(3ZbjD$>lDr|xR76-7n?U0tDP;`ud=>n@|hhn4yKD~qti&*pQ(pZ zucrQ!S|x2)+JN*?86z^cWidHxa%bgFE}UI_uQae?kF~MGDqNRmFCo{85z+k ztV>9TpsrYP-}nCN+19H}DU&`rZ*W@!vqmqzN zC@CaqTT*oLjpRR5uB2Mhwq>-wNYEksln76UJ;u^;9j?a#N7{4mMPW+^}hq0St21E;yZ6k8R zvO*GqLjr61&+z@?)xuM7yXT@Y-!>TZ8Jg-)pFac?OLw`Qv{mToZ0UGmvsr()9I4n> zKCSFo>8+BCVyUP>(Tu{o1#Cf${QG(OyivJjxEsagT+SYv-6T6BD=Vu~wompi*+;Tl z=IqMpkZaC+o5vU2EQl?NES^w<@rFC+6gY0hQy2ehvG2;)H0 zNAoJzxo(Vy-m{yR(Yw(5sZTTCGT-`sbNn{=9rx?+H^Hyecd&1?uZzz+?{{9ZXKT+O zkCpDfyZO0Ic2UeOX36;8*xoS4!08tt`&zN)2y{Bv@*)c1U6}zo=8SHk{b)fmK zYpglR9Aa*6vY0*^!c2V)(Z<#KTKeyLgEmj6*BG?V`FL(8|A`sL0-pi}f?VmXlq1B6 z8TR*%SbJ5AXiF(OUQtwbw`5M)f})I)RfSSf+rmu+SBoy?9w-jZ+fuN!Xj<;0;^O?y zMH7quDLPe>S~Rl!cFB`+rQ$+)d%NAb+y1NbjqpY=%gfXa@=3M_*~lhphjBi7oqnkP zi?Nz9!6nnU)z#>_)n&AMuFDJeP`70FrN|IA%e|TF0ngRuN>DZ*Yu@VmtC@FkHO?}h zH8j;XGM?2YAdl8l{w2SgGjY|)X>t=8svjd(`$?W4cM~mAw6IYe;#?wBMH{&Ymu<_P ztlj7sz%N8z;OBIe8Q#oy#KHAHMf zE<+RI38EW=8BgRSyQsG29f&5*;%_qHn(M5CJI%HMNAV^*LDx_nsf*#-l0f}l<&t(O zyMw&eoKdT5e3_Yidu9tc&To}MwBO`+5j%(~TJ_`;eznWinJbCL6gELN41>*^8)gJE@4($P>s%Weo6pZIFOeG)e;_r!A!fgX{4M2hzsf%9D=tF3$(A5aJDBS)Rbg+)%Yl}8 zE^g8saJJ<-s$=B6h^_Bt4Uz}WJ@MXNt*Y(Z=tWsxznAY;i9a30(C9;E^(+0@ata zk^{Nkh%p^xKLTN}5HXjtK;E=fhB9w}3ylKe;3ZJ2JLNbsk};|a2m`cM02?BYU^_5- zVbT2x!~6w}g`DJmoJUheaXKF;)56LKW>4;X2nuNksmHyUqlCo^7!1 zn%G-yp*d#DG%A)&y87}Ed9}98TGb?2Lp0-<>%taYsAHmLJh%Z?pez$ut#pTImaTF;E-l;H|5Q&EO%m;snZpP_mX;YVL(=mVK>P-E>r%8 zWC3f`g?)lZTPubk+krqSgIk7L5vpM?Znv{U3f)$OvApX>Ob zb8|lBwljB}!A8BUMDwpQTn^KSP8V&kP+QYkuA@xWjk3Ns+!hiM>l`T<^t0^&x`uKq z#jcUC$pou%Qn$u zu(|P{*(LVQ#wqrtd?B)3PvAd0P1++u3>U=2NFy|^(mtjo*{4)jONc{$0jyagpgb=@ zY2}D`N%yz?INyj_FZ9uS+t+H-B~E?ByE;R)>!r=A%yvUB>Y;RplE+l_IuowmhxMG? zH>n-7kpIWNLf=yAA>Y)ta!%v?n5XhC(g*0!k&2xx1~$K|=B@Jp7fqUr^|kAS-}zX{ zkKZIam8IIH*8b*5+ZV1I*TIpiJ0iGop|Z?37FKZ`5M3_TeRL#fCdj~zQS34EL@wvg zIF9NgoDH~{WSuZuUud0Wh!#dNO*JmI!zR}5V5hR-LUrv);UwoNwUKK@@Q;{zQcLzF(Zl0bFmxo{ApY367zG_jAECdxu~zWf-` z-^$V=&A(!~+DE(4ns2xvJ{HFr&sgT@TFEPvVBRXk@Vli&oJIOb)~Gj-pKzy`$Tt@Y z*z4*Hr9M#Etr-v5u36`Js`(_3lLNF~&X1Z*u^zWtUdkNiq8zjJCxyS5_8c$P;2HxD zeFuoyy6EjDU?|=>uV{x!e<*h~j~y+w^Tc8NIZ01C@lR|A&1Wr1nh|Ul`y^ALZ4e&| z=Ezr!oM)LU$R_qs{KTb530#5PNj<~2az4^}iwC$1aynE#iiFulgC*K9K>jK^^!u&F zhH|?*@6W2X>8?MOEz_T48amz?7um*XFNzAdMRVj&nsDa@O};pcJ1b=a9oNBe*~Hs| zxe9KhV}@2Ixo|`p%;_1~8E33(jn;;eO#5YHd)o_*UC9^Y^%l!-#?wMK`JsNK^|F4o zP(b1^Ygf|Fv)WB(>^+#S`mN=c&715~*l>P=jWtiU?$#_KckC_AH!T}AU&#c=N#l0w zEA2P6meA2~)n?PSlZKFUOoUXVcdeLZ9^nj^j~H8*A2aqBpJKkUC_j;=@-@EHd0Jab zJWj5Y@6r>lz4!v-VN;EV)RRPVBORW`kJdT*a-oOXQ#;YBH;=LO)SHx2q3FU4#F3Bi+a!iF%FWq1BwFy)e-_+T7wuR9%94Dd(241zS>R~I zi$Kc#%H{#H|4um3;$z@(S)*Icdv4#dhEV<5GtUX*BRCG6-mgY;*#)f4}+|QR+ z(l+91T8iA46%Ti*?A)ME*ZyhAaA{H2+5FP^MILRqSRors;xb@4R=2$ITHa^5t& zvPEdFFho48iI5tzBNdf&lvlHFlyAyDHeXu9#wwxYo-zggyMmpBtx1@hYUy*FQ`vH6 zqBLE*!(OUC?jZbRW{jAveeC#C^FqAF^2!q6Pzsg({2ALFQ<&{O+e?#Z8E8s!JR>`B zm+rnAtn}AjvR*L;I|=hZ=U<_B*ex0I zo;oLx9Bz^QcjJBAHqCM6v82_luBU$IPx6zrT z-O63vfr?a@VoR821$)Q7#5CG+PA}rV>IKahA)NP@GueYudu{}fsCislVZXMau$^11 zj-wfarBQr0!CjZ>9Lct3KRO%eC)-Es4ms=bZcK&aj`>MxqRCafCQZ~QS)UmW**j_^ zWwey2?dTY(nWo%UyOBTSCH!EaHTR6{cKo5gEPPb=aL2_!b}?`})5M;-m(H#vfWPi2 z)y;MkX37Nn=)(zk&JSN&@Ald}FaCm!sMxjrNq|FKu^V08eXfIr?kfDFfx* z{7x|gqj0=jhwCZz!~FP=3FCV?4(XRU&Fo?JqtIW|37*(Q$p==fCb$JIY_NrEwMP6F{e43UyC>JBzUoTbfmw&VM&bAX@R z>g=dJE#4)+;m$}N5c>D{rq0T`apE?$hW5Peg1(Lzr55sigjc|jS5aedZ?!9!ULzF+ znBN@XFnXfUb*VwxY>;a!ewunf$!-F&)tmcU0r!F^(o41p_;kz261j}M zCeH&l)m1UG5z2P3wY(ILvaX9ptpfWT)8nPfHVB@W_u%id6J>;fLy zMfn-`UL45Q=8oIf=$}YGNsDzwj(h9~a!&GM>oe}a&WDg;@>;N{cc@>L9_%XUialk2 zlNxf0TmU9wu9QmB!12*Cv%ni#1V+~@pboRZlz=KQFr&W!8M74MwNxcAGm>!iw;Q;- z3CwDo{ge{T?vnQs9a9PGi}msrGDxT5FO11vm?tF5>Id)QLR zB4fa^$^~Z80!EvGxe89pZ|YvA2Y51Tp*7fAxeK)7H2EMmS2CgwIwhZ-h?yodlyz&q{p!Hy~Y*c?D#d0SS z$skoENl_*;=fV3pt2QS!m5mG!-2N%Fbr7!XYO8~lD(s)&$sWP={6FAf_<bno11diWoV$s@ep7UPUvLAL!vbg2?cgr921m;VzsdsJ z@F~+lnF`L|D~$IHaD}6kx8%9f68y$#%1Us+enNW%1It(g8kJ|2OJML^Rbs$>bXWD{ zl3H8+m-(!wD~(AdXasg4qm*3mh}Nj7OjGr5pdty_H0faQbVRMXsXM@xdJAUZHmuj; z!09*%-2JcM0bRj&-@v3i0=#Q8a3S--JaT~l<mFm2kfIX@V)keX>}KxmA?Zy zJRcmnTHr~wfJLmhGV2W1T~p?%x*Mz`2G-e3xs;fH8=&+VV12a5`OVMf2O!aqQq1}G4H79}1nFaRZEnETi0>+DhJ|qY3*f`*6 zhoW@1)Oq;zHFXV;yku?G5(Vj>>>DmWx)Y1t0JL=gbwK6R_0*{+a+kGQc{`fT}e^;juAR?VZ7U>jzsVf$`T9 z3ZgBcVQGSgjmDlG@N5NZIn}P%QU}`Ft-zR4!F_6q7Jh?Lcg3$&lq(*uPr$1109&pM zr7)u21!&_Cw8CFtp`U+@Z-H619rj`2C+EP^T@Kr2;I7mX{Qn2`DFr*?4eECl zdkg3dufgJa2#%KzLs^pPIAe8`#2x3PdeAaH2cc#ToUtA_kcqIZ4&!wum~g-dwqKI9Ir<3OS>@MV915zwGH-+!}ry&T@N0n1+C%_P1ih>qzKH~ z*YKfYpj}hJt-XVGxC#B(chU3pv~D9T*RNyUUPvf?~akOD|BSXqD97H z&Z&!1w!liL5q#7e<+H*ILZEc|H(nE=MSlaOIEazu3fkZx%5vz3?QxN?G`<1{;B)oP(2`HNq3}WydYrrb?(F>~LOp(}L52Hdp_H&0%*kSVk zFfjdL7akm1sucejHZF%Ra_IdpaK_KD&};NkFO1IBaIS2ezZ@fcIeY>4YGKJt%zv~U z6pUQdqo}TS8T{cBe1!5wpW#kO1^TN4ze`5@YB6itU^@fKQvtu#p#LJNI9e|BhgI7C zXvrwFZ!c`C0N|L<@`9*DF~kAi~3OA?=+P7Im%7d`oCga zx&^yEMe82@vF$Z_;AxCC_o0q_4EtS&C*wW|_De+jeuqV=Ha&+D8DJ->{vC=s6Fhxj z)i|_S7qoL9v|MMjabGZPhU4>Kv^Z7wY=?IfvHqZAaC=y~0c=|hN72B-0=&)}%%L2N zWH~t77jPABKnM5KDOyN57?G9qnC_I3s;;#^`B)%~|{^5_Yoxm`4H3N86h53)*v?=p_5n6|F%>~CdU^by@?bPR}Nry;E;+Ia;UW<}?W4xnJ+D9tE zkJ{i-7cJKbGekf1*)h;09*urF3eO>E&!LzhYQviK(UP^{bJW&Ut)8m)Q*JgLiD@Q< zWVG9TwBchsF5>-jwCFjEAGeSf<01U)BHlf~wkv4eM=1FxjIngIrI`g}jE1xqusAN& zt*?r5#iLZs;6b(F>76ltG{QLF9#5L*AsS_MkHS1{txMo!GjCX|e} z8_iT8!;UOo_4rPYZ#>ar|7C1oU<(m7QP9U}E(1S!hz@0P!M>ib7WIbzvMf08PQrOK z_?FIaG-m<*#)9n%N={!{jEh#h(k)sXgZdTCX5fw^yWrUL>4(phc^`t_NqcAz%HjfR z1mcy>JAwGtj0ep$;12uH`G7Lv>Fh(#2MHX!QieQkwBSs%{4`TT1-1y7&FJ3FA9bQ7 z{V(GJJ)SG-wU5J23 z&@2vd@QuoN(9u5*o>B>~vG^1Z-=QmjO4yGo4FutH;EyBt!G}D5)QIMwFrwr-ScJzp zsf}d#frMH}s6z!_?Wlpm*6|-;o^(0ua40fXSO2;D& z*2_T8Plbmk!Oy>7TM|BJ;xo-ll8pz=+d*wxhBDewI%-V~j_!i<(%cjQupV7MRYw1+ zg&s&Vt2Ba6MGN%BcIbcYF-~;Cs8 zF$YV~F!XF^Qe5p=7DmZE-a!;{WY)T13gKGXU*QMdnka5+4W*0da!qF0i1YZ+|tpA~4orWtqg@!5iR z^n2=e)TY#`bQ_(UsKu-}7wu7&|BXBJ{B$Iz*&gU0Eidf>bd0A~qYr99H`LSwTe<$P zH&H9n`JT>CK6v>4@Mxq?!y^>^oaPw{#yk2Ngb^bg|Nnap!zY?qCk)@veg6ATd!|43 zpgofISgI95k4|R<+GE^decFb!6nd1A=G38M1ifaFQ6D;o(>_YahkQKpFv{iN@m~*3 zM4wE>llni+LG%qhHVy9*vGqIrEDe2w_E*|pN?~g|jzhhRt_$e+O6Le8&P*RPPZ0H- z|FX)^9zaJIIxEm@NOWxW!h`k?^N&~R|8yMsFUJnG?EhyT`frq>M^`aFG4L8%Cpu2h zah%Q`!VgcOEo4Jo={!cir+z}er(0Assembly: Microsoft.Graph.Communications.Client.dll
Syntax
public struct CacheContext<TEntity>
-
     where TEntity : Entity
Type Parameters
diff --git a/docs/client/Microsoft.Graph.Communications.Client.Cache.ICache.html b/docs/client/Microsoft.Graph.Communications.Client.Cache.ICache.html index 3cd82594..7afd6c59 100644 --- a/docs/client/Microsoft.Graph.Communications.Client.Cache.ICache.html +++ b/docs/client/Microsoft.Graph.Communications.Client.Cache.ICache.html @@ -104,7 +104,6 @@

Declaration

Task<string> GetDataAsync<T>(IEnumerable<IGraphProperty> properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken))
-
     where T : Entity
Parameters
@@ -179,7 +178,6 @@

Declaration

Task<IEnumerable<string>> GetDataCollectionAsync<T>(IEnumerable<IGraphProperty> properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken))
-
     where T : Entity
Parameters
diff --git a/docs/client/Microsoft.Graph.Communications.Client.Cache.ServiceCache.html b/docs/client/Microsoft.Graph.Communications.Client.Cache.ServiceCache.html index c78440b8..227958a2 100644 --- a/docs/client/Microsoft.Graph.Communications.Client.Cache.ServiceCache.html +++ b/docs/client/Microsoft.Graph.Communications.Client.Cache.ServiceCache.html @@ -161,7 +161,6 @@

Declaration

public Task<string> GetDataAsync<T>(IEnumerable<IGraphProperty> properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken))
-
     where T : Entity
Parameters
@@ -236,7 +235,6 @@

Declaration

public Task<IEnumerable<string>> GetDataCollectionAsync<T>(IEnumerable<IGraphProperty> properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken))
-
     where T : Entity
Parameters
diff --git a/docs/client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClient.html b/docs/client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClient.html index bdd18a97..cc580de1 100644 --- a/docs/client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClient.html +++ b/docs/client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClient.html @@ -181,7 +181,6 @@

Declaration

protected override Task<IGraphResponse<T2>> SendHttpRequestAsync<T1, T2>(IGraphRequest<T1> graphRequest, CancellationToken cancellationToken)
-
     where T1 : class where T2 : class
Parameters
diff --git a/docs/client/Microsoft.Graph.Communications.Client.Transport.GraphClientWrapper.html b/docs/client/Microsoft.Graph.Communications.Client.Transport.GraphClientWrapper.html index 1e2fb00f..3448454a 100644 --- a/docs/client/Microsoft.Graph.Communications.Client.Transport.GraphClientWrapper.html +++ b/docs/client/Microsoft.Graph.Communications.Client.Transport.GraphClientWrapper.html @@ -218,7 +218,6 @@

Declaration

public Task<IGraphResponse> SendAsync<T>(IGraphRequest<T> request, CancellationToken cancellationToken = default(CancellationToken))
-
     where T : class
Parameters
@@ -280,7 +279,6 @@

Declaration

public Task<IGraphResponse<T2>> SendAsync<T1, T2>(IGraphRequest<T1> request, CancellationToken cancellationToken = default(CancellationToken))
-
     where T1 : class where T2 : class
Parameters
diff --git a/docs/client/Microsoft.Graph.Communications.Resources.ResourceEventArgs-1.html b/docs/client/Microsoft.Graph.Communications.Resources.ResourceEventArgs-1.html index e771ffa8..ed41bc72 100644 --- a/docs/client/Microsoft.Graph.Communications.Resources.ResourceEventArgs-1.html +++ b/docs/client/Microsoft.Graph.Communications.Resources.ResourceEventArgs-1.html @@ -120,7 +120,6 @@
Assembly: Microsoft.Graph.Communications.Client.dll
Syntax
public class ResourceEventArgs<TEntity>
-
     where TEntity : Entity
Type Parameters
diff --git a/docs/client/Microsoft.Graph.Communications.Resources.ResourceEventHandler-2.html b/docs/client/Microsoft.Graph.Communications.Resources.ResourceEventHandler-2.html index 81e1e977..cff94852 100644 --- a/docs/client/Microsoft.Graph.Communications.Resources.ResourceEventHandler-2.html +++ b/docs/client/Microsoft.Graph.Communications.Resources.ResourceEventHandler-2.html @@ -91,7 +91,6 @@
Assembly: Microsoft.Graph.Communications.Client.dll
Syntax
public delegate void ResourceEventHandler<in TSender, TEntity>(TSender sender, ResourceEventArgs<TEntity> e)
-
     where TEntity : Entity;
Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.CollectionUtils.html b/docs/common/Microsoft.Graph.Communications.Common.CollectionUtils.html index c426487f..9ae363c0 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.CollectionUtils.html +++ b/docs/common/Microsoft.Graph.Communications.Common.CollectionUtils.html @@ -516,7 +516,6 @@

Declaration

public static void TryRemoveAndDispose<TKey, TValue>(this ConcurrentDictionary<TKey, TValue> dictionary, TKey key)
-
     where TValue : IDisposable
Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.EnumUtils.html b/docs/common/Microsoft.Graph.Communications.Common.EnumUtils.html index e1de7654..d868da8b 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.EnumUtils.html +++ b/docs/common/Microsoft.Graph.Communications.Common.EnumUtils.html @@ -174,7 +174,6 @@

Declaration

public static TEnum Parse<TEnum>(string value)
-
     where TEnum : struct, IComparable, IFormattable, IConvertible
Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.StateMachine-1.html b/docs/common/Microsoft.Graph.Communications.Common.StateMachine-1.html index d7f41b4a..350ee208 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.StateMachine-1.html +++ b/docs/common/Microsoft.Graph.Communications.Common.StateMachine-1.html @@ -118,7 +118,6 @@
Assembly: Microsoft.Graph.Communications.Common.dll
Syntax
public sealed class StateMachine<TStateEnum>
-
     where TStateEnum : struct, IComparable, IFormattable, IConvertible
Type Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.Telemetry.LoggingExtensions.html b/docs/common/Microsoft.Graph.Communications.Common.Telemetry.LoggingExtensions.html index edeace42..bd025b91 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.Telemetry.LoggingExtensions.html +++ b/docs/common/Microsoft.Graph.Communications.Common.Telemetry.LoggingExtensions.html @@ -759,7 +759,6 @@

Declaration

public static T GetTypedProperty<T>(this LogEvent logEvent)
-
     where T : class
Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClient.html b/docs/common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClient.html index 511a9078..773bbdcd 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClient.html +++ b/docs/common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClient.html @@ -492,7 +492,6 @@

Declaration

public Task<IGraphResponse> SendAsync<T>(IGraphRequest<T> graphRequest, CancellationToken cancellationToken = default(CancellationToken))
-
     where T : class
Parameters
@@ -554,7 +553,6 @@

Declaration

public Task<IGraphResponse<T2>> SendAsync<T1, T2>(IGraphRequest<T1> graphRequest, CancellationToken cancellationToken = default(CancellationToken))
-
     where T1 : class where T2 : class
Parameters
@@ -623,7 +621,6 @@

Declaration

protected virtual Task<IGraphResponse<T2>> SendHttpRequestAsync<T1, T2>(IGraphRequest<T1> graphRequest, CancellationToken cancellationToken)
-
     where T1 : class where T2 : class
Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.Transport.HttpResponseMessageExtensions.html b/docs/common/Microsoft.Graph.Communications.Common.Transport.HttpResponseMessageExtensions.html index 437979d0..3fbf2e85 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.Transport.HttpResponseMessageExtensions.html +++ b/docs/common/Microsoft.Graph.Communications.Common.Transport.HttpResponseMessageExtensions.html @@ -266,7 +266,6 @@

Declaration

public static Task<IGraphResponse<T>> ToGraphResponseAsync<T>(this HttpResponseMessage httpResponse, JsonSerializerSettings serializerSettings = null)
-
     where T : class
Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.Transport.IGraphClient.html b/docs/common/Microsoft.Graph.Communications.Common.Transport.IGraphClient.html index bb409205..9909923d 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.Transport.IGraphClient.html +++ b/docs/common/Microsoft.Graph.Communications.Common.Transport.IGraphClient.html @@ -155,7 +155,6 @@

Declaration

Task<IGraphResponse> SendAsync<TRequest>(IGraphRequest<TRequest> request, CancellationToken cancellationToken = default(CancellationToken))
-
     where TRequest : class
Parameters
@@ -222,7 +221,6 @@

Declaration

Task<IGraphResponse<TResponse>> SendAsync<TRequest, TResponse>(IGraphRequest<TRequest> request, CancellationToken cancellationToken = default(CancellationToken))
-
     where TRequest : class where TResponse : class
Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.Utilities.html b/docs/common/Microsoft.Graph.Communications.Common.Utilities.html index d0a28a05..5eb49f08 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.Utilities.html +++ b/docs/common/Microsoft.Graph.Communications.Common.Utilities.html @@ -276,7 +276,6 @@

Declaration

public static void SafeDispose<T>(ref T t, IGraphLogger logger = null)
-
     where T : class, IDisposable
Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.Validator.html b/docs/common/Microsoft.Graph.Communications.Common.Validator.html index e5e2a53e..6e9692ae 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.Validator.html +++ b/docs/common/Microsoft.Graph.Communications.Common.Validator.html @@ -366,7 +366,6 @@

Declaration

public static T Equals<T, TE>(this T value, T expected, string message = null)
-
     where TE : Exception
Parameters
@@ -537,7 +536,6 @@

Declaration

public static void InRange<T>(this T value, T minValue, T maxValue, string paramName = null)
-
     where T : IComparable<T>
Parameters
@@ -682,7 +680,6 @@

Declaration

public static void IsFalse<T>(this bool condition, string message = null)
-
     where T : Exception
Parameters
@@ -811,7 +808,6 @@

Declaration

public static void IsTrue<T>(this bool condition, string message = null)
-
     where T : Exception
Parameters
@@ -862,7 +858,6 @@

Declaration

public static T NotEmpty<T>(this T obj, string paramName = null, string message = null)
-
     where T : IEnumerable
Parameters
diff --git a/docs/common/Microsoft.Graph.Communications.Common.WeakKey-1.html b/docs/common/Microsoft.Graph.Communications.Common.WeakKey-1.html index 1e559075..df9d64cf 100644 --- a/docs/common/Microsoft.Graph.Communications.Common.WeakKey-1.html +++ b/docs/common/Microsoft.Graph.Communications.Common.WeakKey-1.html @@ -117,7 +117,6 @@
Assembly: Microsoft.Graph.Communications.Common.dll
Syntax
public class WeakKey<T>
-
     where T : class
Type Parameters
diff --git a/docs/index.json b/docs/index.json index 5c01178a..504c93a2 100644 --- a/docs/index.json +++ b/docs/index.json @@ -1,978 +1,848 @@ { - "client/Microsoft.Graph.Communications.Client.Transport.GraphClientWrapper.html": { - "href": "client/Microsoft.Graph.Communications.Client.Transport.GraphClientWrapper.html", - "title": "Class GraphClientWrapper", - "keywords": "Class GraphClientWrapper The graph client wrapper. Inheritance Object GraphClientWrapper Implements IGraphClient Namespace : Microsoft.Graph.Communications.Client.Transport Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class GraphClientWrapper : ObjectRoot, IGraphClient Constructors GraphClientWrapper(IGraphClient, GraphClientContext) Initializes a new instance of the GraphClientWrapper class. Declaration public GraphClientWrapper(IGraphClient client, GraphClientContext context) Parameters Type Name Description IGraphClient client The client. GraphClientContext context The context. Properties Context Gets the context. Declaration public GraphClientContext Context { get; } Property Value Type Description GraphClientContext DefaultProperties Gets the default properties. Declaration public IEnumerable DefaultProperties { get; } Property Value Type Description IEnumerable < IGraphProperty > GraphLogger Declaration public IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Methods SendAsync(IGraphRequest, CancellationToken) Declaration public Task SendAsync(IGraphRequest request, CancellationToken cancellationToken = default(CancellationToken)) where T : class Parameters Type Name Description IGraphRequest request CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T SendAsync(IGraphRequest, CancellationToken) Declaration public Task> SendAsync(IGraphRequest request, CancellationToken cancellationToken = default(CancellationToken)) where T1 : class where T2 : class Parameters Type Name Description IGraphRequest request CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T1 T2 Implements IGraphClient" - }, - "client/Microsoft.Graph.Communications.Resources.IResource-2.html": { - "href": "client/Microsoft.Graph.Communications.Resources.IResource-2.html", - "title": "Interface IResource", - "keywords": "Interface IResource The stateful resource interface. Inherited Members IResource.Id IResource.ModifiedDateTime IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResource : IResource, IResourceBase, IDisposable where TSelf : IResource where TEntity : Entity Type Parameters Name Description TSelf The self type of the resource. TEntity The containing Entity type. Properties Resource Gets the resource. Declaration TEntity Resource { get; } Property Value Type Description TEntity Events OnUpdated Event fired when this resource has been updated. Declaration event ResourceEventHandler OnUpdated Event Type Type Description ResourceEventHandler See Also IResource" - }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClient.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClient.html", - "title": "Class GraphHttpClient", - "keywords": "Class GraphHttpClient Graph client that handles transport over http. Inheritance Object ObjectRoot GraphHttpClient Implements IGraphHttpClient IGraphClient Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphHttpClient : ObjectRoot, IGraphHttpClient, IGraphClient Constructors GraphHttpClient(IGraphLogger, JsonSerializerSettings, HttpClient, Int32, String, ProductInfoHeaderValue, IEnumerable, String) Initializes a new instance of the GraphHttpClient class. Declaration public GraphHttpClient(IGraphLogger logger, JsonSerializerSettings jsonSerializerSettings = null, HttpClient httpClient = null, int numberOfRetries = 3, string correlationIdHeader = null, ProductInfoHeaderValue userAgent = null, IEnumerable defaultProperties = null, string metricName = \"PartnerHttpRequests\") Parameters Type Name Description IGraphLogger logger The logger. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. HttpClient httpClient The HTTP client. Int32 numberOfRetries The number of retries. String correlationIdHeader The correlation identifier header. ProductInfoHeaderValue userAgent The user agent. IEnumerable < IGraphProperty > defaultProperties The default properties. String metricName The metric name. Properties CustomRedirectUriGenerator Gets or sets the custom redirect URI generator. This is called in case of a redirect (3XX) response from the request. Clients can use this to read the response and give the new redirect url to call in the next request. Declaration public Func CustomRedirectUriGenerator { get; set; } Property Value Type Description Func < HttpResponseMessage , Uri > The custom redirect URI generator. DefaultProperties Gets the default properties. Declaration public IEnumerable DefaultProperties { get; } Property Value Type Description IEnumerable < IGraphProperty > GraphLogger Gets the graph logger. Declaration public IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger SerializerSettings Gets the serializer settings. Declaration public JsonSerializerSettings SerializerSettings { get; } Property Value Type Description Newtonsoft.Json.JsonSerializerSettings Methods Clone(HttpClient) Clones this instance with optional overrides. Declaration public IGraphHttpClient Clone(HttpClient httpClient = null) Parameters Type Name Description HttpClient httpClient The HTTP client to replace the original. Returns Type Description IGraphHttpClient Cloned client with the updated properties. InitializeServicePointSettings() Initializes global service point settings. Declaration public static void InitializeServicePointSettings() LogRequest(TraceLevel, HttpRequestMessage, Object, String, String, Int32) Logs the request message. Declaration protected void LogRequest(TraceLevel level, HttpRequestMessage httpRequest, object content = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description TraceLevel level The level. HttpRequestMessage httpRequest The http request to log. Object content The response time. String memberName Name of the member. String filePath The file path. Int32 lineNumber The line number. LogResponse(TraceLevel, HttpRequestMessage, Int64, HttpResponseMessage, Object, Exception, String, String, Int32) Logs the response message. Declaration protected void LogResponse(TraceLevel level, HttpRequestMessage httpRequest, long responseTime, HttpResponseMessage httpResponse = null, object content = null, Exception exception = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description TraceLevel level The level. HttpRequestMessage httpRequest The http request to log. Int64 responseTime The response time. HttpResponseMessage httpResponse The http response to log. Object content The content to log. Exception exception The exception to log. String memberName Name of the member. String filePath The file path. Int32 lineNumber The line number. SendAsync(IGraphRequest, CancellationToken) Declaration public Task SendAsync(IGraphRequest graphRequest, CancellationToken cancellationToken = default(CancellationToken)) where T : class Parameters Type Name Description IGraphRequest graphRequest CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T SendAsync(IGraphRequest, CancellationToken) Declaration public Task> SendAsync(IGraphRequest graphRequest, CancellationToken cancellationToken = default(CancellationToken)) where T1 : class where T2 : class Parameters Type Name Description IGraphRequest graphRequest CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T1 T2 SendHttpRequestAsync(IGraphRequest, CancellationToken) Sends the request asynchronously. We only retry if the Http request fails with an exception. We do not retry in case of error response returned from the request. Declaration protected virtual Task> SendHttpRequestAsync(IGraphRequest graphRequest, CancellationToken cancellationToken) where T1 : class where T2 : class Parameters Type Name Description IGraphRequest graphRequest The request to be sent out. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IGraphResponse > HttpResponseMessage received for the graphRequest . Type Parameters Name Description T1 Type of the content present in the request. T2 Type of the expected content in response. SendRawHttpRequestAsync(HttpRequestMessage, CancellationToken) Send a Http request as an asynchronous operation. The content sent using this is not parsed or logged. Declaration public Task SendRawHttpRequestAsync(HttpRequestMessage httpRequest, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description HttpRequestMessage httpRequest The http request message to send. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < HttpResponseMessage > The task object representing the asynchronous operation. Implements IGraphHttpClient IGraphClient Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also IGraphHttpClient" - }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClientContainer.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClientContainer.html", - "title": "Class GraphHttpClientContainer", - "keywords": "Class GraphHttpClientContainer This class is used to handle multiple http clients within one service. This class extends the concurrent dictionary and contains a mapping from a key for the client to the http client itself. Inheritance Object ConcurrentDictionary < String , IGraphHttpClient > GraphHttpClientContainer Implements IDictionary < String , IGraphHttpClient > ICollection < KeyValuePair < String , IGraphHttpClient >> IDictionary ICollection IReadOnlyDictionary < String , IGraphHttpClient > IReadOnlyCollection < KeyValuePair < String , IGraphHttpClient >> IEnumerable < KeyValuePair < String , IGraphHttpClient >> IEnumerable Inherited Members ConcurrentDictionary.TryAdd(String, IGraphHttpClient) ConcurrentDictionary.ContainsKey(String) ConcurrentDictionary.TryRemove(String, IGraphHttpClient) ConcurrentDictionary.TryGetValue(String, IGraphHttpClient) ConcurrentDictionary.TryUpdate(String, IGraphHttpClient, IGraphHttpClient) ConcurrentDictionary.Clear() System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.CopyTo(System.Collections.Generic.KeyValuePair[], System.Int32) ConcurrentDictionary.ToArray() ConcurrentDictionary.GetEnumerator() ConcurrentDictionary.GetOrAdd(String, Func) ConcurrentDictionary.GetOrAdd(String, IGraphHttpClient) ConcurrentDictionary.GetOrAdd(String, Func, TArg) ConcurrentDictionary.AddOrUpdate(String, Func, Func, TArg) ConcurrentDictionary.AddOrUpdate(String, Func, Func) ConcurrentDictionary.AddOrUpdate(String, IGraphHttpClient, Func) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.IDictionary.Add(System.String, Microsoft.Graph.Communications.Common.Transport.IGraphHttpClient) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.IDictionary.Remove(System.String) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.Add(System.Collections.Generic.KeyValuePair) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.Contains(System.Collections.Generic.KeyValuePair) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.Remove(System.Collections.Generic.KeyValuePair) ConcurrentDictionary.IEnumerable.GetEnumerator() ConcurrentDictionary.IDictionary.Add(Object, Object) ConcurrentDictionary.IDictionary.Contains(Object) ConcurrentDictionary.IDictionary.GetEnumerator() ConcurrentDictionary.IDictionary.Remove(Object) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.IDictionary.get_Item(System.Object) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.IDictionary.set_Item(System.Object, System.Object) ConcurrentDictionary.ICollection.CopyTo(Array, Int32) ConcurrentDictionary.Item[String] ConcurrentDictionary.Count ConcurrentDictionary.IsEmpty ConcurrentDictionary.Keys System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.IReadOnlyDictionary.Keys ConcurrentDictionary.Values System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.IReadOnlyDictionary.Values System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.IsReadOnly ConcurrentDictionary.IDictionary.IsFixedSize ConcurrentDictionary.IDictionary.IsReadOnly ConcurrentDictionary.IDictionary.Keys ConcurrentDictionary.IDictionary.Values ConcurrentDictionary.IDictionary.Item[Object] ConcurrentDictionary.ICollection.IsSynchronized ConcurrentDictionary.ICollection.SyncRoot Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphHttpClientContainer : ConcurrentDictionary, IDictionary, ICollection>, IDictionary, ICollection, IReadOnlyDictionary, IReadOnlyCollection>, IEnumerable>, IEnumerable Constructors GraphHttpClientContainer(IGraphHttpClient) Initializes a new instance of the GraphHttpClientContainer class. Declaration public GraphHttpClientContainer(IGraphHttpClient defaultGraphHttpClient) Parameters Type Name Description IGraphHttpClient defaultGraphHttpClient The default graph HTTP client. Properties DefaultGraphHttpClient Gets the default graph HTTP client. Declaration public IGraphHttpClient DefaultGraphHttpClient { get; } Property Value Type Description IGraphHttpClient Implements System.Collections.Generic.IDictionary System.Collections.Generic.ICollection System.Collections.IDictionary System.Collections.ICollection System.Collections.Generic.IReadOnlyDictionary System.Collections.Generic.IReadOnlyCollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) CollectionUtils.ForEach(IEnumerable, Action) CollectionUtils.ForEachParallel(IEnumerable, Action, IGraphLogger) CollectionUtils.GetValueOrDefault(IDictionary, TKey) CollectionUtils.GetValueOrDefault(IDictionary, TKey, TValue) CollectionUtils.AddRange(ICollection, IEnumerable) CollectionUtils.ToSortedList(IEnumerable, Func) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.Any(IEnumerable) Validator.FirstObject(IEnumerable, Func) Validator.FirstObject(IEnumerable) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.NotEmpty(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) Validator.VerifyNotContainsKey(IDictionary, TK) Validator.VerifyContainsKey(IDictionary, TK) Validator.VerifyContainsKey(IReadOnlyDictionary, TK) Validator.VerifyContains(IEnumerable, T)" - }, - "common/Microsoft.Graph.Communications.Common.SlimLock.html": { - "href": "common/Microsoft.Graph.Communications.Common.SlimLock.html", - "title": "Class SlimLock", - "keywords": "Class SlimLock A SemaphoreSlim based lock implementation Inheritance Object Disposable SlimLock Implements IDisposable Inherited Members Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class SlimLock : Disposable, IDisposable Constructors SlimLock() Declaration public SlimLock() Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) Lock() Acquire a disposable lock Declaration public IDisposable Lock() Returns Type Description IDisposable Disposable cleanup to release semaphore. LockAsync() Acquire a disposable lock Declaration public Task LockAsync() Returns Type Description Task < IDisposable > Disposable cleanup to release semaphore. Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphRequest.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphRequest.html", - "title": "Interface IGraphRequest", - "keywords": "Interface IGraphRequest The request object used by the graph sdk. Inherited Members IGraphRequest.Uri IGraphRequest.RequestType IGraphExchange.Content IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphRequest : IGraphRequest, IGraphExchange, IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphRequestExtensions.ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable)" - }, - "common/Microsoft.Graph.Communications.Common.Telemetry.LoggingExtensions.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LoggingExtensions.html", - "title": "Class LoggingExtensions", - "keywords": "Class LoggingExtensions Extensions class for logging. Inheritance Object LoggingExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class LoggingExtensions Methods BindToILoggerFactory(GraphLogger, ILoggerFactory, ILogEventFormatter) Bind to ILogger Declaration public static Observer BindToILoggerFactory(this GraphLogger graphLogger, ILoggerFactory loggerFactory, ILogEventFormatter formatter = null) Parameters Type Name Description GraphLogger graphLogger The graph logger ILoggerFactory loggerFactory The ILogger ILogEventFormatter formatter The message formatter Returns Type Description Observer < LogEvent > The observer of graph logger Concat(IReadOnlyDictionary, IEnumerable) Get the merged propertied. Declaration public static IReadOnlyDictionary Concat(this IReadOnlyDictionary properties, IEnumerable additionalProperties) Parameters Type Name Description IReadOnlyDictionary < Type , Object > properties The property collection. IEnumerable < Object > additionalProperties The additional property collection. Returns Type Description IReadOnlyDictionary < Type , Object > The merged property collection. CreateILogger(IGraphLogger, String, Guid, LogEventType, IEnumerable) Creates the ILogger interface from Logging abstractions. Declaration public static ILogger CreateILogger(this IGraphLogger logger, string component = null, Guid correlationId = default(Guid), LogEventType eventType = LogEventType.Trace, IEnumerable properties = null) Parameters Type Name Description IGraphLogger logger The logger. String component The component for which log is created. Guid correlationId The correlation identifier. LogEventType eventType Log event type IEnumerable < Object > properties Extra properties for the log event Returns Type Description ILogger The ILogger interface. CreateShim(IGraphLogger, String, Nullable, IEnumerable, ObfuscationConfiguration) Creates the shim graph logger. The shim IGraphLogger wraps this logger and appends the specified content to each log request. Declaration public static IGraphLogger CreateShim(this IGraphLogger logger, string component = null, Guid? correlationId = default(Guid? ), IEnumerable properties = null, ObfuscationConfiguration obfuscationConfiguration = null) Parameters Type Name Description IGraphLogger logger The logger. String component The component for which log is created. Nullable < Guid > correlationId The correlation identifier. IEnumerable < Object > properties Extra properties for the log event ObfuscationConfiguration obfuscationConfiguration The obfuscation configuration. Returns Type Description IGraphLogger The IGraphLogger shim. EnterMethod(IGraphLogger, Guid, String, String, Int32) Log for entering method. Declaration public static LogEvent EnterMethod(this IGraphLogger logger, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Error(IGraphLogger, Exception, String, String, Guid, String, String, Int32) Log exceptions with error level. Declaration public static LogEvent Error(this IGraphLogger logger, Exception exception, string message = \"\", string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. Exception exception Exception information. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Error(IGraphLogger, String, String, Guid, String, String, Int32) Log messages with error level. Declaration public static LogEvent Error(this IGraphLogger logger, string message, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Flatten(IReadOnlyDictionary, IEnumerable, IEnumerable) Get the flatten key-value pairs for the properties of LogEvent. Declaration public static IEnumerable> Flatten(this IReadOnlyDictionary properties, IEnumerable ignoreTypes = null, IEnumerable ignoreSubProperties = null) Parameters Type Name Description IReadOnlyDictionary < Type , Object > properties The properties IEnumerable < Type > ignoreTypes The types in this list will be ingored IEnumerable < PropertyInfo > ignoreSubProperties The property members of specific types in this list will be ingored Returns Type Description IEnumerable < KeyValuePair < String , Object >> The flattern result. Remarks The primitive types and types implemented IEnumerable (string, list, dictionary, etc) will keep original value. The flatten support one level property lookup only. GetHeaderText(IGraphLogger, IEnumerable>>) Logs the headers text. Declaration public static IEnumerable GetHeaderText(this IGraphLogger logger, IEnumerable>> headers) Parameters Type Name Description IGraphLogger logger The logger. IEnumerable < KeyValuePair < String , IEnumerable < String >>> headers The headers. Returns Type Description IEnumerable < String > Log Text GetTypedProperties(LogEvent, Type) Gets the client common properties from log event. Declaration public static object GetTypedProperties(this LogEvent logEvent, Type type) Parameters Type Name Description LogEvent logEvent The log event. Type type The type of the property. Returns Type Description Object The client common properties. GetTypedProperty(LogEvent) Gets the client common properties from log event. Declaration public static T GetTypedProperty(this LogEvent logEvent) where T : class Parameters Type Name Description LogEvent logEvent The log event. Returns Type Description T The client common properties. Type Parameters Name Description T The property type. Info(IGraphLogger, String, String, Guid, String, String, Int32) Log exceptions with info level. Declaration public static LogEvent Info(this IGraphLogger logger, string message, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. LeaveMethod(IGraphLogger, Guid, String, String, Int32) Log for leaving method. Declaration public static LogEvent LeaveMethod(this IGraphLogger logger, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Log(IGraphLogger, TraceLevel, Exception, String, String, Guid, String, String, Int32) Log exceptions. Declaration public static LogEvent Log(this IGraphLogger logger, TraceLevel level, Exception exception, string message = null, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. TraceLevel level The trace level. Exception exception Exception information. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. LogHttpMessage(IGraphLogger, TraceLevel, TransactionDirection, HttpTraceType, String, String, String, IEnumerable>>, Int32, String, Nullable, Guid, Guid, String, String, Int32) Logs the http message. Declaration public static LogEvent LogHttpMessage(this IGraphLogger logger, TraceLevel level, TransactionDirection direction, HttpTraceType traceType, string url, string method, string obfuscatedContent, IEnumerable>> headers, int responseCode = 200, string component = null, long? responseTime = default(long? ), Guid correlationId = default(Guid), Guid requestId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. TraceLevel level The trace level. TransactionDirection direction The direction for request. HttpTraceType traceType Type of the http trace. String url The URL. String method The method. String obfuscatedContent The obfuscatedContent. IEnumerable < KeyValuePair < String , IEnumerable < String >>> headers The headers. Int32 responseCode The response code. (used only if [traceType == HttpResponse]) String component The component in which log is created. Nullable < Int64 > responseTime The response time. (used only if [traceType == HttpResponse]) Guid correlationId The correlation identifier. Guid requestId The message identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object Metric(IGraphLogger, String, String, Int64, Dictionary, Boolean, String, Guid, String, String, Int32) Log metrics Declaration public static LogEvent Metric(this IGraphLogger logger, string metricNamespace, string metricName, long rawData, Dictionary dimensions, bool addDefaultDimension = true, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String metricNamespace Metric namespace String metricName Metric name Int64 rawData Raw data Dictionary < String , String > dimensions Dimension name-value dictionary Boolean addDefaultDimension Indicates whether adds default dimension String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Obfuscate(IGraphLogger, Object, ObfuscationTag) Obfuscates the specified payload with the tag. Declaration public static string Obfuscate(this IGraphLogger logger, object payload, ObfuscationTag obfuscationTag) Parameters Type Name Description IGraphLogger logger The logger. Object payload The payload. ObfuscationTag obfuscationTag The obfuscation tag. Returns Type Description String Obfuscated data SerializeAndObfuscate(IGraphLogger, Object, Formatting) Serializes the payload and obfuscates it. Declaration public static string SerializeAndObfuscate(this IGraphLogger logger, object payload, Formatting formatting) Parameters Type Name Description IGraphLogger logger The logger. Object payload The payload. Newtonsoft.Json.Formatting formatting The formatting. Returns Type Description String Obfuscated data. ToLogLevel(TraceLevel) Get log level from trace level. Declaration public static LogLevel ToLogLevel(this TraceLevel level) Parameters Type Name Description TraceLevel level The trace level Returns Type Description LogLevel The log level ToTraceLevel(LogLevel) Gets the tracelevel for log level. Declaration public static TraceLevel ToTraceLevel(this LogLevel logLevel) Parameters Type Name Description LogLevel logLevel The log level. Returns Type Description TraceLevel trace level Verbose(IGraphLogger, String, String, Guid, String, String, Int32) Log verbose level. Declaration public static LogEvent Verbose(this IGraphLogger logger, string message, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Warn(IGraphLogger, Exception, String, String, Guid, String, String, Int32) Log exceptions with warning level. Declaration public static LogEvent Warn(this IGraphLogger logger, Exception exception, string message = \"\", string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. Exception exception Exception information. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Warn(IGraphLogger, String, String, Guid, String, String, Int32) Log exceptions with warning level. Declaration public static LogEvent Warn(this IGraphLogger logger, string message, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object." - }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphRequest-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphRequest-1.html", - "title": "Class GraphRequest", - "keywords": "Class GraphRequest The base of the exchange of a IGraphRequest or IGraphResponse . Inheritance Object GraphRequest GraphRequest Implements IGraphRequest IGraphExchange IGraphExchange Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphRequest : IGraphRequest, IGraphExchange, IGraphExchange Type Parameters Name Description T Constructors GraphRequest(Uri, T, RequestType) Initializes a new instance of the GraphRequest class. Create the graph request object Declaration public GraphRequest(Uri location, T content, RequestType requestType) Parameters Type Name Description Uri location The uri location for the request. T content Content to be sent as part of the request. RequestType requestType Type of the request. Properties Content Declaration public T Content { get; set; } Property Value Type Description T Properties Gets the properties of the exchange. Declaration public ICollection Properties { get; } Property Value Type Description ICollection < IGraphProperty > RequestType Declaration public RequestType RequestType { get; } Property Value Type Description RequestType Uri Declaration public Uri Uri { get; } Property Value Type Description Uri Methods ToString() Declaration public override string ToString() Returns Type Description String Overrides Object.ToString() Implements IGraphRequest IGraphExchange IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphRequestExtensions.ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable)" - }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphRequest.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphRequest.html", - "title": "Class GraphRequest", - "keywords": "Class GraphRequest Inheritance Object GraphRequest < NoContentMessage > GraphRequest Implements IGraphRequest IGraphRequest < NoContentMessage > IGraphExchange < NoContentMessage > IGraphExchange Inherited Members GraphRequest.ToString() GraphRequest.Content GraphRequest.Properties GraphRequest.Uri GraphRequest.RequestType Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphRequest : GraphRequest, IGraphRequest, IGraphRequest, IGraphExchange, IGraphExchange Constructors GraphRequest(IGraphRequest) Initializes a new instance of the GraphRequest class. Declaration public GraphRequest(IGraphRequest graphRequest) Parameters Type Name Description IGraphRequest < NoContentMessage > graphRequest The graph request. GraphRequest(Uri, RequestType) Initializes a new instance of the GraphRequest class. Create the graph request object Declaration public GraphRequest(Uri location, RequestType requestType) Parameters Type Name Description Uri location The uri location for the request. RequestType requestType Type of the request. Implements IGraphRequest IGraphRequest IGraphExchange IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphRequestExtensions.ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable)" - }, - "client/Microsoft.Graph.Communications.Resources.IResourceCollection-2.html": { - "href": "client/Microsoft.Graph.Communications.Resources.IResourceCollection-2.html", - "title": "Interface IResourceCollection", - "keywords": "Interface IResourceCollection The resource collection interface. Inherited Members IResourceCollection.TerminateAsync(TimeSpan) IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResourceCollection : IResourceCollection, IResourceBase, IDisposable, IReadOnlyCollection, IEnumerable, IEnumerable where TResource : IResource where TEntity : Entity Type Parameters Name Description TResource The containing resource type. IResource TEntity The containing resource type. Entity Properties Item[String] The resource with the specified identifier. Declaration TResource this[string id] { get; } Parameters Type Name Description String id The identifier. Property Value Type Description TResource The IResource . Methods TryForceRemove(String, out TResource) Attempts to remove and return the value that has the specified id from the IResourceCollection . This will force remove the object, if for whatever reason it cannot be removed by the service. It should only be used as a last resort to clean up stale resources. Declaration bool TryForceRemove(string id, out TResource resource) Parameters Type Name Description String id The identifier. TResource resource The resource. Returns Type Description Boolean true if the object was removed successfully; otherwise, false. See Also IResourceCollection IReadOnlyCollection " - }, - "client/Microsoft.Graph.Communications.Resources.IResourceCollection-3.html": { - "href": "client/Microsoft.Graph.Communications.Resources.IResourceCollection-3.html", - "title": "Interface IResourceCollection", - "keywords": "Interface IResourceCollection The resource collection interface. Inherited Members IResourceCollection.TryForceRemove(String, TResource) IResourceCollection.Item[String] IResourceCollection.TerminateAsync(TimeSpan) IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResourceCollection : IResourceCollection, IResourceCollection, IResourceBase, IDisposable, IReadOnlyCollection, IEnumerable, IEnumerable where TSelf : IResourceCollection where TResource : IResource where TEntity : Entity Type Parameters Name Description TSelf The self type of the collection. TResource The containing resource type. IResource TEntity The containing resource type. Entity Events OnUpdated Event triggered whenever a resource is updated from the collection. Declaration event CollectionEventHandler OnUpdated Event Type Type Description CollectionEventHandler See Also IResourceCollection " - }, - "common/Microsoft.Graph.Communications.Common.Disposable.html": { - "href": "common/Microsoft.Graph.Communications.Common.Disposable.html", - "title": "Class Disposable", - "keywords": "Class Disposable Common disposable pattern Inheritance Object Disposable AutoClean ObjectRootDisposable Observer SlimLock GraphLogger Implements IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class Disposable : IDisposable Constructors Disposable() Declaration public Disposable() Properties IsDisposed Gets a value indicating whether this instance is disposed. Declaration protected bool IsDisposed { get; } Property Value Type Description Boolean true if this instance is disposed; otherwise, false . Methods Dispose() Dispose resources. Declaration public void Dispose() Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected virtual void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Finalize() Finalizes an instance of the Disposable class. Declaration protected void Finalize() Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "core/Microsoft.Graph.Communications.Core.Exceptions.html": { - "href": "core/Microsoft.Graph.Communications.Core.Exceptions.html", - "title": "Namespace Microsoft.Graph.Communications.Core.Exceptions", - "keywords": "Namespace Microsoft.Graph.Communications.Core.Exceptions Classes ClientException Class for client error exception. ErrorConstants Error Constants ErrorConstants.Codes Error Codes ErrorConstants.Messages Error Messages ServiceException A Service Exception." - }, - "common/Microsoft.Graph.Communications.Common.Telemetry.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.html", - "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry", - "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry Classes AadApplicationIdentity The application identity in Azure AD. CallerInfo Class that encapsulates the caller's (creator's) information ClientEtwLogger Logger for client that publishes to ETW. GraphLogger Logging portion of graph. GraphLoggerShim The graph logger shim. This wrapper on the IGraphLogger attaches some extra data to each log request. GraphLoggerWrapper The ILogger wrapper for IGraphLogger. JsonConverters Json converters. JsonConverters.TypedPropertiesConverter The json converter for Type. LogEvent Log data LogEventFormatter The log event formatter LoggingConstants Constants used for logging that are common between server and client. LoggingExtensions Extensions class for logging. MetricLogData The metric of Geneva Instrumentation Framework (Ifx). Interfaces IGraphLogger The logger interface used by Graph Services. This logger emits logs that can be observed by different observers. ILogEventFormatter Interface to format log event. Enums ClientLogEventId Event ids for client logs HttpTraceType Trace used for HTTP traces. LogEventFormatterFlags The log event formatter enums LogEventType Log event type that describes what type of LogEvent this is. TransactionDirection Direction for request message." - }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.html", - "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters", - "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Classes BaseFilter Non generic base filter. BaseFilter Base filter. ContentDispositionFilter Does match of content disposition header. If content disposition matches filter then whole body is removed. ContentTypeFilter Does match of content-type header. If content-type matches filter then whole body is removed. GraphUriFilters Uri filters to filter PII in graph urls. HeaderFilter Header filters act as whitelists. UriFilter URI Filter. Any group matches from REGEX are obfuscated." - }, - "common/Microsoft.Graph.Communications.Common.OData.html": { - "href": "common/Microsoft.Graph.Communications.Common.OData.html", - "title": "Namespace Microsoft.Graph.Communications.Common.OData", - "keywords": "Namespace Microsoft.Graph.Communications.Common.OData Classes CamelCaseStringEnumConverter Converts an System.Enum to and from its name string value. When converting to its string value it will use camelCase formatting. ODataConfiguration OData Configuration object to be used for different classes. ODataConstants The OData constants. ODataJsonConverter Handles resolving interfaces to the correct derived class during serialization/deserialization. ODataResolver Contract resolver that allows us to create OData json payloads with type information. ODataSerializeAsTypeAttribute Specify how a given object should be written/read on the wire. ODataTimeSpanConverter Custom json converter for TimeSpans." - }, - "common/Microsoft.Graph.Communications.Common.Extensions.html": { - "href": "common/Microsoft.Graph.Communications.Common.Extensions.html", - "title": "Class Extensions", - "keywords": "Class Extensions Defines Extensions. Inheritance Object Extensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class Extensions Methods ChangeType(Object, Type) Returns an object of the specified type and whose value is equivalent to the specified object. Declaration public static object ChangeType(this object value, Type conversionType) Parameters Type Name Description Object value An object that implements the IConvertible interface. Type conversionType The type of object to return. Returns Type Description Object Converted object Exceptions Type Condition InvalidCastException This conversion is not supported. -or- value is null and conversionType is a value conversionType.-or- value does not implement the IConvertible interface. FormatException value is not in a format recognized by conversionType . OverflowException value represents a number that is out of the range of conversionType . ArgumentNullException conversionType is null. ChangeType(Object) Convert conversionType of an object Declaration public static T ChangeType(this object value) Parameters Type Name Description Object value An object that implements the IConvertible interface. Returns Type Description T Converted object Type Parameters Name Description T Type requested Exceptions Type Condition InvalidCastException This conversion is not supported. -or- value is null and is a value conversionType.-or- value does not implement the IConvertible interface. FormatException value is not in a format recognized by . OverflowException value represents a number that is out of the range of . ArgumentNullException is null. CreateObserver(IObservable, Action, Action, Action) Create observer Declaration public static Observer CreateObserver(this IObservable observable, Action onNext, Action onError = null, Action onCompleted = null) Parameters Type Name Description IObservable observable Object providing the events. Action onNext Callback for data. Action < Exception > onError Callback for errors. Action onCompleted Callback for completion. Returns Type Description Observer New observer object Type Parameters Name Description T Type of the observer. GetDeterministicHashCode(String) Gets deterministic hash code of the given string. Using FNV-1a hash: https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function Declaration public static uint GetDeterministicHashCode(this string str) Parameters Type Name Description String str The string. Returns Type Description UInt32 The unsigned hash code. Lock(Mutex) Lock mutex Declaration public static IDisposable Lock(this Mutex mutex) Parameters Type Name Description Mutex mutex Mutex to enter. Returns Type Description IDisposable Disposable cleanup to release mutex. Pin(Object) Pin object memory. Declaration public static AutoClean Pin(this object obj) Parameters Type Name Description Object obj Object to pin. Returns Type Description AutoClean < IntPtr > Disposable cleanup to release pinned memory. PushDir(String) Push directory and restore when done. Declaration public static IDisposable PushDir(string directory) Parameters Type Name Description String directory New directory to change to. Returns Type Description IDisposable Disposable to restore to previous directory. Read(ReaderWriterLockSlim) Automatic cleanup of entering read lock. Declaration public static IDisposable Read(this ReaderWriterLockSlim lockSlim) Parameters Type Name Description ReaderWriterLockSlim lockSlim Lock instance. Returns Type Description IDisposable Disposable cleanup instance. ReplaceFirst(String, String, String) Replaces the first occurence of search string with replace string. Declaration public static string ReplaceFirst(this string text, string search, string replace) Parameters Type Name Description String text The source text. String search The search string. String replace String to be replaced. Returns Type Description String Updated soruce text. ReplaceScheme(Uri, String, String) Replace URI scheme. Declaration public static Uri ReplaceScheme(this Uri uri, string find, string replace) Parameters Type Name Description Uri uri Subject URI String find Find string. String replace Replace string. Returns Type Description Uri New URI. SafeWait(SemaphoreSlim) Safe wait on semaphore Declaration public static IDisposable SafeWait(this SemaphoreSlim semaphoreSlim) Parameters Type Name Description SemaphoreSlim semaphoreSlim The semaphore to wait on. Returns Type Description IDisposable Disposable cleanup to release semaphore. SafeWaitAsync(SemaphoreSlim) Safe wait on semaphore Declaration public static Task SafeWaitAsync(this SemaphoreSlim semaphoreSlim) Parameters Type Name Description SemaphoreSlim semaphoreSlim The semaphore to wait on. Returns Type Description Task < IDisposable > Disposable cleanup to release semaphore. TrapErrors(Action, IGraphLogger, TraceLevel, String, String, String, Int32) Trap exceptions from action. Declaration public static Exception TrapErrors(this Action action, IGraphLogger logger, TraceLevel level, string component = \"\", string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description Action action Action to run. IGraphLogger logger Logger to log exception data. TraceLevel level Trace level. String component The component in which this log is created. String memberName Calling function. String filePath Filename where code is located. Int32 lineNumber Line number where code is located. Returns Type Description Exception Task containing exception if any. TrapErrors(Action, TKey, IGraphLogger, TraceLevel, String, String, String, Int32) Trap exceptions from action. Declaration public static Exception TrapErrors(this Action action, TKey key, IGraphLogger logger, TraceLevel level, string component = \"\", string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description Action action Action to run. TKey key Key for the action. IGraphLogger logger Logger to log exception data. TraceLevel level Trace level. String component The component in which this log is created. String memberName Calling function. String filePath Filename where code is located. Int32 lineNumber Line number where code is located. Returns Type Description Exception Task containing exception if any. Type Parameters Name Description TKey Action key type. TrapErrorsAsync(Task, IGraphLogger, TraceLevel, String, String, String, Int32) Trap exceptions from antecedent task. Declaration public static Task TrapErrorsAsync(this Task task, IGraphLogger logger, TraceLevel level, string component = \"\", string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description Task task Antecedent task. IGraphLogger logger Logger to log exception data. TraceLevel level Trace level. String component The component in which this log is created. String memberName Calling function. String filePath Filename where code is located. Int32 lineNumber Line number where code is located. Returns Type Description Task < Exception > Task containing exception if any. TryDispose(Object, IGraphLogger) Try and dispose the object if it supports the right interface. Declaration public static void TryDispose(this object obj, IGraphLogger logger = null) Parameters Type Name Description Object obj Object to dispose. IGraphLogger logger Logger instance. UpgradeableRead(ReaderWriterLockSlim) Automatic cleanup of entering read lock. Declaration public static IDisposable UpgradeableRead(this ReaderWriterLockSlim lockSlim) Parameters Type Name Description ReaderWriterLockSlim lockSlim Lock instance. Returns Type Description IDisposable Disposable cleanup instance. WaitAsync(Task, Int32) Waits for the Task to complete execution within a specified number of milliseconds. Traps errors on the task to avoid unobserved task exceptions. Declaration public static Task WaitAsync(this Task task, int millisecondsTimeout = -1) Parameters Type Name Description Task task Task to wait. Int32 millisecondsTimeout The number of milliseconds to wait, or Infinite (-1) to wait indefinitely. Returns Type Description Task < Boolean > true if the Task completed execution within the allotted time; otherwise, false. Write(ReaderWriterLockSlim) Automatic cleanup of entering write lock. Declaration public static IDisposable Write(this ReaderWriterLockSlim lockSlim) Parameters Type Name Description ReaderWriterLockSlim lockSlim Lock instance. Returns Type Description IDisposable Disposable cleanup instance." - }, - "common/Microsoft.Graph.Communications.Common.Exceptions.html": { - "href": "common/Microsoft.Graph.Communications.Common.Exceptions.html", - "title": "Namespace Microsoft.Graph.Communications.Common.Exceptions", - "keywords": "Namespace Microsoft.Graph.Communications.Common.Exceptions Classes ConfigurationException Configuration is bad. Mandatory configuration setting is missing. Or raw (string) setting value can not be converted to property type. InvalidStateTransitionException Exception to throw when a invalid transition is requested RoutingBadRequestException Indicate there's a bad request RoutingException Generic routing exception" - }, - "client/Microsoft.Graph.Communications.Client.Notifications.html": { - "href": "client/Microsoft.Graph.Communications.Client.Notifications.html", - "title": "Namespace Microsoft.Graph.Communications.Client.Notifications", - "keywords": "Namespace Microsoft.Graph.Communications.Client.Notifications Classes FixedSizeQueue A class that implements a fixed size list." - }, - "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCommunicationsClientBuilderExtensions.html": { - "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCommunicationsClientBuilderExtensions.html", - "title": "Class MediaCommunicationsClientBuilderExtensions", - "keywords": "Class MediaCommunicationsClientBuilderExtensions The stateful client builder extension. Inheritance Object MediaCommunicationsClientBuilderExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public static class MediaCommunicationsClientBuilderExtensions Methods SetMediaPlatformSettings(ICommunicationsClientBuilder, MediaPlatformSettings) Set the local media platform settings. This function also initializes the local media platform. Declaration public static ICommunicationsClientBuilder SetMediaPlatformSettings(this ICommunicationsClientBuilder statefulClientBuilder, MediaPlatformSettings mediaSettings) Parameters Type Name Description ICommunicationsClientBuilder statefulClientBuilder The stateful client builder. MediaPlatformSettings mediaSettings The media settings. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ClientException When something fails while initializing the media platform. TerminateAsync(ICommunicationsClient, Boolean, TimeSpan) Stops the specified stateful client. This would end all the calls and shuts down the media platform. This should only be used during shutdown. Declaration public static Task TerminateAsync(this ICommunicationsClient statefulClient, bool onlyMedia, TimeSpan timeout = default(TimeSpan)) Parameters Type Name Description ICommunicationsClient statefulClient The stateful client. Boolean onlyMedia if set to true terminate only the media platform. TimeSpan timeout The timeout. Returns Type Description Task < Boolean > True if all instances were terminated, false otherwise." - }, - "core/Microsoft.Graph.Communications.Core.Serialization.html": { - "href": "core/Microsoft.Graph.Communications.Core.Serialization.html", - "title": "Namespace Microsoft.Graph.Communications.Core.Serialization", - "keywords": "Namespace Microsoft.Graph.Communications.Core.Serialization Classes CommsSerializer An interface for serializing and deserializing JSON objects. This serializer is used throughout the Communications workload to provide extra functionality. Specifically it supports more robust serialization/deserialization of @odata.type property and deserialization of open type additional data." - }, - "common/Microsoft.Graph.Communications.Common.html": { - "href": "common/Microsoft.Graph.Communications.Common.html", - "title": "Namespace Microsoft.Graph.Communications.Common", - "keywords": "Namespace Microsoft.Graph.Communications.Common Classes AutoClean Helper class to automatically cleanup. AutoClean Helper class to automatically cleanup but with associated state. CertUtils Certificates utilities CollectionUtils Collection Utilities Disposable Common disposable pattern EnumUtils Enum Utilities ExceptionUtils Exception utilities Extensions Defines Extensions. GuidUtils Guid Utils HighResolutionDateTime High resolution datetime HttpConstants The constant values for http. HttpConstants.HeaderNames The header names. JsonUtils Json Utils MathUtils Various math utilities MetricUtils The metric utils class ObjectRoot Base object. ObjectRootDisposable Base object. Observable Observable Base class Observer Observer class. ReflectionUtils Reflection utilities SafeNativeMethods Contains p/invokes and associated wrappers for the Native methods SecureStringUtils SecureString Utilities SlimLock A SemaphoreSlim based lock implementation StateMachine Lockfree enum-based state machine. Transitions are O(1). StateMachine.Transition Single transition from Source to Targets StringUtils String Utils TaskExtension Extensions for Task TaskQueue Task queue to encapsulate chaining of tasks. Utilities Utilities class. Validator Helper class with various condition validation utilities. WeakKey Wrapping a weak reference and recording hash code. Note: It is the responsibility of the client to clean up the collection entry in the finalizer of the object. Otherwise the key will not match for subsequent lookups. WeakKeyDictionary Dictionary with weak reference for the key." - }, - "common/Microsoft.Graph.Communications.Common.Transport.HttpRequestMessageExtensions.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.HttpRequestMessageExtensions.html", - "title": "Class HttpRequestMessageExtensions", - "keywords": "Class HttpRequestMessageExtensions Extensions for HttpRequestMessage . Inheritance Object HttpRequestMessageExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpRequestMessageExtensions Methods Add(HttpHeaders, IGraphProperty) Adds the header. Declaration public static void Add(this HttpHeaders headers, IGraphProperty property) Parameters Type Name Description HttpHeaders headers The headers. IGraphProperty property The property. CloneHttpRequestMessageAsync(HttpRequestMessage) Clones the HTTP request message. Declaration public static Task CloneHttpRequestMessageAsync(this HttpRequestMessage req) Parameters Type Name Description HttpRequestMessage req The req. Returns Type Description Task < HttpRequestMessage > Cloned request message GetHttpAndContentHeaders(HttpRequestMessage) Gets headers from the http request and the content. Declaration public static IEnumerable>> GetHttpAndContentHeaders(this HttpRequestMessage message) Parameters Type Name Description HttpRequestMessage message The message. Returns Type Description IEnumerable < KeyValuePair < String , IEnumerable < String >>> The list of http and content headers. ToGraphRequestAsync(HttpRequestMessage) Converts a HttpRequestMessage into a IGraphRequest . Declaration public static Task ToGraphRequestAsync(this HttpRequestMessage httpRequest) Parameters Type Name Description HttpRequestMessage httpRequest HttpRequestMessage to be converted. Returns Type Description Task < IGraphRequest > IGraphRequest object corresponding to httpRequest ToGraphRequestAsync(HttpRequestMessage, JsonSerializerSettings) Converts a HttpRequestMessage into a IGraphRequest . Declaration public static Task> ToGraphRequestAsync(this HttpRequestMessage httpRequest, JsonSerializerSettings serializerSettings = null) Parameters Type Name Description HttpRequestMessage httpRequest HttpRequestMessage to be converted. Newtonsoft.Json.JsonSerializerSettings serializerSettings Json serializer settings. Returns Type Description Task < IGraphRequest > IGraphRequest object corresponding to httpRequest Type Parameters Name Description T Type of the content present in httpRequest ToRequestType(HttpMethod) Convert HttpMethod to the type of the request. Declaration public static RequestType ToRequestType(this HttpMethod httpMethod) Parameters Type Name Description HttpMethod httpMethod The HTTP method. Returns Type Description RequestType RequestType corresponding to the httpMethod Exceptions Type Condition InvalidOperationException Thrown if httpMethod has no corresponding RequestType" - }, - "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.html", - "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry.Obfuscation", - "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Classes GraphObfuscationAttribute Attribute used for decoration of data objects. This is used for obfuscation for logging. GraphObfuscationContractResolver Newtonsoft JSON resolver that uses Graph Obfuscation attribute to serialize data for logging purposes. HashingObfuscationConfiguration The hashing obfuscation configuration. This configurations is preconfigured to use the HashingObfuscationEngine and provides logic to automatically generate a salt which resets daily. HashingObfuscationEngine Obfuscation engine that hashes PII using salt. ObfuscatedValueProvider Newtonsoft JSONs value provider for obfuscated data. ObfuscationConfiguration Configuration for obfuscation of different parts. ObfuscationSerializer The obfuscation serializer can be used to serialize and de-serialize an obfuscation schema, as well as generate a schema from specified assemblies. Structs ObfuscationMember The obfuscation member. This struct is used to generate an obfuscation schema for any class type or it's members. It can be passed into the GraphObfuscationContractResolver which will cache the schema when resolving object and member obfuscation. Interfaces IObfuscationEngine Obfuscation engine that can obfuscate data. Enums ObfuscationTag Tag used to provide a hint for the type of obfuscation to perform." - }, - "client/Microsoft.Graph.Communications.Client.Cache.html": { - "href": "client/Microsoft.Graph.Communications.Client.Cache.html", - "title": "Namespace Microsoft.Graph.Communications.Client.Cache", - "keywords": "Namespace Microsoft.Graph.Communications.Client.Cache Classes ServiceCache The cache that restores the data directly from the service. In this case there is no storage of data, as the service acts as the master. Structs CacheContext The stored cache context Interfaces ICache The cache interface used to store and recover the data used by the SDK." - }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.BaseFilter.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.BaseFilter.html", - "title": "Class BaseFilter", - "keywords": "Class BaseFilter Non generic base filter. Inheritance Object BaseFilter BaseFilter Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public abstract class BaseFilter Constructors BaseFilter() Declaration protected BaseFilter() Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationMember.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationMember.html", - "title": "Struct ObfuscationMember", - "keywords": "Struct ObfuscationMember The obfuscation member. This struct is used to generate an obfuscation schema for any class type or it's members. It can be passed into the GraphObfuscationContractResolver which will cache the schema when resolving object and member obfuscation. Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() ValueType.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public struct ObfuscationMember Properties Members Gets or sets the members belonging to this member. Declaration public ObfuscationMember[] Members { get; set; } Property Value Type Description ObfuscationMember [] Name Gets or sets the name of the member. For classes this should be type full name, for members this should be the member name. Declaration public string Name { get; set; } Property Value Type Description String Tag Gets or sets the obfuscation tag. Specifies how this member should be obfuscated. Declaration public ObfuscationTag? Tag { get; set; } Property Value Type Description Nullable < ObfuscationTag > Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationConfiguration.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationConfiguration.html", - "title": "Class ObfuscationConfiguration", - "keywords": "Class ObfuscationConfiguration Configuration for obfuscation of different parts. Inheritance Object ObfuscationConfiguration HashingObfuscationConfiguration Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ObfuscationConfiguration Constructors ObfuscationConfiguration(IObfuscationEngine, IEnumerable, Boolean, ObfuscationMember[]) Initializes a new instance of the ObfuscationConfiguration class. Declaration public ObfuscationConfiguration(IObfuscationEngine engine, IEnumerable filters = null, bool addOdataType = true, ObfuscationMember[] members = null) Parameters Type Name Description IObfuscationEngine engine The obfuscation engine. IEnumerable < BaseFilter > filters The filters. Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. ObfuscationMember [] members The predefined set of obfuscation members. When specified the obfuscation serializer will cache the members and check the cache for the ObfuscationTag . ObfuscationConfiguration(IObfuscationEngine, IEnumerable, IEnumerable, IEnumerable, Boolean, ObfuscationMember[]) Initializes a new instance of the ObfuscationConfiguration class. Declaration public ObfuscationConfiguration(IObfuscationEngine engine, IEnumerable headerFilters, IEnumerable contentDispositionFilters, IEnumerable contentTypeFilters, bool addOdataType = true, ObfuscationMember[] members = null) Parameters Type Name Description IObfuscationEngine engine The obfuscation engine. IEnumerable < HeaderFilter > headerFilters The header filters. IEnumerable < ContentDispositionFilter > contentDispositionFilters The content disposition filters. IEnumerable < ContentTypeFilter > contentTypeFilters The content type filters. Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. ObfuscationMember [] members The predefined set of obfuscation members. When specified the obfuscation serializer will cache the members and check the cache for the ObfuscationTag . Properties ContentDispositionFilters Gets the content disposition filters. Declaration public IEnumerable ContentDispositionFilters { get; } Property Value Type Description IEnumerable < ContentDispositionFilter > ContentTypeFilters Gets the content type filters. Declaration public IEnumerable ContentTypeFilters { get; } Property Value Type Description IEnumerable < ContentTypeFilter > DefaultContentDispositionFilters Gets the default content disposition filters. Declaration public static IEnumerable DefaultContentDispositionFilters { get; } Property Value Type Description IEnumerable < ContentDispositionFilter > DefaultContentTypeFilters Gets the default content type filters. Declaration public static IEnumerable DefaultContentTypeFilters { get; } Property Value Type Description IEnumerable < ContentTypeFilter > DefaultHeaderFilters Gets the default header filters. Transfer-Encoding: (redacted) OData-Version: (redacted) Duration: (redacted) Strict-Transport-Security: (redacted) Cache-Control: (redacted) Date: (redacted) Location: (redacted) x-ms-ags-diagnostic: (redacted) scenario-id: (redacted) request-id: (redacted) client-request-id: (redacted) X-Microsoft-Skype-Chain-ID: (redacted) X-Microsoft-Skype-Caller-Region: (redacted) X-Microsoft-Skype-Callee-Region: (redacted) X-Microsoft-Skype-Message-ID: (redacted) X-Microsoft-Skype-Original-Message-ID: (redacted) Declaration public static IEnumerable DefaultHeaderFilters { get; } Property Value Type Description IEnumerable < HeaderFilter > DefaultUriFilters Gets the default header filters. Declaration public static IEnumerable DefaultUriFilters { get; } Property Value Type Description IEnumerable < UriFilter > HeaderFilters Gets the header filters. Declaration public IEnumerable HeaderFilters { get; } Property Value Type Description IEnumerable < HeaderFilter > ObfuscationEngine Gets the obfuscation engine. Declaration public IObfuscationEngine ObfuscationEngine { get; } Property Value Type Description IObfuscationEngine ObfuscationMembers Gets the obfuscation members. When specified the obfuscation serializer will cache the members and check the cache for the ObfuscationTag . This can be used to cache obfuscation attributes, but it can also be used in cases where original contracts are not redily available (such as in SDK). Declaration public ObfuscationMember[] ObfuscationMembers { get; } Property Value Type Description ObfuscationMember [] ObfuscationSerializerSettings Gets the obfuscation serializer settings. Declaration public JsonSerializerSettings ObfuscationSerializerSettings { get; } Property Value Type Description Newtonsoft.Json.JsonSerializerSettings UriFilters Gets the URI filters. Declaration public IEnumerable UriFilters { get; } Property Value Type Description IEnumerable < UriFilter > Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) HttpObfuscationHelpers.LogHeaderText(ObfuscationConfiguration, IEnumerable>>) HttpObfuscationHelpers.LogHeaderText(ObfuscationConfiguration, String, IEnumerable)" - }, - "client/Microsoft.Graph.Communications.Client.GraphLoggerExtensions.html": { - "href": "client/Microsoft.Graph.Communications.Client.GraphLoggerExtensions.html", - "title": "Class GraphLoggerExtensions", - "keywords": "Class GraphLoggerExtensions The graph logger extensions for the communications client. Inheritance Object GraphLoggerExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public static class GraphLoggerExtensions Methods LogHttpRequest(IGraphLogger, HttpRequestMessage, HttpStatusCode, Object, Exception, String, String, Int32) Logs the request message. Declaration public static TraceLevel LogHttpRequest(this IGraphLogger logger, HttpRequestMessage request, HttpStatusCode statusCode, object requestContent = null, Exception exception = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. HttpRequestMessage request The request. HttpStatusCode statusCode The status code. Object requestContent The request content. Exception exception The exception. String memberName The member name. String filePath The file path. Int32 lineNumber The line number. Returns Type Description TraceLevel The trace level of the logged request message. LogHttpResponse(IGraphLogger, TraceLevel, HttpRequestMessage, HttpResponseMessage, Int64, Object, String, String, Int32) Logs the http response message. Declaration public static void LogHttpResponse(this IGraphLogger logger, TraceLevel level, HttpRequestMessage request, HttpResponseMessage response, long responseTime, object responseContent = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. TraceLevel level The log level. HttpRequestMessage request The request. HttpResponseMessage response The response. Int64 responseTime The response time in milliseconds. Object responseContent The response content. String memberName The member name. String filePath The file path. Int32 lineNumber The line number. ParseRequestId(IGraphLogger, HttpRequestMessage) Parses the request identifier. Declaration public static Guid ParseRequestId(this IGraphLogger logger, HttpRequestMessage request) Parameters Type Name Description IGraphLogger logger The logger. HttpRequestMessage request The request. Returns Type Description Guid The message id. ParseScenarioId(IGraphLogger, HttpRequestMessage) Parses the scenario identifier. Declaration public static Guid ParseScenarioId(this IGraphLogger logger, HttpRequestMessage request) Parameters Type Name Description IGraphLogger logger The logger. HttpRequestMessage request The request. Returns Type Description Guid The scenario id." - }, - "client/Microsoft.Graph.Communications.Client.CommunicationsClientExtensions.html": { - "href": "client/Microsoft.Graph.Communications.Client.CommunicationsClientExtensions.html", - "title": "Class CommunicationsClientExtensions", - "keywords": "Class CommunicationsClientExtensions Extensions for Stateful Client. Inheritance Object CommunicationsClientExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public static class CommunicationsClientExtensions Methods CreateResponse(ICommunicationsClient, HttpStatusCode, Guid, Guid, Object) Creates the response. Declaration public static HttpResponseMessage CreateResponse(this ICommunicationsClient client, HttpStatusCode statusCode, Guid requestId, Guid scenarioId, object responseContent = null) Parameters Type Name Description ICommunicationsClient client The client. HttpStatusCode statusCode The status code. Guid requestId The request identifier. Guid scenarioId The scenario identifier. Object responseContent The response content. Returns Type Description HttpResponseMessage The HTTP response. LogAndCreateResponse(ICommunicationsClient, HttpRequestMessage, Guid, Guid, CommsNotifications, HttpStatusCode, Stopwatch, Exception) Logs the request, creates the response, and logs the response. Declaration public static HttpResponseMessage LogAndCreateResponse(this ICommunicationsClient client, HttpRequestMessage request, Guid requestId, Guid scenarioId, CommsNotifications notifications, HttpStatusCode statusCode, Stopwatch stopwatch, Exception exception = null) Parameters Type Name Description ICommunicationsClient client The client. HttpRequestMessage request The request. Guid requestId The request identifier. Guid scenarioId The scenario identifier. CommsNotifications notifications The notifications that were extracted. HttpStatusCode statusCode The status code. Stopwatch stopwatch The stopwatch tracking how long the request is taking. Exception exception Any exceptions raised. Returns Type Description HttpResponseMessage The response for the associated request. ProcessNotificationAsync(ICommunicationsClient, HttpRequestMessage) Processes the notifications and raises the required callbacks. This function should be called in order for the SDK to raise any required events and process state changes. Declaration public static Task ProcessNotificationAsync(this ICommunicationsClient client, HttpRequestMessage request) Parameters Type Name Description ICommunicationsClient client The stateful client. HttpRequestMessage request The http request that is incoming from service. Returns Type Description Task < HttpResponseMessage > Http Response Message after processed by the SDK. This has to be returned to the server." - }, - "calls/Microsoft.Graph.Communications.Calls.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.html", - "title": "Namespace Microsoft.Graph.Communications.Calls", - "keywords": "Namespace Microsoft.Graph.Communications.Calls Classes CallCollectionExtensions Extensions for call collections. CallExtensions Extensions for calls. CommunicationsClientExtensions Extensions for stateful client. JoinMeetingParameters Class to define parameters required for joining a meeting. ParticipantExtensions Extensions for the stateful participant resource. PlayOperationResult Class to define parameters required for joining a meeting. RecordOperationResult Class to define parameters required for joining a meeting. Interfaces ICall The stateful call interface. ICallCollection The stateful call collection interface. IMediaSession The IMediaSession interface. For local media scenarios, this session object represents the modalities and the media configuration. IParticipant The stateful participant interface. This represents a single participant in a call. IParticipantCollection The stateful participant collection interface." - }, - "calls/Microsoft.Graph.Communications.Calls.CallExtensions.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.CallExtensions.html", - "title": "Class CallExtensions", - "keywords": "Class CallExtensions Extensions for calls. Inheritance Object CallExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public static class CallExtensions Methods AnswerAsync(ICall, IMediaSession, String, Guid, CancellationToken) Answers a call with locally hosted media configuration. Declaration public static Task AnswerAsync(this ICall call, IMediaSession mediaSession, string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ICall call The call to be answered. IMediaSession mediaSession The media session object which defines the media configuration. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated Exceptions Type Condition ArgumentNullException When mediaSession is not specified. AnswerAsync(ICall, IEnumerable, IEnumerable, String, Guid, CancellationToken) Answers a call with service hosted media configuration. Declaration public static Task AnswerAsync(this ICall call, IEnumerable preFetchMedia, IEnumerable acceptedModalities, string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ICall call The call to be answered. IEnumerable < MediaInfo > preFetchMedia List of media files that service will cache, so that when playing these media files; the latency is lower. IEnumerable < Modality > acceptedModalities The modalities to accept. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated Exceptions Type Condition ArgumentNullException When pre-fetch media is null. AnswerAsync(ICall, IEnumerable, String, Guid, CancellationToken) Answers a call with service hosted media configuration. Declaration public static Task AnswerAsync(this ICall call, IEnumerable acceptedModalities, string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ICall call The call to be answered. IEnumerable < Modality > acceptedModalities The modalities to accept. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated SetOutgoingCallOptions(Call, Nullable) Set outgoing call options for the call. Declaration public static void SetOutgoingCallOptions(this Call call, bool? allowGuestToBypassLobby) Parameters Type Name Description Call call The call. Nullable < Boolean > allowGuestToBypassLobby Enable bypass lobby when joining a group call as guest." - }, - "calls/Microsoft.Graph.Communications.Calls.ICall.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.ICall.html", - "title": "Interface ICall", - "keywords": "Interface ICall The stateful call interface. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface ICall : IResource, IResource, IResourceBase, IDisposable Properties CorrelationId Gets the correlation identifier. Declaration [Obsolete(\"Please use ScenarioId instead.\")] Guid CorrelationId { get; } Property Value Type Description Guid MediaSession Gets the media session, if any. This is used only for Local Media Scenarios. Declaration IMediaSession MediaSession { get; } Property Value Type Description IMediaSession Participants Gets the Participants collection for this call. Declaration IParticipantCollection Participants { get; } Property Value Type Description IParticipantCollection Resource Gets the call resource. Declaration Call Resource { get; } Property Value Type Description Call ScenarioId Gets the scenario identifier. Declaration Guid ScenarioId { get; } Property Value Type Description Guid TenantId Gets the tenant identifier. Declaration string TenantId { get; } Property Value Type Description String Methods AnswerAsync(MediaConfig, IEnumerable, String, Guid, CancellationToken) Answer an incoming call asynchronously. Declaration Task AnswerAsync(MediaConfig mediaConfig, IEnumerable acceptedModalities = null, string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description MediaConfig mediaConfig The MediaConfig . IEnumerable < Modality > acceptedModalities The accepted list of Modality . String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated ChangeScreenSharingRoleAsync(ScreenSharingRole, CancellationToken) Changes own sharing role in a vbss session. Declaration Task ChangeScreenSharingRoleAsync(ScreenSharingRole role, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ScreenSharingRole role The role to change to. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. DeleteAsync(Boolean, CancellationToken) Deletes this call asynchronously. Declaration Task DeleteAsync(bool handleHttpNotFoundInternally = false, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Boolean handleHttpNotFoundInternally If the ICall is already gone, whether to handle the exception gracefully or not. CancellationToken cancellationToken The CancellationToken for the request. Returns Type Description Task The Task that completes after the request has been sent. The completion of this task does not guarantee deletion. Confirmation of deletion comes as a notification and can be subscribed by ICall.OnUpdated and ICallCollection.OnUpdated KeepAliveAsync(CancellationToken) Send heartbeat to keep call alive. Declaration Task KeepAliveAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. MuteAsync(CancellationToken) Mutes the self participant asynchronously. Declaration Task MuteAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The mute notification will come in on IParticipant.OnUpdated PlayPromptAsync(IEnumerable, Action, CancellationToken) Plays the specified media prompts. Declaration Task PlayPromptAsync(IEnumerable prompts, Action promptsQueued = null, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description IEnumerable < MediaPrompt > prompts The list of MediaPrompt to play Action promptsQueued A callback indicating when the prompts have been queued, but have not yet completed playing. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < PlayOperationResult > The PlayOperationResult with information on how the play operation completed. Exceptions Type Condition ServiceException An error has occurred when playing the prompt. RedirectAsync(IEnumerable, Nullable, String, Guid, CancellationToken) Redirects the incoming call asynchronously. Declaration Task RedirectAsync(IEnumerable targets, int? timeout = default(int? ), string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description IEnumerable < InvitationParticipantInfo > targets The targets to whom the call should be redirected to. Nullable < Int32 > timeout The timeout after which the redirect is canceled. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. RejectAsync(Nullable, String, Guid, CancellationToken) Rejects the incoming call asynchronously. Declaration Task RejectAsync(RejectReason? rejectReason = default(RejectReason? ), string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Nullable < RejectReason > rejectReason The reason for call rejection. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. SubscribeToToneAsync(CancellationToken) Subscribe to DTMF (dual-tone multi-frequency signaling). This allows you to be notified when the user presses keys on a \"touchtone\" phone. Declaration Task SubscribeToToneAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The DTMF notifications will come on ICall.OnUpdated TransferAsync(InvitationParticipantInfo, CancellationToken) Transfer a call to a given target. Declaration Task TransferAsync(InvitationParticipantInfo target, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description InvitationParticipantInfo target The target to transfer the call to. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated UnmuteAsync(CancellationToken) Unmutes the self participant asynchronously. Declaration Task UnmuteAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The unmute notification will come in on IParticipant.OnUpdated Extension Methods CallExtensions.AnswerAsync(ICall, IMediaSession, String, Guid, CancellationToken) CallExtensions.AnswerAsync(ICall, IEnumerable, IEnumerable, String, Guid, CancellationToken) CallExtensions.AnswerAsync(ICall, IEnumerable, String, Guid, CancellationToken)" - }, - "calls/Microsoft.Graph.Communications.Calls.CommunicationsClientExtensions.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.CommunicationsClientExtensions.html", - "title": "Class CommunicationsClientExtensions", - "keywords": "Class CommunicationsClientExtensions Extensions for stateful client. Inheritance Object CommunicationsClientExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public static class CommunicationsClientExtensions Methods Calls(ICommunicationsClient, Boolean) Gets the call collection. This is the main entry point for the calling SDK. The return value of this function can be cached by the clients as required. Declaration public static ICallCollection Calls(this ICommunicationsClient client, bool maintainState = true) Parameters Type Name Description ICommunicationsClient client The stateful client. Boolean maintainState If set to true the resulting IResourceCollection will hold all IResource instances it creates unless explicitly deleted (either by the service or by the developer). If set to false no IResource generated by the IResourceCollection or its children will be stored by the ICommunicationsClient , instead it is the developers responsibility to control the lifetime of the generated instances. Returns Type Description ICallCollection The root singleton ICallCollection node. Multiple invocations of this method will return the same ICallCollection ." - }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphRequestExtensions.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphRequestExtensions.html", - "title": "Class GraphRequestExtensions", - "keywords": "Class GraphRequestExtensions Extensions for IGraphRequest class. Inheritance Object GraphRequestExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class GraphRequestExtensions Methods ToHttpMethod(RequestType) Convert RequestType to the corresponding HTTP method. Declaration public static HttpMethod ToHttpMethod(this RequestType requestType) Parameters Type Name Description RequestType requestType Type of the request. Returns Type Description HttpMethod HttpMethod for the RequestType ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable) Converts IGraphRequest into a HttpRequestMessage . Declaration public static HttpRequestMessage ToHttpRequestMessage(this IGraphRequest graphRequest, JsonSerializerSettings jsonSerializerSettings = null, IEnumerable defaultProperties = null) Parameters Type Name Description IGraphRequest graphRequest The graph request to be converted. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. IEnumerable < IGraphProperty > defaultProperties The default properties. Returns Type Description HttpRequestMessage HttpRequestMessage corresponding to graphRequest . Type Parameters Name Description T Type of content available in the request." - }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphProperty.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphProperty.html", - "title": "Class GraphProperty", - "keywords": "Class GraphProperty The IGraphProperty helpers and extensions. Inheritance Object GraphProperty Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class GraphProperty Fields ContentType The content type Declaration public const string ContentType = \"content\" Field Value Type Description String RequestType The request type Declaration public const string RequestType = \"request\" Field Value Type Description String Methods Add(ICollection, String, Object, String) Adds the property to the exchange. Declaration public static IGraphProperty Add(this ICollection properties, string key, object value, string type = null) Parameters Type Name Description ICollection < IGraphProperty > properties The properties. String key The key. Object value The value. String type The type. Returns Type Description IGraphProperty The added IGraphProperty . Add(ICollection, String, T, String) Adds the property to the exchange. Declaration public static IGraphProperty Add(this ICollection properties, string key, T value, string type = null) Parameters Type Name Description ICollection < IGraphProperty > properties The properties. String key The key. T value The value. String type The type. Returns Type Description IGraphProperty The added IGraphProperty . Type Parameters Name Description T The expected type of the property. Contains(IEnumerable, String) Finds the property in the given exchange. Declaration public static bool Contains(this IEnumerable properties, string key) Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String key The key. Returns Type Description Boolean The found IGraphProperty . ContentProperty(String, Object) Creates the property of content type. Declaration public static IGraphProperty ContentProperty(string key, object value) Parameters Type Name Description String key The key. Object value The values. Returns Type Description IGraphProperty The content IGraphProperty . ContentProperty(String, T) Creates the property of content type. Declaration public static IGraphProperty ContentProperty(string key, T value) Parameters Type Name Description String key The key. T value The values. Returns Type Description IGraphProperty The content IGraphProperty . Type Parameters Name Description T The type of the property to create. ConvertProperty(IGraphProperty) Converts the property. Declaration public static IGraphProperty ConvertProperty(this IGraphProperty property) Parameters Type Name Description IGraphProperty property The property. Returns Type Description IGraphProperty The IGraphProperty with the expected generic type if the types match, null otherwise. Type Parameters Name Description T The type of value expected. Find(IEnumerable, String) Finds the property in the given exchange. Declaration public static IGraphProperty Find(this IEnumerable properties, string key) Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String key The key. Returns Type Description IGraphProperty The found IGraphProperty . Find(IEnumerable, String) Finds the property in the given exchange. Declaration public static IGraphProperty Find(this IEnumerable properties, string key) Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String key The key. Returns Type Description IGraphProperty The found IGraphProperty . Type Parameters Name Description T The expected type of the property. Property(String, Object, String) Creates a property of the specified type. Declaration public static IGraphProperty Property(string key, object value, string type = null) Parameters Type Name Description String key The key. Object value The values. String type The type. Returns Type Description IGraphProperty The created IGraphProperty . Property(String, T, String) Creates a property of the specified type. Declaration public static IGraphProperty Property(string key, T value, string type = null) Parameters Type Name Description String key The key. T value The value. String type The type. Returns Type Description IGraphProperty The created IGraphProperty . Type Parameters Name Description T The type of the property to create. RequestProperty(String, Object) Creates the property of request type. Declaration public static IGraphProperty RequestProperty(string key, object value) Parameters Type Name Description String key The key. Object value The value. Returns Type Description IGraphProperty The request IGraphProperty . RequestProperty(String, T) Creates the property of request type. Declaration public static IGraphProperty RequestProperty(string key, T value) Parameters Type Name Description String key The key. T value The value. Returns Type Description IGraphProperty The request IGraphProperty . Type Parameters Name Description T The type of the property to create. See Also IGraphProperty IGraphProperty" - }, - "client/Microsoft.Graph.Communications.Resources.html": { - "href": "client/Microsoft.Graph.Communications.Resources.html", - "title": "Namespace Microsoft.Graph.Communications.Resources", - "keywords": "Namespace Microsoft.Graph.Communications.Resources Classes CollectionEventArgs The collection event arguments. ResourceEventArgs The resource event arguments. Interfaces IResource The stateful resource interface. IResource The stateful resource interface. IResourceBase The resource base interface. IResourceCollection The resource collection interface. IResourceCollection The resource collection interface. IResourceCollection The resource collection interface. Delegates CollectionEventHandler The call collection event handler delegate. ResourceEventHandler The resource event handler delegate." + "bot_media/Microsoft.Skype.Bots.Media.MediaSendStatus.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaSendStatus.html", + "title": "Enum MediaSendStatus", + "keywords": "Enum MediaSendStatus Indicates whether an AudioSocket or VideoSocket is capable of sending media. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaSendStatus Fields Name Description Active Media can be sent Inactive Media cannot be sent" }, - "client/Microsoft.Graph.Communications.Resources.CollectionEventArgs-1.html": { - "href": "client/Microsoft.Graph.Communications.Resources.CollectionEventArgs-1.html", - "title": "Class CollectionEventArgs", - "keywords": "Class CollectionEventArgs The collection event arguments. Inheritance Object CollectionEventArgs Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class CollectionEventArgs Type Parameters Name Description TEntity The containing stateful resource type. IResource Constructors CollectionEventArgs(String, ICollection, ICollection, ICollection) Initializes a new instance of the CollectionEventArgs class. Declaration public CollectionEventArgs(string resourcePath, ICollection addedResources = null, ICollection updatedResources = null, ICollection removedResources = null) Parameters Type Name Description String resourcePath The resource path. ICollection addedResources The added resources. ICollection updatedResources The updated resources. ICollection removedResources The removed resources. Properties AddedResources Gets the added resources. Declaration public ICollection AddedResources { get; } Property Value Type Description ICollection AdditionalData Gets or sets the additional data for the event. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > RemovedResources Gets the removed resources. Declaration public ICollection RemovedResources { get; } Property Value Type Description ICollection ResourcePath Gets the resource path for the collection. Declaration public string ResourcePath { get; } Property Value Type Description String UpdatedResources Gets the updated resource. Declaration public ICollection UpdatedResources { get; } Property Value Type Description ICollection " + "bot_media/Microsoft.Skype.Bots.Media.LowOnFramesEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.LowOnFramesEventArgs.html", + "title": "Class LowOnFramesEventArgs", + "keywords": "Class LowOnFramesEventArgs LowOnFrames event arguments Inheritance Object EventArgs LowOnFramesEventArgs AudioLowOnFramesEventArgs VideoLowOnFramesEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class LowOnFramesEventArgs : EventArgs Constructors LowOnFramesEventArgs() Declaration public LowOnFramesEventArgs() Properties MediaType MediaType of the low on frame event Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType RemainingMediaLengthInMS Remaining enqueued media length in MS Declaration public int RemainingMediaLengthInMS { get; set; } Property Value Type Description Int32" }, - "client/Microsoft.Graph.Communications.Common.Telemetry.html": { - "href": "client/Microsoft.Graph.Communications.Common.Telemetry.html", - "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry", - "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry Classes CommsLogEventFormatter Test log formatter. LogProperties The log properties. LogProperties.CallData Call data. LogProperties.ChatData Chat data." + "bot_media/Microsoft.Skype.Bots.Media.AudioQualityOfExperienceData.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioQualityOfExperienceData.html", + "title": "Class AudioQualityOfExperienceData", + "keywords": "Class AudioQualityOfExperienceData Audio quality of experience data Inheritance Object MediaQualityOfExperienceData AudioQualityOfExperienceData Inherited Members MediaQualityOfExperienceData.NetworkMetrics MediaQualityOfExperienceData.TotalMediaDuration Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioQualityOfExperienceData : MediaQualityOfExperienceData Constructors AudioQualityOfExperienceData() AudioQualityOfExperienceData constructor Declaration public AudioQualityOfExperienceData() Properties AudioMetrics Audio-specific QoE metrics Declaration public AudioMetrics AudioMetrics { get; set; } Property Value Type Description AudioMetrics" }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphRequest-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphRequest-1.html", - "title": "Interface IGraphRequest", - "keywords": "Interface IGraphRequest The request object with content. Inherited Members IGraphExchange.Content IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphRequest : IGraphExchange, IGraphExchange Type Parameters Name Description T Type of data to be sent as part of request body. Properties RequestType Gets the type of the request. Declaration RequestType RequestType { get; } Property Value Type Description RequestType The type of the request. Uri Gets the URI location for the request. Declaration Uri Uri { get; } Property Value Type Description Uri The URI. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphRequestExtensions.ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable) See Also IGraphExchange " + "core/Microsoft.Graph.html": { + "href": "core/Microsoft.Graph.html", + "title": "Namespace Microsoft.Graph", + "keywords": "Namespace Microsoft.Graph Classes ContractsConstants OData Model Constants ContractsConstants.AuthConstants Various constants used by the AuthZ layer ContractsConstants.CallProperties Call properties constants ContractsConstants.EntityContainerNames Singleton/EntitySet constants ContractsConstants.IdentityProperties Identity properties constants ContractsConstants.NotificationProperties Notification properties constants ContractsConstants.Signature Signature for Assembly visibility. IdentityExtensions Extensions for graph api contracts IdentitySetExtensions Extentions for graph api contracts NotificationsExtensions Communications notifications extensions." }, - "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLogger.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLogger.html", - "title": "Class GraphLogger", - "keywords": "Class GraphLogger Logging portion of graph. Inheritance Object Disposable GraphLogger Implements IDisposable IGraphLogger IObservable < LogEvent > Inherited Members Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphLogger : Disposable, IDisposable, IGraphLogger, IObservable Constructors GraphLogger(String, IEnumerable, Boolean, ObfuscationConfiguration) Initializes a new instance of the GraphLogger class. Declaration public GraphLogger(string component = null, IEnumerable properties = null, bool redirectToTrace = false, ObfuscationConfiguration obfuscationConfiguration = null) Parameters Type Name Description String component The component in which log is createdThe component in which this logger is created. IEnumerable < Object > properties Common properties to be set on each event Boolean redirectToTrace if set to true [redirect to trace]. ObfuscationConfiguration obfuscationConfiguration The obfuscation configuration Fields StartupLoggerNameSuffix The startup logger name prefix Declaration public const string StartupLoggerNameSuffix = \"_Startup\" Field Value Type Description String Properties Component Gets or the component of logger. Declaration public string Component { get; } Property Value Type Description String CorrelationId Gets or sets the correlation identifier. This is used to track correlation between multiple requests for one scenario. Declaration public Guid CorrelationId { get; set; } Property Value Type Description Guid DiagnosticLevel Gets or sets the diagnostic level for the logger. Declaration public TraceLevel DiagnosticLevel { get; set; } Property Value Type Description TraceLevel LogicalThreadId Gets or sets the logical thread identifier. This id is used for tracking the flow of one request throughout the lifetime until it ends. Declaration public uint LogicalThreadId { get; set; } Property Value Type Description UInt32 ObfuscationConfiguration Gets the obfuscation configuration. Declaration public ObfuscationConfiguration ObfuscationConfiguration { get; } Property Value Type Description ObfuscationConfiguration Properties Gets the common properties for each event. Declaration public IReadOnlyDictionary Properties { get; } Property Value Type Description IReadOnlyDictionary < Type , Object > Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) Log(TraceLevel, String, String, Guid, Guid, LogEventType, IEnumerable, String, String, Int32) Log messages classified as the provided trace level. Declaration public LogEvent Log(TraceLevel level, string message, string component = null, Guid correlationId = default(Guid), Guid requestId = default(Guid), LogEventType eventType = LogEventType.Trace, IEnumerable properties = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description TraceLevel level The trace level. String message A composite format string that includes one or more format items. String component The component in which log is created Guid correlationId The correlation identifier. Guid requestId The request identifier. LogEventType eventType Log event type IEnumerable < Object > properties Extra properties for the log event String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Subscribe(IObserver) Create a subscription for logging events. Declaration public IDisposable Subscribe(IObserver observer) Parameters Type Name Description IObserver < LogEvent > observer The object that is to receive notifications. Returns Type Description IDisposable A reference to an interface that allows observers to stop receiving notifications before the provider has finished sending them. Implements System.IDisposable IGraphLogger System.IObservable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.CreateObserver(IObservable, Action, Action, Action) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) LoggingExtensions.Log(IGraphLogger, TraceLevel, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Info(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Verbose(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.LogHttpMessage(IGraphLogger, TraceLevel, TransactionDirection, HttpTraceType, String, String, String, IEnumerable>>, Int32, String, Nullable, Guid, Guid, String, String, Int32) LoggingExtensions.Metric(IGraphLogger, String, String, Int64, Dictionary, Boolean, String, Guid, String, String, Int32) LoggingExtensions.SerializeAndObfuscate(IGraphLogger, Object, Formatting) LoggingExtensions.Obfuscate(IGraphLogger, Object, ObfuscationTag) LoggingExtensions.GetHeaderText(IGraphLogger, IEnumerable>>) LoggingExtensions.CreateShim(IGraphLogger, String, Nullable, IEnumerable, ObfuscationConfiguration) LoggingExtensions.CreateILogger(IGraphLogger, String, Guid, LogEventType, IEnumerable) LoggingExtensions.BindToILoggerFactory(GraphLogger, ILoggerFactory, ILogEventFormatter) LoggingExtensions.EnterMethod(IGraphLogger, Guid, String, String, Int32) LoggingExtensions.LeaveMethod(IGraphLogger, Guid, String, String, Int32)" + "bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayer.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayer.html", + "title": "Class AudioVideoFramePlayer", + "keywords": "Class AudioVideoFramePlayer AudioVideoFramePlayer is responsible for streaming real time audio and video buffers. This frame player will handle audio and video sync from the audio and video buffer's timestamps Inheritance Object AudioVideoFramePlayer Implements IAudioVideoFramePlayer Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioVideoFramePlayer : IAudioVideoFramePlayer Constructors AudioVideoFramePlayer(AudioSocket, VideoSocket, AudioVideoFramePlayerSettings) Constructor for the audio video frame player. Declaration public AudioVideoFramePlayer(AudioSocket audioSocket, VideoSocket videoSocket, AudioVideoFramePlayerSettings audioVideoFramePlayerSettings) Parameters Type Name Description AudioSocket audioSocket VideoSocket videoSocket AudioVideoFramePlayerSettings audioVideoFramePlayerSettings Methods ClearAsync(Boolean, List) Clear the enqueued buffers. This will also invoke Dispose() on the buffers still in the queue. Declaration public Task ClearAsync(bool clearAudio = true, List videoFormats = null) Parameters Type Name Description Boolean clearAudio true will clear the audio buffers, Default value is set to true List < VideoFormat > videoFormats list of video formats to clear, default is null Returns Type Description Task EnqueueBuffersAsync(IList, IList) Enqueue the audio and video media buffers. Usage should be to enqueue the same audio and video length, if audio and video sockets are active. Declaration public Task EnqueueBuffersAsync(IList audioMediaBuffers, IList videoMediaBuffers) Parameters Type Name Description IList < AudioMediaBuffer > audioMediaBuffers IList < VideoMediaBuffer > videoMediaBuffers Returns Type Description Task ShutdownAsync() Shuts down the player and releases allocated resources Declaration public Task ShutdownAsync() Returns Type Description Task Events LowOnFrames Event to signal the player is low on frames Declaration public event EventHandler LowOnFrames Event Type Type Description EventHandler < LowOnFramesEventArgs > Implements IAudioVideoFramePlayer" }, "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLoggerShim.html": { "href": "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLoggerShim.html", "title": "Class GraphLoggerShim", "keywords": "Class GraphLoggerShim The graph logger shim. This wrapper on the IGraphLogger attaches some extra data to each log request. Inheritance Object ObjectRoot GraphLoggerShim Implements IGraphLogger IObservable < LogEvent > Inherited Members ObjectRoot.GraphLogger Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphLoggerShim : ObjectRoot, IGraphLogger, IObservable Constructors GraphLoggerShim(IGraphLogger, String, Nullable, IEnumerable, ObfuscationConfiguration) Initializes a new instance of the GraphLoggerShim class. Declaration public GraphLoggerShim(IGraphLogger graphLogger, string component = null, Guid? correlationId = default(Guid? ), IEnumerable properties = null, ObfuscationConfiguration obfuscationConfiguration = null) Parameters Type Name Description IGraphLogger graphLogger The graph logger. String component The component. Nullable < Guid > correlationId The correlation identifier. If null, shim will use the correlationId from GraphLogger IEnumerable < Object > properties The properties. ObfuscationConfiguration obfuscationConfiguration The obfuscation configuration. Properties CorrelationId Gets or sets the correlation identifier. This is used to track correlation between multiple requests for one scenario. Declaration public Guid CorrelationId { get; set; } Property Value Type Description Guid DiagnosticLevel Gets or sets the diagnostic level for the logger. Declaration public TraceLevel DiagnosticLevel { get; set; } Property Value Type Description TraceLevel LogicalThreadId Gets or sets the logical thread identifier. This id is used for tracking the flow of one request throughout the lifetime until it ends. Declaration public uint LogicalThreadId { get; set; } Property Value Type Description UInt32 ObfuscationConfiguration Gets the obfuscation configuration. This is used to obfuscate PII and other data. Declaration public ObfuscationConfiguration ObfuscationConfiguration { get; } Property Value Type Description ObfuscationConfiguration Properties Gets the properties of the logger. Declaration public IReadOnlyDictionary Properties { get; } Property Value Type Description IReadOnlyDictionary < Type , Object > Methods Log(TraceLevel, String, String, Guid, Guid, LogEventType, IEnumerable, String, String, Int32) Log messages classified as the provided trace level. Declaration public LogEvent Log(TraceLevel level, string message, string component = null, Guid correlationId = default(Guid), Guid requestId = default(Guid), LogEventType eventType = LogEventType.Trace, IEnumerable properties = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description TraceLevel level The trace level. String message A composite format string that includes one or more format items. String component The component in which log is created Guid correlationId The correlation identifier. Guid requestId The request identifier. LogEventType eventType Log event type IEnumerable < Object > properties Extra properties for the log event String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Subscribe(IObserver) Declaration public IDisposable Subscribe(IObserver observer) Parameters Type Name Description IObserver < LogEvent > observer Returns Type Description IDisposable Implements IGraphLogger System.IObservable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.CreateObserver(IObservable, Action, Action, Action) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) LoggingExtensions.Log(IGraphLogger, TraceLevel, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Info(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Verbose(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.LogHttpMessage(IGraphLogger, TraceLevel, TransactionDirection, HttpTraceType, String, String, String, IEnumerable>>, Int32, String, Nullable, Guid, Guid, String, String, Int32) LoggingExtensions.Metric(IGraphLogger, String, String, Int64, Dictionary, Boolean, String, Guid, String, String, Int32) LoggingExtensions.SerializeAndObfuscate(IGraphLogger, Object, Formatting) LoggingExtensions.Obfuscate(IGraphLogger, Object, ObfuscationTag) LoggingExtensions.GetHeaderText(IGraphLogger, IEnumerable>>) LoggingExtensions.CreateShim(IGraphLogger, String, Nullable, IEnumerable, ObfuscationConfiguration) LoggingExtensions.CreateILogger(IGraphLogger, String, Guid, LogEventType, IEnumerable) LoggingExtensions.EnterMethod(IGraphLogger, Guid, String, String, Int32) LoggingExtensions.LeaveMethod(IGraphLogger, Guid, String, String, Int32) See Also ObjectRoot IGraphLogger" }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClientFactory.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClientFactory.html", - "title": "Class GraphHttpClientFactory", - "keywords": "Class GraphHttpClientFactory The HTTP graph client factory. Inheritance Object ObjectRoot GraphHttpClientFactory Implements IGraphClientFactory Inherited Members ObjectRoot.GraphLogger Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphHttpClientFactory : ObjectRoot, IGraphClientFactory Constructors GraphHttpClientFactory(IGraphLogger, JsonSerializerSettings, HttpClient, String) Initializes a new instance of the GraphHttpClientFactory class. Declaration public GraphHttpClientFactory(IGraphLogger logger, JsonSerializerSettings serializerSettings, HttpClient httpClient = null, string correlationIdHeader = null) Parameters Type Name Description IGraphLogger logger Logger instance. Newtonsoft.Json.JsonSerializerSettings serializerSettings The serializer settings. HttpClient httpClient The HTTP client. String correlationIdHeader The correlation identifier header. Methods Create(IGraphLogger) Creates a new IGraphClient . Declaration public IGraphClient Create(IGraphLogger logger = null) Parameters Type Name Description IGraphLogger logger An optional IGraphLogger logger to be used in the new IGraphClient . Returns Type Description IGraphClient The IGraphClient . Implements IGraphClientFactory Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also ObjectRoot IGraphClientFactory" + "common/Microsoft.Graph.Communications.Common.OData.ODataSerializeAsTypeAttribute.html": { + "href": "common/Microsoft.Graph.Communications.Common.OData.ODataSerializeAsTypeAttribute.html", + "title": "Class ODataSerializeAsTypeAttribute", + "keywords": "Class ODataSerializeAsTypeAttribute Specify how a given object should be written/read on the wire. Inheritance Object Attribute ODataSerializeAsTypeAttribute Implements _Attribute Inherited Members Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, Boolean) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, Boolean) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo, Boolean) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, Boolean) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, Boolean) Attribute.GetCustomAttributes(Module, Type, Boolean) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, Boolean) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, Boolean) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, Boolean) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, Boolean) Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, Boolean) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, Boolean) Attribute.Equals(Object) Attribute.GetHashCode() Attribute.Match(Object) Attribute.IsDefaultAttribute() Attribute._Attribute.GetTypeInfoCount(UInt32) Attribute._Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) Attribute._Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) Attribute._Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) Attribute.TypeId Object.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] public class ODataSerializeAsTypeAttribute : Attribute, _Attribute Constructors ODataSerializeAsTypeAttribute(String, Boolean) Initializes a new instance of the ODataSerializeAsTypeAttribute class. Declaration public ODataSerializeAsTypeAttribute(string name, bool renameWhenSerialized = true) Parameters Type Name Description String name The name of the class. Boolean renameWhenSerialized If set to true use the Name to serialize the class. Properties Name Gets the name of the class. Declaration public string Name { get; } Property Value Type Description String RenameWhenSerialized Gets a value indicating whether to rename when serializing this object. When true, the object will be serialized to Name , otherwise the object will be serialized as the actual object name. Declaration public bool RenameWhenSerialized { get; } Property Value Type Description Boolean Implements System.Runtime.InteropServices._Attribute Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also Attribute" }, - "core/Microsoft.Graph.Communications.Core.Exceptions.ServiceException.html": { - "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ServiceException.html", - "title": "Class ServiceException", - "keywords": "Class ServiceException A Service Exception. Inheritance Object ServiceException Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax [Obsolete(\"Deprecated, please use Microsoft.Graph.ServiceException instead.\")] public class ServiceException : ServiceException Constructors ServiceException(Error, Exception) Initializes a new instance of the ServiceException class. Declaration [Obsolete(\"Deprecated, please use Microsoft.Graph.ServiceException instead.\")] public ServiceException(Error error = null, Exception innerException = null) Parameters Type Name Description Error error The error. Exception innerException The inner exception. ServiceException(Error, HttpResponseHeaders, HttpStatusCode, Exception) Initializes a new instance of the ServiceException class. Declaration [Obsolete(\"Deprecated, please use Microsoft.Graph.ServiceException instead.\")] public ServiceException(Error error, HttpResponseHeaders responseHeaders, HttpStatusCode statusCode, Exception innerException = null) Parameters Type Name Description Error error The error. HttpResponseHeaders responseHeaders The response headers. HttpStatusCode statusCode The status code. Exception innerException The inner exception. See Also ServiceException" + "bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayerSettings.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayerSettings.html", + "title": "Class AudioVideoFramePlayerSettings", + "keywords": "Class AudioVideoFramePlayerSettings AudioVideoFramePlayer settings. This will help configure the player settings. Inheritance Object AudioVideoFramePlayerSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioVideoFramePlayerSettings Constructors AudioVideoFramePlayerSettings(AudioSettings, VideoSettings, UInt32) Constructor Declaration public AudioVideoFramePlayerSettings(AudioSettings audioSettings, VideoSettings videoSettings, uint minEnqueuedMediaLengthInMs) Parameters Type Name Description AudioSettings audioSettings BufferSize needs to be set to the size of AudioMediaBuffer to be sent VideoSettings videoSettings UInt32 minEnqueuedMediaLengthInMs Properties AudioSettings Audio settings Declaration public AudioSettings AudioSettings { get; set; } Property Value Type Description AudioSettings MinEnqueuedMediaLengthInMs The minimum length after which the player will raise the LowOnFrames event Declaration public uint MinEnqueuedMediaLengthInMs { get; set; } Property Value Type Description UInt32 VideoSettings Video Settings Declaration public VideoSettings VideoSettings { get; set; } Property Value Type Description VideoSettings" + }, + "core/Microsoft.Graph.Communications.Core.Notifications.FailedNotificationEventArgs.html": { + "href": "core/Microsoft.Graph.Communications.Core.Notifications.FailedNotificationEventArgs.html", + "title": "Class FailedNotificationEventArgs", + "keywords": "Class FailedNotificationEventArgs Event arguments used when exceptions are raised in callbacks. Inheritance Object FailedNotificationEventArgs Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class FailedNotificationEventArgs Constructors FailedNotificationEventArgs(NotificationEventArgs, Exception) Initializes a new instance of the FailedNotificationEventArgs class. Declaration public FailedNotificationEventArgs(NotificationEventArgs notification, Exception exception) Parameters Type Name Description NotificationEventArgs notification The NotificationEventArgs instance containing the event data. Exception exception The exception. Properties Exception Gets the exception being raised. Declaration public Exception Exception { get; } Property Value Type Description Exception Notification Gets the notification that was being processed while this callback failed. Declaration public NotificationEventArgs Notification { get; } Property Value Type Description NotificationEventArgs" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.ContentTypeFilter.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.ContentTypeFilter.html", + "title": "Class ContentTypeFilter", + "keywords": "Class ContentTypeFilter Does match of content-type header. If content-type matches filter then whole body is removed. Inheritance Object BaseFilter BaseFilter < String , String > ContentTypeFilter Inherited Members BaseFilter.MatchableString BaseFilter.MatchEvaluator Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ContentTypeFilter : BaseFilter Constructors ContentTypeFilter(String, Func) Initializes a new instance of the ContentTypeFilter class. Declaration public ContentTypeFilter(string matchableContentTypeMediaType, Func matchEvaluator = null) Parameters Type Name Description String matchableContentTypeMediaType Type of the matchable content type media. Func < String , String > matchEvaluator The match evaluator. Methods IsContentTypeMatch(IEnumerable, HttpContent, out String) Determines whether [is content type match] [the specified filters]. Declaration public static bool IsContentTypeMatch(IEnumerable filters, HttpContent content, out string outputMessage) Parameters Type Name Description IEnumerable < ContentTypeFilter > filters The filters. HttpContent content The content. String outputMessage The output message. Returns Type Description Boolean true if [is content type match] [the specified filters]; otherwise, false . Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.ContentDispositionFilter.html": { "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.ContentDispositionFilter.html", "title": "Class ContentDispositionFilter", "keywords": "Class ContentDispositionFilter Does match of content disposition header. If content disposition matches filter then whole body is removed. Inheritance Object BaseFilter BaseFilter < String , String > ContentDispositionFilter Inherited Members BaseFilter.MatchableString BaseFilter.MatchEvaluator Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ContentDispositionFilter : BaseFilter Constructors ContentDispositionFilter(String, Func) Initializes a new instance of the ContentDispositionFilter class. Declaration public ContentDispositionFilter(string matchableString, Func matchEvaluator = null) Parameters Type Name Description String matchableString Name of the matchable content disposition. Func < String , String > matchEvaluator The match evaluator. Methods IsContentDispositionMatch(IEnumerable, HttpContent, out String) Determines whether [is content disposition match] [the specified filters]. Declaration public static bool IsContentDispositionMatch(IEnumerable filters, HttpContent content, out string outputMessage) Parameters Type Name Description IEnumerable < ContentDispositionFilter > filters The filters. HttpContent content The content. String outputMessage The output message. Returns Type Description Boolean true if [is content disposition match] [the specified filters]; otherwise, false . Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "core/Microsoft.Graph.Communications.Core.Exceptions.ClientException.html": { - "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ClientException.html", - "title": "Class ClientException", - "keywords": "Class ClientException Class for client error exception. Inheritance Object ClientException Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax [Obsolete(\"Deprecated, please use Microsoft.Graph.ClientException instead.\")] public class ClientException : ClientException Constructors ClientException(Error, Exception) Initializes a new instance of the ClientException class. Declaration [Obsolete(\"Deprecated, please use Microsoft.Graph.ClientException instead.\")] public ClientException(Error error, Exception innerException = null) Parameters Type Name Description Error error The Error to wrap. Exception innerException The Exception to wrap." - }, - "client/Microsoft.Graph.Communications.Resources.IResource.html": { - "href": "client/Microsoft.Graph.Communications.Resources.IResource.html", - "title": "Interface IResource", - "keywords": "Interface IResource The stateful resource interface. Inherited Members IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResource : IResourceBase, IDisposable Properties Id Gets the identifier. Declaration string Id { get; } Property Value Type Description String ModifiedDateTime Gets the last modified date time of this resource. Declaration DateTimeOffset ModifiedDateTime { get; } Property Value Type Description DateTimeOffset Resource Gets the resource. Declaration object Resource { get; } Property Value Type Description Object See Also IResourceBase" - }, - "common/Microsoft.Graph.Communications.Common.ObjectRootDisposable.html": { - "href": "common/Microsoft.Graph.Communications.Common.ObjectRootDisposable.html", - "title": "Class ObjectRootDisposable", - "keywords": "Class ObjectRootDisposable Base object. Inheritance Object Disposable ObjectRootDisposable TaskQueue Implements IDisposable Inherited Members Disposable.Dispose() Disposable.Dispose(Boolean) Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public abstract class ObjectRootDisposable : Disposable, IDisposable Constructors ObjectRootDisposable(IGraphLogger) Initializes a new instance of the ObjectRootDisposable class. Declaration protected ObjectRootDisposable(IGraphLogger logger) Parameters Type Name Description IGraphLogger logger Logger instance. Properties GraphLogger Gets the logger. Declaration protected IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "core/Microsoft.Graph.Communications.Core.Notifications.NotificationProcessor.html": { - "href": "core/Microsoft.Graph.Communications.Core.Notifications.NotificationProcessor.html", - "title": "Class NotificationProcessor", - "keywords": "Class NotificationProcessor The notification processor class. Inheritance Object NotificationProcessor Implements INotificationProcessor IDisposable Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class NotificationProcessor : Disposable, INotificationProcessor, IDisposable Constructors NotificationProcessor(IAuthenticationProvider, ISerializer) Initializes a new instance of the NotificationProcessor class. Declaration public NotificationProcessor(IAuthenticationProvider authenticationProvider, ISerializer serializer) Parameters Type Name Description IAuthenticationProvider authenticationProvider The authentication provider. ISerializer serializer The serializer. Exceptions Type Condition ArgumentNullException If the authentication provider is null. Properties AuthenticationProvider Gets the authentication provider. TODO: This should probably not be a part of the INotificationProcessor . Ideally the request is already validated prior to making it in here. This means that 1) Already sanitized by authentication provider and 2) The tenant/scenario id parameters extracted into the IGraphRequest. Declaration public IAuthenticationProvider AuthenticationProvider { get; } Property Value Type Description IAuthenticationProvider The authentication provider. Methods ExtractNotifications(String, ISerializer) Extracts the notifications from the specified content string. Declaration public static CommsNotifications ExtractNotifications(string content, ISerializer serializer) Parameters Type Name Description String content The content. ISerializer serializer The serializer. Returns Type Description CommsNotifications The deserialized CommsNotifications . Exceptions Type Condition ServiceException If the specified content is invalid. ProcessNotifications(Uri, String, String, Guid, Guid, IEnumerable>) Processes the notifications and raise the required callbacks. This function should be called in order for the SDK to raise any required events and process state changes. Declaration public void ProcessNotifications(Uri callbackUri, string content, string tenantId, Guid requestId, Guid scenarioId, IEnumerable> additionalData = null) Parameters Type Name Description Uri callbackUri The callback URI. String content The notifications content. String tenantId The tenant identifier. Guid requestId The request identifier. Guid scenarioId The scenario identifier. IEnumerable < KeyValuePair < String , Object >> additionalData Additional data associated with the notification. Events OnCollectionNotificationReceived Occurs when a collection notification is received. Declaration public event Action OnCollectionNotificationReceived Event Type Type Description Action < CollectionNotificationEventArgs > OnNotificationReceived Occurs when a notification is received. This is a global hook for all notifications. Declaration public event Action OnNotificationReceived Event Type Type Description Action < NotificationEventArgs > OnResourceNotificationReceived Occurs when a single resource notification is received. Declaration public event Action OnResourceNotificationReceived Event Type Type Description Action < NotificationEventArgs > Implements INotificationProcessor System.IDisposable See Also INotificationProcessor" - }, - "client/Microsoft.Graph.Communications.Client.Cache.ICache.html": { - "href": "client/Microsoft.Graph.Communications.Client.Cache.ICache.html", - "title": "Interface ICache", - "keywords": "Interface ICache The cache interface used to store and recover the data used by the SDK. Namespace : Microsoft.Graph.Communications.Client.Cache Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface ICache Methods GetDataAsync(IEnumerable, String, CancellationToken) Gets the serialized string of the data at the specified resource path asynchronously. Fetching data only happens in HA/DR scenarios, so could take longer. Declaration Task GetDataAsync(IEnumerable properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken)) where T : Entity Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < String > The recovered serialized data at the specified resource path. Type Parameters Name Description T The type of Entity to fetch. GetDataCollectionAsync(IEnumerable, String, CancellationToken) Gets the resource paths for the children of the collection with the specified resource path asynchronously. Fetching data only happens in HA/DR scenarios, so could take longer. Declaration Task> GetDataCollectionAsync(IEnumerable properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken)) where T : Entity Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IEnumerable < String >> The recovered collection or child resource paths. Type Parameters Name Description T The type of Entity contained in the collection. SetData(ChangeType, IResource, IEnumerable, String, Lazy) Sets the data under the specified resource path. These should be short running operations, as they block notification callbacks. Declaration void SetData(ChangeType change, IResource resource, IEnumerable properties, string resourcePath, Lazy serializedData) Parameters Type Name Description ChangeType change The type of change occuring. IResource resource The resource being serialized. IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. Lazy < String > serializedData The serialized data lazy string. For performance reasons the string is only serialized when requested." - }, - "client/Microsoft.Graph.Communications.Client.Cache.ServiceCache.html": { - "href": "client/Microsoft.Graph.Communications.Client.Cache.ServiceCache.html", - "title": "Class ServiceCache", - "keywords": "Class ServiceCache The cache that restores the data directly from the service. In this case there is no storage of data, as the service acts as the master. Inheritance Object ServiceCache Implements ICache Namespace : Microsoft.Graph.Communications.Client.Cache Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class ServiceCache : ObjectRootDisposable, ICache Constructors ServiceCache(IGraphLogger, IGraphClient, ISerializer, String) Initializes a new instance of the ServiceCache class. Declaration public ServiceCache(IGraphLogger logger, IGraphClient client, ISerializer serializer, string baseUri) Parameters Type Name Description IGraphLogger logger Logger instance. IGraphClient client The client. ISerializer serializer The serializer. String baseUri The base URI. Methods GetDataAsync(IEnumerable, String, CancellationToken) Gets the serialized string of the data at the specified resource path asynchronously. Fetching data only happens in HA/DR scenarios, so could take longer. Declaration public Task GetDataAsync(IEnumerable properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken)) where T : Entity Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < String > The recovered serialized data at the specified resource path. Type Parameters Name Description T The type of Entity to fetch. GetDataCollectionAsync(IEnumerable, String, CancellationToken) Gets the resource paths for the children of the collection with the specified resource path asynchronously. Fetching data only happens in HA/DR scenarios, so could take longer. Declaration public Task> GetDataCollectionAsync(IEnumerable properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken)) where T : Entity Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IEnumerable < String >> The recovered collection or child resource paths. Type Parameters Name Description T The type of Entity contained in the collection. SetData(ChangeType, IResource, IEnumerable, String, Lazy) Sets the data under the specified resource path. These should be short running operations, as they block notification callbacks. Declaration public void SetData(ChangeType change, IResource resource, IEnumerable properties, string resourcePath, Lazy serializedData) Parameters Type Name Description ChangeType change The type of change occuring. IResource resource The resource being serialized. IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. Lazy < String > serializedData The serialized data lazy string. For performance reasons the string is only serialized when requested. Implements ICache See Also ObjectRootDisposable ICache" - }, - "client/Microsoft.Graph.Communications.Resources.ResourceEventHandler-2.html": { - "href": "client/Microsoft.Graph.Communications.Resources.ResourceEventHandler-2.html", - "title": "Delegate ResourceEventHandler", - "keywords": "Delegate ResourceEventHandler The resource event handler delegate. Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public delegate void ResourceEventHandler(TSender sender, ResourceEventArgs e) where TEntity : Entity; Parameters Type Name Description TSender sender The sender. ResourceEventArgs e The event arguments. Type Parameters Name Description TSender The type of the resource. IResource TEntity The containing resource type. Entity Constructors ResourceEventHandler(Object, IntPtr) Declaration public ResourceEventHandler(object object, IntPtr method) Parameters Type Name Description Object object IntPtr method Methods BeginInvoke(TSender, ResourceEventArgs, AsyncCallback, Object) Declaration public virtual IAsyncResult BeginInvoke(TSender sender, ResourceEventArgs e, AsyncCallback callback, object object) Parameters Type Name Description TSender sender ResourceEventArgs e AsyncCallback callback Object object Returns Type Description IAsyncResult EndInvoke(IAsyncResult) Declaration public virtual void EndInvoke(IAsyncResult result) Parameters Type Name Description IAsyncResult result Invoke(TSender, ResourceEventArgs) Declaration public virtual void Invoke(TSender sender, ResourceEventArgs e) Parameters Type Name Description TSender sender ResourceEventArgs e" - }, - "common/Microsoft.Graph.Communications.Common.Exceptions.RoutingBadRequestException.html": { - "href": "common/Microsoft.Graph.Communications.Common.Exceptions.RoutingBadRequestException.html", - "title": "Class RoutingBadRequestException", - "keywords": "Class RoutingBadRequestException Indicate there's a bad request Inheritance Object Exception RoutingException RoutingBadRequestException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Exceptions Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class RoutingBadRequestException : RoutingException, ISerializable, _Exception Constructors RoutingBadRequestException(String) Initializes a new instance of the RoutingBadRequestException class. Declaration public RoutingBadRequestException(string message) Parameters Type Name Description String message message RoutingBadRequestException(String, Exception) Initializes a new instance of the RoutingBadRequestException class. Declaration public RoutingBadRequestException(string message, Exception innerException) Parameters Type Name Description String message message Exception innerException inner exception Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "client/Microsoft.Graph.Communications.Client.IPagedList-1.html": { - "href": "client/Microsoft.Graph.Communications.Client.IPagedList-1.html", - "title": "Interface IPagedList", - "keywords": "Interface IPagedList The paged list interface. Inherited Members IReadOnlyList.Item[Int32] IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IPagedList : IReadOnlyList, IReadOnlyCollection, IEnumerable, IEnumerable Type Parameters Name Description T The type of object to page. Properties AdditionalData Gets or sets the additional data. Declaration IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > NextLinkUrl Gets the next link URL taken from @odata.nextLink. Declaration Uri NextLinkUrl { get; } Property Value Type Description Uri Value Gets or sets the value in the current page of the list. Declaration IList Value { get; set; } Property Value Type Description IList See Also IList " - }, - "common/Microsoft.Graph.Communications.Common.OData.ODataTimeSpanConverter.html": { - "href": "common/Microsoft.Graph.Communications.Common.OData.ODataTimeSpanConverter.html", - "title": "Class ODataTimeSpanConverter", - "keywords": "Class ODataTimeSpanConverter Custom json converter for TimeSpans. Inheritance Object ODataTimeSpanConverter Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ODataTimeSpanConverter : JsonConverter Constructors ODataTimeSpanConverter() Declaration public ODataTimeSpanConverter() Properties CanWrite Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Methods CanConvert(Type) Declaration public override bool CanConvert(Type objectType) Parameters Type Name Description Type objectType Returns Type Description Boolean ReadJson(JsonReader, Type, Object, JsonSerializer) Deserializes the object to the correct type. Declaration public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonReader reader The Newtonsoft.Json.JsonReader to read from. Type objectType The interface type. Object existingValue The existing value of the object being read. Newtonsoft.Json.JsonSerializer serializer The Newtonsoft.Json.JsonSerializer for deserialization. Returns Type Description Object The deserialized object WriteJson(JsonWriter, Object, JsonSerializer) Declaration public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonWriter writer Object value Newtonsoft.Json.JsonSerializer serializer Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphResponse-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphResponse-1.html", - "title": "Class GraphResponse", - "keywords": "Class GraphResponse The base of the exchange of a IGraphRequest or IGraphResponse . Inheritance Object GraphResponse GraphResponse Implements IGraphResponse IGraphExchange IGraphExchange Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphResponse : IGraphResponse, IGraphExchange, IGraphExchange Type Parameters Name Description T Constructors GraphResponse(T, ResponseStatus) Initializes a new instance of the GraphResponse class. Create a new graph response Declaration public GraphResponse(T content, ResponseStatus status) Parameters Type Name Description T content The serialized content of the response. ResponseStatus status Status indicating success/failure/other for the response. GraphResponse(String, ResponseStatus, String) Initializes a new instance of the GraphResponse class. Declaration public GraphResponse(string errorContent, ResponseStatus status, string reasonPhrase) Parameters Type Name Description String errorContent Content of the error. ResponseStatus status The status. String reasonPhrase The reason phrase. Properties Content Declaration public T Content { get; set; } Property Value Type Description T ErrorContent Declaration public string ErrorContent { get; set; } Property Value Type Description String Properties Gets the properties of the exchange. Declaration public ICollection Properties { get; } Property Value Type Description ICollection < IGraphProperty > ReasonPhrase Declaration public string ReasonPhrase { get; set; } Property Value Type Description String Status Declaration public ResponseStatus Status { get; } Property Value Type Description ResponseStatus Methods ToString() Declaration public override string ToString() Returns Type Description String Overrides Object.ToString() Implements IGraphResponse IGraphExchange IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphResponseExtensions.ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable)" - }, - "client/Microsoft.Graph.Communications.Client.ICommunicationsClient.html": { - "href": "client/Microsoft.Graph.Communications.Client.ICommunicationsClient.html", - "title": "Interface ICommunicationsClient", - "keywords": "Interface ICommunicationsClient The CommunicationsClient interface. This is the entry point of the SDK and a reference to this instance must be held for the duration of the session. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface ICommunicationsClient : IDisposable Properties AppId Gets the application identifier. Declaration string AppId { get; } Property Value Type Description String AppName Gets the name of the application. Declaration string AppName { get; } Property Value Type Description String AuthenticationProvider Gets the authentication provider used to authenticate both inbound and outbound requests. Declaration IRequestAuthenticationProvider AuthenticationProvider { get; } Property Value Type Description IRequestAuthenticationProvider BaseUrl Gets the Graph service's base URL. Declaration string BaseUrl { get; } Property Value Type Description String GraphClient Gets the graph client. This is the Client used to communicate with the service. Declaration IGraphClient GraphClient { get; } Property Value Type Description IGraphClient GraphLogger Gets the graph logger. This is the logger used within the SDK. Declaration IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Id Gets the client identifier. Declaration Guid Id { get; } Property Value Type Description Guid Serializer Gets the serializer Declaration ISerializer Serializer { get; } Property Value Type Description ISerializer Methods ProcessNotifications(Uri, CommsNotifications, String, Guid, Guid, IDictionary) Processes the notifications and raise the required callbacks. This function should be called in order for the SDK to raise any required events and process state changes. Declaration void ProcessNotifications(Uri callbackUri, CommsNotifications notifications, string tenantId, Guid requestId, Guid scenarioId, IDictionary additionalData = null) Parameters Type Name Description Uri callbackUri The callback URI. CommsNotifications notifications The notifications. String tenantId The tenant identifier. Guid requestId The request identifier. Guid scenarioId The scenario identifier. IDictionary < String , Object > additionalData Additional data associated with the notification. RehydrateAsync(String, String, Guid) Re-hydrates the resource at the specified path asynchronously. Declaration Task RehydrateAsync(string resourcePath, string tenantId, Guid scenarioId = default(Guid)) Parameters Type Name Description String resourcePath The resource path. String tenantId The tenant identifier. Guid scenarioId The scenario identifier. Returns Type Description Task The Task . TerminateAsync(TimeSpan) Terminates this client asynchronously. This terminates all the calls, waits for dispose events, and disposes everything. Declaration Task TerminateAsync(TimeSpan timeout = default(TimeSpan)) Parameters Type Name Description TimeSpan timeout The timeout. Returns Type Description Task < Boolean > True if all instances terminated successfully, false otherwise. Events OnNotificationException Occurs when exceptions are raised on notification callbacks. Declaration event Action OnNotificationException Event Type Type Description Action < FailedNotificationEventArgs > OnNotificationProcessed Occurs when the notification has been processed by all callbacks. Declaration event Action OnNotificationProcessed Event Type Type Description Action < NotificationEventArgs > OnNotificationQueued Occurs when the notification has been queued into the backlog. Declaration event Action OnNotificationQueued Event Type Type Description Action < NotificationEventArgs > Extension Methods CommunicationsClientExtensions.ProcessNotificationAsync(ICommunicationsClient, HttpRequestMessage) CommunicationsClientExtensions.LogAndCreateResponse(ICommunicationsClient, HttpRequestMessage, Guid, Guid, CommsNotifications, HttpStatusCode, Stopwatch, Exception) CommunicationsClientExtensions.CreateResponse(ICommunicationsClient, HttpStatusCode, Guid, Guid, Object)" - }, - "client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClient.html": { - "href": "client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClient.html", - "title": "Class GraphAuthClient", - "keywords": "Class GraphAuthClient The graph auth client. Inheritance Object GraphAuthClient Namespace : Microsoft.Graph.Communications.Client.Transport Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class GraphAuthClient : GraphHttpClient Constructors GraphAuthClient(IGraphLogger, JsonSerializerSettings, HttpClient, IRequestAuthenticationProvider, ProductInfoHeaderValue, IEnumerable) Initializes a new instance of the GraphAuthClient class. Declaration public GraphAuthClient(IGraphLogger logger, JsonSerializerSettings jsonSerializerSettings, HttpClient httpClient, IRequestAuthenticationProvider authenticationProvider, ProductInfoHeaderValue userAgent, IEnumerable defaultProperties) Parameters Type Name Description IGraphLogger logger The logger. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. HttpClient httpClient The HTTP client. IRequestAuthenticationProvider authenticationProvider The authentication provider. ProductInfoHeaderValue userAgent The user agent. IEnumerable < IGraphProperty > defaultProperties The default properties. Exceptions Type Condition ArgumentNullException If the authentication provider is null. Methods SendHttpRequestAsync(IGraphRequest, CancellationToken) Declaration protected override Task> SendHttpRequestAsync(IGraphRequest graphRequest, CancellationToken cancellationToken) where T1 : class where T2 : class Parameters Type Name Description IGraphRequest graphRequest CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T1 T2 See Also GraphHttpClient" - }, - "client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClientFactory.html": { - "href": "client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClientFactory.html", - "title": "Class GraphAuthClientFactory", - "keywords": "Class GraphAuthClientFactory The HTTP graph client factory. Inheritance Object GraphAuthClientFactory Implements IGraphClientFactory Namespace : Microsoft.Graph.Communications.Client.Transport Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class GraphAuthClientFactory : ObjectRoot, IGraphClientFactory Constructors GraphAuthClientFactory(IGraphLogger, JsonSerializerSettings, IRequestAuthenticationProvider, ProductInfoHeaderValue, IEnumerable, HttpClient) Initializes a new instance of the GraphAuthClientFactory class. Declaration public GraphAuthClientFactory(IGraphLogger logger, JsonSerializerSettings jsonSerializerSettings, IRequestAuthenticationProvider authenticationProvider, ProductInfoHeaderValue userAgent, IEnumerable defaultProperties, HttpClient httpClient = null) Parameters Type Name Description IGraphLogger logger Logger instance. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. IRequestAuthenticationProvider authenticationProvider The authentication provider. ProductInfoHeaderValue userAgent The user agent. IEnumerable < IGraphProperty > defaultProperties The default properties. HttpClient httpClient The HTTP client. Properties AuthenticationProvider Gets the authentication provider. Declaration public IRequestAuthenticationProvider AuthenticationProvider { get; } Property Value Type Description IRequestAuthenticationProvider The authentication provider. GraphLogger Gets the graph logger. Declaration public IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Methods Create(IGraphLogger) Creates a new IGraphClient . Declaration public IGraphClient Create(IGraphLogger logger = null) Parameters Type Name Description IGraphLogger logger An optional IGraphLogger logger to be used in the new IGraphClient . Returns Type Description IGraphClient The IGraphClient . Implements IGraphClientFactory See Also ObjectRoot IGraphClientFactory" - }, - "common/Microsoft.Graph.Communications.Common.Exceptions.RoutingException.html": { - "href": "common/Microsoft.Graph.Communications.Common.Exceptions.RoutingException.html", - "title": "Class RoutingException", - "keywords": "Class RoutingException Generic routing exception Inheritance Object Exception RoutingException RoutingBadRequestException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Exceptions Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class RoutingException : Exception, ISerializable, _Exception Constructors RoutingException(String) Initializes a new instance of the RoutingException class. Declaration public RoutingException(string message) Parameters Type Name Description String message message RoutingException(String, Exception) Initializes a new instance of the RoutingException class. Declaration public RoutingException(string message, Exception innerException) Parameters Type Name Description String message message Exception innerException inner exception Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "common/Microsoft.Graph.Communications.Common.Observer-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.Observer-1.html", - "title": "Class Observer", - "keywords": "Class Observer Observer class. Inheritance Object Disposable Observer Implements IDisposable IObserver Inherited Members Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class Observer : Disposable, IDisposable, IObserver Type Parameters Name Description T Type of the value the observer returns. Constructors Observer(IObservable, Action, Action, Action) Initializes a new instance of the Observer class. Declaration public Observer(IObservable observable, Action onNext, Action onError = null, Action onCompleted = null) Parameters Type Name Description IObservable observable Observable object. Action onNext Callback for next. Action < Exception > onError Callback for error. Action onCompleted Callback for completed. Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) Explicit Interface Implementations IObserver.OnCompleted() Callback when observer has no more data. Declaration void IObserver.OnCompleted() IObserver.OnError(Exception) Callback when observer hits an error. Declaration void IObserver.OnError(Exception error) Parameters Type Name Description Exception error Exception info. IObserver.OnNext(T) Callback when data arrives. Declaration void IObserver.OnNext(T value) Parameters Type Name Description T value Observed value. Implements System.IDisposable System.IObserver Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "common/Microsoft.Graph.Communications.Common.OData.CamelCaseStringEnumConverter.html": { - "href": "common/Microsoft.Graph.Communications.Common.OData.CamelCaseStringEnumConverter.html", - "title": "Class CamelCaseStringEnumConverter", - "keywords": "Class CamelCaseStringEnumConverter Converts an System.Enum to and from its name string value. When converting to its string value it will use camelCase formatting. Inheritance Object CamelCaseStringEnumConverter Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class CamelCaseStringEnumConverter : StringEnumConverter Constructors CamelCaseStringEnumConverter() Initializes a new instance of the CamelCaseStringEnumConverter class. Declaration public CamelCaseStringEnumConverter() Properties CanWrite Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Methods CanConvert(Type) Declaration public override bool CanConvert(Type objectType) Parameters Type Name Description Type objectType Returns Type Description Boolean ReadJson(JsonReader, Type, Object, JsonSerializer) Declaration public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonReader reader Type objectType Object existingValue Newtonsoft.Json.JsonSerializer serializer Returns Type Description Object Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also Newtonsoft.Json.Converters.StringEnumConverter" - }, - "common/Microsoft.Graph.Communications.Common.StateMachine-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.StateMachine-1.html", - "title": "Class StateMachine", - "keywords": "Class StateMachine Lockfree enum-based state machine. Transitions are O(1). Inheritance Object StateMachine Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class StateMachine where TStateEnum : struct, IComparable, IFormattable, IConvertible Type Parameters Name Description TStateEnum The enum type which represents state. Constructors StateMachine(TStateEnum, StateMachine.Transition[]) Initializes a new instance of the StateMachine class. Declaration public StateMachine(TStateEnum initalState, StateMachine.Transition[] transitions) Parameters Type Name Description TStateEnum initalState State of the inital. StateMachine.Transition <>[] transitions The transitions. Properties State Gets the state. Declaration public TStateEnum State { get; } Property Value Type Description TStateEnum The state. Methods ToString() Returns a String that represents this instance. Declaration public override string ToString() Returns Type Description String A String that represents this instance. Overrides Object.ToString() TransitionState(TStateEnum) Transition to next state. Transition to same state is not allowed. Non valid transition throws exception. Declaration public TStateEnum TransitionState(TStateEnum newState) Parameters Type Name Description TStateEnum newState The new state. Returns Type Description TStateEnum Previous state Exceptions Type Condition Exception If transition is not allow, exception is thrown. TransitionStateSafe(TStateEnum) Transition to the next state. Transition to same state has to be allowed via transitions. Non valid transition returns null. Declaration public TStateEnum? TransitionStateSafe(TStateEnum newState) Parameters Type Name Description TStateEnum newState The new state. Returns Type Description Nullable Previous state or null; if transition is not valid. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphResponse.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphResponse.html", - "title": "Interface IGraphResponse", - "keywords": "Interface IGraphResponse The response got in exchange of a IGraphRequest . Inherited Members IGraphResponse.Status IGraphResponse.ReasonPhrase IGraphResponse.ErrorContent IGraphExchange.Content IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphResponse : IGraphResponse, IGraphExchange, IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphResponseExtensions.ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable)" - }, - "core/Microsoft.Graph.Communications.Core.Serialization.CommsSerializer.html": { - "href": "core/Microsoft.Graph.Communications.Core.Serialization.CommsSerializer.html", - "title": "Class CommsSerializer", - "keywords": "Class CommsSerializer An interface for serializing and deserializing JSON objects. This serializer is used throughout the Communications workload to provide extra functionality. Specifically it supports more robust serialization/deserialization of @odata.type property and deserialization of open type additional data. Inheritance Object CommsSerializer Implements ISerializer Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Serialization Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class CommsSerializer : ISerializer Constructors CommsSerializer(Boolean) Initializes a new instance of the CommsSerializer class. Declaration public CommsSerializer(bool pretty = false) Parameters Type Name Description Boolean pretty If set to true make the formatting pretty. CommsSerializer(Boolean, Assembly[]) Initializes a new instance of the CommsSerializer class. Declaration public CommsSerializer(bool pretty = false, params Assembly[] assemblies) Parameters Type Name Description Boolean pretty If set to true make the formatting pretty. Assembly [] assemblies The assemblies to use for deserialization. The CommsSerializer searches through the specified assemblies in order specified to find the @odata.type in the json payload. Properties CoreAssemblies Gets the list of core Assembly detected. Declaration public Assembly[] CoreAssemblies { get; } Property Value Type Description Assembly [] JsonSerializerSettings Gets the JSON serializer settings. Declaration public JsonSerializerSettings JsonSerializerSettings { get; } Property Value Type Description Newtonsoft.Json.JsonSerializerSettings Methods DeserializeObject(Stream) Declaration public T DeserializeObject(Stream stream) Parameters Type Name Description Stream stream Returns Type Description T Type Parameters Name Description T DeserializeObject(String) Declaration public T DeserializeObject(string inputString) Parameters Type Name Description String inputString Returns Type Description T Type Parameters Name Description T SerializeObject(Object) Declaration public string SerializeObject(object serializeableObject) Parameters Type Name Description Object serializeableObject Returns Type Description String Implements Microsoft.Graph.ISerializer See Also ISerializer" - }, - "common/Microsoft.Graph.Communications.Common.Transport.HttpResponseMessageExtensions.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.HttpResponseMessageExtensions.html", - "title": "Class HttpResponseMessageExtensions", - "keywords": "Class HttpResponseMessageExtensions Extensions for HttpResponseMessage class. Inheritance Object HttpResponseMessageExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpResponseMessageExtensions Methods GetHttpAndContentHeaders(HttpResponseMessage) Gets headers from the http response and the content. Declaration public static IEnumerable>> GetHttpAndContentHeaders(this HttpResponseMessage message) Parameters Type Name Description HttpResponseMessage message The message. Returns Type Description IEnumerable < KeyValuePair < String , IEnumerable < String >>> The list of http and content headers. GetOutcomeFromResponseOrException(Nullable, Exception) Try extracting outcome outcome from HTTP response status code or exception Declaration public static string GetOutcomeFromResponseOrException(int? statusCode, Exception exception) Parameters Type Name Description Nullable < Int32 > statusCode HTTP response status code Exception exception The exception Returns Type Description String Outcome string ToGraphResponseAsync(HttpResponseMessage) Converts HttpResponseMessage to an instance of IGraphResponse . Declaration public static Task ToGraphResponseAsync(this HttpResponseMessage httpResponse) Parameters Type Name Description HttpResponseMessage httpResponse HTTP response to be converted. Returns Type Description Task < IGraphResponse > IGraphResponse corresponding to httpResponse . ToGraphResponseAsync(HttpResponseMessage, JsonSerializerSettings) Converts HttpResponseMessage to an instance of IGraphResponse . Declaration public static Task> ToGraphResponseAsync(this HttpResponseMessage httpResponse, JsonSerializerSettings serializerSettings = null) where T : class Parameters Type Name Description HttpResponseMessage httpResponse HTTP response to be converted. Newtonsoft.Json.JsonSerializerSettings serializerSettings Add serializer that can serialize the content. Returns Type Description Task < IGraphResponse > IGraphResponse corresponding to httpResponse . Type Parameters Name Description T Type of the expected response." - }, - "common/Microsoft.Graph.Communications.Common.WeakKeyDictionary-2.html": { - "href": "common/Microsoft.Graph.Communications.Common.WeakKeyDictionary-2.html", - "title": "Class WeakKeyDictionary", - "keywords": "Class WeakKeyDictionary Dictionary with weak reference for the key. Inheritance Object ConcurrentDictionary < WeakKey , TValue> WeakKeyDictionary Implements IDictionary < WeakKey , TValue> ICollection < KeyValuePair < WeakKey , TValue>> IDictionary ICollection IReadOnlyDictionary < WeakKey , TValue> IReadOnlyCollection < KeyValuePair < WeakKey , TValue>> IEnumerable < KeyValuePair < WeakKey , TValue>> IEnumerable Inherited Members ConcurrentDictionary, TValue>.TryAdd(WeakKey, TValue) ConcurrentDictionary, TValue>.ContainsKey(WeakKey) ConcurrentDictionary, TValue>.TryRemove(WeakKey, TValue) ConcurrentDictionary, TValue>.TryGetValue(WeakKey, TValue) ConcurrentDictionary, TValue>.TryUpdate(WeakKey, TValue, TValue) ConcurrentDictionary, TValue>.Clear() System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.CopyTo(System.Collections.Generic.KeyValuePair, TValue>[], System.Int32) ConcurrentDictionary, TValue>.ToArray() ConcurrentDictionary, TValue>.GetEnumerator() ConcurrentDictionary, TValue>.GetOrAdd(WeakKey, Func, TValue>) ConcurrentDictionary, TValue>.GetOrAdd(WeakKey, TValue) ConcurrentDictionary, TValue>.GetOrAdd(WeakKey, Func, TArg, TValue>, TArg) ConcurrentDictionary, TValue>.AddOrUpdate(WeakKey, Func, TArg, TValue>, Func, TValue, TArg, TValue>, TArg) ConcurrentDictionary, TValue>.AddOrUpdate(WeakKey, Func, TValue>, Func, TValue, TValue>) ConcurrentDictionary, TValue>.AddOrUpdate(WeakKey, TValue, Func, TValue, TValue>) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.IDictionary, TValue>.Add(Microsoft.Graph.Communications.Common.WeakKey, TValue) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.IDictionary, TValue>.Remove(Microsoft.Graph.Communications.Common.WeakKey) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.Add(System.Collections.Generic.KeyValuePair, TValue>) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.Contains(System.Collections.Generic.KeyValuePair, TValue>) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.Remove(System.Collections.Generic.KeyValuePair, TValue>) ConcurrentDictionary, TValue>.IEnumerable.GetEnumerator() ConcurrentDictionary, TValue>.IDictionary.Add(Object, Object) ConcurrentDictionary, TValue>.IDictionary.Contains(Object) ConcurrentDictionary, TValue>.IDictionary.GetEnumerator() ConcurrentDictionary, TValue>.IDictionary.Remove(Object) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.IDictionary.get_Item(System.Object) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.IDictionary.set_Item(System.Object, System.Object) ConcurrentDictionary, TValue>.ICollection.CopyTo(Array, Int32) ConcurrentDictionary, TValue>.Item[WeakKey] ConcurrentDictionary, TValue>.Count ConcurrentDictionary, TValue>.IsEmpty ConcurrentDictionary, TValue>.Keys System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.IReadOnlyDictionary, TValue>.Keys ConcurrentDictionary, TValue>.Values System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.IReadOnlyDictionary, TValue>.Values System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.IsReadOnly ConcurrentDictionary, TValue>.IDictionary.IsFixedSize ConcurrentDictionary, TValue>.IDictionary.IsReadOnly ConcurrentDictionary, TValue>.IDictionary.Keys ConcurrentDictionary, TValue>.IDictionary.Values ConcurrentDictionary, TValue>.IDictionary.Item[Object] ConcurrentDictionary, TValue>.ICollection.IsSynchronized ConcurrentDictionary, TValue>.ICollection.SyncRoot Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class WeakKeyDictionary : ConcurrentDictionary, TValue>, IDictionary, TValue>, ICollection, TValue>>, IDictionary, ICollection, IReadOnlyDictionary, TValue>, IReadOnlyCollection, TValue>>, IEnumerable, TValue>>, IEnumerable where TKey : class Type Parameters Name Description TKey Key type which must be a reference type. TValue Value type. Constructors WeakKeyDictionary() Declaration public WeakKeyDictionary() Methods Cleanup() Cleans keys where the weak references have been garbage collected. Declaration public void Cleanup() Implements System.Collections.Generic.IDictionary System.Collections.Generic.ICollection System.Collections.IDictionary System.Collections.ICollection System.Collections.Generic.IReadOnlyDictionary System.Collections.Generic.IReadOnlyCollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) CollectionUtils.ForEach(IEnumerable, Action) CollectionUtils.ForEachParallel(IEnumerable, Action, IGraphLogger) CollectionUtils.GetValueOrDefault(IDictionary, TKey) CollectionUtils.GetValueOrDefault(IDictionary, TKey, TValue) CollectionUtils.AddRange(ICollection, IEnumerable) CollectionUtils.ToSortedList(IEnumerable, Func) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.Any(IEnumerable) Validator.FirstObject(IEnumerable, Func) Validator.FirstObject(IEnumerable) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.NotEmpty(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) Validator.VerifyNotContainsKey(IDictionary, TK) Validator.VerifyContainsKey(IDictionary, TK) Validator.VerifyContainsKey(IReadOnlyDictionary, TK) Validator.VerifyContains(IEnumerable, T)" - }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphClient.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphClient.html", - "title": "Interface IGraphClient", - "keywords": "Interface IGraphClient This class abstracts any communication with different services. This client acts at an object level rather than wire level and thus providing richer experience when working with complex objects. Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphClient Properties DefaultProperties Gets the default properties. Declaration IEnumerable DefaultProperties { get; } Property Value Type Description IEnumerable < IGraphProperty > GraphLogger Gets the graph logger. Declaration IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Methods SendAsync(IGraphRequest, CancellationToken) Send a request as an asynchronous operation. Declaration Task SendAsync(IGraphRequest request, CancellationToken cancellationToken = default(CancellationToken)) where TRequest : class Parameters Type Name Description IGraphRequest request The request message to send. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IGraphResponse > The task object representing the asynchronous operation. Type Parameters Name Description TRequest Type of the content present in the request. SendAsync(IGraphRequest, CancellationToken) Send a request as an asynchronous operation. Declaration Task> SendAsync(IGraphRequest request, CancellationToken cancellationToken = default(CancellationToken)) where TRequest : class where TResponse : class Parameters Type Name Description IGraphRequest request The request message to send. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IGraphResponse > The task object representing the asynchronous operation. Type Parameters Name Description TRequest Type of the content present in the request. TResponse Type of the expected content in response. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" - }, - "core/Microsoft.Graph.Communications.Core.Notifications.CollectionNotificationEventArgs.html": { - "href": "core/Microsoft.Graph.Communications.Core.Notifications.CollectionNotificationEventArgs.html", - "title": "Class CollectionNotificationEventArgs", - "keywords": "Class CollectionNotificationEventArgs The collection notification event args. Inheritance Object NotificationEventArgs CollectionNotificationEventArgs Inherited Members NotificationEventArgs.NotificationId NotificationEventArgs.CallbackUri NotificationEventArgs.Notification NotificationEventArgs.TenantId NotificationEventArgs.RequestId NotificationEventArgs.ScenarioId NotificationEventArgs.ChangeType NotificationEventArgs.AdditionalData Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class CollectionNotificationEventArgs : NotificationEventArgs Constructors CollectionNotificationEventArgs(Uri, CommsNotification, ChangeType, IReadOnlyList) Initializes a new instance of the CollectionNotificationEventArgs class. Declaration public CollectionNotificationEventArgs(Uri callbackUri, CommsNotification notification, ChangeType changeType, IReadOnlyList resourceData) Parameters Type Name Description Uri callbackUri The callback URI. CommsNotification notification The notification. ChangeType changeType Type of the change. IReadOnlyList < Object > resourceData The resource data. Properties ResourceData Gets the resource data object list. Declaration public IReadOnlyList ResourceData { get; } Property Value Type Description IReadOnlyList < Object > The resource data object list. See Also NotificationEventArgs" - }, - "common/Microsoft.Graph.Communications.Common.CollectionUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.CollectionUtils.html", - "title": "Class CollectionUtils", - "keywords": "Class CollectionUtils Collection Utilities Inheritance Object CollectionUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class CollectionUtils Methods AddRange(ICollection, IEnumerable) Adds the range of source values into target. Declaration public static void AddRange(this ICollection target, IEnumerable source) Parameters Type Name Description ICollection target The target. IEnumerable source The source. Type Parameters Name Description T The type of Collection ForEach(IEnumerable, Action) Analogous to IList.ForEach but for IEnumerable Declaration public static void ForEach(this IEnumerable enumerable, Action action) Parameters Type Name Description IEnumerable enumerable Enumeration Action action Action to invoke on each element Type Parameters Name Description T Element type. ForEachParallel(IEnumerable, Action, IGraphLogger) Analogous to IList.ForEach but for IEnumerable Declaration public static Exception ForEachParallel(this IEnumerable enumerable, Action action, IGraphLogger logger) Parameters Type Name Description IEnumerable enumerable Enumeration Action action Action to invoke on each element IGraphLogger logger Instance of the Logger Returns Type Description Exception Exception if any. Type Parameters Name Description T Element type GetValueOrDefault(IDictionary, TKey) Get Value or default Declaration public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key) Parameters Type Name Description IDictionary dictionary Dictionary instance TKey key Key to lookup Returns Type Description TValue Value from dictionary or default value. Type Parameters Name Description TKey Type of the key TValue Type of the value GetValueOrDefault(IDictionary, TKey, TValue) Get Value or default Declaration public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key, TValue defaultValue) Parameters Type Name Description IDictionary dictionary Dictionary instance TKey key Key to lookup TValue defaultValue The default value to be returned if it doesn't exist. Returns Type Description TValue Value from dictionary or default value. Type Parameters Name Description TKey Type of the key TValue Type of the value ToSortedList(IEnumerable, Func) Converts sequence to a sorted list. Declaration public static SortedList ToSortedList(this IEnumerable sequence, Func keySelector) Parameters Type Name Description IEnumerable sequence The sequence. Func keySelector The function selector which provides a key given the value. Returns Type Description SortedList Sorted list. Type Parameters Name Description TKey The type of the key. TValue The type of the value. TryRemoveAndDispose(ConcurrentDictionary, TKey) Try to remove key from concurrent dictionary and dispose the value. Declaration public static void TryRemoveAndDispose(this ConcurrentDictionary dictionary, TKey key) where TValue : IDisposable Parameters Type Name Description ConcurrentDictionary dictionary Dictionary to clean up TKey key Key to lookup Type Parameters Name Description TKey Key type TValue Value type" + "bot_media/Microsoft.Skype.Bots.Media.MediaQualityState.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaQualityState.html", + "title": "Enum MediaQualityState", + "keywords": "Enum MediaQualityState Indicates the media quality state Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaQualityState Fields Name Description Detected Detected Recovered Recovered" }, - "common/Microsoft.Graph.Communications.Common.Utilities.html": { - "href": "common/Microsoft.Graph.Communications.Common.Utilities.html", - "title": "Class Utilities", - "keywords": "Class Utilities Utilities class. Inheritance Object Utilities Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class Utilities Methods CombineHashCodes(Object[]) Combine several hash codes into a single hash code Declaration public static int CombineHashCodes(params object[] args) Parameters Type Name Description Object [] args Objects to combine into a single hash. Returns Type Description Int32 Combined hash code. DecodeReplacesContextFromBase64(String) Decodes the replaces context for consultative call transfer scenario. Declaration public static Uri DecodeReplacesContextFromBase64(this string replacesContext) Parameters Type Name Description String replacesContext The replaces context. Returns Type Description Uri The decoded replaces URI. Exceptions Type Condition InvalidOperationException Replaces context provided for consultative transfer is invalid. EncodeReplacesUriToBase64(Uri) Base64 Encodes the replaces URI for consultative call transfer scenario. Declaration public static string EncodeReplacesUriToBase64(this Uri replacesUri) Parameters Type Name Description Uri replacesUri The replaces URI. Returns Type Description String The encoded replaces context. SafeDispose(ref T, IGraphLogger) Safely dispose members. Declaration public static void SafeDispose(ref T t, IGraphLogger logger = null) where T : class, IDisposable Parameters Type Name Description T t Reference to member. IGraphLogger logger Logger instance. Type Parameters Name Description T Type of the member." + "bot_media/Microsoft.Skype.Bots.Media.DataType.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.DataType.html", + "title": "Enum DataType", + "keywords": "Enum DataType Reserved for internal use. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum DataType Fields Name Description MultichannelAudio Reserved for internal use. Transcript Reserved for internal use." }, - "core/Microsoft.Graph.Communications.Core.Notifications.INotificationProcessor.html": { - "href": "core/Microsoft.Graph.Communications.Core.Notifications.INotificationProcessor.html", - "title": "Interface INotificationProcessor", - "keywords": "Interface INotificationProcessor The notification processor interface. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public interface INotificationProcessor : IDisposable Properties AuthenticationProvider Gets the authentication provider. TODO: This should probably not be a part of the INotificationProcessor . Ideally the request is already validated prior to making it in here. This means that 1) Already sanitized by authentication provider and 2) The tenant/scenario id parameters extracted into the IGraphRequest. Declaration IAuthenticationProvider AuthenticationProvider { get; } Property Value Type Description IAuthenticationProvider The authentication provider. Methods ProcessNotifications(Uri, String, String, Guid, Guid, IEnumerable>) Processes the notifications and raise the required callbacks. This function should be called in order for the SDK to raise any required events and process state changes. Declaration void ProcessNotifications(Uri callbackUri, string content, string tenantId, Guid requestId, Guid scenarioId, IEnumerable> additionalData = null) Parameters Type Name Description Uri callbackUri The callback URI. String content The notifications content. String tenantId The tenant identifier. Guid requestId The request identifier. Guid scenarioId The scenario identifier. IEnumerable < KeyValuePair < String , Object >> additionalData Additional data associated with the notification. Events OnCollectionNotificationReceived Occurs when a collection notification is received. Declaration event Action OnCollectionNotificationReceived Event Type Type Description Action < CollectionNotificationEventArgs > OnNotificationReceived Occurs when a notification is received. This is a global hook for all notifications. Declaration event Action OnNotificationReceived Event Type Type Description Action < NotificationEventArgs > OnResourceNotificationReceived Occurs when a single resource notification is received. Declaration event Action OnResourceNotificationReceived Event Type Type Description Action < NotificationEventArgs > Extension Methods NotificationProcessorExtensions.ProcessNotificationAsync(INotificationProcessor, HttpRequestMessage)" + "bot_media/Microsoft.Skype.Bots.Media.AudioMetrics.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioMetrics.html", + "title": "Class AudioMetrics", + "keywords": "Class AudioMetrics Audio-specific QoE metrics Inheritance Object AudioMetrics Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioMetrics Constructors AudioMetrics() Declaration public AudioMetrics() Properties AverageInboundNetworkJitter Average network jitter on the inbound media stream Declaration public TimeSpan AverageInboundNetworkJitter { get; set; } Property Value Type Description TimeSpan MaximumInboundNetworkJitter Maximum network jitter on the inbound media stream Declaration public TimeSpan MaximumInboundNetworkJitter { get; set; } Property Value Type Description TimeSpan" }, - "common/Microsoft.Graph.Communications.Common.TaskQueue.html": { - "href": "common/Microsoft.Graph.Communications.Common.TaskQueue.html", - "title": "Class TaskQueue", - "keywords": "Class TaskQueue Task queue to encapsulate chaining of tasks. Inheritance Object Disposable ObjectRootDisposable TaskQueue Implements IDisposable Inherited Members ObjectRootDisposable.GraphLogger Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class TaskQueue : ObjectRootDisposable, IDisposable Constructors TaskQueue(IGraphLogger, Task) Initializes a new instance of the TaskQueue class. Declaration public TaskQueue(IGraphLogger logger, Task antecedent = null) Parameters Type Name Description IGraphLogger logger Logger instance. Task antecedent Optional antecedent task. Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) EnqueueAsync(Func) Enqueue an operation Declaration public Task EnqueueAsync(Func operation) Parameters Type Name Description Func < Task , Task > operation Operation to queue. Returns Type Description Task A task that represents the queued operation. Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Exceptions.InvalidStateTransitionException.html": { + "href": "common/Microsoft.Graph.Communications.Common.Exceptions.InvalidStateTransitionException.html", + "title": "Class InvalidStateTransitionException", + "keywords": "Class InvalidStateTransitionException Exception to throw when a invalid transition is requested Inheritance Object Exception InvalidStateTransitionException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Exceptions Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class InvalidStateTransitionException : Exception, ISerializable, _Exception Constructors InvalidStateTransitionException(String) Initializes a new instance of the InvalidStateTransitionException class. Declaration public InvalidStateTransitionException(string message) Parameters Type Name Description String message the exception message Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.AutoClean.html": { - "href": "common/Microsoft.Graph.Communications.Common.AutoClean.html", - "title": "Class AutoClean", - "keywords": "Class AutoClean Helper class to automatically cleanup. Inheritance Object Disposable AutoClean AutoClean Implements IDisposable Inherited Members Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class AutoClean : Disposable, IDisposable Constructors AutoClean(Action) Initializes a new instance of the AutoClean class. Declaration public AutoClean(Action action) Parameters Type Name Description Action action Cleanup action. Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Telemetry.CallerInfo.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.CallerInfo.html", + "title": "Class CallerInfo", + "keywords": "Class CallerInfo Class that encapsulates the caller's (creator's) information Inheritance Object CallerInfo Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class CallerInfo Constructors CallerInfo(String, String, Int32) Initializes a new instance of the CallerInfo class. Declaration public CallerInfo(string memberName = \"\", string filePath = \"\", int lineNumber = 0) Parameters Type Name Description String memberName Name of the member. String filePath The file path. Int32 lineNumber The line number. Methods GetHashCode() Returns a hash code for this instance. Declaration public override int GetHashCode() Returns Type Description Int32 A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. Overrides Object.GetHashCode() ToString() Returns a String that represents the caller info. Declaration public override string ToString() Returns Type Description String A String that represents the caller info. Overrides Object.ToString() Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphResponseException.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphResponseException.html", - "title": "Class GraphResponseException", - "keywords": "Class GraphResponseException Class representing GraphResponseException Inheritance Object Exception GraphResponseException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphResponseException : Exception, ISerializable, _Exception Constructors GraphResponseException(IGraphResponse) Initializes a new instance of the GraphResponseException class. Declaration public GraphResponseException(IGraphResponse errorResponse) Parameters Type Name Description IGraphResponse errorResponse The error response. Properties Response Gets the response. Declaration public IGraphResponse Response { get; } Property Value Type Description IGraphResponse The response. Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also Exception" + "common/Microsoft.Graph.Communications.Common.Transport.IGraphHttpClient.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphHttpClient.html", + "title": "Interface IGraphHttpClient", + "keywords": "Interface IGraphHttpClient Interface for Http transport client. Gives us a way to work with different instances of GraphClient through Dependency Injection. Inherited Members IGraphClient.SendAsync(IGraphRequest, CancellationToken) IGraphClient.SendAsync(IGraphRequest, CancellationToken) IGraphClient.GraphLogger IGraphClient.DefaultProperties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphHttpClient : IGraphClient Properties CustomRedirectUriGenerator Gets or sets the custom redirect URI generator. This is called in case of a redirect (3XX) response from the request. Clients can use this to read the response and give the new redirect url to call in the next request. Declaration Func CustomRedirectUriGenerator { get; set; } Property Value Type Description Func < HttpResponseMessage , Uri > The custom redirect URI generator. Methods Clone(HttpClient) Clones this instance with optional overrides. Declaration IGraphHttpClient Clone(HttpClient httpClient = null) Parameters Type Name Description HttpClient httpClient The HTTP client to replace the original. Returns Type Description IGraphHttpClient Cloned client with the updated properties. SendRawHttpRequestAsync(HttpRequestMessage, CancellationToken) Send a Http request as an asynchronous operation. The content sent using this is not parsed or logged. Declaration Task SendRawHttpRequestAsync(HttpRequestMessage httpRequest, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description HttpRequestMessage httpRequest The http request message to send. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < HttpResponseMessage > The task object representing the asynchronous operation. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also IGraphClient" }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphExchange-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphExchange-1.html", - "title": "Interface IGraphExchange", - "keywords": "Interface IGraphExchange The base of the exchange of a IGraphRequest or IGraphResponse . Inherited Members IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphExchange : IGraphExchange Type Parameters Name Description T Type of the body of exchange. Properties Content Gets or sets the content of the exchange. Declaration T Content { get; set; } Property Value Type Description T Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClientContainer.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClientContainer.html", + "title": "Class GraphHttpClientContainer", + "keywords": "Class GraphHttpClientContainer This class is used to handle multiple http clients within one service. This class extends the concurrent dictionary and contains a mapping from a key for the client to the http client itself. Inheritance Object ConcurrentDictionary < String , IGraphHttpClient > GraphHttpClientContainer Implements IDictionary < String , IGraphHttpClient > ICollection < KeyValuePair < String , IGraphHttpClient >> IDictionary ICollection IReadOnlyDictionary < String , IGraphHttpClient > IReadOnlyCollection < KeyValuePair < String , IGraphHttpClient >> IEnumerable < KeyValuePair < String , IGraphHttpClient >> IEnumerable Inherited Members ConcurrentDictionary.TryAdd(String, IGraphHttpClient) ConcurrentDictionary.ContainsKey(String) ConcurrentDictionary.TryRemove(String, IGraphHttpClient) ConcurrentDictionary.TryGetValue(String, IGraphHttpClient) ConcurrentDictionary.TryUpdate(String, IGraphHttpClient, IGraphHttpClient) ConcurrentDictionary.Clear() System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.CopyTo(System.Collections.Generic.KeyValuePair[], System.Int32) ConcurrentDictionary.ToArray() ConcurrentDictionary.GetEnumerator() ConcurrentDictionary.GetOrAdd(String, Func) ConcurrentDictionary.GetOrAdd(String, IGraphHttpClient) ConcurrentDictionary.GetOrAdd(String, Func, TArg) ConcurrentDictionary.AddOrUpdate(String, Func, Func, TArg) ConcurrentDictionary.AddOrUpdate(String, Func, Func) ConcurrentDictionary.AddOrUpdate(String, IGraphHttpClient, Func) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.IDictionary.Add(System.String, Microsoft.Graph.Communications.Common.Transport.IGraphHttpClient) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.IDictionary.Remove(System.String) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.Add(System.Collections.Generic.KeyValuePair) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.Contains(System.Collections.Generic.KeyValuePair) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.Remove(System.Collections.Generic.KeyValuePair) ConcurrentDictionary.IEnumerable.GetEnumerator() ConcurrentDictionary.IDictionary.Add(Object, Object) ConcurrentDictionary.IDictionary.Contains(Object) ConcurrentDictionary.IDictionary.GetEnumerator() ConcurrentDictionary.IDictionary.Remove(Object) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.IDictionary.get_Item(System.Object) System.Collections.Concurrent.ConcurrentDictionary.System.Collections.IDictionary.set_Item(System.Object, System.Object) ConcurrentDictionary.ICollection.CopyTo(Array, Int32) ConcurrentDictionary.Item[String] ConcurrentDictionary.Count ConcurrentDictionary.IsEmpty ConcurrentDictionary.Keys System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.IReadOnlyDictionary.Keys ConcurrentDictionary.Values System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.IReadOnlyDictionary.Values System.Collections.Concurrent.ConcurrentDictionary.System.Collections.Generic.ICollection>.IsReadOnly ConcurrentDictionary.IDictionary.IsFixedSize ConcurrentDictionary.IDictionary.IsReadOnly ConcurrentDictionary.IDictionary.Keys ConcurrentDictionary.IDictionary.Values ConcurrentDictionary.IDictionary.Item[Object] ConcurrentDictionary.ICollection.IsSynchronized ConcurrentDictionary.ICollection.SyncRoot Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphHttpClientContainer : ConcurrentDictionary, IDictionary, ICollection>, IDictionary, ICollection, IReadOnlyDictionary, IReadOnlyCollection>, IEnumerable>, IEnumerable Constructors GraphHttpClientContainer(IGraphHttpClient) Initializes a new instance of the GraphHttpClientContainer class. Declaration public GraphHttpClientContainer(IGraphHttpClient defaultGraphHttpClient) Parameters Type Name Description IGraphHttpClient defaultGraphHttpClient The default graph HTTP client. Properties DefaultGraphHttpClient Gets the default graph HTTP client. Declaration public IGraphHttpClient DefaultGraphHttpClient { get; } Property Value Type Description IGraphHttpClient Implements System.Collections.Generic.IDictionary System.Collections.Generic.ICollection System.Collections.IDictionary System.Collections.ICollection System.Collections.Generic.IReadOnlyDictionary System.Collections.Generic.IReadOnlyCollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) CollectionUtils.ForEach(IEnumerable, Action) CollectionUtils.ForEachParallel(IEnumerable, Action, IGraphLogger) CollectionUtils.GetValueOrDefault(IDictionary, TKey) CollectionUtils.GetValueOrDefault(IDictionary, TKey, TValue) CollectionUtils.AddRange(ICollection, IEnumerable) CollectionUtils.ToSortedList(IEnumerable, Func) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.Any(IEnumerable) Validator.FirstObject(IEnumerable, Func) Validator.FirstObject(IEnumerable) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.NotEmpty(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) Validator.VerifyNotContainsKey(IDictionary, TK) Validator.VerifyContainsKey(IDictionary, TK) Validator.VerifyContainsKey(IReadOnlyDictionary, TK) Validator.VerifyContains(IEnumerable, T)" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.HeaderFilter.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.HeaderFilter.html", - "title": "Class HeaderFilter", - "keywords": "Class HeaderFilter Header filters act as whitelists. Inheritance Object BaseFilter BaseFilter < IEnumerable < String >, String > HeaderFilter Inherited Members BaseFilter, String>.MatchableString BaseFilter, String>.MatchEvaluator Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class HeaderFilter : BaseFilter, string> Constructors HeaderFilter(String) Initializes a new instance of the HeaderFilter class. Declaration public HeaderFilter(string matchableHeaderName) Parameters Type Name Description String matchableHeaderName Name of the matchable header. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventFormatterFlags.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventFormatterFlags.html", + "title": "Enum LogEventFormatterFlags", + "keywords": "Enum LogEventFormatterFlags The log event formatter enums Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum LogEventFormatterFlags Fields Name Description ForDefault For default case, which includes all fields. ForILoggerFactory For ILoggerFactory binding format, which doesn't include component and level, as these fields are set in ILogger outside of message. IncludeManagedThreadId Managed thread ID IncludeProcessId Process ID IncludesCallInfo Call info IncludesComponent Component IncludesCorrelationId Correlation ID IncludesLevel Level IncludesProperties Properties IncludesTimestamp Timestamp Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(LogEventFormatterFlags, String, String) Validator.Equals(LogEventFormatterFlags, String) Validator.NotEquals(LogEventFormatterFlags, String, String)" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.UriFilter.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.UriFilter.html", - "title": "Class UriFilter", - "keywords": "Class UriFilter URI Filter. Any group matches from REGEX are obfuscated. Inheritance Object BaseFilter BaseFilter < Uri , Regex > UriFilter Inherited Members BaseFilter.MatchableString BaseFilter.MatchEvaluator Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class UriFilter : BaseFilter Constructors UriFilter(Regex) Initializes a new instance of the UriFilter class. Declaration public UriFilter(Regex matchableSubtring) Parameters Type Name Description Regex matchableSubtring The matchable REGEX. Use captures for obfuscation. Use obfuscation tag names as group names for specific object Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLoggerWrapper.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLoggerWrapper.html", + "title": "Class GraphLoggerWrapper", + "keywords": "Class GraphLoggerWrapper The ILogger wrapper for IGraphLogger. Inheritance Object GraphLoggerWrapper Implements ILogger Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphLoggerWrapper : ILogger Constructors GraphLoggerWrapper(IGraphLogger, String, Guid, LogEventType, IEnumerable) Initializes a new instance of the GraphLoggerWrapper class. Declaration public GraphLoggerWrapper(IGraphLogger graphLogger, string component = null, Guid correlationId = default(Guid), LogEventType eventType = LogEventType.Trace, IEnumerable properties = null) Parameters Type Name Description IGraphLogger graphLogger Graph logger instance String component The component in which log is created Guid correlationId The correlation identifier. LogEventType eventType Log event type IEnumerable < Object > properties Extra properties for the log event Methods BeginScope(TState) Declaration public IDisposable BeginScope(TState state) Parameters Type Name Description TState state Returns Type Description IDisposable Type Parameters Name Description TState IsEnabled(LogLevel) Declaration public bool IsEnabled(LogLevel logLevel) Parameters Type Name Description LogLevel logLevel Returns Type Description Boolean Log(LogLevel, EventId, TState, Exception, Func) Declaration public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) Parameters Type Name Description LogLevel logLevel EventId eventId TState state Exception exception Func formatter Type Parameters Name Description TState Implements Microsoft.Extensions.Logging.ILogger Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.HashingObfuscationConfiguration.html": { "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.HashingObfuscationConfiguration.html", "title": "Class HashingObfuscationConfiguration", "keywords": "Class HashingObfuscationConfiguration The hashing obfuscation configuration. This configurations is preconfigured to use the HashingObfuscationEngine and provides logic to automatically generate a salt which resets daily. Inheritance Object ObfuscationConfiguration HashingObfuscationConfiguration Inherited Members ObfuscationConfiguration.DefaultUriFilters ObfuscationConfiguration.DefaultContentTypeFilters ObfuscationConfiguration.DefaultContentDispositionFilters ObfuscationConfiguration.DefaultHeaderFilters ObfuscationConfiguration.ObfuscationEngine ObfuscationConfiguration.ObfuscationMembers ObfuscationConfiguration.ObfuscationSerializerSettings ObfuscationConfiguration.ContentDispositionFilters ObfuscationConfiguration.ContentTypeFilters ObfuscationConfiguration.HeaderFilters ObfuscationConfiguration.UriFilters Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class HashingObfuscationConfiguration : ObfuscationConfiguration Constructors HashingObfuscationConfiguration(IEnumerable, Boolean, ObfuscationMember[]) Initializes a new instance of the HashingObfuscationConfiguration class. Declaration public HashingObfuscationConfiguration(IEnumerable filters = null, bool addOdataType = true, ObfuscationMember[] members = null) Parameters Type Name Description IEnumerable < BaseFilter > filters The filters. Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. ObfuscationMember [] members The predefined set of obfuscation members. When specified the obfuscation serializer will cache the members and check the cache for the ObfuscationTag . HashingObfuscationConfiguration(IEnumerable, IEnumerable, IEnumerable, Boolean, ObfuscationMember[]) Initializes a new instance of the HashingObfuscationConfiguration class. Declaration public HashingObfuscationConfiguration(IEnumerable headerFilters, IEnumerable contentDispositionFilters, IEnumerable contentTypeFilters, bool addOdataType = true, ObfuscationMember[] members = null) Parameters Type Name Description IEnumerable < HeaderFilter > headerFilters The header filters. IEnumerable < ContentDispositionFilter > contentDispositionFilters The content disposition filters. IEnumerable < ContentTypeFilter > contentTypeFilters The content type filters. Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. ObfuscationMember [] members The predefined set of obfuscation members. When specified the obfuscation serializer will cache the members and check the cache for the ObfuscationTag . Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) HttpObfuscationHelpers.LogHeaderText(ObfuscationConfiguration, IEnumerable>>) HttpObfuscationHelpers.LogHeaderText(ObfuscationConfiguration, String, IEnumerable) See Also ObfuscationConfiguration" }, - "client/index.html": { - "href": "client/index.html", - "title": "Graph Communications SDK", - "keywords": "Graph Communications SDK This SDK is the core component of Communications SDK. This contains all the standard features and functionality available in the Graph Stateful SDK. Authentication Provider All calls made and received by the SDK must be authenticated by the bot developers. The SDK requires the developers to implement the IRequestAuthenticationProvider interface and specify it when building the ICommunicationsClient . There are two parts to the interface. AuthenticateOutboundRequestAsync : This method should add the Authorization header to the outbound HTTP requests from the SDK. AuthenticateOutboundRequestAsync : This method should validate the Authorization header for incoming HTTP requests from Graph, extract the Tenant ID from that header and provide it to the SDK. Examples of the Authentication Provider can be found in samples . Notification Handling The Graph Platform sends out notifications via HTTP that need to be handled by the Bot Developers. The Platform sends out notifications on the notification url, and the bot developers should listen to HTTP messages on that url. Once the HTTP message has been received by the developer, they need to forward the message to ICommunicationsClient using the ProcessNotificationAsync method. The SDK processes the notification, calls the IRequestAuthenticationProvider and raises any corresponding events asynchronously. The SDK then returns a HttpResponseMessage that needs to be sent out as a response to the Graph Platform. Note Developers using ASP.NET Core should convert the HttpRequest object into HttpRequestMessage before passing it to the SDK. Also, they need to convert the resulting HttpResponseMessage into HttpResponse . Select a class on the left to dive into the reference docs Accompanying Information Accessing the Microsoft Teams Service through a Microsoft API Cloud Video Interop (CVI) partners and contact centers may integrate with Microsoft Teams to aid their solution. Contact centers may route calls to Microsoft Teams but may not build a separate or independent communications related solution while using Microsoft Teams as a base for the solution." + "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.GraphObfuscationContractResolver.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.GraphObfuscationContractResolver.html", + "title": "Class GraphObfuscationContractResolver", + "keywords": "Class GraphObfuscationContractResolver Newtonsoft JSON resolver that uses Graph Obfuscation attribute to serialize data for logging purposes. Inheritance Object ODataResolver GraphObfuscationContractResolver Inherited Members ODataResolver.ResolveContractConverter(Type) ODataResolver.CreateProperties(Type, MemberSerialization) Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphObfuscationContractResolver : ODataResolver Constructors GraphObfuscationContractResolver(IObfuscationEngine, Boolean, ObfuscationMember[]) Initializes a new instance of the GraphObfuscationContractResolver class. Declaration public GraphObfuscationContractResolver(IObfuscationEngine engine, bool addOdataType = true, ObfuscationMember[] members = null) Parameters Type Name Description IObfuscationEngine engine The obfuscation engine. Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. ObfuscationMember [] members The predefined set of obfuscation members. When specified this GraphObfuscationContractResolver will cache the members and check the cache for the ObfuscationTag . Methods CreateMemberValueProvider(MemberInfo) Declaration protected override IValueProvider CreateMemberValueProvider(MemberInfo member) Parameters Type Name Description MemberInfo member Returns Type Description Newtonsoft.Json.Serialization.IValueProvider ResolveContract(Type) Declaration public override JsonContract ResolveContract(Type type) Parameters Type Name Description Type type Returns Type Description Newtonsoft.Json.Serialization.JsonContract Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "index.html": { - "href": "index.html", - "title": "Graph Communications Calling SDK", - "keywords": "Graph Communications Calling SDK Introduction The Graph Communications Calling SDK simplifies the creation of calling and meetings bots that use the Cloud Communications APIs . The SDK provides the functionality to manage states of resources in memory and simplify tasks like call setup and media session establishment. It provides interfaces for bot's service-to-service interactions with calls and meetings, including an optional Media Extension SDK that enables a bot developer to host media on their machines and gain access to low level Audio/Video sockets and media streams. SDK The Graph Communications Calling SDK is built on top of the Microsoft Graph API and distributed as NuGet packages. The Core Concepts article is designed to better explain all the constructs used by the SDKs. To dive right in and deploy a Calling Bot refer to the documentation in each sample for further instructions. The SDK is divided into multiple nuget packages each described as below. Microsoft.Graph.Communications.Common ( nuget ): This is the nuget containing all the utilities used throughout the Stateful SDK. It contains telemetry, http, obfuscation support along with helper methods. Microsoft.Graph.Communications.Core ( nuget ): This library contains the serialization and notification for the communications APIs. Microsoft.Graph.Communications.Client ( nuget ): This is the base client for the Stateful SDK. This implements all the common SDK features used within different verticals like calling, etc. Microsoft.Graph.Communications.Calls ( nuget ): This is the SDK that implements calling APIs. This supports making, receiving, and joining calls with Microsoft Teams users, and creating voice and video enabled bots. Microsoft.Graph.Communications.Calls.Media ( nuget ): This library allows developers to use the Microsoft.Graph.Communications.Calls SDK and gain direct access to the audio, video, screen sharing, and data streams. This is an optional library on top of Microsoft.Graph.Communications.Calls Microsoft.Skype.Bots.Media ( nuget ): The Real-Time Media Platform for Bots adds a new dimension to how bots can interact with users: by enabling real-time voice, video and screen sharing modalities. Concepts and Examples For more details on concepts used by the SDK and examples on joining calls and receiving calls please refer to the concepts and examples page. You can find samples using the following service: Stateful bot using Application Hosted Media on Azure Cloud Service Stateful bot using Application Hosted Media on Azure Service Fabric Stateful bot using Service Hosted Media running on Azure App Service . ICommunicationsClient and Extension Methods The Stateful SDK is exposed using a single class ICommunicationsClient . This class is defined in the Microsoft.Graph.Communications.Client nuget and has no dependency on the Microsoft.Graph.Communications.Calls calling vertical nuget package. The different verticals therefore make heavy usage of extension methods on ICommunicationsClient rather than standalone functions or properties. The intention here is to add new verticals into the ICommunicationsClient using the same pattern without the ICommunicationsClient itself taking a dependency on the new vertical's nuget, which provides greater decoupling between future verticals we will support. For a usage example please see the ICommunicationsClient.Calls() extension method. Accompanying Information Accessing the Microsoft Teams Service through a Microsoft API Cloud Video Interop (CVI) partners and contact centers may integrate with Microsoft Teams to aid their solution. Contact centers may route calls to Microsoft Teams but may not build a separate or independent communications related solution while using Microsoft Teams as a base for the solution." + "bot_media/Microsoft.Skype.Bots.Media.VideoSocket.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSocket.html", + "title": "Class VideoSocket", + "keywords": "Class VideoSocket Provides Send and Receive I/O access to a video stream. Inheritance Object VideoSocket Implements IVideoSocket IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public sealed class VideoSocket : IVideoSocket, IDisposable, IInternalVideoSocket, IInternalSocket Constructors VideoSocket(VideoSocketSettings) Initializes a new VideoSocket object. Declaration public VideoSocket(VideoSocketSettings settings) Parameters Type Name Description VideoSocketSettings settings Configuration settings for the VideoSocket Properties MediaType MediaType of the video socket. This could be Video or Vbss. The MediaType is set after the socket is passed to the CreateMediaConfiguration API. It may also be set via the VideoSocketSettings during socket creation. Declaration public MediaType MediaType { get; } Property Value Type Description MediaType ReceiveColorFormat VideoColorFormat to receive Declaration public VideoColorFormat ReceiveColorFormat { get; } Property Value Type Description VideoColorFormat SocketId The 0-based ID of the socket. This socket ID is useful to identify a socket in a multiview (ie. more than 1 video socket) call. The same ID is used in the event args of the VideoMediaReceived and VideoSendStatusChanged events that this class may raise. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the CreateMediaConfiguration API. Eg., if the collection of IVideoSocket objects in the CreateMediaConfiguration API contains {socketA, socketB, socketC}, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Before the call to CreateMediaConfiguration, the SocketId has a value of -1. Declaration public int SocketId { get; } Property Value Type Description Int32 Methods Dispose() Disposes the object. Declaration public void Dispose() GetQualityOfExperienceData() Get the Quality of Experience (QoE) data for the audio socket. Declaration public VideoQualityOfExperienceData GetQualityOfExperienceData() Returns Type Description VideoQualityOfExperienceData Remarks The bot should fetch the QoE data no more than once every 30 seconds. To get accurate metrics, the bot should let media flow for at least 30 seconds before fetching the QoE data. RequestKeyFrame() Allows the application to request for key frame. Only valid for sockets with the ReceiveColorFormat as H264 Declaration public void RequestKeyFrame() Send(VideoMediaBuffer) Sends a frame of video media. Declaration public void Send(VideoMediaBuffer buffer) Parameters Type Name Description VideoMediaBuffer buffer VideoMediaBuffer containing the frame of video media to send. Remarks The application must create a concrete class which derives from the VideoMediaBuffer abstract class. The buffer object passed to the Send method is still potentially in-use after the method returns to the caller. The application must not free the buffer's data until the the buffer object's Dispose() method is invoked by the Media Platform. The application should be sending up to 30 video frames per second. The VideoSocket must be enabled to send media via the VideoSocketSettings.StreamDirections property. SetReceiveBandwidthLimit(UInt32) Sets the bandwidth limit on the receive stream of the VideoSocket. This is only supported if the socket supports receiving H264 video format. It is recommended to wait for the VideoReceiveStatusChanged event with MediaReceiveStatus Active state during the initial call setup before applying the receive bandwidth limit on the socket. Bandwidth range (in bits per second) for various resolutions and frame rates per media type: Media type: Video 1000000 - 4000000 1080p at 30 fps 550000 - 2500000 720p at 30 fps 375000 - 1500000 540p at 30 fps 200000 - 800000 360p at 30 fps 150000 - 250000 360p at 15 fps 120000 - 220000 240p at 15 fps 60000 - 200000 180p at 15 fps 20000 - 100000 180p at 7.5 fps 10000 - 25000 180p at 3.75 fps 1000 - 12500 180p at 1.875 fps Media type: Vbss Resolution: 1080p 2000000 - 4000000 at 30 fps 600000 - 3000000 at 15 fps 300000 - 700000 at 7.5 fps 150000 - 350000 at 3.75 fps 70000 - 200000 at 1.875 fps Declaration public void SetReceiveBandwidthLimit(uint bitsPerSecond) Parameters Type Name Description UInt32 bitsPerSecond The receive bitrate SetSendBandwidthLimit(UInt32) Sets the bandwidth limit on the send stream of the VideoSocket. This is only supported if the socket supports sending H264 video formats. It is recommended to wait for the VideoSendStatusChanged event with MediaSendStatus Active state during the initial call setup before applying the send bandwidth limit on the socket. Bandwidth range (in bits per second) for various resolutions and frame rates per media type: Media type: Video 1000000 - 4000000 1080p at 30 fps 550000 - 2500000 720p at 30 fps 375000 - 1500000 540p at 30 fps 200000 - 800000 360p at 30 fps 150000 - 250000 360p at 15 fps 120000 - 220000 240p at 15 fps 60000 - 200000 180p at 15 fps 20000 - 100000 180p at 7.5 fps 10000 - 25000 180p at 3.75 fps 1000 - 12500 180p at 1.875 fps Media type: Vbss Resolution: 1080p 2000000 - 4000000 at 30 fps 600000 - 3000000 at 15 fps 300000 - 700000 at 7.5 fps 150000 - 350000 at 3.75 fps 70000 - 200000 at 1.875 fps Declaration public void SetSendBandwidthLimit(uint bitsPerSecond) Parameters Type Name Description UInt32 bitsPerSecond The send bitrate Subscribe(VideoResolution) Request to receive the video of the peer in a 1:1 call. No need to specify a MediaSourceId. The bot cannot subscribe to a video source unless the VideoReceiveStatusChanged event is raised indicating the VideoSocket's MediaReceiveStatus is Active . Declaration public void Subscribe(VideoResolution preferredVideoResolution) Parameters Type Name Description VideoResolution preferredVideoResolution The requested video resolution. The received video frames should have this resolution if the bandwidth constraints and sender capabilities allow, however the bot may receive video frames at a resolution lower than requested. Subscribe(VideoResolution, UInt32) Request to receive the video source of a participant in a meeting or group call. The video source must be identified by its MediaSourceId available from the roster. The bot cannot subscribe to a video source unless the VideoReceiveStatusChanged event is raised indicating the VideoSocket's MediaReceiveStatus is Active . Declaration public void Subscribe(VideoResolution preferredVideoResolution, uint MediaSourceId) Parameters Type Name Description VideoResolution preferredVideoResolution The requested video resolution. The received video frames should have this resolution if the bandwidth constraints and sender capabilities allow, however the bot may receive video frames at a resolution lower than requested. UInt32 MediaSourceId Media source identifier of the video source to be received Exceptions Type Condition ObjectDisposedException Thrown if the VideoSocket is disposed. InvalidOperationException Thrown if the subscription is invalid. SkypeMediaException Thrown if an internal media failure occurs. Unsubscribe() Stops the current video subscription on the VideoSocket. The VideoMediaReceived events will stop raising video buffers. Declaration public void Unsubscribe() UpdateVideoSendCapability(VideoSendCapability) Allows the application to update dynamically the send capability (such as SupportedSendVideoFormats or MaxConcurrentSendStreams) of the video socket. The purpose of this API is to allow the application to communicate changes in VideoSocket's send capability to the platform during the call. Declaration public void UpdateVideoSendCapability(VideoSendCapability capability) Parameters Type Name Description VideoSendCapability capability Events MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration public event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > Remarks Note: this event can be raised even if there is no active video subscription; i.e., the VideoSocket is \"idle\" and not receiving media. MediaStreamQualityChanged The event is raised if a media stream quality change was detected Declaration public event EventHandler MediaStreamQualityChanged Event Type Type Description EventHandler < VideoMediaStreamQualityChangedEventArgs > VideoKeyFrameNeeded If the application has configured the VideoSocket to receive encoded media, this event is raised each time a key frame is needed. Events are serialized, so only one event at a time is raised to the app. Declaration public event EventHandler VideoKeyFrameNeeded Event Type Type Description EventHandler < VideoKeyFrameNeededEventArgs > VideoMediaReceived If the application has configured the VideoSocket to receive media, this event is raised each time a frame of video media is received. Once the application has consumed the buffer, it must call the buffer's Dispose() method. Declaration public event EventHandler VideoMediaReceived Event Type Type Description EventHandler < VideoMediaReceivedEventArgs > Remarks The incoming video frame rate is variable. The frame rate can vary between 1.875 frames per second (fps) up to 30 fps. The application must be able to receive up to 30 video buffers per second. Events are serialized, so only one event at a time is raised to the app. The event handler should return as quickly as possible; any time-consuming per-frame processing should be performed asynchronously from the event handler. VideoReceiveStatusChanged If the application has configured the VideoSocket to receive media, this event is raised to inform the application when it is ready to receive media. When the status is active the application can subscribe to a video source, when inactive video subscription won't be allowed Declaration public event EventHandler VideoReceiveStatusChanged Event Type Type Description EventHandler < VideoReceiveStatusChangedEventArgs > VideoSendStatusChanged If the application has configured the VideoSocket to send media, this event is raised to inform the application when it may begin sending media and when it should stop. The application cannot send media before receiving a VideoMediaSendStatusChanged event indicating the SendStatus is Active, such media will be discarded. Declaration public event EventHandler VideoSendStatusChanged Event Type Type Description EventHandler < VideoSendStatusChangedEventArgs > Implements IVideoSocket System.IDisposable" }, - "articles/Logging.html": { - "href": "articles/Logging.html", - "title": "Logging in SDK", - "keywords": "Logging in SDK The Graph SDK uses a custom logger named IGraphLogger which allows custom subscribers for log events. These events can be observed and logged as required by the bot developers. You need to create an IObserver for log events (the LogEvent class). private class LogObserver : IObserver { private readonly LogEventFormatter formatter = new LogEventFormatter(); /// /// Provides the observer with new data. /// /// The current notification information. public void OnNext(LogEvent logEvent) { // Log event. // Event Severity: logEvent.Level // Http trace: logEvent.EventType == LogEventType.HttpTrace // Log trace: logEvent.EventType == LogEventType.Trace var logString = this.formatter.Format(logEvent); MyLogger.Log(logEvent.Level, logString) } /// /// Notifies the observer that the provider has experienced an error condition. /// /// An object that provides additional information about the error. public void OnError(Exception error) { // Error occurred with the logger, not with the SDK. } /// /// Notifies the observer that the provider has finished sending push-based notifications. /// public void OnCompleted() { // Graph Logger has completed logging (shutdown). } } After a class is ready, you need to subscribe to the log events. ICommunicationsClient client; // Substitute this with the instance of the SDK. var observer = new LogObserver(); var disposableSubsription = client.GraphLogger.Subscribe(observer); Note The disposableSubscription object should be persisted, otherwise logging will not work once it is garbage collected." + "bot_media/Microsoft.Skype.Bots.Media.VideoMediaBuffer.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoMediaBuffer.html", + "title": "Class VideoMediaBuffer", + "keywords": "Class VideoMediaBuffer Represents an unmanaged buffer containing video media data. Inheritance Object VideoMediaBuffer Implements IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public abstract class VideoMediaBuffer : IDisposable Constructors VideoMediaBuffer() Declaration protected VideoMediaBuffer() Properties Data Pointer to the unmanaged media buffer. Declaration public IntPtr Data { get; protected set; } Property Value Type Description IntPtr Remarks For the H264 video format, Data points to the start code of the first NALU of the frame and the whole buffer contains all the NALUs of the frame in sequence separated by their start codes. The frame data is an unencrypted depacketized H.264 elementary stream. B frames and SEI messages are not supported. Supported NALU types are 7 (SPS), 8 (PPS), 5 (IDR), and 1 (non-IDR). NALU start code prefixes can be either 0x000001 (3 bytes) or 0x00000001 (4 bytes). Fragmentation and packetization of NALUs is automatically handled by the platform. When receiving video in the H264 format, the platform ensures the application always receives decodable, full frames. Length The length of data in the media buffer. Declaration public long Length { get; protected set; } Property Value Type Description Int64 MediaSourceId MediaSourceId (MSI) of the video buffer. Within group or conference video calls, the MSI value identifies the video media source. This property is populated by the Real-Time Media Platform for Bots on received video buffers. When sending buffers via the IVideoSocket.Send API, this property is unused. Declaration public uint MediaSourceId { get; protected set; } Property Value Type Description UInt32 OriginalVideoFormat Original VideoFormat of the buffer when it was sourced. It is only used when receiving video buffers via the IVideoSocket.VideoMediaReceived event handler, in which case the VideoMediaBuffer.VideoFormat property may have different Width and Height values than the OriginalVideoFormat property, which represents the original format of the buffer. The reason is that the buffer may have been resized before being transmitted, so the original Width and Height may have been resized. If the Width and Height properties of OriginalVideoFormat differ from the VideoFormat property, the consumer of the VideoMediaBuffer raised in the VideoMediaReceived event should resize the buffer to fit the OriginalVideoFormat size. When sending buffers via the IVideoSocket.Send API, this property should always be null. Declaration public VideoFormat OriginalVideoFormat { get; protected set; } Property Value Type Description VideoFormat Stride Stride of the video buffer. This property is optional when sourcing video buffers that are sent via the IVideoSocket.Send API. Stride (also called pitch) represents the number of bytes it takes to read one row of pixels in memory. It may differ from the width depending on the color format. Declaration public int Stride { get; protected set; } Property Value Type Description Int32 Timestamp Timestamp of when the media content was sourced, in 100-ns units. When sourcing media buffers, this property should be set using the value from the MediaPlatform.GetCurrentTimestamp() API. Declaration public long Timestamp { get; protected set; } Property Value Type Description Int64 VideoFormat VideoFormat of the video media buffer. Declaration public VideoFormat VideoFormat { get; protected set; } Property Value Type Description VideoFormat Methods Dispose() Disposes the object. Declaration public void Dispose() Dispose(Boolean) Releases unmanaged resources held by the buffer object. Must be implemented in the derived class. Declaration protected abstract void Dispose(bool disposing) Parameters Type Name Description Boolean disposing If true, both managed and unmanaged resources can be disposed. If false, only unmanaged resources can be disposed. Implements System.IDisposable" }, - "articles/index.html": { - "href": "articles/index.html", - "title": "Graph Core and Communications SDK Concepts", - "keywords": "Graph Core and Communications SDK Concepts The Graph signaling SDK is quite flexible and can run in multiple environments, and support both stateful and stateless architectures. It can run on Azure Cloud Service , Azure Service Fabric , and Azure App Service . Furthermore, because the SDK supports both .net framework 4.6.1+ and netstandard 2.0 it is cross platform . This article describes the key concepts in order to effectively utilize the Graph Core SDK and the Graph Communications SDK including the Calling SDK. Graph Communications Core SDK The GraphServiceClient object is the entry point to the Graph Core SDK. The majority of the Graph Core SDK is automatically generated by the Graph SDK generator using the OData resource model. It reflects the REST-ful wire protocol provided by the Graph Communications service. Graph Communications Stateful SDK and Client Builder The ICommunicationsClient object is the entry point to the Graph Communications SDK and the Calling SDK. This SDK is designed for stateful services and provides additional support on top of the Graph Core SDK for resource state management and media management. The ICommunicationsClientBuilder is the object used to construct a new ICommunicationsClient with the desired settings. Building media bots has additional considerations which are further outlined in the media section . Notification Dispatching Notifications for root collections, such as the ICallCollection generated by ICommunicationsClient.Calls() , are handled in a single queue. Any root resource, such as the ICall , that has been added to the root collection is given it's own queue. Any child resources, of the root resource, such as the ICallParticipant use the same queue as the root resource. Each queue will delivered event callbacks to the developer sequentially. The SDK will wait to deliver the next event callbacks until all the callbacks for the current event have been processed. This has been done as to help developers avoid concurrency issues and will in the future support resource versioning and jitter buffers. Important It is important for all event handlers to be non-blocking, and any long running operations need to be offloaded to another thread. Long running operations in any event will block further operations from being raised for the given resource. Example Outgoing Calls To illustrate functionality of the Graph Communications Calling SDK, the below examples demonstrate 2 common scenarios: how to make an outbound call to a Microsoft Teams user and how to join an existing Microsoft Teams meeting. Making an Outbound Call Assuming a bot has been properly registered and deployed, the ICommunicationsClient configured and built. The bot needs to create the Call object with the corresponding parameters and pass the object to the CallCollectionExtensions.AddAsync method as follows: Call callResource = new Call { Subject = \"**Subject**\", Targets = new List { new InvitationParticipantInfo { Identity = new IdentitySet { User = new Identity { Id = \"**Target's AAD ObjectId GUID**\" }, }, } }, TenantId = \"**The id of the tenant that will host the meeting**\" }; IMediaSession mediaSession = this.Client.CreateMediaSession(**media session settings**); ICall call = await this.Client.Calls().AddAsync(callResource, mediaSession); SDK will store the state of the call in memory after calling AddAsync . The returned call object above contains the call Id set by the service. Making an Outbound Call to Join an Existing Microsoft Teams Meeting The above example shows how to create an outbound call to single or multiple participants and create a new conversation. If the bot needs to join an existing conversation, the SDK provides an overload of AddAsync that takes JoinMeetingParameters as input. The bot needs to create the JoinMeetingParameters object with the corresponding meeting parameters and pass the object to the CallCollectionExtensions.AddAsync method as follows: ChatInfo chatInfo = new ChatInfo { MessageId = \"**Message Id**\", ThreadId = \"**Thread Id**\", ReplyChainMessageId = \"**Reply Chain Message Id**\" }; OrganizerMeetingInfo meetingInfo = new OrganizerMeetingInfo { Organizer = new IdentitySet { User = new Identity { Id = \"**Meeting Organizer's AAD ObjectId GUID**\" }, } }; meetingInfo.Organizer.User.SetTenantId(\"**TenantId Guid**\"); IMediaSession mediaSession = this.Client.CreateMediaSession(**media session settings**); JoinMeetingParameters joinCallParameters = new JoinMeetingParameters( chatInfo, meetingInfo, mediaSession); ICall call = await this.Client.Calls().AddAsync(joinCallParameters); SDK will store the state of the call in memory after calling AddAsync . The returned call object above contains the callId set by the service. Example Incoming Calls Any time another user or bot places a call to your bot, you will receive a notification to the global application endpoint specified when registering your bot. Incoming call scenarios are supported with both Service Hosted Media and App Hosted Media configurations. Important For all incoming call scenarios, the initial incoming call notification will still be received using the BotBuilder protocol. The Graph SDK automatically returns 204 No Content to the initial notification to invoke the new Graph protocol. Answering incoming call with application hosted media First, subscribe to incoming calls. this.Client.Calls().OnIncoming += this.CallsOnIncoming; When incoming call comes, the bot needs to answer with an IMediaSession . This can be a media session created using the ICommunicationsClient.CreateMediaSession() extension or a custom IMediaSession . private void CallsOnIncoming(ICallCollection sender, CollectionEventArgs collectionEventArgs) { IMediaSession mediaSession = this.Client.CreateMediaSession( new AudioSocketSettings { StreamDirections = StreamDirection.Recvonly, SupportedAudioFormat = AudioFormat.Pcm16K }, new VideoSocketSettings { StreamDirections = StreamDirection.Sendrecv, ReceiveColorFormat = VideoColorFormat.NV12, SupportedSendVideoFormats = new List { VideoFormat.NV12_720x1280_30Fps, VideoFormat.NV12_1280x720_30Fps } } ); // Run async as not to block subsequent notifications. Task.Run(async () => { await collectionEventArgs .AddedResources .FirstOrDefault() .AnswerAsync(mediaSession) .ConfigureAwait(false); }); } Answer incoming call with service hosted media First subscribe to incoming calls. this.Client.Calls().OnIncoming += this.CallsOnIncoming; When incoming call comes, the bot will answer with a ServiceHostedMediaConfig . private void CallsOnIncoming(ICallCollection sender, CollectionEventArgs collectionEventArgs) { // Run async as not to block subsequent notifications. Task.Run(async () => { await collectionEventArgs .AddedResources .FirstOrDefault() .AnswerAsync(new Modality[] { Modality.Audio }) .ConfigureAwait(false); }); } State Management Graph Communications SDK can be used to store state of all resources in memory. This has 2 implications: The instance hosting the call needs to be up throughout the lifetime of a call. Any subsequent asynchronous notifications delivered by the service need to be redirected to the instance hosting the call. Any bot that hosts its own media stack should to be built using the Graph Communications SDK given that the media stream has a requirement that it needs to persist in memory throughout the lifetime of the call. More details can be found in the State Management article." + "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformFactory.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformFactory.html", + "title": "Class MediaPlatformFactory", + "keywords": "Class MediaPlatformFactory MediaPlatformFactory that is used to create IMediaPlatform. Inheritance Object MediaPlatformFactory Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public static class MediaPlatformFactory Methods CreateMediaPlatform() Creates the Media Platform for bots. The platform has to be initialized before it is used. Declaration public static IMediaPlatform CreateMediaPlatform() Returns Type Description IMediaPlatform The interface to the Media Platform." }, - "articles/calls/appHostedMediaCalls.html": { - "href": "articles/calls/appHostedMediaCalls.html", - "title": "Application Hosted Media Calls", - "keywords": "Application Hosted Media Calls Application Hosted Media calls are those calls in which the bot manages the call's video and audio sockets. The bots send and receive raw audio and video data over the network. Building a CommunicationsClient with Media Platform Settings Create the an instance of the ICommunicationsClientBuilder . Create an instance of MediaPlatformSettings and use MediaCommunicationsClientBuilderExtensions.SetMediaPlatformSettings method to pass the MediaPlatformSettings to build the ICommunicationsClient Once the builder builds the ICommunicationsClient , a media session can be created using either MediaCommunicationsClientExtension.CreateMediaSession or MediaCommunicationsClientExtension.CreateMediaSession depending on how many video sockets are required. When creating an object of the Call resource, MediaConfig needs to be set to AppHostedMediaConfig . Important When creating a new call that uses application hosted media, an instance of IMediaSession needs to be passed into CallCollectionExtensions.AddAsync" + "bot_media/Microsoft.Skype.Bots.Media.HostingEnvironmentConfiguration.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.HostingEnvironmentConfiguration.html", + "title": "Enum HostingEnvironmentConfiguration", + "keywords": "Enum HostingEnvironmentConfiguration HostingEnvironmentConfiguration to use for the MediaPlatform. In most cases, the default value is correct. Only in Azure Government clouds do different settings need to be applied. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum HostingEnvironmentConfiguration Fields Name Description AzureGovernment Configuration specifically for hosting the platform in the Azure Government Cloud. AzureGovernmentDoD Configuration specificially for hosting the platform in the Azure Government DoD cloud. Default The default HostingEnvironmentConfiguration for the platform." }, - "common/Microsoft.Graph.Communications.Common.Exceptions.InvalidStateTransitionException.html": { - "href": "common/Microsoft.Graph.Communications.Common.Exceptions.InvalidStateTransitionException.html", - "title": "Class InvalidStateTransitionException", - "keywords": "Class InvalidStateTransitionException Exception to throw when a invalid transition is requested Inheritance Object Exception InvalidStateTransitionException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Exceptions Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class InvalidStateTransitionException : Exception, ISerializable, _Exception Constructors InvalidStateTransitionException(String) Initializes a new instance of the InvalidStateTransitionException class. Declaration public InvalidStateTransitionException(string message) Parameters Type Name Description String message the exception message Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.AudioMediaBuffer.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioMediaBuffer.html", + "title": "Class AudioMediaBuffer", + "keywords": "Class AudioMediaBuffer Represents an unmanaged buffer containing audio media data. Inheritance Object AudioMediaBuffer Implements IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public abstract class AudioMediaBuffer : IDisposable Constructors AudioMediaBuffer() Declaration protected AudioMediaBuffer() Properties ActiveSpeakers Current active speakers in the conference. Declaration public uint[] ActiveSpeakers { get; protected set; } Property Value Type Description UInt32 [] Remarks The value is the IDs (MediaSourceIds) of the audio source of the active speakers in the conference and does not include bot's own MediaSourceId. If there is no active speaker, or there is just silence in the conference, the value is an empty array. AudioFormat The audio format. Declaration public AudioFormat AudioFormat { get; protected set; } Property Value Type Description AudioFormat Data Pointer to the unmanaged media buffer. Declaration public IntPtr Data { get; protected set; } Property Value Type Description IntPtr IsSilence Indicates if the received audio media buffer contains only silence. This property is set automatically for received audio buffers. When sending buffers via the Send method, this property is unused. Declaration public bool IsSilence { get; protected set; } Property Value Type Description Boolean Length The length in bytes of the data in the media buffer. Declaration public long Length { get; protected set; } Property Value Type Description Int64 Timestamp Timestamp of when the media content was received by the bot, or if the bot is sending media, the timestamp of when the media was sourced. It is in 100-ns units. When sourcing media buffers, this property should be set using the value from the MediaPlatform.GetCurrentTimestamp() API. Declaration public long Timestamp { get; protected set; } Property Value Type Description Int64 UnmixedAudioBuffers Contains the list of received unmixed audio buffers (up to four at a time). Declaration public UnmixedAudioBuffer[] UnmixedAudioBuffers { get; protected set; } Property Value Type Description UnmixedAudioBuffer [] Remarks This is useful for advanced meeting scenarios, such as being able to receive separate audio buffers for individual speakers. This value is set only on the receive side when the AudioSocketSetting.ReceiveUnmixedMeetingAudio property is set to true. Creating unmixed audio buffers and sending it on the AudioSocket is not supported. This property is null when unmixed buffers are not requested. Methods Dispose() Disposes the object. Declaration public void Dispose() Dispose(Boolean) Releases unmanaged resources held by the buffer object. Must be implemented in the derived class. Declaration protected abstract void Dispose(bool disposing) Parameters Type Name Description Boolean disposing If true, both managed and unmanaged resources can be disposed. If false, only unmanaged resources can be disposed. Implements System.IDisposable" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscatedValueProvider.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscatedValueProvider.html", - "title": "Class ObfuscatedValueProvider", - "keywords": "Class ObfuscatedValueProvider Newtonsoft JSONs value provider for obfuscated data. Inheritance Object ObfuscatedValueProvider Implements Newtonsoft.Json.Serialization.IValueProvider Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ObfuscatedValueProvider : IValueProvider Constructors ObfuscatedValueProvider(MemberInfo, IObfuscationEngine, ObfuscationTag) Initializes a new instance of the ObfuscatedValueProvider class. Declaration public ObfuscatedValueProvider(MemberInfo memberInfo, IObfuscationEngine obfuscationEngine, ObfuscationTag obfuscationTag) Parameters Type Name Description MemberInfo memberInfo The member information. IObfuscationEngine obfuscationEngine The obfuscation engine. ObfuscationTag obfuscationTag The obfuscation tag. Methods GetValue(Object) Declaration public object GetValue(object target) Parameters Type Name Description Object target Returns Type Description Object SetValue(Object, Object) Sets the value. Declaration public void SetValue(object target, object value) Parameters Type Name Description Object target The target to set the value on. Object value The value to set on the target. Implements Newtonsoft.Json.Serialization.IValueProvider Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "core/Microsoft.Graph.Communications.Core.CommsConstants.html": { + "href": "core/Microsoft.Graph.Communications.Core.CommsConstants.html", + "title": "Class CommsConstants", + "keywords": "Class CommsConstants The communications constants. Inheritance Object CommsConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class CommsConstants" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.ContentTypeFilter.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.ContentTypeFilter.html", - "title": "Class ContentTypeFilter", - "keywords": "Class ContentTypeFilter Does match of content-type header. If content-type matches filter then whole body is removed. Inheritance Object BaseFilter BaseFilter < String , String > ContentTypeFilter Inherited Members BaseFilter.MatchableString BaseFilter.MatchEvaluator Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ContentTypeFilter : BaseFilter Constructors ContentTypeFilter(String, Func) Initializes a new instance of the ContentTypeFilter class. Declaration public ContentTypeFilter(string matchableContentTypeMediaType, Func matchEvaluator = null) Parameters Type Name Description String matchableContentTypeMediaType Type of the matchable content type media. Func < String , String > matchEvaluator The match evaluator. Methods IsContentTypeMatch(IEnumerable, HttpContent, out String) Determines whether [is content type match] [the specified filters]. Declaration public static bool IsContentTypeMatch(IEnumerable filters, HttpContent content, out string outputMessage) Parameters Type Name Description IEnumerable < ContentTypeFilter > filters The filters. HttpContent content The content. String outputMessage The output message. Returns Type Description Boolean true if [is content type match] [the specified filters]; otherwise, false . Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "core/Microsoft.Graph.Communications.Core.CommsConstants.HttpPropertyNames.html": { + "href": "core/Microsoft.Graph.Communications.Core.CommsConstants.HttpPropertyNames.html", + "title": "Class CommsConstants.HttpPropertyNames", + "keywords": "Class CommsConstants.HttpPropertyNames Constants used for HTTP property names Inheritance Object CommsConstants.HttpPropertyNames Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class HttpPropertyNames Fields ResponseHeaders The Response Headers string Declaration public const string ResponseHeaders = \"responseHeaders\" Field Value Type Description String StatusCode The Status Code string Declaration public const string StatusCode = \"statusCode\" Field Value Type Description String" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventFormatter.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventFormatter.html", - "title": "Class LogEventFormatter", - "keywords": "Class LogEventFormatter The log event formatter Inheritance Object LogEventFormatter Implements ILogEventFormatter Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class LogEventFormatter : ILogEventFormatter Constructors LogEventFormatter(LogEventFormatterFlags, String, String) Initializes a new instance of the LogEventFormatter class. Declaration public LogEventFormatter(LogEventFormatterFlags flags = LogEventFormatterFlags.ForDefault, string inlineSeparator = \" \", string timestampFormat = \"yyyy-MM-ddTHH:mm:ss.ffffZ\") Parameters Type Name Description LogEventFormatterFlags flags The formatter flags to control which will be shown in output message. String inlineSeparator The inline separator for logging fields String timestampFormat The default timestamp format Fields DefaultTimestampFormat The default timestamp format. Declaration public const string DefaultTimestampFormat = \"yyyy-MM-ddTHH:mm:ss.ffffZ\" Field Value Type Description String Methods Format(LogEvent) Format the log event. Declaration public string Format(LogEvent logEvent) Parameters Type Name Description LogEvent logEvent The log event Returns Type Description String The formatted text. Implements ILogEventFormatter Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "calls_media/Microsoft.Graph.Communications.Calls.Media.AudioSendBuffer.html": { + "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.AudioSendBuffer.html", + "title": "Class AudioSendBuffer", + "keywords": "Class AudioSendBuffer Creates an Audio Buffer for Send and also implements Dispose Inheritance Object AudioSendBuffer Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public class AudioSendBuffer : AudioMediaBuffer Constructors AudioSendBuffer(IntPtr, Int64, AudioFormat, Int64) Initializes a new instance of the AudioSendBuffer class. Declaration public AudioSendBuffer(IntPtr data, long length, AudioFormat audioFormat, long timeStamp = 0L) Parameters Type Name Description IntPtr data The buffer data. Int64 length The length of the buffer. AudioFormat audioFormat The audio format. Int64 timeStamp The time stamp. Methods Dispose(Boolean) Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.GraphObfuscationContractResolver.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.GraphObfuscationContractResolver.html", - "title": "Class GraphObfuscationContractResolver", - "keywords": "Class GraphObfuscationContractResolver Newtonsoft JSON resolver that uses Graph Obfuscation attribute to serialize data for logging purposes. Inheritance Object ODataResolver GraphObfuscationContractResolver Inherited Members ODataResolver.ResolveContractConverter(Type) ODataResolver.CreateProperties(Type, MemberSerialization) Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphObfuscationContractResolver : ODataResolver Constructors GraphObfuscationContractResolver(IObfuscationEngine, Boolean, ObfuscationMember[]) Initializes a new instance of the GraphObfuscationContractResolver class. Declaration public GraphObfuscationContractResolver(IObfuscationEngine engine, bool addOdataType = true, ObfuscationMember[] members = null) Parameters Type Name Description IObfuscationEngine engine The obfuscation engine. Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. ObfuscationMember [] members The predefined set of obfuscation members. When specified this GraphObfuscationContractResolver will cache the members and check the cache for the ObfuscationTag . Methods CreateMemberValueProvider(MemberInfo) Declaration protected override IValueProvider CreateMemberValueProvider(MemberInfo member) Parameters Type Name Description MemberInfo member Returns Type Description Newtonsoft.Json.Serialization.IValueProvider ResolveContract(Type) Declaration public override JsonContract ResolveContract(Type type) Parameters Type Name Description Type type Returns Type Description Newtonsoft.Json.Serialization.JsonContract Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.MediaPlatform.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatform.html", + "title": "Class MediaPlatform", + "keywords": "Class MediaPlatform This class represents the Skype Bots Media Platform. Inheritance Object MediaPlatform Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public static class MediaPlatform Fields DefaultMaxMediaPort The default maximum media port. Declaration public const uint DefaultMaxMediaPort = 65535U Field Value Type Description UInt32 DefaultMinMediaPort The default minimum media port. Declaration public const uint DefaultMinMediaPort = 49152U Field Value Type Description UInt32 MaxNumberOfConcurrentSendVideoSocketsPerPlatform The maximum number of send video/vbss sockets allowed by the media plaform. Declaration public const int MaxNumberOfConcurrentSendVideoSocketsPerPlatform = 1000 Field Value Type Description Int32 MaxNumberOfVideoSocketsPerCall The maximum number of video sockets that can be passed to the CreateMediaConfiguration API. Declaration public const int MaxNumberOfVideoSocketsPerCall = 10 Field Value Type Description Int32 MinNumberOfCoresRequired The minimum number of cores that the Media Platform requires. Declaration public const int MinNumberOfCoresRequired = 2 Field Value Type Description Int32 Name Name of the Bots Media Platform Declaration public const string Name = \"SkypeBotsMediaPlatform\" Field Value Type Description String Properties CurrentHealth The current health status of the media platform. Declaration public static MediaPlatformHealthStatus CurrentHealth { get; } Property Value Type Description MediaPlatformHealthStatus Methods CreateMediaConfiguration(IAudioSocket) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for the audio modality. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. Returns Type Description Newtonsoft.Json.Linq.JObject Serialized MediaConfiguration object. Exceptions Type Condition InvalidOperationException MediaPlatform is not initialized. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IDataSocket) Reserved for the internal use. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IDataSocket dataSocket) Parameters Type Name Description IAudioSocket audioSocket IDataSocket dataSocket Returns Type Description Newtonsoft.Json.Linq.JObject CreateMediaConfiguration(IAudioSocket, IVideoSocket) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IVideoSocket videoSocket) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. IVideoSocket videoSocket Socket that handles video. Returns Type Description Newtonsoft.Json.Linq.JObject Serialized MediaConfiguration object. Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IList) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. IList < IVideoSocket > videoSockets Ordered list of video sockets. The order in which the sockets are provided maps to the order of the streams exposed by MediaPaaS (eg. the first video socket in the list will correspond to the first video stream exposed in the list of MediaStreams in MediaPaaS' MediaFlow resource). If multiview sockets are provided, only the first one can have a send direction (ie. send only or send receive) and all the sockets should have a receive direction. Returns Type Description Newtonsoft.Json.Linq.JObject Serialized MediaConfiguration object. Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets, IVideoSocket vbssSocket) Parameters Type Name Description IAudioSocket audioSocket IList < IVideoSocket > videoSockets Ordered list of video sockets. The order in which the sockets are provided maps to the order of the streams exposed by MediaPaaS (eg. the first video socket in the list will correspond to the first video stream exposed in the list of MediaStreams in MediaPaaS' MediaFlow resource). If multiview sockets are provided, only the first one can have a send direction (ie. send only or send receive) and all the sockets should have a receive direction. IVideoSocket vbssSocket Video socket for the video-based screen sharing (VBSS) modality. Socket must be configured as RecvOnly. Returns Type Description Newtonsoft.Json.Linq.JObject Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized, or a vbssSocket is configured to be sendonly or sendrecv. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket, IDataSocket) Reserved for the internal use. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets, IVideoSocket vbssSocket, IDataSocket dataSocket) Parameters Type Name Description IAudioSocket audioSocket IList < IVideoSocket > videoSockets IVideoSocket vbssSocket IDataSocket dataSocket Returns Type Description Newtonsoft.Json.Linq.JObject CreateMediaConfiguration(IVideoSocket) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. Declaration public static JObject CreateMediaConfiguration(IVideoSocket vbssSocket) Parameters Type Name Description IVideoSocket vbssSocket Video socket for the video-based screen sharing (VBSS) modality. Socket must be configured as RecvOnly. Returns Type Description Newtonsoft.Json.Linq.JObject Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized, or a vbssSocket is configured to be sendonly or sendrecv. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. GetCurrentTimestamp() Get a current timestamp, in 100-ns units. To be used when sourcing media buffers. Declaration public static long GetCurrentTimestamp() Returns Type Description Int64 Initialize(MediaPlatformSettings) Initializes the Media Platform for Bot. Declaration public static void Initialize(MediaPlatformSettings settings) Parameters Type Name Description MediaPlatformSettings settings Settings to initialize the Bot Media Platform. Shutdown() Shuts down the Bot Media Platform. Declaration public static void Shutdown() Events MediaPlatformHealthChanged Raised when there is a change in the media platform's health status. The event arguments report the current and previous platform health conditions. Declaration public static event EventHandler MediaPlatformHealthChanged Event Type Type Description EventHandler < MediaPlatformHealthChangedEventArgs > Remarks A bot application which may handle very high call volumes or perform complex real-time media processing should monitor this event for changes in the media platform health status. When the event reports the platform health status has become HeavilyLoaded, the application should avoid starting new bot calls on the machine instance until the health status returns back to Normal." }, - "common/Microsoft.Graph.Communications.Common.OData.ODataJsonConverter.html": { - "href": "common/Microsoft.Graph.Communications.Common.OData.ODataJsonConverter.html", - "title": "Class ODataJsonConverter", - "keywords": "Class ODataJsonConverter Handles resolving interfaces to the correct derived class during serialization/deserialization. Inheritance Object ODataJsonConverter Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class ODataJsonConverter : JsonConverter Constructors ODataJsonConverter(Assembly[]) Initializes a new instance of the ODataJsonConverter class. Declaration public ODataJsonConverter(params Assembly[] typeAssemblies) Parameters Type Name Description Assembly [] typeAssemblies The type assemblies. Properties CanWrite Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Methods CanConvert(Type) Declaration public override bool CanConvert(Type objectType) Parameters Type Name Description Type objectType Returns Type Description Boolean ReadJson(JsonReader, Type, Object, JsonSerializer) Deserializes the object to the correct type. Declaration public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonReader reader The Newtonsoft.Json.JsonReader to read from. Type objectType The interface type. Object existingValue The existing value of the object being read. Newtonsoft.Json.JsonSerializer serializer The Newtonsoft.Json.JsonSerializer for deserialization. Returns Type Description Object The deserialized object WriteJson(JsonWriter, Object, JsonSerializer) Declaration public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonWriter writer Object value Newtonsoft.Json.JsonSerializer serializer Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.IAudioSocket.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.IAudioSocket.html", + "title": "Interface IAudioSocket", + "keywords": "Interface IAudioSocket Interface to an AudioSocket. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IAudioSocket : IDisposable Methods GetQualityOfExperienceData() Get the Quality of Experience (QoE) data for the audio socket. Declaration AudioQualityOfExperienceData GetQualityOfExperienceData() Returns Type Description AudioQualityOfExperienceData Remarks The bot should fetch the QoE data no more than once every 30 seconds. To get accurate metrics, the bot should let media flow for at least 30 seconds before fetching the QoE data. Send(AudioMediaBuffer) Sends a frame of audio media, where a frame contains 20 milliseconds of audio content (PCM samples). Declaration void Send(AudioMediaBuffer buffer) Parameters Type Name Description AudioMediaBuffer buffer AudioMediaBuffer containing the frame of audio media to send. Remarks The application must create a concrete class which derives from the AudioMediaBuffer abstract class. The buffer object passed to the Send method is still potentially in-use after the method returns to the caller. The application must not free the buffer's frame data until the the buffer object's Dispose() method is invoked by the Media Platform. The application should be sending 50 frames of audio media per second with each frame containing 20 milliseconds of audio content. The AudioSocket must be enabled to send media via the AudioSocketSettings.StreamDirections property. SendDtmfTone(ToneId) Sends a DTMF tone. Declaration void SendDtmfTone(ToneId tone) Parameters Type Name Description ToneId tone The DTMF digit. Ranges from 0-16. Remarks Sending DTMF tone is only allowed if the AudioSocket is configured for sending media. SendDtmfTones(IEnumerable, Int32) Sends a sequence of DTMF tones with an optional delay between each tone. Declaration void SendDtmfTones(IEnumerable tones, int delayBetweenTonesInMilliseconds = -1) Parameters Type Name Description IEnumerable < ToneId > tones The list of DTMF digits to be sent. Ranges from 0-16. Int32 delayBetweenTonesInMilliseconds Delay (in milliseconds) between each DTMF tone sent. Remarks By default, the delay is set to -1 which picks a random time between 0 to 500 milliseconds. Events AudioMediaReceived If the application has configured the AudioSocket to receive media, this event is raised each time a frame of audio media is received, where a frame contains 20 milliseconds of audio content (PCM samples). Once the application has consumed the buffer, it must call the buffer's Dispose() method. Declaration event EventHandler AudioMediaReceived Event Type Type Description EventHandler < AudioMediaReceivedEventArgs > Remarks The application must be able to handle at least 50 incoming audio buffers per second. Events are serialized, so only one event at a time is raised to the app. The event handler should return as quickly as possible; any time-consuming per-frame processing should be performed asynchronously from the event handler. AudioSendStatusChanged If the application has configured the AudioSocket to send media, this event is raised to inform the application when it may begin sending media and when it should stop. The application cannot send media before receiving a MediaSendStatusChanged event indicating the SendStatus is Started. Declaration event EventHandler AudioSendStatusChanged Event Type Type Description EventHandler < AudioSendStatusChangedEventArgs > DominantSpeakerChanged This event is raised when there is a change in the dominant speaker in the conference. If there is no dominant speaker in the conference, the CurrentDominantSpeaker argument in the event will have the value None (0xFFFFFFFF). Declaration event EventHandler DominantSpeakerChanged Event Type Type Description EventHandler < DominantSpeakerChangedEventArgs > MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > ToneReceived This event is raised when the DTMF tone is received. ToneId enum in the event arguments indicates the tone value. Declaration event EventHandler ToneReceived Event Type Type Description EventHandler < ToneReceivedEventArgs >" }, - "common/Microsoft.Graph.Communications.Common.WeakKey-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.WeakKey-1.html", - "title": "Class WeakKey", - "keywords": "Class WeakKey Wrapping a weak reference and recording hash code. Note: It is the responsibility of the client to clean up the collection entry in the finalizer of the object. Otherwise the key will not match for subsequent lookups. Inheritance Object WeakKey Inherited Members Object.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class WeakKey where T : class Type Parameters Name Description T Type of the key to be used in a lookup. Constructors WeakKey(T) Initializes a new instance of the WeakKey class. Declaration public WeakKey(T t) Parameters Type Name Description T t Underlying object. WeakKey(WeakReference) Initializes a new instance of the WeakKey class. Declaration public WeakKey(WeakReference weak) Parameters Type Name Description WeakReference weak Underlying object wrapped in weak reference. Properties Unwrapped Gets the target. Declaration public T Unwrapped { get; } Property Value Type Description T Value Gets the weak reference to the underlying object. Declaration public WeakReference Value { get; } Property Value Type Description WeakReference Methods Equals(Object) Determines whether the specified object is equal to the current object. Declaration public override bool Equals(object obj) Parameters Type Name Description Object obj The object to compare with the current object. Returns Type Description Boolean true if the specified object is equal to the current object. Overrides Object.Equals(Object) GetHashCode() Overrides hash code to hand out the underlying object's hash code. Declaration public override int GetHashCode() Returns Type Description Int32 Hash code of underlying object. Overrides Object.GetHashCode() Operators Implicit(T to WeakKey) Implicit cast operator to weak key. Declaration public static implicit operator WeakKey(T t) Parameters Type Name Description T t Wrap with weak key. Returns Type Description WeakKey Implicit(WeakKey to T) Implicit type cast operator. Declaration public static implicit operator T(WeakKey key) Parameters Type Name Description WeakKey key Extract underlying object. Returns Type Description T Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.AudioFormat.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioFormat.html", + "title": "Enum AudioFormat", + "keywords": "Enum AudioFormat The audio format. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum AudioFormat Fields Name Description Pcm16K PCM 16K Pcm44KStereo PCM 44.1K Stereo" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.GraphObfuscationAttribute.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.GraphObfuscationAttribute.html", - "title": "Class GraphObfuscationAttribute", - "keywords": "Class GraphObfuscationAttribute Attribute used for decoration of data objects. This is used for obfuscation for logging. Inheritance Object Attribute GraphObfuscationAttribute Implements _Attribute Inherited Members Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, Boolean) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, Boolean) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo, Boolean) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, Boolean) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, Boolean) Attribute.GetCustomAttributes(Module, Type, Boolean) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, Boolean) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, Boolean) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, Boolean) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, Boolean) Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, Boolean) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, Boolean) Attribute.Equals(Object) Attribute.GetHashCode() Attribute.Match(Object) Attribute.IsDefaultAttribute() Attribute._Attribute.GetTypeInfoCount(UInt32) Attribute._Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) Attribute._Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) Attribute._Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) Attribute.TypeId Object.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax [AttributeUsage(AttributeTargets.Class | AttributeTargets.Enum | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] public class GraphObfuscationAttribute : Attribute, _Attribute Constructors GraphObfuscationAttribute() Declaration public GraphObfuscationAttribute() Properties Tag Gets or sets the tag. Declaration public ObfuscationTag Tag { get; set; } Property Value Type Description ObfuscationTag Implements System.Runtime.InteropServices._Attribute Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also Attribute" + "common/Microsoft.Graph.Communications.Common.StateMachine-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.StateMachine-1.html", + "title": "Class StateMachine", + "keywords": "Class StateMachine Lockfree enum-based state machine. Transitions are O(1). Inheritance Object StateMachine Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class StateMachine where TStateEnum : struct, IComparable, IFormattable, IConvertible Type Parameters Name Description TStateEnum The enum type which represents state. Constructors StateMachine(TStateEnum, StateMachine.Transition[]) Initializes a new instance of the StateMachine class. Declaration public StateMachine(TStateEnum initalState, StateMachine.Transition[] transitions) Parameters Type Name Description TStateEnum initalState State of the inital. StateMachine.Transition <>[] transitions The transitions. Properties State Gets the state. Declaration public TStateEnum State { get; } Property Value Type Description TStateEnum The state. Methods ToString() Returns a String that represents this instance. Declaration public override string ToString() Returns Type Description String A String that represents this instance. Overrides Object.ToString() TransitionState(TStateEnum) Transition to next state. Transition to same state is not allowed. Non valid transition throws exception. Declaration public TStateEnum TransitionState(TStateEnum newState) Parameters Type Name Description TStateEnum newState The new state. Returns Type Description TStateEnum Previous state Exceptions Type Condition Exception If transition is not allow, exception is thrown. TransitionStateSafe(TStateEnum) Transition to the next state. Transition to same state has to be allowed via transitions. Non valid transition returns null. Declaration public TStateEnum? TransitionStateSafe(TStateEnum newState) Parameters Type Name Description TStateEnum newState The new state. Returns Type Description Nullable Previous state or null; if transition is not valid. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphProperty-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphProperty-1.html", - "title": "Interface IGraphProperty", - "keywords": "Interface IGraphProperty Inherited Members IGraphProperty.Key IGraphProperty.Type IEquatable.Equals(IGraphProperty) Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphProperty : IGraphProperty, IEquatable Type Parameters Name Description T The type of content contained in this property. Properties Value Gets the value. Declaration T Value { get; } Property Value Type Description T Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphProperty.ConvertProperty(IGraphProperty)" + "common/Microsoft.Graph.Communications.Common.StateMachine-1.Transition.html": { + "href": "common/Microsoft.Graph.Communications.Common.StateMachine-1.Transition.html", + "title": "Class StateMachine.Transition", + "keywords": "Class StateMachine.Transition Single transition from Source to Targets Inheritance Object StateMachine.Transition Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class Transition Constructors Transition(TStateEnum, TStateEnum[]) Initializes a new instance of the StateMachine.Transition class. Declaration public Transition(TStateEnum source, params TStateEnum[] targets) Parameters Type Name Description TStateEnum source The source. TStateEnum[] targets The targets. Properties Source Gets the source state. Declaration public TStateEnum Source { get; } Property Value Type Description TStateEnum The source. Targets Gets the target states. Declaration public TStateEnum[] Targets { get; } Property Value Type Description TStateEnum[] The targets. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphProperty.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphProperty.html", - "title": "Interface IGraphProperty", - "keywords": "Interface IGraphProperty The graph property containing request or response data. Inherited Members IEquatable.Equals(IGraphProperty) Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphProperty : IEquatable Properties Key Gets the key. Declaration string Key { get; } Property Value Type Description String Type Gets the type of the property. Declaration string Type { get; } Property Value Type Description String Value Gets the value. Declaration object Value { get; } Property Value Type Description Object Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphProperty.ConvertProperty(IGraphProperty)" + "common/Microsoft.Graph.Communications.Common.HttpConstants.HeaderNames.html": { + "href": "common/Microsoft.Graph.Communications.Common.HttpConstants.HeaderNames.html", + "title": "Class HttpConstants.HeaderNames", + "keywords": "Class HttpConstants.HeaderNames The header names. Inheritance Object HttpConstants.HeaderNames Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HeaderNames Fields Accept The accept header. Declaration public const string Accept = \"Accept\" Field Value Type Description String AccessControlAllowCredentials Access-Control-Allow-Credentials Declaration public const string AccessControlAllowCredentials = \"Access-Control-Allow-Credentials\" Field Value Type Description String AccessControlAllowHeaders Access-Control-Allow-Headers Declaration public const string AccessControlAllowHeaders = \"Access-Control-Allow-Headers\" Field Value Type Description String AccessControlAllowOrigin Access-Control-Allow-Origin Declaration public const string AccessControlAllowOrigin = \"Access-Control-Allow-Origin\" Field Value Type Description String AccessControlMaxAge Access-Control-Max-Age Declaration public const string AccessControlMaxAge = \"Access-Control-Max-Age\" Field Value Type Description String AccessControlRequestHeaders Access-Control-Request-Headers Declaration public const string AccessControlRequestHeaders = \"Access-Control-Request-Headers\" Field Value Type Description String AccessControlRequestMethod Access-Control-Request-Method Declaration public const string AccessControlRequestMethod = \"Access-Control-Request-Method\" Field Value Type Description String Authorization The authorization header. Declaration public const string Authorization = \"Authorization\" Field Value Type Description String CacheControl The cache control header. Declaration public const string CacheControl = \"Cache-Control\" Field Value Type Description String CalleeRegion The callee region header. Declaration public const string CalleeRegion = \"X-Microsoft-Skype-Callee-Region\" Field Value Type Description String CallerRegion The caller region header. Declaration public const string CallerRegion = \"X-Microsoft-Skype-Caller-Region\" Field Value Type Description String ChainId The chain identifier header. This header is used to correlate requests to each other within the NGC stack. Declaration public const string ChainId = \"X-Microsoft-Skype-Chain-ID\" Field Value Type Description String ClientRequestId The client request identifier header. This header is used to track individual requests between the client and SF services. Declaration public const string ClientRequestId = \"Client-Request-Id\" Field Value Type Description String Connection The connection header. Declaration public const string Connection = \"Connection\" Field Value Type Description String ContentLength The content length header. Declaration public const string ContentLength = \"Content-Length\" Field Value Type Description String ContentType The content type header. Declaration public const string ContentType = \"Content-Type\" Field Value Type Description String ContextId The context identifier header. Declaration public const string ContextId = \"ContextId\" Field Value Type Description String Date The date header. Declaration public const string Date = \"Date\" Field Value Type Description String Duration The duration header. Declaration public const string Duration = \"Duration\" Field Value Type Description String GatewayServiceRootHeader the header that graph adds to the proxied request to PMA Declaration public const string GatewayServiceRootHeader = \"x-ms-gateway-serviceRoot\" Field Value Type Description String Host The host header. Declaration public const string Host = \"Host\" Field Value Type Description String Location The location header. Declaration public const string Location = \"Location\" Field Value Type Description String MessageId The message identifier header. This header is used to track individual requests within the NGC stack. Declaration public const string MessageId = \"X-Microsoft-Skype-Message-ID\" Field Value Type Description String MsAttribution X-MS-Attribution. Declaration public const string MsAttribution = \"X-MS-Attribution\" Field Value Type Description String MsDiagnostics The microsoft graph diagnostics header. Declaration public const string MsDiagnostics = \"x-ms-ags-diagnostic\" Field Value Type Description String MsParticipants X-MS-Participants. Declaration public const string MsParticipants = \"X-MS-Participants\" Field Value Type Description String ODataVersion The odata version header. Declaration public const string ODataVersion = \"OData-Version\" Field Value Type Description String Origin Origin Declaration public const string Origin = \"Origin\" Field Value Type Description String OriginalMessageId The original message identifier header. Declaration public const string OriginalMessageId = \"X-Microsoft-Skype-Original-Message-ID\" Field Value Type Description String PmaInstanceUrl The pma instance URL. Used to retarget PSA to a particular PMA instance. Declaration public const string PmaInstanceUrl = \"X-Microsoft-Pma-Instance\" Field Value Type Description String RedirectDu The redirect du header. Declaration public const string RedirectDu = \"X-Plat-Redirect-Du\" Field Value Type Description String RedirectRegion The redirect region header. Declaration public const string RedirectRegion = \"X-Plat-Redirect-Region\" Field Value Type Description String RequestId The request identifier header. This header is returned by graph to identify the specific request. Declaration public const string RequestId = \"Request-Id\" Field Value Type Description String RoutingTargetRegion The Routing-Target-Region header. Declaration public const string RoutingTargetRegion = \"Routing-Target-Region\" Field Value Type Description String ScenarioId The scenario identifier header. This header is used to correlate requests to each other between client and SF services. Declaration public const string ScenarioId = \"Scenario-Id\" Field Value Type Description String SchedulingServiceTelemetryId Scheduling service telemetry header. This header is used to correlate requests with SS service. Declaration public const string SchedulingServiceTelemetryId = \"X-MS-Skype-MLC-Telemetry-Id\" Field Value Type Description String Skypetoken X-Skypetoken Declaration public const string Skypetoken = \"X-Skypetoken\" Field Value Type Description String StrictTransportSecurity The strict transport security header. Declaration public const string StrictTransportSecurity = \"Strict-Transport-Security\" Field Value Type Description String Tenant The tenant header Declaration public const string Tenant = \"X-Microsoft-Tenant\" Field Value Type Description String TenantRegion The tenant region header. Declaration public const string TenantRegion = \"Tenant-Region\" Field Value Type Description String ThrowSite The throw site header. Declaration public const string ThrowSite = \"X-ThrowSite\" Field Value Type Description String TransferEncoding The transfer encoding header. Declaration public const string TransferEncoding = \"Transfer-Encoding\" Field Value Type Description String UserAgent The user agent header. Declaration public const string UserAgent = \"User-Agent\" Field Value Type Description String WebhooksResource Webhooks-WorkloadResource Declaration public const string WebhooksResource = \"Webhooks-WorkloadResource\" Field Value Type Description String XMsClientUserAgent Client User Agent header. This header has the user agent in requests. Used in requests to presence service at the moment. Declaration public const string XMsClientUserAgent = \"X-Ms-Client-User-Agent\" Field Value Type Description String XMsClientVersion The client version header. This header has the client version in requests. Used in requests to presence service at the moment. Declaration public const string XMsClientVersion = \"X-Ms-Client-Version\" Field Value Type Description String XMsCorrelationId the correlation id header. This header is used to correlate requests with presence service at the moment. Declaration public const string XMsCorrelationId = \"X-Ms-Correlation-Id\" Field Value Type Description String" }, - "client/Microsoft.Graph.Communications.Client.StateManager-2.html": { - "href": "client/Microsoft.Graph.Communications.Client.StateManager-2.html", - "title": "Class StateManager", - "keywords": "Class StateManager The state manager implementation. Inheritance Object StateManager Implements IStateManager ICollection IEnumerable IEnumerable IDisposable Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class StateManager : Disposable, IStateManager, ICollection, IEnumerable, IEnumerable, IDisposable where TResource : IResource where TEntity : Entity Type Parameters Name Description TResource The type of the resource. TEntity The type of the entity. Constructors StateManager(ISerializer, ICache) Initializes a new instance of the StateManager class. Declaration public StateManager(ISerializer serializer, ICache cache) Parameters Type Name Description ISerializer serializer The serializer. ICache cache The cache. Properties Count Declaration public int Count { get; } Property Value Type Description Int32 IsReadOnly Declaration public bool IsReadOnly { get; } Property Value Type Description Boolean Item[String] Declaration public TResource this[string id] { get; } Parameters Type Name Description String id Property Value Type Description TResource Methods Add(TResource) Adds an item to the ICollection . Declaration public void Add(TResource item) Parameters Type Name Description TResource item The object to add to the ICollection . Exceptions Type Condition ServiceException If the resource already exists in the collection. Clear() Declaration public void Clear() Contains(TResource) Declaration public bool Contains(TResource item) Parameters Type Name Description TResource item Returns Type Description Boolean CopyContent() Declaration public ICollection CopyContent() Returns Type Description ICollection CopyTo(TResource[], Int32) Declaration public void CopyTo(TResource[] array, int arrayIndex) Parameters Type Name Description TResource[] array Int32 arrayIndex Dispose(Boolean) Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing GetEnumerator() Declaration public IEnumerator GetEnumerator() Returns Type Description IEnumerator GetOrAdd(String, Func) Declaration public TResource GetOrAdd(string id, Func resourceFactory) Parameters Type Name Description String id Func resourceFactory Returns Type Description TResource GetOrAddAsync(String, Func>) Declaration public Task GetOrAddAsync(string id, Func> resourceFactory) Parameters Type Name Description String id Func < Task > resourceFactory Returns Type Description Task Remove(TResource) Removes the occurrence of a specific object from the IStateManager . Declaration public bool Remove(TResource item) Parameters Type Name Description TResource item The object to remove from the IStateManager . Returns Type Description Boolean true if item was successfully removed from the IStateManager . Exceptions Type Condition ServiceException If the resource does not exist in the collection. Remove(String) Removes the occurrence of a specific object from the IStateManager . Declaration public TResource Remove(string id) Parameters Type Name Description String id The identifier of the object to remove from the IStateManager . Returns Type Description TResource The IResource that was removed. Exceptions Type Condition ServiceException If the resource does not exist in the collection. TryRemove(String, out TResource) Declaration public bool TryRemove(string id, out TResource resource) Parameters Type Name Description String id TResource resource Returns Type Description Boolean Explicit Interface Implementations IEnumerable.GetEnumerator() Declaration IEnumerator IEnumerable.GetEnumerator() Returns Type Description IEnumerator Implements IStateManager System.Collections.Generic.ICollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable System.IDisposable See Also IStateManager " + "common/Microsoft.Graph.Communications.Common.HighResolutionDateTime.html": { + "href": "common/Microsoft.Graph.Communications.Common.HighResolutionDateTime.html", + "title": "Class HighResolutionDateTime", + "keywords": "Class HighResolutionDateTime High resolution datetime Inheritance Object HighResolutionDateTime Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HighResolutionDateTime Properties IsAvailable Gets a value indicating whether high resolution datetime is available Declaration public static bool IsAvailable { get; } Property Value Type Description Boolean UtcNow Gets UTC now Declaration public static DateTime UtcNow { get; } Property Value Type Description DateTime" }, - "client/Microsoft.Graph.Communications.Common.Telemetry.CommsLogEventFormatter.html": { - "href": "client/Microsoft.Graph.Communications.Common.Telemetry.CommsLogEventFormatter.html", - "title": "Class CommsLogEventFormatter", - "keywords": "Class CommsLogEventFormatter Test log formatter. Inheritance Object CommsLogEventFormatter Implements ILogEventFormatter Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class CommsLogEventFormatter : ILogEventFormatter Constructors CommsLogEventFormatter() Declaration public CommsLogEventFormatter() Methods Format(LogEvent) Declaration public string Format(LogEvent logEvent) Parameters Type Name Description LogEvent logEvent Returns Type Description String Implements ILogEventFormatter" + "client/Microsoft.Graph.Communications.Resources.IResource.html": { + "href": "client/Microsoft.Graph.Communications.Resources.IResource.html", + "title": "Interface IResource", + "keywords": "Interface IResource The stateful resource interface. Inherited Members IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResource : IResourceBase, IDisposable Properties Id Gets the identifier. Declaration string Id { get; } Property Value Type Description String ModifiedDateTime Gets the last modified date time of this resource. Declaration DateTimeOffset ModifiedDateTime { get; } Property Value Type Description DateTimeOffset Resource Gets the resource. Declaration object Resource { get; } Property Value Type Description Object See Also IResourceBase" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.HashingObfuscationEngine.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.HashingObfuscationEngine.html", - "title": "Class HashingObfuscationEngine", - "keywords": "Class HashingObfuscationEngine Obfuscation engine that hashes PII using salt. Inheritance Object HashingObfuscationEngine Implements IObfuscationEngine Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class HashingObfuscationEngine : IObfuscationEngine Constructors HashingObfuscationEngine(Func) Initializes a new instance of the HashingObfuscationEngine class. Declaration public HashingObfuscationEngine(Func saltProvider) Parameters Type Name Description Func < Byte []> saltProvider The salt provider. Properties Enabled Gets a value indicating whether obfuscation is enabled. Declaration public bool Enabled { get; } Property Value Type Description Boolean HashAlgorithm Gets or sets the hash algorithm. Declaration public HashAlgorithm HashAlgorithm { get; set; } Property Value Type Description HashAlgorithm HashLength Gets or sets the length of the hashed payload. Set this to -1 for full salt. Declaration public int HashLength { get; set; } Property Value Type Description Int32 ObfuscationConfiguration Gets or sets the obfuscation configuration. This is also set when configuration is linked to an obfuscation engine. Declaration public ObfuscationConfiguration ObfuscationConfiguration { get; set; } Property Value Type Description ObfuscationConfiguration SaltProvider Gets or sets the salt provider. Declaration protected Func SaltProvider { get; set; } Property Value Type Description Func < Byte []> Methods Obfuscate(Object, ObfuscationTag) Obfuscates the specified payload. Declaration public string Obfuscate(object payload, ObfuscationTag obfuscationTag) Parameters Type Name Description Object payload The payload. ObfuscationTag obfuscationTag The obfuscation tag. Returns Type Description String Obfuscated data. Implements IObfuscationEngine Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "client/Microsoft.Graph.Communications.Resources.IResource-2.html": { + "href": "client/Microsoft.Graph.Communications.Resources.IResource-2.html", + "title": "Interface IResource", + "keywords": "Interface IResource The stateful resource interface. Inherited Members IResource.Id IResource.ModifiedDateTime IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResource : IResource, IResourceBase, IDisposable where TSelf : IResource where TEntity : Entity Type Parameters Name Description TSelf The self type of the resource. TEntity The containing Entity type. Properties Resource Gets the resource. Declaration TEntity Resource { get; } Property Value Type Description TEntity Events OnUpdated Event fired when this resource has been updated. Declaration event ResourceEventHandler OnUpdated Event Type Type Description ResourceEventHandler See Also IResource" }, - "client/Microsoft.Graph.Communications.Client.Cache.CacheContext-1.html": { - "href": "client/Microsoft.Graph.Communications.Client.Cache.CacheContext-1.html", - "title": "Struct CacheContext", - "keywords": "Struct CacheContext The stored cache context Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() ValueType.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Graph.Communications.Client.Cache Assembly : Microsoft.Graph.Communications.Client.dll Syntax public struct CacheContext where TEntity : Entity Type Parameters Name Description TEntity The type of the entity. Properties Id Gets or sets the context identifier. Declaration public string Id { get; set; } Property Value Type Description String Resource Gets or sets the resource. Declaration public TEntity Resource { get; set; } Property Value Type Description TEntity ScenarioId Gets or sets the scenario identifier associated with this resource. Declaration public Guid ScenarioId { get; set; } Property Value Type Description Guid TenantId Gets or sets the tenant identifier associated with this resource. Declaration public string TenantId { get; set; } Property Value Type Description String" + "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCommunicationsClientExtensions.html": { + "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCommunicationsClientExtensions.html", + "title": "Class MediaCommunicationsClientExtensions", + "keywords": "Class MediaCommunicationsClientExtensions The stateful client extension. Inheritance Object MediaCommunicationsClientExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public static class MediaCommunicationsClientExtensions Methods CreateMediaSession(ICommunicationsClient, AudioSocketSettings, VideoSocketSettings, VideoSocketSettings, DataSocketSettings, Guid) Creates a local media session for the provided communications client with a given socket configuration. Declaration public static ILocalMediaSession CreateMediaSession(this ICommunicationsClient statefulClient, AudioSocketSettings audioSocketSettings, VideoSocketSettings videoSocketSettings, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null, Guid mediaSessionId = default(Guid)) Parameters Type Name Description ICommunicationsClient statefulClient The stateful client. AudioSocketSettings audioSocketSettings The audio socket settings. VideoSocketSettings videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Guid mediaSessionId The id for the media session. Returns Type Description ILocalMediaSession A ILocalMediaSession . Exceptions Type Condition ArgumentNullException If the communications client has not been specified. ArgumentException If the client does not have a valid identifier. CreateMediaSession(ICommunicationsClient, AudioSocketSettings, IEnumerable, VideoSocketSettings, DataSocketSettings, Guid) Creates a local media session for the provided communications client with a given socket configuration. Declaration public static ILocalMediaSession CreateMediaSession(this ICommunicationsClient client, AudioSocketSettings audioSocketSettings, IEnumerable videoSocketSettings = null, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null, Guid mediaSessionId = default(Guid)) Parameters Type Name Description ICommunicationsClient client The communications client. AudioSocketSettings audioSocketSettings The audio socket settings. IEnumerable < VideoSocketSettings > videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Guid mediaSessionId The id for the media session. Returns Type Description ILocalMediaSession A ILocalMediaSession . Exceptions Type Condition ArgumentNullException If the communications client has not been specified. ArgumentException If the client does not have a valid identifier." }, - "client/Microsoft.Graph.Communications.Client.Notifications.FixedSizeQueue-1.html": { - "href": "client/Microsoft.Graph.Communications.Client.Notifications.FixedSizeQueue-1.html", - "title": "Class FixedSizeQueue", - "keywords": "Class FixedSizeQueue A class that implements a fixed size list. Inheritance Object FixedSizeQueue Implements IReadOnlyCollection IEnumerable IEnumerable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client.Notifications Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class FixedSizeQueue : IReadOnlyCollection, IEnumerable, IEnumerable Type Parameters Name Description T The generic type Constructors FixedSizeQueue(Int32) Initializes a new instance of the FixedSizeQueue class. Declaration public FixedSizeQueue(int maxSize) Parameters Type Name Description Int32 maxSize The maximum size. Properties Count Gets the number of elements in the collection. Declaration public int Count { get; } Property Value Type Description Int32 Methods Enqueue(T) Enqueues the item. Declaration public void Enqueue(T item) Parameters Type Name Description T item The object. GetEnumerator() Declaration public IEnumerator GetEnumerator() Returns Type Description IEnumerator Remove(T) Removes the specified item. Declaration public void Remove(T item) Parameters Type Name Description T item The item. Explicit Interface Implementations IEnumerable.GetEnumerator() Declaration IEnumerator IEnumerable.GetEnumerator() Returns Type Description IEnumerator Implements System.Collections.Generic.IReadOnlyCollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable See Also ICollection " + "calls/Microsoft.Graph.Communications.Calls.ParticipantExtensions.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.ParticipantExtensions.html", + "title": "Class ParticipantExtensions", + "keywords": "Class ParticipantExtensions Extensions for the stateful participant resource. Inheritance Object ParticipantExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public static class ParticipantExtensions Methods InviteAsync(IParticipantCollection, IdentitySet, String, CancellationToken) Invite a participant into the existing call. Declaration public static Task InviteAsync(this IParticipantCollection participantCollection, IdentitySet identitySet, string replacesCallId = null, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description IParticipantCollection participantCollection The participant collection into which a new participant is being invited. IdentitySet identitySet The identity set of the invited participant. String replacesCallId The replaces call identifier. This is an optional field used for consultative transfer. This is used to bring a participant from an existing call. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the participant has joined. Any updates on the participant collection will be delivered via notification and can be observed using IParticipantCollection.OnUpdated Exceptions Type Condition ArgumentNullException If IdentitySet is null." }, - "core/Microsoft.Graph.Communications.Core.Notifications.NotificationProcessorExtensions.html": { - "href": "core/Microsoft.Graph.Communications.Core.Notifications.NotificationProcessorExtensions.html", - "title": "Class NotificationProcessorExtensions", - "keywords": "Class NotificationProcessorExtensions Extensions for container client. Inheritance Object NotificationProcessorExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class NotificationProcessorExtensions Methods ExtractResouceData(CommsNotification) Extracts the resource data from the specified notification. Declaration public static object ExtractResouceData(this CommsNotification notification) Parameters Type Name Description CommsNotification notification The notification. Returns Type Description Object The resource data notification content. Exceptions Type Condition ServiceException If the specified notification is invalid. ProcessNotificationAsync(INotificationProcessor, HttpRequestMessage) Processes the notification sent from the server to the client. This overload accepts the type of HttpRequest. Declaration public static Task ProcessNotificationAsync(this INotificationProcessor processor, HttpRequestMessage request) Parameters Type Name Description INotificationProcessor processor The processor. HttpRequestMessage request The request. Returns Type Description Task < HttpResponseMessage > Response to be sent back. SanitizeResource(String, String) Gets the model URI. Declaration public static string SanitizeResource(this string resource, string baseUrl = null) Parameters Type Name Description String resource The resource. String baseUrl The base URL. Returns Type Description String The model uri string. Exceptions Type Condition ArgumentNullException If the resource string is null or whitespace. TryGetGuid(HttpHeaders, String, out Guid) Tries to get the GUID value for the specifed header. Declaration public static bool TryGetGuid(this HttpHeaders headers, string header, out Guid guid) Parameters Type Name Description HttpHeaders headers The headers collection. String header The header to look at. Guid guid The found guid Returns Type Description Boolean True if the specified header is a valid guid, false otherwise." + "common/Microsoft.Graph.Communications.Common.CertUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.CertUtils.html", + "title": "Class CertUtils", + "keywords": "Class CertUtils Certificates utilities Inheritance Object CertUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class CertUtils Methods GetCertificate(String, StoreLocation) Get certificate from the certificate store, throw exception if not found. Declaration public static X509Certificate2 GetCertificate(string thumbprint, StoreLocation location) Parameters Type Name Description String thumbprint The thumbprint. StoreLocation location The certificate store location. Returns Type Description X509Certificate2 True if the certificate is found. HasPrivateKeyAccess(X509Certificate2, IGraphLogger) Verifies the private key access on a given certificate. If a logger is provided, the cert Common name and any errors are printed out. Declaration public static bool HasPrivateKeyAccess(this X509Certificate2 certificate, IGraphLogger logger = null) Parameters Type Name Description X509Certificate2 certificate The certificate. IGraphLogger logger The logger. Returns Type Description Boolean True if private key can be accessed, false otherwise. TryGetCertificate(String, StoreLocation) Tries to the get certificate from the certificate store. Declaration public static X509Certificate2 TryGetCertificate(string thumbprint, StoreLocation location) Parameters Type Name Description String thumbprint The thumbprint. StoreLocation location The certificate store location. Returns Type Description X509Certificate2 True if the certificate is found. TryGetCertificate(String, String, StoreLocation) Tries to the get certificate from the certificate store. Declaration public static X509Certificate2 TryGetCertificate(string issuer, string enhancedKeyUsage, StoreLocation location) Parameters Type Name Description String issuer The issuer. String enhancedKeyUsage Enhanced key usage. StoreLocation location The certificate store location. Returns Type Description X509Certificate2 True if the certificate is found. TryGetCertificateWithCommonName(String, StoreLocation) Tries to get certificate with common name from the certificate store. Declaration public static X509Certificate2 TryGetCertificateWithCommonName(string commonName, StoreLocation location) Parameters Type Name Description String commonName Name of the common. StoreLocation location The location. Returns Type Description X509Certificate2 The certificate. null if not found." + }, + "common/Microsoft.Graph.Communications.Common.AutoClean.html": { + "href": "common/Microsoft.Graph.Communications.Common.AutoClean.html", + "title": "Class AutoClean", + "keywords": "Class AutoClean Helper class to automatically cleanup. Inheritance Object Disposable AutoClean AutoClean Implements IDisposable Inherited Members Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class AutoClean : Disposable, IDisposable Constructors AutoClean(Action) Initializes a new instance of the AutoClean class. Declaration public AutoClean(Action action) Parameters Type Name Description Action action Cleanup action. Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "client/Microsoft.Graph.Communications.Client.Transport.GraphClientWrapper.html": { + "href": "client/Microsoft.Graph.Communications.Client.Transport.GraphClientWrapper.html", + "title": "Class GraphClientWrapper", + "keywords": "Class GraphClientWrapper The graph client wrapper. Inheritance Object GraphClientWrapper Implements IGraphClient Namespace : Microsoft.Graph.Communications.Client.Transport Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class GraphClientWrapper : ObjectRoot, IGraphClient Constructors GraphClientWrapper(IGraphClient, GraphClientContext) Initializes a new instance of the GraphClientWrapper class. Declaration public GraphClientWrapper(IGraphClient client, GraphClientContext context) Parameters Type Name Description IGraphClient client The client. GraphClientContext context The context. Properties Context Gets the context. Declaration public GraphClientContext Context { get; } Property Value Type Description GraphClientContext DefaultProperties Gets the default properties. Declaration public IEnumerable DefaultProperties { get; } Property Value Type Description IEnumerable < IGraphProperty > GraphLogger Declaration public IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Methods SendAsync(IGraphRequest, CancellationToken) Declaration public Task SendAsync(IGraphRequest request, CancellationToken cancellationToken = default(CancellationToken)) where T : class Parameters Type Name Description IGraphRequest request CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T SendAsync(IGraphRequest, CancellationToken) Declaration public Task> SendAsync(IGraphRequest request, CancellationToken cancellationToken = default(CancellationToken)) where T1 : class where T2 : class Parameters Type Name Description IGraphRequest request CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T1 T2 Implements IGraphClient" + }, + "client/Microsoft.Graph.Communications.Client.Transport.GraphClientContext.html": { + "href": "client/Microsoft.Graph.Communications.Client.Transport.GraphClientContext.html", + "title": "Class GraphClientContext", + "keywords": "Class GraphClientContext The context for the graph client wrapper. Inheritance Object GraphClientContext Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client.Transport Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class GraphClientContext Constructors GraphClientContext() Declaration public GraphClientContext() Properties ScenarioId Gets or sets the scenario identifier. Declaration public Guid ScenarioId { get; set; } Property Value Type Description Guid TenantId Gets or sets the tenant. Declaration public string TenantId { get; set; } Property Value Type Description String" + }, + "calls_media/Microsoft.Graph.Communications.Calls.Media.VideoSendBuffer.html": { + "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.VideoSendBuffer.html", + "title": "Class VideoSendBuffer", + "keywords": "Class VideoSendBuffer Creates a Video Buffer for Send and also implements Dispose Inheritance Object VideoSendBuffer Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public class VideoSendBuffer : VideoMediaBuffer Constructors VideoSendBuffer(Byte[], UInt32, VideoFormat, Int64) Initializes a new instance of the VideoSendBuffer class. Declaration public VideoSendBuffer(byte[] buffer, uint length, VideoFormat format, long timeStamp = 0L) Parameters Type Name Description Byte [] buffer The buffer. UInt32 length The length. VideoFormat format The format. Int64 timeStamp The time stamp. VideoSendBuffer(IntPtr, Int64, VideoFormat, Int64) Initializes a new instance of the VideoSendBuffer class. Declaration public VideoSendBuffer(IntPtr data, long length, VideoFormat videoFormat, long timeStamp = 0L) Parameters Type Name Description IntPtr data The data. Int64 length The length. VideoFormat videoFormat The video format. Int64 timeStamp The time stamp. Methods Dispose(Boolean) Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing" + }, + "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaSession.html": { + "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaSession.html", + "title": "Class MediaSession", + "keywords": "Class MediaSession Inheritance Object MediaSession Implements ILocalMediaSession IMediaSession IDisposable Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public class MediaSession : ObjectRootDisposable, ILocalMediaSession, IMediaSession, IDisposable Constructors MediaSession(IGraphLogger, Guid, AudioSocketSettings, VideoSocketSettings, VideoSocketSettings, DataSocketSettings) Initializes a new instance of the MediaSession class. Declaration public MediaSession(IGraphLogger logger, Guid mediaSessionId, AudioSocketSettings audioSocketSettings, VideoSocketSettings videoSocketSettings, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null) Parameters Type Name Description IGraphLogger logger The logger. Guid mediaSessionId The media session id. AudioSocketSettings audioSocketSettings The audio socket settings. VideoSocketSettings videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Exceptions Type Condition ArgumentException When no media session id or no valid socket settings have been specified. MediaSession(IGraphLogger, Guid, AudioSocketSettings, IEnumerable, VideoSocketSettings, DataSocketSettings) Initializes a new instance of the MediaSession class. Declaration public MediaSession(IGraphLogger logger, Guid mediaSessionId, AudioSocketSettings audioSocketSettings, IEnumerable videoSocketSettings = null, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null) Parameters Type Name Description IGraphLogger logger The logger. Guid mediaSessionId The media session id. AudioSocketSettings audioSocketSettings The audio socket settings. IEnumerable < VideoSocketSettings > videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Exceptions Type Condition ArgumentException When no media session id or no valid socket settings have been specified. Properties AudioSocket Gets the audio socket associated with this media session. Declaration public IAudioSocket AudioSocket { get; } Property Value Type Description IAudioSocket DataSocket Gets the data socket associated with this media session. Declaration public IDataSocket DataSocket { get; } Property Value Type Description IDataSocket MediaSessionId Declaration public Guid MediaSessionId { get; } Property Value Type Description Guid Modalities Declaration public Modality[] Modalities { get; } Property Value Type Description Modality [] VbssSocket Gets the VBSS socket associated with this media session. Declaration public IVideoSocket VbssSocket { get; } Property Value Type Description IVideoSocket VideoSocket Gets the video socket associated with this media session. If current media session contains multiple sockets, this will return the first one in the list. Declaration public IVideoSocket VideoSocket { get; } Property Value Type Description IVideoSocket VideoSockets Gets the list of video socket associated with this media session. Declaration public IReadOnlyList VideoSockets { get; } Property Value Type Description IReadOnlyList < IVideoSocket > Methods Dispose(Boolean) Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing GetMediaConfiguration() Declaration public JObject GetMediaConfiguration() Returns Type Description Newtonsoft.Json.Linq.JObject Implements ILocalMediaSession IMediaSession System.IDisposable" + }, + "calls/Microsoft.Graph.Communications.Calls.ICallCollection.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.ICallCollection.html", + "title": "Interface ICallCollection", + "keywords": "Interface ICallCollection The stateful call collection interface. Inherited Members IDisposable.Dispose() IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface ICallCollection : IResourceCollection, IResourceCollection, IResourceCollection, IResourceBase, IDisposable, IReadOnlyCollection, IEnumerable, IEnumerable Methods AddAsync(Call, IMediaSession, Guid, CancellationToken) Create a new call and add to the collection. Declaration Task AddAsync(Call resource, IMediaSession mediaSession = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Call resource The call resource to be added. IMediaSession mediaSession The media session object, if any. This is valid only for application hosted media scenarios. Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < ICall > The ICall that has been created. This call has not yet been established and those notifications will fire on ICall.OnUpdated Events OnIncoming The incoming call event. This event is triggered when a new call is being received by the bot. Declaration event CollectionEventHandler OnIncoming Event Type Type Description CollectionEventHandler < ICallCollection , ICall > Extension Methods CallCollectionExtensions.AddAsync(ICallCollection, JoinMeetingParameters, Guid, CancellationToken)" + }, + "bot_media/Microsoft.Skype.Bots.Media.VideoSinkEncodingFormat.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSinkEncodingFormat.html", + "title": "Enum VideoSinkEncodingFormat", + "keywords": "Enum VideoSinkEncodingFormat VideoSinkEncodingFormats Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum VideoSinkEncodingFormat Fields Name Description H264 H264 Yuv Yuv" + }, + "bot_media/Microsoft.Skype.Bots.Media.VideoMetrics.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoMetrics.html", + "title": "Class VideoMetrics", + "keywords": "Class VideoMetrics Video-specific quality of experience metrics Inheritance Object VideoMetrics Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoMetrics Constructors VideoMetrics() Declaration public VideoMetrics() Properties AverageInboundBitRatePerSecond Average bit rate on the inbound video stream, expressed in bits per second Declaration public uint AverageInboundBitRatePerSecond { get; set; } Property Value Type Description UInt32 AverageInboundFrameRatePerSecond Average frame rate on the inbound video stream, expressed in frames per second Declaration public double AverageInboundFrameRatePerSecond { get; set; } Property Value Type Description Double AverageOutboundBitRatePerSecond Average bit rate on the outbound video stream, expressed in bits per second Declaration public uint AverageOutboundBitRatePerSecond { get; set; } Property Value Type Description UInt32 AverageOutboundFrameRatePerSecond Average frame rate on the outbound video stream, expressed in frames per second Declaration public double AverageOutboundFrameRatePerSecond { get; set; } Property Value Type Description Double" }, - "core/Microsoft.Graph.Communications.Core.Notifications.NotificationEventArgs.html": { - "href": "core/Microsoft.Graph.Communications.Core.Notifications.NotificationEventArgs.html", - "title": "Class NotificationEventArgs", - "keywords": "Class NotificationEventArgs Notification event arguments class. Inheritance Object NotificationEventArgs CollectionNotificationEventArgs Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class NotificationEventArgs Constructors NotificationEventArgs(Uri, CommsNotification, ChangeType, Object) Initializes a new instance of the NotificationEventArgs class. Declaration public NotificationEventArgs(Uri callbackUri, CommsNotification notification, ChangeType changeType, object resourceData) Parameters Type Name Description Uri callbackUri The callback URI. CommsNotification notification The notification. ChangeType changeType Type of the change. Object resourceData The resource data. Properties AdditionalData Gets or sets the additional data. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > CallbackUri Gets the callback URI. Declaration public Uri CallbackUri { get; } Property Value Type Description Uri ChangeType Gets the type of the change. Declaration public ChangeType ChangeType { get; } Property Value Type Description ChangeType Notification Gets the notification. Declaration public CommsNotification Notification { get; } Property Value Type Description CommsNotification NotificationId Gets the notification identifier. Declaration public Guid NotificationId { get; } Property Value Type Description Guid RequestId Gets or sets the request identifier. Declaration public Guid RequestId { get; set; } Property Value Type Description Guid ResourceData Gets the resource data. Declaration public object ResourceData { get; } Property Value Type Description Object ScenarioId Gets or sets the scenario identifier. Declaration public Guid ScenarioId { get; set; } Property Value Type Description Guid TenantId Gets or sets the tenant. Declaration public string TenantId { get; set; } Property Value Type Description String" + "common/Microsoft.Graph.Communications.Common.TaskExtension.html": { + "href": "common/Microsoft.Graph.Communications.Common.TaskExtension.html", + "title": "Class TaskExtension", + "keywords": "Class TaskExtension Extensions for Task Inheritance Object TaskExtension Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class TaskExtension Methods ExpectExceptionAsync(Task, Type) Except an exception Declaration public static Task ExpectExceptionAsync(this Task task, Type expectedEx) Parameters Type Name Description Task task task Type expectedEx expected exception Returns Type Description Task Task representing completion ExpectExceptionAsync(Task, Type) Except an exception Declaration public static Task ExpectExceptionAsync(this Task task, Type expectedEx) Parameters Type Name Description Task task task Type expectedEx expected exception Returns Type Description Task Task representing completion Type Parameters Name Description T type IgnoreExceptionAsync(Task, Type) Ignore exception Declaration public static Task IgnoreExceptionAsync(this Task task, Type exceptionType) Parameters Type Name Description Task task task Type exceptionType exception type Returns Type Description Task Task representing completion IgnoreExceptionAsync(Task, Type) Ignore exception Declaration public static Task IgnoreExceptionAsync(this Task task, Type exceptionType) Parameters Type Name Description Task task task Type exceptionType exception type Returns Type Description Task Task representing completion Type Parameters Name Description T type" }, - "common/Microsoft.Graph.Communications.Common.Transport.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.html", - "title": "Namespace Microsoft.Graph.Communications.Common.Transport", - "keywords": "Namespace Microsoft.Graph.Communications.Common.Transport Classes GraphHttpClient Graph client that handles transport over http. GraphHttpClientContainer This class is used to handle multiple http clients within one service. This class extends the concurrent dictionary and contains a mapping from a key for the client to the http client itself. GraphHttpClientFactory The HTTP graph client factory. GraphProperty The IGraphProperty helpers and extensions. GraphRequest GraphRequest The base of the exchange of a IGraphRequest or IGraphResponse . GraphRequestExtensions Extensions for IGraphRequest class. GraphResponse GraphResponse The base of the exchange of a IGraphRequest or IGraphResponse . GraphResponseException Class representing GraphResponseException GraphResponseExtensions Extensions for IGraphResponse class. HttpRequestMessageExtensions Extensions for HttpRequestMessage . HttpResponseMessageExtensions Extensions for HttpResponseMessage class. NoContentMessage IGraphClient requires type parameters for functionality. This is a marked Type/class to make function calls to IGraphClient indicating we have request/response with no body. The sole purpose of this class's existence is to reduce code duplicacy. Structs GraphProperty Interfaces IGraphClient This class abstracts any communication with different services. This client acts at an object level rather than wire level and thus providing richer experience when working with complex objects. IGraphClientFactory Interface for factory of IGraphClient . IGraphExchange The base of the exchange of a IGraphRequest or IGraphResponse . IGraphExchange The base of the exchange of a IGraphRequest or IGraphResponse . IGraphHttpClient Interface for Http transport client. Gives us a way to work with different instances of GraphClient through Dependency Injection. IGraphProperty The graph property containing request or response data. IGraphProperty IGraphRequest The request object used by the graph sdk. IGraphRequest The request object with content. IGraphResponse The response got in exchange of a IGraphRequest . IGraphResponse The response got in exchange of a IGraphRequest . Enums RequestType Type of request that we want to issue on the transport ResponseStatus Different status of IGraphResponse ." + "common/Microsoft.Graph.Communications.Common.StringUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.StringUtils.html", + "title": "Class StringUtils", + "keywords": "Class StringUtils String Utils Inheritance Object StringUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class StringUtils Methods ConvertOrDefault(String, T) Convert string to type or return default Declaration public static T ConvertOrDefault(string value, T defaultValue = null) Parameters Type Name Description String value input value T defaultValue default value Returns Type Description T result of the conversion Type Parameters Name Description T Type of return value EqualsIgnoreCase(String, String) Case insensitive string comparison Declaration public static bool EqualsIgnoreCase(this string valueA, string valueB) Parameters Type Name Description String valueA Input string A String valueB Input string B Returns Type Description Boolean Value indicating whether strings are equal in a case insensitive comparision FromBase64(String) Converts the specified string, which encodes binary data as base-64 digits, to an equivalent 8-bit unsigned integer array. Declaration public static byte[] FromBase64(this string data) Parameters Type Name Description String data The string to convert. Returns Type Description Byte [] An array of 8-bit unsigned integers. FromBase64Url(String) Converts the specified string, which encodes binary data as base-64 digits, to an equivalent 8-bit unsigned integer array. Declaration public static byte[] FromBase64Url(this string data) Parameters Type Name Description String data The string to convert. Returns Type Description Byte [] An array of 8-bit unsigned integers. GetSHA256Hash(String) Creates a SHA256 hash of the passed string. Declaration public static string GetSHA256Hash(this string input) Parameters Type Name Description String input The input string. Returns Type Description String The SHA256 hash. Join(IEnumerable, String) Concatenates the members of a constructed IEnumerable collection of type String , using the specified separator between each member. Declaration public static string Join(this IEnumerable values, string separator) Parameters Type Name Description IEnumerable < String > values A collection that contains the strings to concatenate. String separator The string to use as a separator. separator is included in the returned string only if values has more than one element. Returns Type Description String A string that consists of the members of values delimited by the separator string. If values has no members, the method returns Empty . NamespaceInCamelCase(String) Returns a namespace in camel case. Declaration public static string NamespaceInCamelCase(this string value) Parameters Type Name Description String value Value to convert. Returns Type Description String The namespace string in camel case. NamespaceInPascalCase(String) Returns a namespace in pascal case. Declaration public static string NamespaceInPascalCase(this string value) Parameters Type Name Description String value Value to convert. Returns Type Description String The namespace string in pascal case. SafeFormat(String, Object[]) Format a string with arguments. Declaration public static string SafeFormat(this string text, params object[] args) Parameters Type Name Description String text Format string. Object [] args Optional arguments. Returns Type Description String Formatted string. ToBase64(ArraySegment, Nullable, Nullable) Convert array segment to base 64 representation. Declaration public static string ToBase64(this ArraySegment data, int? offset = default(int? ), int? count = default(int? )) Parameters Type Name Description ArraySegment < Byte > data Data to convert. Nullable < Int32 > offset Optional override offset. Nullable < Int32 > count Optional override count. Returns Type Description String Base 64 encoded string. ToBase64(Byte[]) Convert byte array to base64. Declaration public static string ToBase64(this byte[] data) Parameters Type Name Description Byte [] data The data. Returns Type Description String Base64 representation. ToBase64Url(ArraySegment, Nullable, Nullable) Convert array segment to base 64 URL representation. Declaration public static string ToBase64Url(this ArraySegment data, int? offset = default(int? ), int? count = default(int? )) Parameters Type Name Description ArraySegment < Byte > data Data to convert. Nullable < Int32 > offset Optional override offset. Nullable < Int32 > count Optional override count. Returns Type Description String Base 64 encoded string. ToCamelCase(String) Converts value to camel casing. Declaration public static string ToCamelCase(this string value) Parameters Type Name Description String value Value to convert. Returns Type Description String Returns string in camel case. ToPascalCase(String) Converts value to pascal casing. Declaration public static string ToPascalCase(this string value) Parameters Type Name Description String value Value to convert. Returns Type Description String Returns string in pascal case. TrimEnd(String, String) Remove a substring from the end of a given string. This is called iteratively. Declaration public static string TrimEnd(this string target, string trimString) Parameters Type Name Description String target The target. String trimString The trim string. Returns Type Description String The string after being trimmed. TrimStart(String, String) Remove a substring from the beginning of a given string. This is called iteratively. Declaration public static string TrimStart(this string target, string trimString) Parameters Type Name Description String target The target. String trimString The trim string. Returns Type Description String The string after being trimmed." }, - "common/Microsoft.Graph.Communications.Common.Transport.ResponseStatus.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.ResponseStatus.html", - "title": "Enum ResponseStatus", - "keywords": "Enum ResponseStatus Different status of IGraphResponse . Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum ResponseStatus Fields Name Description Accepted The request was successfully accepted. BadRequest The request was semantically/syntactically invalid. Conflict There was a conflict in processing the request. Created The request resource was successfully created. Forbidden The request was forbidden. InternalServerError The request resulted in an internal server error. MultiStatus The multi status response. NoContent There was no content in the response. NotFound The requested resource was not found. NotImplemented The not implemented Ok The request was successfully processed. RequestTimeout Client did not send a request within the time the server was expecting the request. ServiceUnavailable The server is temporarily unavailable. TooManyRequests Too many requests were tried. Unauthorized The request was not authorized by the callee. Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(ResponseStatus, String, String) Validator.Equals(ResponseStatus, String) Validator.NotEquals(ResponseStatus, String, String) GraphResponseExtensions.ToHttpStatus()" + "common/Microsoft.Graph.Communications.Common.JsonUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.JsonUtils.html", + "title": "Class JsonUtils", + "keywords": "Class JsonUtils Json Utils Inheritance Object JsonUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class JsonUtils Fields JsonContentType Json content type Declaration public const string JsonContentType = \"application/json\" Field Value Type Description String" }, - "common/Microsoft.Graph.Communications.Common.ObjectRoot.html": { - "href": "common/Microsoft.Graph.Communications.Common.ObjectRoot.html", - "title": "Class ObjectRoot", - "keywords": "Class ObjectRoot Base object. Inheritance Object ObjectRoot Observable GraphLoggerShim GraphHttpClient GraphHttpClientFactory Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public abstract class ObjectRoot Constructors ObjectRoot(IGraphLogger) Initializes a new instance of the ObjectRoot class. Declaration protected ObjectRoot(IGraphLogger logger) Parameters Type Name Description IGraphLogger logger Logger instance. Properties GraphLogger Gets the logger. Declaration protected IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.VideoKeyFrameNeededEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoKeyFrameNeededEventArgs.html", + "title": "Class VideoKeyFrameNeededEventArgs", + "keywords": "Class VideoKeyFrameNeededEventArgs Event arguments of a VideoKeyFrameNeeded event. Inheritance Object EventArgs VideoKeyFrameNeededEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoKeyFrameNeededEventArgs : EventArgs Constructors VideoKeyFrameNeededEventArgs() Declaration public VideoKeyFrameNeededEventArgs() Properties MediaType MediaType of the video buffer. This could be Video or Vbss. Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType SocketId The 0-based ID of the socket that is raising this event. This socket ID can be used in multiview (ie. more than 1 video socket) to determine which video socket is raising this event. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the Microsoft.Skype.Bots.Media.MediaPlatform (or IMediaPlatform) API CreateMediaConfiguration. Eg. If the collection of IVideoSocket objects in the CreateMediaConfiguration API contains { socketA, socketB, socketC }, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Declaration public int SocketId { get; set; } Property Value Type Description Int32 VideoFormats VideoFormats for which keyframe is needed Declaration public VideoFormat[] VideoFormats { get; set; } Property Value Type Description VideoFormat []" }, - "common/Microsoft.Graph.Communications.Common.CertUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.CertUtils.html", - "title": "Class CertUtils", - "keywords": "Class CertUtils Certificates utilities Inheritance Object CertUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class CertUtils Methods GetCertificate(String, StoreLocation) Get certificate from the certificate store, throw exception if not found. Declaration public static X509Certificate2 GetCertificate(string thumbprint, StoreLocation location) Parameters Type Name Description String thumbprint The thumbprint. StoreLocation location The certificate store location. Returns Type Description X509Certificate2 True if the certificate is found. HasPrivateKeyAccess(X509Certificate2, IGraphLogger) Verifies the private key access on a given certificate. If a logger is provided, the cert Common name and any errors are printed out. Declaration public static bool HasPrivateKeyAccess(this X509Certificate2 certificate, IGraphLogger logger = null) Parameters Type Name Description X509Certificate2 certificate The certificate. IGraphLogger logger The logger. Returns Type Description Boolean True if private key can be accessed, false otherwise. TryGetCertificate(String, StoreLocation) Tries to the get certificate from the certificate store. Declaration public static X509Certificate2 TryGetCertificate(string thumbprint, StoreLocation location) Parameters Type Name Description String thumbprint The thumbprint. StoreLocation location The certificate store location. Returns Type Description X509Certificate2 True if the certificate is found. TryGetCertificate(String, String, StoreLocation) Tries to the get certificate from the certificate store. Declaration public static X509Certificate2 TryGetCertificate(string issuer, string enhancedKeyUsage, StoreLocation location) Parameters Type Name Description String issuer The issuer. String enhancedKeyUsage Enhanced key usage. StoreLocation location The certificate store location. Returns Type Description X509Certificate2 True if the certificate is found. TryGetCertificateWithCommonName(String, StoreLocation) Tries to get certificate with common name from the certificate store. Declaration public static X509Certificate2 TryGetCertificateWithCommonName(string commonName, StoreLocation location) Parameters Type Name Description String commonName Name of the common. StoreLocation location The location. Returns Type Description X509Certificate2 The certificate. null if not found." + "bot_media/Microsoft.Skype.Bots.Media.MediaType.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaType.html", + "title": "Enum MediaType", + "keywords": "Enum MediaType Indicates the media type of the socket. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaType Fields Name Description Audio Audio Data Reserved for internal use. Vbss Video-based screen sharing (VBSS) Video Video" }, - "client/Microsoft.Graph.Communications.Client.html": { - "href": "client/Microsoft.Graph.Communications.Client.html", - "title": "Namespace Microsoft.Graph.Communications.Client", - "keywords": "Namespace Microsoft.Graph.Communications.Client Classes CommunicationsClientBuilder The class the provides the builder for stateful client. CommunicationsClientExtensions Extensions for Stateful Client. GraphLoggerExtensions The graph logger extensions for the communications client. PagedList An object that contains paginated list of the generic type T. StateManager The state manager implementation. Interfaces ICommunicationsClient The CommunicationsClient interface. This is the entry point of the SDK and a reference to this instance must be held for the duration of the session. ICommunicationsClientBuilder The builder object that builds the ICommunicationsClient . Use this class to setup the SDK's configuration. IPagedList The paged list interface. IStateManager The state manager interface. This object is responsible for storing the resources in memory." + "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformHealthChangedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformHealthChangedEventArgs.html", + "title": "Class MediaPlatformHealthChangedEventArgs", + "keywords": "Class MediaPlatformHealthChangedEventArgs Event arguments of the MediaPlatformHealthChangedEvent providing the current and previous health status of the media platform. Inheritance Object EventArgs MediaPlatformHealthChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class MediaPlatformHealthChangedEventArgs : EventArgs Constructors MediaPlatformHealthChangedEventArgs() Declaration public MediaPlatformHealthChangedEventArgs() Properties CurrentHealth The current health status. Declaration public MediaPlatformHealthStatus CurrentHealth { get; set; } Property Value Type Description MediaPlatformHealthStatus PreviousHealth The previous health status. Declaration public MediaPlatformHealthStatus PreviousHealth { get; set; } Property Value Type Description MediaPlatformHealthStatus" + }, + "bot_media/Microsoft.Skype.Bots.Media.IAudioVideoFramePlayer.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.IAudioVideoFramePlayer.html", + "title": "Interface IAudioVideoFramePlayer", + "keywords": "Interface IAudioVideoFramePlayer Interface for the AudioVideoFramePlayer responsible for streaming real time audio video Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IAudioVideoFramePlayer Methods ClearAsync(Boolean, List) Clears media buffers from the param settings, if nothing is specified it will clear all the audio and video buffers that are in the queue Declaration Task ClearAsync(bool clearAudio = true, List videoFormats = null) Parameters Type Name Description Boolean clearAudio true will clear the audio buffers, default value is set to true List < VideoFormat > videoFormats list of video formats to clear, default value is null Returns Type Description Task EnqueueBuffersAsync(IList, IList) Enqueue the audio and video media buffers. Usage should be to enqueue the same audio and video length, if audio and video socket are active. Declaration Task EnqueueBuffersAsync(IList audioMediaBuffers, IList videoMediaBuffers) Parameters Type Name Description IList < AudioMediaBuffer > audioMediaBuffers IList < VideoMediaBuffer > videoMediaBuffers Returns Type Description Task ShutdownAsync() This will shutdown the player and clean the associated resources Declaration Task ShutdownAsync() Returns Type Description Task Events LowOnFrames This event will be raised if the player is low on frames Declaration event EventHandler LowOnFrames Event Type Type Description EventHandler < LowOnFramesEventArgs >" }, "client/Microsoft.Graph.Communications.Client.Transport.html": { "href": "client/Microsoft.Graph.Communications.Client.Transport.html", "title": "Namespace Microsoft.Graph.Communications.Client.Transport", "keywords": "Namespace Microsoft.Graph.Communications.Client.Transport Classes GraphAuthClient The graph auth client. GraphAuthClientFactory The HTTP graph client factory. GraphClientContext The context for the graph client wrapper. GraphClientWrapper The graph client wrapper." }, - "client/Microsoft.Graph.Communications.Client.ICommunicationsClientBuilder.html": { - "href": "client/Microsoft.Graph.Communications.Client.ICommunicationsClientBuilder.html", - "title": "Interface ICommunicationsClientBuilder", - "keywords": "Interface ICommunicationsClientBuilder The builder object that builds the ICommunicationsClient . Use this class to setup the SDK's configuration. Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface ICommunicationsClientBuilder Properties Id Gets the client id. Declaration Guid Id { get; } Property Value Type Description Guid Methods Build() Build and return the stateful client object. Declaration ICommunicationsClient Build() Returns Type Description ICommunicationsClient The ICommunicationsClient . Exceptions Type Condition ArgumentException Cannot build the client without setting the required parameters. SetAuthenticationProvider(IRequestAuthenticationProvider) Sets the custom authentication provider. The authentication provider would add authentication to outbound requests and validates any inbound requests. See IRequestAuthenticationProvider Declaration ICommunicationsClientBuilder SetAuthenticationProvider(IRequestAuthenticationProvider provider) Parameters Type Name Description IRequestAuthenticationProvider provider The authentication provider. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the provider is null . SetCacheStrategy(ICache) Sets the cache strategy. Declaration ICommunicationsClientBuilder SetCacheStrategy(ICache cacheStrategy) Parameters Type Name Description ICache cacheStrategy The cache strategy. Returns Type Description ICommunicationsClientBuilder This ICommunicationsClientBuilder object. Exceptions Type Condition ArgumentNullException If the cacheStrategy strategy is null . SetHttpClient(HttpClient, IEnumerable>) Sets the http client. Use a custom HTTP Client instead of the one generated by the SDK. Declaration ICommunicationsClientBuilder SetHttpClient(HttpClient httpClient, IEnumerable> defaultHeaders = null) Parameters Type Name Description HttpClient httpClient The place call endpoint URL. IEnumerable < KeyValuePair < String , String >> defaultHeaders The default headers. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the httpClient is null . SetNotificationUrl(Uri) Set the notification uri for your bot. This is the default notification url for the bot. This can be overriden on a per-resource basis depending on the API support. Declaration ICommunicationsClientBuilder SetNotificationUrl(Uri notificationUrl) Parameters Type Name Description Uri notificationUrl The callback Url. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the notificationUrl is null . ArgumentException URI must be https. SetServiceBaseUrl(Uri) Sets the service base URL. This set's the Endpoint URL for the service. Declaration ICommunicationsClientBuilder SetServiceBaseUrl(Uri serviceBaseUrl) Parameters Type Name Description Uri serviceBaseUrl The place call endpoint URL. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the serviceBaseUrl is null . ArgumentException URI must be https." + "client/Microsoft.Graph.Communications.Client.Authentication.IRequestAuthenticationProvider.html": { + "href": "client/Microsoft.Graph.Communications.Client.Authentication.IRequestAuthenticationProvider.html", + "title": "Interface IRequestAuthenticationProvider", + "keywords": "Interface IRequestAuthenticationProvider The authentication provider interface. This is used to authenticate Inbound requests from Microsoft Graph. It validates the request was issued by Microsoft Graph. Outbound requests to Microsoft Graph. Tenant token is acquired to provide Microsoft Graph the permissions the bot has been consented by the tenant admin Namespace : Microsoft.Graph.Communications.Client.Authentication Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IRequestAuthenticationProvider Methods AuthenticateOutboundRequestAsync(HttpRequestMessage, String) Authenticates the specified request message. This method will be called any time there is an outbound request. This method should add any required headers for authentication (eg: Authorization). Declaration Task AuthenticateOutboundRequestAsync(HttpRequestMessage request, string tenant) Parameters Type Name Description HttpRequestMessage request The outbound http request object. String tenant The tenant for which this request belongs to. Returns Type Description Task The Task . SDK awaits on this task to make sure the bot has included the required headers. ValidateInboundRequestAsync(HttpRequestMessage) Validates the inbound request. This method will be called any time we have an incoming request. Returning IsValid false will result in a Forbidden response being created. SDK waits until a successful validation is returned along with tenant data in RequestValidationResult to fire any events. Declaration Task ValidateInboundRequestAsync(HttpRequestMessage request) Parameters Type Name Description HttpRequestMessage request The incoming request. Returns Type Description Task < RequestValidationResult > The RequestValidationResult structure." }, - "calls/Microsoft.Graph.Communications.Calls.IParticipant.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.IParticipant.html", - "title": "Interface IParticipant", - "keywords": "Interface IParticipant The stateful participant interface. This represents a single participant in a call. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface IParticipant : IResource, IResource, IResourceBase, IDisposable Properties Resource Gets the stateful participant resource. Declaration Participant Resource { get; } Property Value Type Description Participant Methods DeleteAsync(Boolean, CancellationToken) Deletes this participant asynchronously. Declaration Task DeleteAsync(bool handleHttpNotFoundInternally = false, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Boolean handleHttpNotFoundInternally If the IParticipant is already gone, whether to handle the exception gracefully or not. CancellationToken cancellationToken The CancellationToken for the request. Returns Type Description Task The Task that completes after the request has been sent. The completion of this task does not guarantee deletion. Confirmation of deletion comes as a notification and can be subscribed by IParticipant.OnUpdated and IParticipantCollection.OnUpdated MuteAsync(CancellationToken) Performs the mute operation asynchronously. Declaration Task MuteAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The mute notification will come in on IParticipant.OnUpdated See Also IResource" + "calls/Microsoft.Graph.Communications.Calls.CallCollectionExtensions.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.CallCollectionExtensions.html", + "title": "Class CallCollectionExtensions", + "keywords": "Class CallCollectionExtensions Extensions for call collections. Inheritance Object CallCollectionExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public static class CallCollectionExtensions Methods AddAsync(ICallCollection, JoinMeetingParameters, Guid, CancellationToken) Join a new meeting with the provided parameters Declaration public static Task AddAsync(this ICallCollection callCollection, JoinMeetingParameters parameters, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ICallCollection callCollection The call collection. JoinMeetingParameters parameters The join meeting parameters. Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < ICall > The stateful call object once the call is joined." }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphClientFactory.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphClientFactory.html", - "title": "Interface IGraphClientFactory", - "keywords": "Interface IGraphClientFactory Interface for factory of IGraphClient . Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphClientFactory Methods Create(IGraphLogger) Creates a new IGraphClient . Declaration IGraphClient Create(IGraphLogger logger = null) Parameters Type Name Description IGraphLogger logger An optional IGraphLogger logger to be used in the new IGraphClient . Returns Type Description IGraphClient The IGraphClient . Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.VideoResolution.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoResolution.html", + "title": "Enum VideoResolution", + "keywords": "Enum VideoResolution Video resolution for vbss and video Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum VideoResolution Fields Name Description HD1080p 1920 X 1080 HD720p 1280 X 720 SD180p 320 X 180 SD240p 424 X 240 SD360p 640 X 360 SD540p 960 X 540" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLoggerWrapper.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLoggerWrapper.html", - "title": "Class GraphLoggerWrapper", - "keywords": "Class GraphLoggerWrapper The ILogger wrapper for IGraphLogger. Inheritance Object GraphLoggerWrapper Implements ILogger Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphLoggerWrapper : ILogger Constructors GraphLoggerWrapper(IGraphLogger, String, Guid, LogEventType, IEnumerable) Initializes a new instance of the GraphLoggerWrapper class. Declaration public GraphLoggerWrapper(IGraphLogger graphLogger, string component = null, Guid correlationId = default(Guid), LogEventType eventType = LogEventType.Trace, IEnumerable properties = null) Parameters Type Name Description IGraphLogger graphLogger Graph logger instance String component The component in which log is created Guid correlationId The correlation identifier. LogEventType eventType Log event type IEnumerable < Object > properties Extra properties for the log event Methods BeginScope(TState) Declaration public IDisposable BeginScope(TState state) Parameters Type Name Description TState state Returns Type Description IDisposable Type Parameters Name Description TState IsEnabled(LogLevel) Declaration public bool IsEnabled(LogLevel logLevel) Parameters Type Name Description LogLevel logLevel Returns Type Description Boolean Log(LogLevel, EventId, TState, Exception, Func) Declaration public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) Parameters Type Name Description LogLevel logLevel EventId eventId TState state Exception exception Func formatter Type Parameters Name Description TState Implements Microsoft.Extensions.Logging.ILogger Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.LogLevel.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.LogLevel.html", + "title": "Enum LogLevel", + "keywords": "Enum LogLevel Specifies a current logging level for a log line. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum LogLevel Fields Name Description Error Error Log Level Information Information Log Level Verbose Verbose Log Level Warning Warning Log Level" }, - "common/Microsoft.Graph.Communications.Common.Observable-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.Observable-1.html", - "title": "Class Observable", - "keywords": "Class Observable Observable Base class Inheritance Object ObjectRoot Observable Implements IObservable IObserver INotifyCollectionChanged Inherited Members ObjectRoot.GraphLogger Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class Observable : ObjectRoot, IObservable, IObserver, INotifyCollectionChanged Type Parameters Name Description T Type of the value being observed. Constructors Observable(IGraphLogger) Initializes a new instance of the Observable class. Declaration public Observable(IGraphLogger logger) Parameters Type Name Description IGraphLogger logger Logger instance. Properties Observers Gets the observers. Declaration public ICollection> Observers { get; } Property Value Type Description ICollection < IObserver > Methods OnCompleted() Notify observers of completion. Declaration public void OnCompleted() OnError(Exception) Notify observers of error. Declaration public void OnError(Exception error) Parameters Type Name Description Exception error Exception information. OnNext(T) Notify observers. Declaration public void OnNext(T value) Parameters Type Name Description T value Value to observers. OnNext(T, IEnumerable>) Notify observers. Declaration public void OnNext(T value, IEnumerable> observersSubset) Parameters Type Name Description T value Value to observers. IEnumerable < IObserver > observersSubset Subset of observers to notify. Subscribe(IObserver) Notifies the provider that an observer is to receive notifications. Declaration public virtual IDisposable Subscribe(IObserver observer) Parameters Type Name Description IObserver observer The object that is to receive notifications. Returns Type Description IDisposable A reference to an interface that allows observers to stop receiving notifications before the provider has finished sending them. Events CollectionChanged Collection changed event. Declaration public event NotifyCollectionChangedEventHandler CollectionChanged Event Type Type Description NotifyCollectionChangedEventHandler Implements System.IObservable System.IObserver System.Collections.Specialized.INotifyCollectionChanged Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.DataMediaReceivedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.DataMediaReceivedEventArgs.html", + "title": "Class DataMediaReceivedEventArgs", + "keywords": "Class DataMediaReceivedEventArgs Reserved for the internal use. Inheritance Object EventArgs DataMediaReceivedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class DataMediaReceivedEventArgs : EventArgs Constructors DataMediaReceivedEventArgs() Declaration public DataMediaReceivedEventArgs() Properties Buffer Reserved for the internal use. Declaration public DataMediaBuffer Buffer { get; } Property Value Type Description DataMediaBuffer" }, - "client/Microsoft.Graph.Communications.Resources.IResourceBase.html": { - "href": "client/Microsoft.Graph.Communications.Resources.IResourceBase.html", - "title": "Interface IResourceBase", - "keywords": "Interface IResourceBase The resource base interface. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResourceBase : IDisposable Properties Client Gets the client. Declaration ICommunicationsClient Client { get; } Property Value Type Description ICommunicationsClient CreatedDateTime Gets the created date time of this resource. Declaration DateTimeOffset CreatedDateTime { get; } Property Value Type Description DateTimeOffset GraphClient Gets the graph client. Declaration IGraphClient GraphClient { get; } Property Value Type Description IGraphClient GraphLogger Gets the graph logger. Declaration IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger ResourcePath Gets the resource path for this collection. Declaration string ResourcePath { get; } Property Value Type Description String See Also IDisposable" + "client/Microsoft.Graph.Communications.Resources.CollectionEventArgs-1.html": { + "href": "client/Microsoft.Graph.Communications.Resources.CollectionEventArgs-1.html", + "title": "Class CollectionEventArgs", + "keywords": "Class CollectionEventArgs The collection event arguments. Inheritance Object CollectionEventArgs Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class CollectionEventArgs Type Parameters Name Description TEntity The containing stateful resource type. IResource Constructors CollectionEventArgs(String, ICollection, ICollection, ICollection) Initializes a new instance of the CollectionEventArgs class. Declaration public CollectionEventArgs(string resourcePath, ICollection addedResources = null, ICollection updatedResources = null, ICollection removedResources = null) Parameters Type Name Description String resourcePath The resource path. ICollection addedResources The added resources. ICollection updatedResources The updated resources. ICollection removedResources The removed resources. Properties AddedResources Gets the added resources. Declaration public ICollection AddedResources { get; } Property Value Type Description ICollection AdditionalData Gets or sets the additional data for the event. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > RemovedResources Gets the removed resources. Declaration public ICollection RemovedResources { get; } Property Value Type Description ICollection ResourcePath Gets the resource path for the collection. Declaration public string ResourcePath { get; } Property Value Type Description String UpdatedResources Gets the updated resource. Declaration public ICollection UpdatedResources { get; } Property Value Type Description ICollection " }, - "common/Microsoft.Graph.Communications.Common.Telemetry.ClientEtwLogger.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.ClientEtwLogger.html", - "title": "Class ClientEtwLogger", - "keywords": "Class ClientEtwLogger Logger for client that publishes to ETW. Inheritance Object EventSource ClientEtwLogger Implements IDisposable Inherited Members EventSource.IsEnabled() EventSource.IsEnabled(EventLevel, EventKeywords) EventSource.IsEnabled(EventLevel, EventKeywords, EventChannel) EventSource.GetGuid(Type) EventSource.GetName(Type) EventSource.GenerateManifest(Type, String) EventSource.GenerateManifest(Type, String, EventManifestOptions) EventSource.GetSources() EventSource.SendCommand(EventSource, EventCommand, IDictionary) EventSource.SetCurrentThreadActivityId(Guid) EventSource.SetCurrentThreadActivityId(Guid, Guid) EventSource.GetTrait(String) EventSource.ToString() EventSource.OnEventCommand(EventCommandEventArgs) EventSource.WriteEvent(Int32) EventSource.WriteEvent(Int32, Int32) EventSource.WriteEvent(Int32, Int32, Int32) EventSource.WriteEvent(Int32, Int32, Int32, Int32) EventSource.WriteEvent(Int32, Int64) EventSource.WriteEvent(Int32, Int64, Int64) EventSource.WriteEvent(Int32, Int64, Int64, Int64) EventSource.WriteEvent(Int32, String) EventSource.WriteEvent(Int32, String, String) EventSource.WriteEvent(Int32, String, String, String) EventSource.WriteEvent(Int32, String, Int32) EventSource.WriteEvent(Int32, String, Int32, Int32) EventSource.WriteEvent(Int32, String, Int64) EventSource.WriteEvent(Int32, Int64, String) EventSource.WriteEvent(Int32, Int32, String) EventSource.WriteEvent(Int32, Byte[]) EventSource.WriteEvent(Int32, Int64, Byte[]) EventSource.WriteEventCore(Int32, Int32, EventSource.EventData*) EventSource.WriteEventWithRelatedActivityIdCore(Int32, Guid*, Int32, EventSource.EventData*) EventSource.WriteEvent(Int32, Object[]) EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) EventSource.Dispose() EventSource.Dispose(Boolean) EventSource.Write(String) EventSource.Write(String, EventSourceOptions) EventSource.Write(String, T) EventSource.Write(String, EventSourceOptions, T) EventSource.Write(String, EventSourceOptions, T) EventSource.Write(String, EventSourceOptions, Guid, Guid, T) EventSource.Name EventSource.Guid EventSource.Settings EventSource.CurrentThreadActivityId EventSource.ConstructionException EventSource.EventCommandExecuted Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax [EventSource(Name = \"Microsoft-Graph-Telemetry-Client\")] public class ClientEtwLogger : EventSource, IDisposable Constructors ClientEtwLogger(IGraphLogger) Initializes a new instance of the ClientEtwLogger class. Declaration public ClientEtwLogger(IGraphLogger logger) Parameters Type Name Description IGraphLogger logger The logger. Methods HttpTrace(Guid, String, String, String, String, String, String, String, Int32, String, String, String, String, String, String) Trace for client's http calls. Declaration [Event(100, Level = EventLevel.Informational, Message = \"{5}\")] public void HttpTrace(Guid correlationId, string component, string traceLevel, string url, string transactionDirection, string message, string appName, string appId, int mtid, string callingLine, string traceType, string headers, string method, string responseCode, string responseTime) Parameters Type Name Description Guid correlationId The correlation identifier. String component The component. String traceLevel The trace level. String url The URL for the request. String transactionDirection The direction of the request this request/response corresponds to. String message The body for the request/response. String appName Name of the application. String appId The application identifier. Int32 mtid The managed tid. String callingLine The line in which log is produced. String traceType Denote whether this is request/response. String headers The headers. String method The method for the request. String responseCode The response code from response. String responseTime Time taken to process the request. Trace(Guid, String, String, String, String, String, Int32, String) Trace for client's normal trace calls. Declaration [Event(101, Level = EventLevel.Informational, Message = \"{3}\")] public void Trace(Guid correlationId, string component, string traceLevel, string message, string appName, string appId, int mtid, string callingLine) Parameters Type Name Description Guid correlationId The correlation identifier. String component The component. String traceLevel The trace level. String message The message. String appName Name of the application. String appId The application identifier. Int32 mtid The managed tid. String callingLine The line in which log is produced. Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.VideoLowOnFramesEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoLowOnFramesEventArgs.html", + "title": "Class VideoLowOnFramesEventArgs", + "keywords": "Class VideoLowOnFramesEventArgs Video low on frame event args Inheritance Object EventArgs LowOnFramesEventArgs VideoLowOnFramesEventArgs Inherited Members LowOnFramesEventArgs.MediaType LowOnFramesEventArgs.RemainingMediaLengthInMS EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoLowOnFramesEventArgs : LowOnFramesEventArgs Constructors VideoLowOnFramesEventArgs() Declaration public VideoLowOnFramesEventArgs() Properties VideoFormat The video format for the low on frame event Declaration public VideoFormat VideoFormat { get; set; } Property Value Type Description VideoFormat" }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphHttpClient.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphHttpClient.html", - "title": "Interface IGraphHttpClient", - "keywords": "Interface IGraphHttpClient Interface for Http transport client. Gives us a way to work with different instances of GraphClient through Dependency Injection. Inherited Members IGraphClient.SendAsync(IGraphRequest, CancellationToken) IGraphClient.SendAsync(IGraphRequest, CancellationToken) IGraphClient.GraphLogger IGraphClient.DefaultProperties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphHttpClient : IGraphClient Properties CustomRedirectUriGenerator Gets or sets the custom redirect URI generator. This is called in case of a redirect (3XX) response from the request. Clients can use this to read the response and give the new redirect url to call in the next request. Declaration Func CustomRedirectUriGenerator { get; set; } Property Value Type Description Func < HttpResponseMessage , Uri > The custom redirect URI generator. Methods Clone(HttpClient) Clones this instance with optional overrides. Declaration IGraphHttpClient Clone(HttpClient httpClient = null) Parameters Type Name Description HttpClient httpClient The HTTP client to replace the original. Returns Type Description IGraphHttpClient Cloned client with the updated properties. SendRawHttpRequestAsync(HttpRequestMessage, CancellationToken) Send a Http request as an asynchronous operation. The content sent using this is not parsed or logged. Declaration Task SendRawHttpRequestAsync(HttpRequestMessage httpRequest, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description HttpRequestMessage httpRequest The http request message to send. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < HttpResponseMessage > The task object representing the asynchronous operation. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also IGraphClient" + "bot_media/Microsoft.Skype.Bots.Media.AudioMediaReceivedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioMediaReceivedEventArgs.html", + "title": "Class AudioMediaReceivedEventArgs", + "keywords": "Class AudioMediaReceivedEventArgs Event arguments of an AudioMediaReceived event. Inheritance Object EventArgs AudioMediaReceivedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioMediaReceivedEventArgs : EventArgs Constructors AudioMediaReceivedEventArgs() Declaration public AudioMediaReceivedEventArgs() Properties Buffer The received audio media buffer. Declaration public AudioMediaBuffer Buffer { get; set; } Property Value Type Description AudioMediaBuffer" }, - "common/Microsoft.Graph.Communications.Common.AutoClean-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.AutoClean-1.html", - "title": "Class AutoClean", - "keywords": "Class AutoClean Helper class to automatically cleanup but with associated state. Inheritance Object Disposable AutoClean AutoClean Implements IDisposable Inherited Members AutoClean.Dispose(Boolean) Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class AutoClean : AutoClean, IDisposable Type Parameters Name Description T State type. Constructors AutoClean(T, Action) Initializes a new instance of the AutoClean class. Declaration public AutoClean(T t, Action action) Parameters Type Name Description T t Instance of the custom data. Action action Cleanup action. Properties Data Gets the custom data. Declaration public T Data { get; } Property Value Type Description T Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Transport.IGraphResponse-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphResponse-1.html", + "title": "Interface IGraphResponse", + "keywords": "Interface IGraphResponse The response got in exchange of a IGraphRequest . Inherited Members IGraphExchange.Content IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphResponse : IGraphExchange, IGraphExchange Type Parameters Name Description T Type of the body of response. Properties ErrorContent Gets the content of the error. Declaration string ErrorContent { get; } Property Value Type Description String ReasonPhrase Gets the reason phrase. Declaration string ReasonPhrase { get; } Property Value Type Description String Status Gets the status of response. Declaration ResponseStatus Status { get; } Property Value Type Description ResponseStatus Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphResponseExtensions.ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable) See Also IGraphExchange " }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.BaseFilter-2.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.BaseFilter-2.html", - "title": "Class BaseFilter", - "keywords": "Class BaseFilter Base filter. Inheritance Object BaseFilter BaseFilter ContentDispositionFilter ContentTypeFilter HeaderFilter UriFilter Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public abstract class BaseFilter : BaseFilter Type Parameters Name Description T1 Type of input for the filter. T2 Return value for the evaluator. Constructors BaseFilter() Declaration protected BaseFilter() Properties MatchableString Gets or sets the string for which this filter is a match. Declaration public T2 MatchableString { get; protected set; } Property Value Type Description T2 MatchEvaluator Gets or sets the match evaluator that converts the input value to target value. Declaration public Func MatchEvaluator { get; protected set; } Property Value Type Description Func Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Transport.IGraphRequest.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphRequest.html", + "title": "Interface IGraphRequest", + "keywords": "Interface IGraphRequest The request object used by the graph sdk. Inherited Members IGraphRequest.Uri IGraphRequest.RequestType IGraphExchange.Content IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphRequest : IGraphRequest, IGraphExchange, IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphRequestExtensions.ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable)" + }, + "common/Microsoft.Graph.Communications.Common.Transport.GraphRequest-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphRequest-1.html", + "title": "Class GraphRequest", + "keywords": "Class GraphRequest The base of the exchange of a IGraphRequest or IGraphResponse . Inheritance Object GraphRequest GraphRequest Implements IGraphRequest IGraphExchange IGraphExchange Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphRequest : IGraphRequest, IGraphExchange, IGraphExchange Type Parameters Name Description T Constructors GraphRequest(Uri, T, RequestType) Initializes a new instance of the GraphRequest class. Create the graph request object Declaration public GraphRequest(Uri location, T content, RequestType requestType) Parameters Type Name Description Uri location The uri location for the request. T content Content to be sent as part of the request. RequestType requestType Type of the request. Properties Content Declaration public T Content { get; set; } Property Value Type Description T Properties Gets the properties of the exchange. Declaration public ICollection Properties { get; } Property Value Type Description ICollection < IGraphProperty > RequestType Declaration public RequestType RequestType { get; } Property Value Type Description RequestType Uri Declaration public Uri Uri { get; } Property Value Type Description Uri Methods ToString() Declaration public override string ToString() Returns Type Description String Overrides Object.ToString() Implements IGraphRequest IGraphExchange IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphRequestExtensions.ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable)" + }, + "common/Microsoft.Graph.Communications.Common.Transport.GraphProperty.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphProperty.html", + "title": "Class GraphProperty", + "keywords": "Class GraphProperty The IGraphProperty helpers and extensions. Inheritance Object GraphProperty Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class GraphProperty Fields ContentType The content type Declaration public const string ContentType = \"content\" Field Value Type Description String RequestType The request type Declaration public const string RequestType = \"request\" Field Value Type Description String Methods Add(ICollection, String, Object, String) Adds the property to the exchange. Declaration public static IGraphProperty Add(this ICollection properties, string key, object value, string type = null) Parameters Type Name Description ICollection < IGraphProperty > properties The properties. String key The key. Object value The value. String type The type. Returns Type Description IGraphProperty The added IGraphProperty . Add(ICollection, String, T, String) Adds the property to the exchange. Declaration public static IGraphProperty Add(this ICollection properties, string key, T value, string type = null) Parameters Type Name Description ICollection < IGraphProperty > properties The properties. String key The key. T value The value. String type The type. Returns Type Description IGraphProperty The added IGraphProperty . Type Parameters Name Description T The expected type of the property. Contains(IEnumerable, String) Finds the property in the given exchange. Declaration public static bool Contains(this IEnumerable properties, string key) Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String key The key. Returns Type Description Boolean The found IGraphProperty . ContentProperty(String, Object) Creates the property of content type. Declaration public static IGraphProperty ContentProperty(string key, object value) Parameters Type Name Description String key The key. Object value The values. Returns Type Description IGraphProperty The content IGraphProperty . ContentProperty(String, T) Creates the property of content type. Declaration public static IGraphProperty ContentProperty(string key, T value) Parameters Type Name Description String key The key. T value The values. Returns Type Description IGraphProperty The content IGraphProperty . Type Parameters Name Description T The type of the property to create. ConvertProperty(IGraphProperty) Converts the property. Declaration public static IGraphProperty ConvertProperty(this IGraphProperty property) Parameters Type Name Description IGraphProperty property The property. Returns Type Description IGraphProperty The IGraphProperty with the expected generic type if the types match, null otherwise. Type Parameters Name Description T The type of value expected. Find(IEnumerable, String) Finds the property in the given exchange. Declaration public static IGraphProperty Find(this IEnumerable properties, string key) Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String key The key. Returns Type Description IGraphProperty The found IGraphProperty . Find(IEnumerable, String) Finds the property in the given exchange. Declaration public static IGraphProperty Find(this IEnumerable properties, string key) Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String key The key. Returns Type Description IGraphProperty The found IGraphProperty . Type Parameters Name Description T The expected type of the property. Property(String, Object, String) Creates a property of the specified type. Declaration public static IGraphProperty Property(string key, object value, string type = null) Parameters Type Name Description String key The key. Object value The values. String type The type. Returns Type Description IGraphProperty The created IGraphProperty . Property(String, T, String) Creates a property of the specified type. Declaration public static IGraphProperty Property(string key, T value, string type = null) Parameters Type Name Description String key The key. T value The value. String type The type. Returns Type Description IGraphProperty The created IGraphProperty . Type Parameters Name Description T The type of the property to create. RequestProperty(String, Object) Creates the property of request type. Declaration public static IGraphProperty RequestProperty(string key, object value) Parameters Type Name Description String key The key. Object value The value. Returns Type Description IGraphProperty The request IGraphProperty . RequestProperty(String, T) Creates the property of request type. Declaration public static IGraphProperty RequestProperty(string key, T value) Parameters Type Name Description String key The key. T value The value. Returns Type Description IGraphProperty The request IGraphProperty . Type Parameters Name Description T The type of the property to create. See Also IGraphProperty IGraphProperty" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.JsonConverters.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.JsonConverters.html", + "title": "Class JsonConverters", + "keywords": "Class JsonConverters Json converters. Inheritance Object JsonConverters Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class JsonConverters" }, "common/Microsoft.Graph.Communications.Common.Telemetry.JsonConverters.TypedPropertiesConverter.html": { "href": "common/Microsoft.Graph.Communications.Common.Telemetry.JsonConverters.TypedPropertiesConverter.html", "title": "Class JsonConverters.TypedPropertiesConverter", "keywords": "Class JsonConverters.TypedPropertiesConverter The json converter for Type. Inheritance Object JsonConverters.TypedPropertiesConverter Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class TypedPropertiesConverter : JsonConverter Constructors TypedPropertiesConverter() Declaration public TypedPropertiesConverter() Properties CanRead Declaration public override bool CanRead { get; } Property Value Type Description Boolean Methods CanConvert(Type) Declaration public override bool CanConvert(Type objectType) Parameters Type Name Description Type objectType Returns Type Description Boolean ReadJson(JsonReader, Type, Object, JsonSerializer) Declaration public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonReader reader Type objectType Object existingValue Newtonsoft.Json.JsonSerializer serializer Returns Type Description Object WriteJson(JsonWriter, Object, JsonSerializer) Declaration public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonWriter writer Object value Newtonsoft.Json.JsonSerializer serializer Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.OData.ODataResolver.html": { - "href": "common/Microsoft.Graph.Communications.Common.OData.ODataResolver.html", - "title": "Class ODataResolver", - "keywords": "Class ODataResolver Contract resolver that allows us to create OData json payloads with type information. Inheritance Object ODataResolver GraphObfuscationContractResolver Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ODataResolver : CamelCasePropertyNamesContractResolver Constructors ODataResolver(Boolean, Assembly[]) Initializes a new instance of the ODataResolver class which can be used to serialize/deserialize classes present in typeAssemblies . Declaration public ODataResolver(bool addOdataType, params Assembly[] typeAssemblies) Parameters Type Name Description Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. Assembly [] typeAssemblies Assemblies in which the OData object exist. Methods CreateProperties(Type, MemberSerialization) Declaration protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) Parameters Type Name Description Type type Newtonsoft.Json.MemberSerialization memberSerialization Returns Type Description IList < Newtonsoft.Json.Serialization.JsonProperty > ResolveContractConverter(Type) Declaration protected override JsonConverter ResolveContractConverter(Type objectType) Parameters Type Name Description Type objectType Returns Type Description Newtonsoft.Json.JsonConverter Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.SlimLock.html": { + "href": "common/Microsoft.Graph.Communications.Common.SlimLock.html", + "title": "Class SlimLock", + "keywords": "Class SlimLock A SemaphoreSlim based lock implementation Inheritance Object Disposable SlimLock Implements IDisposable Inherited Members Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class SlimLock : Disposable, IDisposable Constructors SlimLock() Declaration public SlimLock() Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) Lock() Acquire a disposable lock Declaration public IDisposable Lock() Returns Type Description IDisposable Disposable cleanup to release semaphore. LockAsync() Acquire a disposable lock Declaration public Task LockAsync() Returns Type Description Task < IDisposable > Disposable cleanup to release semaphore. Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.OData.ODataSerializeAsTypeAttribute.html": { - "href": "common/Microsoft.Graph.Communications.Common.OData.ODataSerializeAsTypeAttribute.html", - "title": "Class ODataSerializeAsTypeAttribute", - "keywords": "Class ODataSerializeAsTypeAttribute Specify how a given object should be written/read on the wire. Inheritance Object Attribute ODataSerializeAsTypeAttribute Implements _Attribute Inherited Members Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, Boolean) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, Boolean) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo, Boolean) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, Boolean) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, Boolean) Attribute.GetCustomAttributes(Module, Type, Boolean) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, Boolean) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, Boolean) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, Boolean) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, Boolean) Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, Boolean) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, Boolean) Attribute.Equals(Object) Attribute.GetHashCode() Attribute.Match(Object) Attribute.IsDefaultAttribute() Attribute._Attribute.GetTypeInfoCount(UInt32) Attribute._Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) Attribute._Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) Attribute._Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) Attribute.TypeId Object.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] public class ODataSerializeAsTypeAttribute : Attribute, _Attribute Constructors ODataSerializeAsTypeAttribute(String, Boolean) Initializes a new instance of the ODataSerializeAsTypeAttribute class. Declaration public ODataSerializeAsTypeAttribute(string name, bool renameWhenSerialized = true) Parameters Type Name Description String name The name of the class. Boolean renameWhenSerialized If set to true use the Name to serialize the class. Properties Name Gets the name of the class. Declaration public string Name { get; } Property Value Type Description String RenameWhenSerialized Gets a value indicating whether to rename when serializing this object. When true, the object will be serialized to Name , otherwise the object will be serialized as the actual object name. Declaration public bool RenameWhenSerialized { get; } Property Value Type Description Boolean Implements System.Runtime.InteropServices._Attribute Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also Attribute" + "common/Microsoft.Graph.Communications.Common.SecureStringUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.SecureStringUtils.html", + "title": "Class SecureStringUtils", + "keywords": "Class SecureStringUtils SecureString Utilities Inheritance Object SecureStringUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class SecureStringUtils Methods ConvertToUnsecureString(SecureString) Converts a SecureString into a managed string for consumption Declaration public static string ConvertToUnsecureString(this SecureString secureString) Parameters Type Name Description SecureString secureString The SecureString to convert into a managed string Returns Type Description String String representation of the SecureString" }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphProperty-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphProperty-1.html", - "title": "Struct GraphProperty", - "keywords": "Struct GraphProperty Implements IGraphProperty IGraphProperty IEquatable < IGraphProperty > Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public struct GraphProperty : IGraphProperty, IGraphProperty, IEquatable Type Parameters Name Description T Constructors GraphProperty(IGraphProperty) Initializes a new instance of the GraphProperty struct. Declaration public GraphProperty(IGraphProperty property) Parameters Type Name Description IGraphProperty property The property. GraphProperty(String, T, String) Initializes a new instance of the GraphProperty struct. Declaration public GraphProperty(string key, T value, string type = null) Parameters Type Name Description String key The key. T value The value. String type The type. Properties Key Gets the key. Declaration public string Key { get; } Property Value Type Description String Type Gets the type of the property. Declaration public string Type { get; } Property Value Type Description String Value Declaration public T Value { get; } Property Value Type Description T Methods Equals(IGraphProperty) Declaration public bool Equals(IGraphProperty other) Parameters Type Name Description IGraphProperty other Returns Type Description Boolean ToString() Declaration public override string ToString() Returns Type Description String Overrides ValueType.ToString() Explicit Interface Implementations IGraphProperty.Value Gets the value. Declaration object IGraphProperty.Value { get; } Returns Type Description Object Implements IGraphProperty IGraphProperty System.IEquatable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphProperty.ConvertProperty(IGraphProperty)" + "core/Microsoft.Graph.ContractsConstants.AuthConstants.html": { + "href": "core/Microsoft.Graph.ContractsConstants.AuthConstants.html", + "title": "Class ContractsConstants.AuthConstants", + "keywords": "Class ContractsConstants.AuthConstants Various constants used by the AuthZ layer Inheritance Object ContractsConstants.AuthConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class AuthConstants Fields ConsumerTenantIds list of tenant ids that are considered as skype consumer tenants Declaration public static readonly ICollection ConsumerTenantIds Field Value Type Description ICollection < String >" }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphResponse.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphResponse.html", - "title": "Class GraphResponse", - "keywords": "Class GraphResponse Inheritance Object GraphResponse < NoContentMessage > GraphResponse Implements IGraphResponse IGraphResponse < NoContentMessage > IGraphExchange < NoContentMessage > IGraphExchange Inherited Members GraphResponse.ToString() GraphResponse.Content GraphResponse.Properties GraphResponse.ReasonPhrase GraphResponse.ErrorContent GraphResponse.Status Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphResponse : GraphResponse, IGraphResponse, IGraphResponse, IGraphExchange, IGraphExchange Constructors GraphResponse(IGraphResponse) Initializes a new instance of the GraphResponse class. This is a copy constructor. Declaration public GraphResponse(IGraphResponse response) Parameters Type Name Description IGraphResponse < NoContentMessage > response The response to be used to create a new instance. GraphResponse(ResponseStatus) Initializes a new instance of the GraphResponse class. Create a new graph response Declaration public GraphResponse(ResponseStatus status) Parameters Type Name Description ResponseStatus status Status indicating success/failure/other for the response. GraphResponse(String, ResponseStatus, String) Initializes a new instance of the GraphResponse class. Declaration public GraphResponse(string errorContent, ResponseStatus status, string reasonPhrase) Parameters Type Name Description String errorContent Content of the error. ResponseStatus status The status. String reasonPhrase The reason phrase. Implements IGraphResponse IGraphResponse IGraphExchange IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphResponseExtensions.ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable)" + "common/Microsoft.Graph.Communications.Common.html": { + "href": "common/Microsoft.Graph.Communications.Common.html", + "title": "Namespace Microsoft.Graph.Communications.Common", + "keywords": "Namespace Microsoft.Graph.Communications.Common Classes AutoClean Helper class to automatically cleanup. AutoClean Helper class to automatically cleanup but with associated state. CertUtils Certificates utilities CollectionUtils Collection Utilities Disposable Common disposable pattern EnumUtils Enum Utilities ExceptionUtils Exception utilities Extensions Defines Extensions. GuidUtils Guid Utils HighResolutionDateTime High resolution datetime HttpConstants The constant values for http. HttpConstants.HeaderNames The header names. JsonUtils Json Utils MathUtils Various math utilities MetricUtils The metric utils class ObjectRoot Base object. ObjectRootDisposable Base object. Observable Observable Base class Observer Observer class. ReflectionUtils Reflection utilities SafeNativeMethods Contains p/invokes and associated wrappers for the Native methods SecureStringUtils SecureString Utilities SlimLock A SemaphoreSlim based lock implementation StateMachine Lockfree enum-based state machine. Transitions are O(1). StateMachine.Transition Single transition from Source to Targets StringUtils String Utils TaskExtension Extensions for Task TaskQueue Task queue to encapsulate chaining of tasks. Utilities Utilities class. Validator Helper class with various condition validation utilities. WeakKey Wrapping a weak reference and recording hash code. Note: It is the responsibility of the client to clean up the collection entry in the finalizer of the object. Otherwise the key will not match for subsequent lookups. WeakKeyDictionary Dictionary with weak reference for the key." }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphResponse-1.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphResponse-1.html", - "title": "Interface IGraphResponse", - "keywords": "Interface IGraphResponse The response got in exchange of a IGraphRequest . Inherited Members IGraphExchange.Content IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphResponse : IGraphExchange, IGraphExchange Type Parameters Name Description T Type of the body of response. Properties ErrorContent Gets the content of the error. Declaration string ErrorContent { get; } Property Value Type Description String ReasonPhrase Gets the reason phrase. Declaration string ReasonPhrase { get; } Property Value Type Description String Status Gets the status of response. Declaration ResponseStatus Status { get; } Property Value Type Description ResponseStatus Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphResponseExtensions.ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable) See Also IGraphExchange " + "core/Microsoft.Graph.IdentitySetExtensions.html": { + "href": "core/Microsoft.Graph.IdentitySetExtensions.html", + "title": "Class IdentitySetExtensions", + "keywords": "Class IdentitySetExtensions Extentions for graph api contracts Inheritance Object IdentitySetExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class IdentitySetExtensions Fields DodAppParticipantPrefix The application participant prefix for dod cloud Declaration public const string DodAppParticipantPrefix = \"28:dod-global:\" Field Value Type Description String DodDirectoryAppParticipantPrefix The directory application participant prefix for dod cloud Declaration public const string DodDirectoryAppParticipantPrefix = \"28:dod:\" Field Value Type Description String DodDirectoryParticipantPrefix The directory participant prefix for DoD cloud Declaration public const string DodDirectoryParticipantPrefix = \"8:dod:\" Field Value Type Description String DodOnPremisesParticipantPrefix The external prefix for DoD cloud Declaration public const string DodOnPremisesParticipantPrefix = \"8:dod-sfb:\" Field Value Type Description String EncryptedParticipantPrefix The encrypted participant prefix Declaration public const string EncryptedParticipantPrefix = \"29:\" Field Value Type Description String GcchAppParticipantPrefix The application participant prefix for gcch cloud Declaration public const string GcchAppParticipantPrefix = \"28:gcch-global:\" Field Value Type Description String GcchDirectoryAppParticipantPrefix The directory application participant prefix for gcch cloud Declaration public const string GcchDirectoryAppParticipantPrefix = \"28:gcch:\" Field Value Type Description String GcchDirectoryParticipantPrefix The directory participant prefix for GCCH cloud Declaration public const string GcchDirectoryParticipantPrefix = \"8:gcch:\" Field Value Type Description String GcchOnPremisesParticipantPrefix The external prefix for GCCH cloud Declaration public const string GcchOnPremisesParticipantPrefix = \"8:gcch-sfb:\" Field Value Type Description String PhoneParticipantPrefix The phone participant prefix Declaration public const string PhoneParticipantPrefix = \"4:\" Field Value Type Description String PublicAppParticipantPrefix The application participant prefix Declaration public const string PublicAppParticipantPrefix = \"28:\" Field Value Type Description String PublicDirectoryAppParticipantPrefix The directory application participant prefix for public cloud Declaration public const string PublicDirectoryAppParticipantPrefix = \"28:orgid:\" Field Value Type Description String PublicDirectoryParticipantPrefix The directory participant prefix for public cloud Declaration public const string PublicDirectoryParticipantPrefix = \"8:orgid:\" Field Value Type Description String PublicOnPremisesParticipantPrefix The external prefix for public cloud Declaration public const string PublicOnPremisesParticipantPrefix = \"8:sfb:\" Field Value Type Description String SkypeParticipantPrefix The skype participant prefix Declaration public const string SkypeParticipantPrefix = \"8:\" Field Value Type Description String TeamsVisitorParticipantPrefix The teams visitor participant prefix For anonymous users we need to support 8:teamsvisitor:objectId Declaration public const string TeamsVisitorParticipantPrefix = \"8:teamsvisitor:\" Field Value Type Description String Methods CreateIdentitySetByMri(String, String, String) Creates participant from MRI if possible. For chat service thread mris we return null Declaration public static IdentitySet CreateIdentitySetByMri(string mri, string tenantId, string displayName) Parameters Type Name Description String mri Participant MRI String tenantId The tenant identifier. String displayName The display name. Returns Type Description IdentitySet Created identity set Exceptions Type Condition ArgumentOutOfRangeException mri GetAppParticipantPrefix(CloudNamespace) Gets app participant prefix for the provided CloudNamespace . Declaration public static string GetAppParticipantPrefix(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace The cloud where the app participant belongs Returns Type Description String Prefix to be used to construct the MRI GetDirectoryAppParticipantEnv(CloudNamespace) Returns the env differentiator part of the app participant prefix corresponding to cloudNamespace . This differentiator doesn't have participant prefix (8:, 4:, 28: or 29:) in it. Declaration public static string GetDirectoryAppParticipantEnv(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace Cloud environment where the identity set belongs Returns Type Description String Env differentiator part of the app participant prefix corresponding to cloudNamespace GetDirectoryAppParticipantPrefix(CloudNamespace) Gets directory app participant prefix for the provided CloudNamespace . Declaration public static string GetDirectoryAppParticipantPrefix(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace The cloud where the directory app participant belongs Returns Type Description String Prefix to be used to construct the MRI GetDirectoryParticipantPrefix(CloudNamespace) Gets a user prefix for the provided CloudNamespace . Declaration public static string GetDirectoryParticipantPrefix(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace The cloud where the user belongs Returns Type Description String Prefix to be used to construct the MRI GetEnumerator(IdentitySet) Enumerates through all the Identity objects found in this IdentitySet Declaration public static IEnumerable> GetEnumerator(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description IEnumerable < KeyValuePair < String , Identity >> The IEnumerable{KeyValuePair{string, Identity}} for the specified IdentitySet . GetMri(IdentitySet, CloudNamespace) Gets participant MRI The priority order is: User, Guest, Encrypted, Application Instance, Application, Phone Declaration public static string GetMri(this IdentitySet identitySet, CloudNamespace cloudNamespace) Parameters Type Name Description IdentitySet identitySet Participant identity set CloudNamespace cloudNamespace Cloud environment where the identity set belongs Returns Type Description String Participant MRI GetObjectIdForAppParticipant(String) Get the object id for an app Declaration public static string GetObjectIdForAppParticipant(string mri) Parameters Type Name Description String mri participant mri Returns Type Description String The object id of the participant> GetObjectIdForDirectoryAppParticipant(String) Get the object id for a directory app participant Declaration public static string GetObjectIdForDirectoryAppParticipant(string mri) Parameters Type Name Description String mri participant mri Returns Type Description String The object id of the participant> GetObjectIdForDirectoryParticipant(String) /Get the object id for a directory participant Declaration public static string GetObjectIdForDirectoryParticipant(string mri) Parameters Type Name Description String mri participant mri Returns Type Description String The object id of the participant> GetObjectIdForOnPremisesParticipant(String) /Get the object id for an external participant Declaration public static string GetObjectIdForOnPremisesParticipant(string mri) Parameters Type Name Description String mri participant mri Returns Type Description String The object id of the participant> GetOnPremisesParticipantPrefix(CloudNamespace) Gets an external prefix for the provided CloudNamespace . Declaration public static string GetOnPremisesParticipantPrefix(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace The cloud where the user belongs Returns Type Description String Prefix to be used to construct the MRI GetPrimaryIdentity(IdentitySet) Gets the primary identity from the specified IdentitySet . The priority order is: User, Guest, Phone, Encrypted, OnPremises, Application Instance, Application Declaration public static Identity GetPrimaryIdentity(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Primary Identity IsConsumer(IdentitySet) Indicates whether this identity set is a consumer identity. Declaration public static bool IsConsumer(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Boolean true if the identity is a consumer identity, false otherwise. MriHasAppParticipantPrefix(String) Returns whether a MRI is a directory participant prefix or not. Declaration public static bool MriHasAppParticipantPrefix(string mri) Parameters Type Name Description String mri Participant MRI Returns Type Description Boolean true if mri is a valid directory participant prefix MriHasDirectoryAppParticipantPrefix(String) Returns whether a MRI is a directory participant prefix or not. Declaration public static bool MriHasDirectoryAppParticipantPrefix(string mri) Parameters Type Name Description String mri Participant MRI Returns Type Description Boolean true if mri is a valid directory participant prefix MriHasDirectoryParticipantPrefix(String) Returns whether a MRI is a directory participant prefix or not. Declaration public static bool MriHasDirectoryParticipantPrefix(string mri) Parameters Type Name Description String mri Participant MRI Returns Type Description Boolean true if mri is a valid directory participant prefix MriHasOnPremisesParticipantPrefix(String) Returns whether a MRI is an external participant prefix or not. Declaration public static bool MriHasOnPremisesParticipantPrefix(string mri) Parameters Type Name Description String mri Participant MRI Returns Type Description Boolean true if mri is a valid external participant prefix" }, - "common/Microsoft.Graph.Communications.Common.Validator.html": { - "href": "common/Microsoft.Graph.Communications.Common.Validator.html", - "title": "Class Validator", - "keywords": "Class Validator Helper class with various condition validation utilities. Inheritance Object Validator Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class Validator Methods Any(IEnumerable) Determines whether a sequence contains any elements. Declaration public static bool Any(this IEnumerable source) Parameters Type Name Description IEnumerable source The IEnumerable to check for emptiness. Returns Type Description Boolean true if the source sequence contains any elements; otherwise, false . Equals(T, T, IComparer, String, String) Throw if value > is not equal to expected Declaration public static T Equals(T value, T expected, IComparer comparer, string paramName = null, string message = null) Parameters Type Name Description T value value T expected expected IComparer comparer comparer String paramName paramName String message Optional message. Returns Type Description T The input value if validation succeeded. Type Parameters Name Description T Type of the input value Exceptions Type Condition ArgumentException The argument value should match the expected value. Equals(T, T, String, String) Throw if value > is not equal to expected Declaration public static T Equals(this T value, T expected, string paramName = null, string message = null) Parameters Type Name Description T value value T expected expected String paramName paramName String message Optional message. Returns Type Description T The input value if validation succeeded. Type Parameters Name Description T Type of the input value Exceptions Type Condition ArgumentException The argument value should match the expected value. Equals(T, T, String) Throws the TE if value > is not equal to expected Declaration public static T Equals(this T value, T expected, string message = null) where TE : Exception Parameters Type Name Description T value value T expected expected String message Optional message. Returns Type Description T The input value if validation succeeded. Type Parameters Name Description T Type of the input value TE The type of Exception to throw FirstObject(IEnumerable) Gets the first object in the enumerable. Declaration public static object FirstObject(this IEnumerable source) Parameters Type Name Description IEnumerable source The IEnumerable to check for object. Returns Type Description Object langword_csharp_object if the source sequence contains an element; otherwise, null . FirstObject(IEnumerable, Func) Gets the first object in the enumerable that matches the specified predicate. Declaration public static object FirstObject(this IEnumerable source, Func predicate) Parameters Type Name Description IEnumerable source The IEnumerable to check for object. Func < Object , Boolean > predicate The Func used to match the object. Returns Type Description Object langword_csharp_object if the source sequence contains the matching element; otherwise, null . InRange(T, T, T, String) Throws ArgumentOutOfRangeException if value is not in the given range defined by minValue and maxValue Declaration public static void InRange(this T value, T minValue, T maxValue, string paramName = null) where T : IComparable Parameters Type Name Description T value value to verify T minValue Minimum range value T maxValue Maximum range value String paramName Variable name. Type Parameters Name Description T Comparable Exceptions Type Condition ArgumentOutOfRangeException If the value is out of range. IsEnum(Type) Throws the ArgumentException if given type is not Enum Declaration public static void IsEnum(this Type type) Parameters Type Name Description Type type The type IsFalse(Boolean, String, String) Throw ArgumentException condition is not false Declaration public static void IsFalse(this bool condition, string paramName = null, string message = null) Parameters Type Name Description Boolean condition Condition to check. String paramName Optional variable name. String message Optional message. IsFalse(Boolean, String) Throw T exception if condition is not false Declaration public static void IsFalse(this bool condition, string message = null) where T : Exception Parameters Type Name Description Boolean condition Condition to check. String message Optional message. Type Parameters Name Description T Exception type to raise IsNull(Object, String, String) Throw ArgumentException if obj is not null. Declaration public static void IsNull(this object obj, string paramName = null, string message = null) Parameters Type Name Description Object obj The object to check. String paramName Optional variable name. String message Optional message. IsTrue(Boolean, String, String) Throw ArgumentException condition is not true Declaration public static void IsTrue(this bool condition, string paramName = null, string message = null) Parameters Type Name Description Boolean condition Condition to check. String paramName Optional variable name. String message Optional message. IsTrue(Boolean, String) Throw T exception if condition is not true Declaration public static void IsTrue(this bool condition, string message = null) where T : Exception Parameters Type Name Description Boolean condition Condition to check. String message Optional message. Type Parameters Name Description T Exception type to raise NotEmpty(T, String, String) Throw ArgumentNullException if obj is null. Declaration public static T NotEmpty(this T obj, string paramName = null, string message = null) where T : IEnumerable Parameters Type Name Description T obj The object to check. String paramName Variable name. String message Optional message. Returns Type Description T The validated IEnumerable . Type Parameters Name Description T Enumerable type Exceptions Type Condition ArgumentNullException If the object is null. ArgumentException If the object is empty. NotEquals(T, T, String, String) Throw if value > is equal to unexpected Declaration public static T NotEquals(this T value, T unexpected, string paramName = null, string message = null) Parameters Type Name Description T value The value to compare. T unexpected The unexpected value. String paramName the parameter name. String message Optional message. Returns Type Description T The input value if validation succeeded. Type Parameters Name Description T Type of the input value Exceptions Type Condition ArgumentException The argument value should not match the expected value. NotNull(T, String, String) Throw ArgumentNullException if obj is null. Declaration public static T NotNull(this T obj, string paramName = null, string message = null) Parameters Type Name Description T obj The object. String paramName Name of the parameter. String message The message. Returns Type Description T The validated object. Type Parameters Name Description T The type of the object to validate. Exceptions Type Condition ArgumentException If the object is null. NotNullOrWhitespace(String, String, String) Throws the ArgumentException if string is null or whitespace. Declaration public static string NotNullOrWhitespace(this string value, string paramName = null, string message = null) Parameters Type Name Description String value value to check String paramName Variable name. String message Optional message. Returns Type Description String The validated String . Exceptions Type Condition ArgumentException If the string is null or whitespace. VerifyContains(IEnumerable, T) Throws the ArgumentException if collection does not contains the specified value Declaration public static void VerifyContains(this IEnumerable enumerable, T value) Parameters Type Name Description IEnumerable enumerable The enumerable. T value The value. Type Parameters Name Description T Type of value VerifyContainsKey(IDictionary, TK) Throws the ArgumentException if collection does not contain the specified key Declaration public static void VerifyContainsKey(this IDictionary dictionary, TK key) Parameters Type Name Description IDictionary dictionary The dictionary. TK key The key. Type Parameters Name Description TK Key type TV Value type VerifyContainsKey(IReadOnlyDictionary, TK) Throws the ArgumentException if collection does not contain the specified key Declaration public static void VerifyContainsKey(this IReadOnlyDictionary dictionary, TK key) Parameters Type Name Description IReadOnlyDictionary dictionary The dictionary. TK key The key. Type Parameters Name Description TK Key type TV Value type VerifyNotContainsKey(IDictionary, TK) Throws the ArgumentException if collection contains the specified key Declaration public static void VerifyNotContainsKey(this IDictionary dictionary, TK key) Parameters Type Name Description IDictionary dictionary The dictionary. TK key The key. Type Parameters Name Description TK Key type TV Value type" + "core/Microsoft.Graph.IdentityExtensions.html": { + "href": "core/Microsoft.Graph.IdentityExtensions.html", + "title": "Class IdentityExtensions", + "keywords": "Class IdentityExtensions Extensions for graph api contracts Inheritance Object IdentityExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class IdentityExtensions Methods GetApplicationInstance(IdentitySet) Gets the application instance identity from identity set. This is part of additional data. Declaration public static Identity GetApplicationInstance(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Identity GetEncrypted(IdentitySet) Get the encrypted identity part of the additional data This identity must be retrieved when other identities are not listed Declaration public static Identity GetEncrypted(this IdentitySet identity) Parameters Type Name Description IdentitySet identity The identity Returns Type Description Identity The encrypted identity GetGuest(IdentitySet) Gets the guest identity from identity set. This is part of additional data. Declaration public static Identity GetGuest(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Identity GetIdentityProvider(Identity) Gets the identity provider. Declaration public static string GetIdentityProvider(this Identity identity) Parameters Type Name Description Identity identity The identity. Returns Type Description String The identity provider string. GetOnPremises(IdentitySet) Gets the on-premises identity from identity set. This is part of additional data. Declaration public static Identity GetOnPremises(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Identity GetPhone(IdentitySet) Gets the phone identity from identity set. This is part of additional data. Declaration public static Identity GetPhone(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Identity GetTenantId(Identity) Gets the tenant identifier. Declaration public static string GetTenantId(this Identity identity) Parameters Type Name Description Identity identity The identity. Returns Type Description String The tenant identifier string. SetApplicationInstance(IdentitySet, Identity) Sets the application instance identity in identity set. This is part of additional data. Declaration public static void SetApplicationInstance(this IdentitySet identitySet, Identity identity) Parameters Type Name Description IdentitySet identitySet The identity set. Identity identity The identity. SetEncrypted(IdentitySet, Identity) Sets the encrypted identity to the additional data This identity must be retrieved when other identities are not listed Declaration public static void SetEncrypted(this IdentitySet identitySet, Identity identity) Parameters Type Name Description IdentitySet identitySet The identity set. Identity identity The identity SetGuest(IdentitySet, Identity) Sets the guest identity in identity set. This is part of additional data. Declaration public static void SetGuest(this IdentitySet identitySet, Identity identity) Parameters Type Name Description IdentitySet identitySet The identity set. Identity identity The identity. SetIdentityProvider(Identity, String) Sets the identity provider. Declaration public static void SetIdentityProvider(this Identity identity, string identityProvider) Parameters Type Name Description Identity identity The identity. String identityProvider The identity provider. SetPhone(IdentitySet, Identity) Sets the phone identity in identity set. This is part of additional data. Declaration public static void SetPhone(this IdentitySet identitySet, Identity identity) Parameters Type Name Description IdentitySet identitySet The identity set. Identity identity The identity. SetTenantId(Identity, String) Sets the tenant identifier. Declaration public static void SetTenantId(this Identity identity, string tenantId) Parameters Type Name Description Identity identity The identity. String tenantId The tenant identifier." }, - "core/Microsoft.Graph.Communications.Core.Notifications.html": { - "href": "core/Microsoft.Graph.Communications.Core.Notifications.html", - "title": "Namespace Microsoft.Graph.Communications.Core.Notifications", - "keywords": "Namespace Microsoft.Graph.Communications.Core.Notifications Classes CollectionNotificationEventArgs The collection notification event args. FailedNotificationEventArgs Event arguments used when exceptions are raised in callbacks. NotificationEventArgs Notification event arguments class. NotificationProcessor The notification processor class. NotificationProcessorExtensions Extensions for container client. Interfaces INotificationProcessor The notification processor interface." + "core/Microsoft.Graph.ContractsConstants.html": { + "href": "core/Microsoft.Graph.ContractsConstants.html", + "title": "Class ContractsConstants", + "keywords": "Class ContractsConstants OData Model Constants Inheritance Object ContractsConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class ContractsConstants" + }, + "core/Microsoft.Graph.Communications.Core.Exceptions.ClientException.html": { + "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ClientException.html", + "title": "Class ClientException", + "keywords": "Class ClientException Class for client error exception. Inheritance Object ClientException Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax [Obsolete(\"Deprecated, please use Microsoft.Graph.ClientException instead.\")] public class ClientException : ClientException Constructors ClientException(Error, Exception) Initializes a new instance of the ClientException class. Declaration [Obsolete(\"Deprecated, please use Microsoft.Graph.ClientException instead.\")] public ClientException(Error error, Exception innerException = null) Parameters Type Name Description Error error The Error to wrap. Exception innerException The Exception to wrap." + }, + "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.html": { + "href": "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.html", + "title": "Class CommsGeneratedErrorConstants", + "keywords": "Class CommsGeneratedErrorConstants The generated error constants. Inheritance Object CommsGeneratedErrorConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class CommsGeneratedErrorConstants" + }, + "common/Microsoft.Graph.Communications.Common.Transport.IGraphExchange.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphExchange.html", + "title": "Interface IGraphExchange", + "keywords": "Interface IGraphExchange The base of the exchange of a IGraphRequest or IGraphResponse . Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphExchange Properties Properties Gets the properties of the exchange. Declaration ICollection Properties { get; } Property Value Type Description ICollection < IGraphProperty > Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Transport.IGraphExchange-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphExchange-1.html", + "title": "Interface IGraphExchange", + "keywords": "Interface IGraphExchange The base of the exchange of a IGraphRequest or IGraphResponse . Inherited Members IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphExchange : IGraphExchange Type Parameters Name Description T Type of the body of exchange. Properties Content Gets or sets the content of the exchange. Declaration T Content { get; set; } Property Value Type Description T Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "client/Microsoft.Graph.Communications.Client.CommunicationsClientExtensions.html": { + "href": "client/Microsoft.Graph.Communications.Client.CommunicationsClientExtensions.html", + "title": "Class CommunicationsClientExtensions", + "keywords": "Class CommunicationsClientExtensions Extensions for Stateful Client. Inheritance Object CommunicationsClientExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public static class CommunicationsClientExtensions Methods CreateResponse(ICommunicationsClient, HttpStatusCode, Guid, Guid, Object) Creates the response. Declaration public static HttpResponseMessage CreateResponse(this ICommunicationsClient client, HttpStatusCode statusCode, Guid requestId, Guid scenarioId, object responseContent = null) Parameters Type Name Description ICommunicationsClient client The client. HttpStatusCode statusCode The status code. Guid requestId The request identifier. Guid scenarioId The scenario identifier. Object responseContent The response content. Returns Type Description HttpResponseMessage The HTTP response. LogAndCreateResponse(ICommunicationsClient, HttpRequestMessage, Guid, Guid, CommsNotifications, HttpStatusCode, Stopwatch, Exception) Logs the request, creates the response, and logs the response. Declaration public static HttpResponseMessage LogAndCreateResponse(this ICommunicationsClient client, HttpRequestMessage request, Guid requestId, Guid scenarioId, CommsNotifications notifications, HttpStatusCode statusCode, Stopwatch stopwatch, Exception exception = null) Parameters Type Name Description ICommunicationsClient client The client. HttpRequestMessage request The request. Guid requestId The request identifier. Guid scenarioId The scenario identifier. CommsNotifications notifications The notifications that were extracted. HttpStatusCode statusCode The status code. Stopwatch stopwatch The stopwatch tracking how long the request is taking. Exception exception Any exceptions raised. Returns Type Description HttpResponseMessage The response for the associated request. ProcessNotificationAsync(ICommunicationsClient, HttpRequestMessage) Processes the notifications and raises the required callbacks. This function should be called in order for the SDK to raise any required events and process state changes. Declaration public static Task ProcessNotificationAsync(this ICommunicationsClient client, HttpRequestMessage request) Parameters Type Name Description ICommunicationsClient client The stateful client. HttpRequestMessage request The http request that is incoming from service. Returns Type Description Task < HttpResponseMessage > Http Response Message after processed by the SDK. This has to be returned to the server." + }, + "client/Microsoft.Graph.Communications.Client.CommunicationsClientBuilder.html": { + "href": "client/Microsoft.Graph.Communications.Client.CommunicationsClientBuilder.html", + "title": "Class CommunicationsClientBuilder", + "keywords": "Class CommunicationsClientBuilder The class the provides the builder for stateful client. Inheritance Object CommunicationsClientBuilder Implements ICommunicationsClientBuilder Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class CommunicationsClientBuilder : ICommunicationsClientBuilder Constructors CommunicationsClientBuilder(String, String, IGraphLogger, ObfuscationMember[]) Initializes a new instance of the CommunicationsClientBuilder class. Declaration public CommunicationsClientBuilder(string appName, string appId, IGraphLogger logger = null, ObfuscationMember[] additionalObfuscationMembers = null) Parameters Type Name Description String appName Name of the application. String appId The application identifier. IGraphLogger logger The logger ObfuscationMember [] additionalObfuscationMembers Additional members to obfuscate. Properties Id Gets the client id. Declaration public Guid Id { get; } Property Value Type Description Guid Methods Build() Build and return the stateful client object. Declaration public ICommunicationsClient Build() Returns Type Description ICommunicationsClient The ICommunicationsClient . Exceptions Type Condition ArgumentException Cannot build the client without setting the required parameters. SetAuthenticationProvider(IRequestAuthenticationProvider) Sets the custom authentication provider. The authentication provider would add authentication to outbound requests and validates any inbound requests. See IRequestAuthenticationProvider Declaration public ICommunicationsClientBuilder SetAuthenticationProvider(IRequestAuthenticationProvider authenticationProvider) Parameters Type Name Description IRequestAuthenticationProvider authenticationProvider Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the provider is null . SetCacheStrategy(ICache) Sets the cache strategy. Declaration public ICommunicationsClientBuilder SetCacheStrategy(ICache cacheStrategy) Parameters Type Name Description ICache cacheStrategy The cache strategy. Returns Type Description ICommunicationsClientBuilder This ICommunicationsClientBuilder object. Exceptions Type Condition ArgumentNullException If the cacheStrategy strategy is null . SetHttpClient(HttpClient, IEnumerable>) Sets the http client. Use a custom HTTP Client instead of the one generated by the SDK. Declaration public ICommunicationsClientBuilder SetHttpClient(HttpClient httpClient, IEnumerable> defaultHeaders = null) Parameters Type Name Description HttpClient httpClient The place call endpoint URL. IEnumerable < KeyValuePair < String , String >> defaultHeaders The default headers. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the httpClient is null . SetNotificationUrl(Uri) Set the notification uri for your bot. This is the default notification url for the bot. This can be overriden on a per-resource basis depending on the API support. Declaration public ICommunicationsClientBuilder SetNotificationUrl(Uri notificationUrlInput) Parameters Type Name Description Uri notificationUrlInput Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the notificationUrl is null . ArgumentException URI must be https. SetServiceBaseUrl(Uri) Sets the service base URL. This set's the Endpoint URL for the service. Declaration public ICommunicationsClientBuilder SetServiceBaseUrl(Uri serviceBaseUrlInput) Parameters Type Name Description Uri serviceBaseUrlInput Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the serviceBaseUrl is null . ArgumentException URI must be https. Implements ICommunicationsClientBuilder" + }, + "bot_media/Microsoft.Skype.Bots.Media.IDataSocket.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.IDataSocket.html", + "title": "Interface IDataSocket", + "keywords": "Interface IDataSocket Reserved for the internal use. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IDataSocket : IDisposable Methods Send(DataMediaBuffer, UInt32[]) Reserved for the internal use. Declaration void Send(DataMediaBuffer buffer, uint[] recipientIds) Parameters Type Name Description DataMediaBuffer buffer UInt32 [] recipientIds Events DataMediaReceived Reserved for the internal use. Declaration event EventHandler DataMediaReceived Event Type Type Description EventHandler < DataMediaReceivedEventArgs > DataSendStatusChanged Reserved for the internal use. Declaration event EventHandler DataSendStatusChanged Event Type Type Description EventHandler < DataSendStatusChangedEventArgs > MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs >" + }, + "bot_media/Microsoft.Skype.Bots.Media.AudioSocketSettings.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioSocketSettings.html", + "title": "Class AudioSocketSettings", + "keywords": "Class AudioSocketSettings The settings to initialize the AudioSocket. Inheritance Object AudioSocketSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioSocketSettings Constructors AudioSocketSettings() Initializes an AudioSocketSettings object. Declaration public AudioSocketSettings() Properties CallId An alphanumeric string that uniquely identifies a call Declaration public string CallId { get; set; } Property Value Type Description String ReceiveUnmixedMeetingAudio Allows the bot to receive separate unmixed audio buffers for individual speakers in a meeting. When set to true, up to four audio buffers, each corresponding to the top four active speakers, will be received at a time. In UnmixedMeetingAudio mode, the bot will receive only unmixed audio and not both unmixed and mixed. Declaration public bool ReceiveUnmixedMeetingAudio { get; set; } Property Value Type Description Boolean Remarks Unmixed audio is optimized for machine cognition (e.g., speech recognition) rather than for human perception (such as call recording and playback). Certain error concealment treatment (e.g., to mitigate packet loss) is not applied to the received audio stream in unmixed mode. In order to receive both mixed and unmixed audio simultaneously, the bot must establish two separate calls into the meeting. StreamDirections The directionality of the media stream. This indicates whether it is enabled to both send and receive media, or only send or only receive media. Declaration public StreamDirection StreamDirections { get; set; } Property Value Type Description StreamDirection SupportedAudioFormat The supported send/receive audio format. Declaration public AudioFormat SupportedAudioFormat { get; set; } Property Value Type Description AudioFormat" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.HeaderFilter.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.HeaderFilter.html", + "title": "Class HeaderFilter", + "keywords": "Class HeaderFilter Header filters act as whitelists. Inheritance Object BaseFilter BaseFilter < IEnumerable < String >, String > HeaderFilter Inherited Members BaseFilter, String>.MatchableString BaseFilter, String>.MatchEvaluator Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class HeaderFilter : BaseFilter, string> Constructors HeaderFilter(String) Initializes a new instance of the HeaderFilter class. Declaration public HeaderFilter(string matchableHeaderName) Parameters Type Name Description String matchableHeaderName Name of the matchable header. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.GraphUriFilters.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.GraphUriFilters.html", + "title": "Class GraphUriFilters", + "keywords": "Class GraphUriFilters Uri filters to filter PII in graph urls. Inheritance Object GraphUriFilters Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphUriFilters Constructors GraphUriFilters() Declaration public GraphUriFilters() Properties ChatUriFilters Gets the chat URI filters. Declaration public static List ChatUriFilters { get; } Property Value Type Description List < UriFilter > Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCommunicationsClientBuilderExtensions.html": { + "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCommunicationsClientBuilderExtensions.html", + "title": "Class MediaCommunicationsClientBuilderExtensions", + "keywords": "Class MediaCommunicationsClientBuilderExtensions The stateful client builder extension. Inheritance Object MediaCommunicationsClientBuilderExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public static class MediaCommunicationsClientBuilderExtensions Methods SetMediaPlatformSettings(ICommunicationsClientBuilder, MediaPlatformSettings) Set the local media platform settings. This function also initializes the local media platform. Declaration public static ICommunicationsClientBuilder SetMediaPlatformSettings(this ICommunicationsClientBuilder statefulClientBuilder, MediaPlatformSettings mediaSettings) Parameters Type Name Description ICommunicationsClientBuilder statefulClientBuilder The stateful client builder. MediaPlatformSettings mediaSettings The media settings. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ClientException When something fails while initializing the media platform. TerminateAsync(ICommunicationsClient, Boolean, TimeSpan) Stops the specified stateful client. This would end all the calls and shuts down the media platform. This should only be used during shutdown. Declaration public static Task TerminateAsync(this ICommunicationsClient statefulClient, bool onlyMedia, TimeSpan timeout = default(TimeSpan)) Parameters Type Name Description ICommunicationsClient statefulClient The stateful client. Boolean onlyMedia if set to true terminate only the media platform. TimeSpan timeout The timeout. Returns Type Description Task < Boolean > True if all instances were terminated, false otherwise." }, - "common/Microsoft.Graph.Communications.Common.Transport.NoContentMessage.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.NoContentMessage.html", - "title": "Class NoContentMessage", - "keywords": "Class NoContentMessage IGraphClient requires type parameters for functionality. This is a marked Type/class to make function calls to IGraphClient indicating we have request/response with no body. The sole purpose of this class's existence is to reduce code duplicacy. Inheritance Object NoContentMessage Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class NoContentMessage Constructors NoContentMessage() Declaration public NoContentMessage() Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.VideoSettings.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSettings.html", + "title": "Class VideoSettings", + "keywords": "Class VideoSettings Video Frame player settings Inheritance Object VideoSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoSettings Constructors VideoSettings() Declaration public VideoSettings()" }, - "common/Microsoft.Graph.Communications.Common.Transport.IGraphExchange.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphExchange.html", - "title": "Interface IGraphExchange", - "keywords": "Interface IGraphExchange The base of the exchange of a IGraphRequest or IGraphResponse . Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphExchange Properties Properties Gets the properties of the exchange. Declaration ICollection Properties { get; } Property Value Type Description ICollection < IGraphProperty > Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.DominantSpeakerChangedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.DominantSpeakerChangedEventArgs.html", + "title": "Class DominantSpeakerChangedEventArgs", + "keywords": "Class DominantSpeakerChangedEventArgs Event arguments of the DominantSpeakerChanged event. Inheritance Object EventArgs DominantSpeakerChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class DominantSpeakerChangedEventArgs : EventArgs Constructors DominantSpeakerChangedEventArgs() Declaration public DominantSpeakerChangedEventArgs() Fields None Constant value which indicates there is no dominant speaker in the conference. Declaration public const uint None = 4294967295U Field Value Type Description UInt32 Properties CurrentDominantSpeaker Current dominant speaker in the conference. The value is the MediaSourceId (MSI) of the dominant speaker in the conference. If there is no dominant speaker in the conference this value will be None (0xFFFFFFFF). Declaration public uint CurrentDominantSpeaker { get; set; } Property Value Type Description UInt32 DominantSpeakerHistory History of the dominant speakers. However, DominantSpeakerHistory won't contain any element to indicate the absence of dominant speaker in the conference. Declaration public uint[] DominantSpeakerHistory { get; set; } Property Value Type Description UInt32 []" }, - "common/Microsoft.Graph.Communications.Common.Transport.GraphResponseExtensions.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphResponseExtensions.html", - "title": "Class GraphResponseExtensions", - "keywords": "Class GraphResponseExtensions Extensions for IGraphResponse class. Inheritance Object GraphResponseExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class GraphResponseExtensions Methods ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable) Converts IGraphResponse into a HttpResponseMessage . Declaration public static HttpResponseMessage ToHttpResponseMessage(this IGraphResponse graphResponse, JsonSerializerSettings jsonSerializerSettings = null, IEnumerable defaultProperties = null) Parameters Type Name Description IGraphResponse graphResponse The graph response to be converted. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. IEnumerable < IGraphProperty > defaultProperties The default properties. Returns Type Description HttpResponseMessage HttpResponseMessage corresponding to graphResponse . Type Parameters Name Description T Type of content available in the response. ToHttpStatus(ResponseStatus) Convert ResponseStatus to it's corresponding HttpStatusCode . Declaration public static HttpStatusCode ToHttpStatus(this ResponseStatus status) Parameters Type Name Description ResponseStatus status The status. Returns Type Description HttpStatusCode HttpStatusCode for the ResponseStatus" + "client/Microsoft.Graph.Communications.Client.IPagedList-1.html": { + "href": "client/Microsoft.Graph.Communications.Client.IPagedList-1.html", + "title": "Interface IPagedList", + "keywords": "Interface IPagedList The paged list interface. Inherited Members IReadOnlyList.Item[Int32] IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IPagedList : IReadOnlyList, IReadOnlyCollection, IEnumerable, IEnumerable Type Parameters Name Description T The type of object to page. Properties AdditionalData Gets or sets the additional data. Declaration IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > NextLinkUrl Gets the next link URL taken from @odata.nextLink. Declaration Uri NextLinkUrl { get; } Property Value Type Description Uri Value Gets or sets the value in the current page of the list. Declaration IList Value { get; set; } Property Value Type Description IList See Also IList " }, - "client/Microsoft.Graph.Communications.Client.IStateManager-1.html": { - "href": "client/Microsoft.Graph.Communications.Client.IStateManager-1.html", - "title": "Interface IStateManager", - "keywords": "Interface IStateManager The state manager interface. This object is responsible for storing the resources in memory. Inherited Members ICollection.Add(TResource) ICollection.Clear() ICollection.Contains(TResource) ICollection.CopyTo(TResource[], Int32) ICollection.Remove(TResource) ICollection.Count ICollection.IsReadOnly IEnumerable.GetEnumerator() IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IStateManager : ICollection, IEnumerable, IEnumerable, IDisposable where TResource : IResource Type Parameters Name Description TResource The type of the resource. Properties Item[String] Gets the IResource with the specified identifier. Declaration TResource this[string id] { get; } Parameters Type Name Description String id The identifier. Property Value Type Description TResource The IResource . Methods CopyContent() Copies the content contained by this instance. Declaration ICollection CopyContent() Returns Type Description ICollection The copied ICollection GetOrAdd(String, Func) Gets the resource with the specified id if it exists in the collection, otherwise executes the resource factory to create the resource. State manager does not guarantee that the resource factory is executed only once, so operations must be idempotent (I.E. GET, PUT, etc...). Declaration TResource GetOrAdd(string id, Func resourceFactory) Parameters Type Name Description String id The identifier. Func resourceFactory The resource factory. Returns Type Description TResource The IResource that was found or created. GetOrAddAsync(String, Func>) Gets the resource with the specified id if it exists in the collection, otherwise executes the resource factory to create the resource. State manager does not guarantee that the resource factory is executed only once, so operations must be idempotent (I.E. GET, PUT, etc...). This method supports asynchronously creating the resource. Declaration Task GetOrAddAsync(string id, Func> resourceFactory) Parameters Type Name Description String id The identifier. Func < Task > resourceFactory The resource factory. Returns Type Description Task The IResource that was found or created. Remove(String) Removes the resource with the specified id from the state manager. Declaration TResource Remove(string id) Parameters Type Name Description String id The identifier. Returns Type Description TResource The IResource that was removed. TryRemove(String, out TResource) Tries to remove the resource with the specified id. Declaration bool TryRemove(string id, out TResource resource) Parameters Type Name Description String id The identifier. TResource resource The resource. Returns Type Description Boolean true if the IResource was removed, false otherwise." + "client/Microsoft.Graph.Communications.Client.ICommunicationsClientBuilder.html": { + "href": "client/Microsoft.Graph.Communications.Client.ICommunicationsClientBuilder.html", + "title": "Interface ICommunicationsClientBuilder", + "keywords": "Interface ICommunicationsClientBuilder The builder object that builds the ICommunicationsClient . Use this class to setup the SDK's configuration. Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface ICommunicationsClientBuilder Properties Id Gets the client id. Declaration Guid Id { get; } Property Value Type Description Guid Methods Build() Build and return the stateful client object. Declaration ICommunicationsClient Build() Returns Type Description ICommunicationsClient The ICommunicationsClient . Exceptions Type Condition ArgumentException Cannot build the client without setting the required parameters. SetAuthenticationProvider(IRequestAuthenticationProvider) Sets the custom authentication provider. The authentication provider would add authentication to outbound requests and validates any inbound requests. See IRequestAuthenticationProvider Declaration ICommunicationsClientBuilder SetAuthenticationProvider(IRequestAuthenticationProvider provider) Parameters Type Name Description IRequestAuthenticationProvider provider The authentication provider. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the provider is null . SetCacheStrategy(ICache) Sets the cache strategy. Declaration ICommunicationsClientBuilder SetCacheStrategy(ICache cacheStrategy) Parameters Type Name Description ICache cacheStrategy The cache strategy. Returns Type Description ICommunicationsClientBuilder This ICommunicationsClientBuilder object. Exceptions Type Condition ArgumentNullException If the cacheStrategy strategy is null . SetHttpClient(HttpClient, IEnumerable>) Sets the http client. Use a custom HTTP Client instead of the one generated by the SDK. Declaration ICommunicationsClientBuilder SetHttpClient(HttpClient httpClient, IEnumerable> defaultHeaders = null) Parameters Type Name Description HttpClient httpClient The place call endpoint URL. IEnumerable < KeyValuePair < String , String >> defaultHeaders The default headers. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the httpClient is null . SetNotificationUrl(Uri) Set the notification uri for your bot. This is the default notification url for the bot. This can be overriden on a per-resource basis depending on the API support. Declaration ICommunicationsClientBuilder SetNotificationUrl(Uri notificationUrl) Parameters Type Name Description Uri notificationUrl The callback Url. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the notificationUrl is null . ArgumentException URI must be https. SetServiceBaseUrl(Uri) Sets the service base URL. This set's the Endpoint URL for the service. Declaration ICommunicationsClientBuilder SetServiceBaseUrl(Uri serviceBaseUrl) Parameters Type Name Description Uri serviceBaseUrl The place call endpoint URL. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the serviceBaseUrl is null . ArgumentException URI must be https." }, - "client/Microsoft.Graph.Communications.Client.PagedList-1.html": { - "href": "client/Microsoft.Graph.Communications.Client.PagedList-1.html", - "title": "Class PagedList", - "keywords": "Class PagedList An object that contains paginated list of the generic type T. Inheritance Object PagedList Implements IPagedList IReadOnlyList IReadOnlyCollection IEnumerable IEnumerable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class PagedList : IPagedList, IReadOnlyList, IReadOnlyCollection, IEnumerable, IEnumerable Type Parameters Name Description T The type of Paged List. Constructors PagedList() Declaration public PagedList() Properties AdditionalData Gets or sets the additional data. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > Count Declaration public int Count { get; } Property Value Type Description Int32 Item[Int32] Declaration public T this[int index] { get; } Parameters Type Name Description Int32 index Property Value Type Description T NextLinkUrl Gets the next link URL taken from @odata.nextLink. Declaration public Uri NextLinkUrl { get; } Property Value Type Description Uri Value Gets or sets the value in the current page of the list. Declaration public IList Value { get; set; } Property Value Type Description IList Methods GetEnumerator() Declaration public IEnumerator GetEnumerator() Returns Type Description IEnumerator Explicit Interface Implementations IEnumerable.GetEnumerator() Declaration IEnumerator IEnumerable.GetEnumerator() Returns Type Description IEnumerator Implements IPagedList System.Collections.Generic.IReadOnlyList System.Collections.Generic.IReadOnlyCollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable" + "calls_media/Microsoft.Graph.Communications.Calls.Media.html": { + "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.html", + "title": "Namespace Microsoft.Graph.Communications.Calls.Media", + "keywords": "Namespace Microsoft.Graph.Communications.Calls.Media Classes AudioSendBuffer Creates an Audio Buffer for Send and also implements Dispose MediaCallExtensions Stateful call media extensions MediaCommunicationsClientBuilderExtensions The stateful client builder extension. MediaCommunicationsClientExtensions The stateful client extension. MediaSession MediaSession.MediaProperties Gets the media properties. VideoSendBuffer Creates a Video Buffer for Send and also implements Dispose Interfaces ILocalMediaSession" }, - "common/Microsoft.Graph.Communications.Common.EnumUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.EnumUtils.html", - "title": "Class EnumUtils", - "keywords": "Class EnumUtils Enum Utilities Inheritance Object EnumUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class EnumUtils Methods GetDescription(Enum) Gets the enum's description attribute. Declaration public static string GetDescription(this Enum value) Parameters Type Name Description Enum value The value. Returns Type Description String Enum's description Parse(String) Parses the string into enum Declaration public static TEnum Parse(string value) where TEnum : struct, IComparable, IFormattable, IConvertible Parameters Type Name Description String value input string Returns Type Description TEnum Enum's parsed value Type Parameters Name Description TEnum Enum's type to output" + "calls/Microsoft.Graph.Communications.Calls.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.html", + "title": "Namespace Microsoft.Graph.Communications.Calls", + "keywords": "Namespace Microsoft.Graph.Communications.Calls Classes CallCollectionExtensions Extensions for call collections. CallExtensions Extensions for calls. CommunicationsClientExtensions Extensions for stateful client. JoinMeetingParameters Class to define parameters required for joining a meeting. ParticipantExtensions Extensions for the stateful participant resource. PlayOperationResult Class to define parameters required for joining a meeting. RecordOperationResult Class to define parameters required for joining a meeting. Interfaces ICall The stateful call interface. ICallCollection The stateful call collection interface. IMediaSession The IMediaSession interface. For local media scenarios, this session object represents the modalities and the media configuration. IParticipant The stateful participant interface. This represents a single participant in a call. IParticipantCollection The stateful participant collection interface." }, - "common/Microsoft.Graph.Communications.Common.Exceptions.ConfigurationException.html": { - "href": "common/Microsoft.Graph.Communications.Common.Exceptions.ConfigurationException.html", - "title": "Class ConfigurationException", - "keywords": "Class ConfigurationException Configuration is bad. Mandatory configuration setting is missing. Or raw (string) setting value can not be converted to property type. Inheritance Object Exception ConfigurationException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Exceptions Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ConfigurationException : Exception, ISerializable, _Exception Constructors ConfigurationException(String) Initializes a new instance of the ConfigurationException class. Declaration public ConfigurationException(string message) Parameters Type Name Description String message The message that describes the error. ConfigurationException(String, Exception) Initializes a new instance of the ConfigurationException class. Declaration public ConfigurationException(string message, Exception innerException) Parameters Type Name Description String message The error message that explains the reason for the exception. Exception innerException The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.AudioLowOnFramesEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioLowOnFramesEventArgs.html", + "title": "Class AudioLowOnFramesEventArgs", + "keywords": "Class AudioLowOnFramesEventArgs Audio low on frame event args Inheritance Object EventArgs LowOnFramesEventArgs AudioLowOnFramesEventArgs Inherited Members LowOnFramesEventArgs.MediaType LowOnFramesEventArgs.RemainingMediaLengthInMS EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioLowOnFramesEventArgs : LowOnFramesEventArgs Constructors AudioLowOnFramesEventArgs() Declaration public AudioLowOnFramesEventArgs()" }, - "client/Microsoft.Graph.Communications.Client.CommunicationsClientBuilder.html": { - "href": "client/Microsoft.Graph.Communications.Client.CommunicationsClientBuilder.html", - "title": "Class CommunicationsClientBuilder", - "keywords": "Class CommunicationsClientBuilder The class the provides the builder for stateful client. Inheritance Object CommunicationsClientBuilder Implements ICommunicationsClientBuilder Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class CommunicationsClientBuilder : ICommunicationsClientBuilder Constructors CommunicationsClientBuilder(String, String, IGraphLogger, ObfuscationMember[]) Initializes a new instance of the CommunicationsClientBuilder class. Declaration public CommunicationsClientBuilder(string appName, string appId, IGraphLogger logger = null, ObfuscationMember[] additionalObfuscationMembers = null) Parameters Type Name Description String appName Name of the application. String appId The application identifier. IGraphLogger logger The logger ObfuscationMember [] additionalObfuscationMembers Additional members to obfuscate. Properties Id Gets the client id. Declaration public Guid Id { get; } Property Value Type Description Guid Methods Build() Build and return the stateful client object. Declaration public ICommunicationsClient Build() Returns Type Description ICommunicationsClient The ICommunicationsClient . Exceptions Type Condition ArgumentException Cannot build the client without setting the required parameters. SetAuthenticationProvider(IRequestAuthenticationProvider) Sets the custom authentication provider. The authentication provider would add authentication to outbound requests and validates any inbound requests. See IRequestAuthenticationProvider Declaration public ICommunicationsClientBuilder SetAuthenticationProvider(IRequestAuthenticationProvider authenticationProvider) Parameters Type Name Description IRequestAuthenticationProvider authenticationProvider Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the provider is null . SetCacheStrategy(ICache) Sets the cache strategy. Declaration public ICommunicationsClientBuilder SetCacheStrategy(ICache cacheStrategy) Parameters Type Name Description ICache cacheStrategy The cache strategy. Returns Type Description ICommunicationsClientBuilder This ICommunicationsClientBuilder object. Exceptions Type Condition ArgumentNullException If the cacheStrategy strategy is null . SetHttpClient(HttpClient, IEnumerable>) Sets the http client. Use a custom HTTP Client instead of the one generated by the SDK. Declaration public ICommunicationsClientBuilder SetHttpClient(HttpClient httpClient, IEnumerable> defaultHeaders = null) Parameters Type Name Description HttpClient httpClient The place call endpoint URL. IEnumerable < KeyValuePair < String , String >> defaultHeaders The default headers. Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the httpClient is null . SetNotificationUrl(Uri) Set the notification uri for your bot. This is the default notification url for the bot. This can be overriden on a per-resource basis depending on the API support. Declaration public ICommunicationsClientBuilder SetNotificationUrl(Uri notificationUrlInput) Parameters Type Name Description Uri notificationUrlInput Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the notificationUrl is null . ArgumentException URI must be https. SetServiceBaseUrl(Uri) Sets the service base URL. This set's the Endpoint URL for the service. Declaration public ICommunicationsClientBuilder SetServiceBaseUrl(Uri serviceBaseUrlInput) Parameters Type Name Description Uri serviceBaseUrlInput Returns Type Description ICommunicationsClientBuilder The ICommunicationsClientBuilder . Exceptions Type Condition ArgumentNullException If the serviceBaseUrl is null . ArgumentException URI must be https. Implements ICommunicationsClientBuilder" + "core/Microsoft.Graph.Communications.Core.Notifications.NotificationEventArgs.html": { + "href": "core/Microsoft.Graph.Communications.Core.Notifications.NotificationEventArgs.html", + "title": "Class NotificationEventArgs", + "keywords": "Class NotificationEventArgs Notification event arguments class. Inheritance Object NotificationEventArgs CollectionNotificationEventArgs Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class NotificationEventArgs Constructors NotificationEventArgs(Uri, CommsNotification, ChangeType, Object) Initializes a new instance of the NotificationEventArgs class. Declaration public NotificationEventArgs(Uri callbackUri, CommsNotification notification, ChangeType changeType, object resourceData) Parameters Type Name Description Uri callbackUri The callback URI. CommsNotification notification The notification. ChangeType changeType Type of the change. Object resourceData The resource data. Properties AdditionalData Gets or sets the additional data. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > CallbackUri Gets the callback URI. Declaration public Uri CallbackUri { get; } Property Value Type Description Uri ChangeType Gets the type of the change. Declaration public ChangeType ChangeType { get; } Property Value Type Description ChangeType Notification Gets the notification. Declaration public CommsNotification Notification { get; } Property Value Type Description CommsNotification NotificationId Gets the notification identifier. Declaration public Guid NotificationId { get; } Property Value Type Description Guid RequestId Gets or sets the request identifier. Declaration public Guid RequestId { get; set; } Property Value Type Description Guid ResourceData Gets the resource data. Declaration public object ResourceData { get; } Property Value Type Description Object ScenarioId Gets or sets the scenario identifier. Declaration public Guid ScenarioId { get; set; } Property Value Type Description Guid TenantId Gets or sets the tenant. Declaration public string TenantId { get; set; } Property Value Type Description String" }, - "client/Microsoft.Graph.Communications.Resources.IResourceCollection.html": { - "href": "client/Microsoft.Graph.Communications.Resources.IResourceCollection.html", - "title": "Interface IResourceCollection", - "keywords": "Interface IResourceCollection The resource collection interface. Inherited Members IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResourceCollection : IResourceBase, IDisposable Methods TerminateAsync(TimeSpan) Performs collection specific terminate tasks. Declaration Task TerminateAsync(TimeSpan timeout = default(TimeSpan)) Parameters Type Name Description TimeSpan timeout The timeout. Returns Type Description Task < Boolean > True if all instances terminated successfully, false otherwise. See Also IResourceBase" + "core/Microsoft.Graph.Communications.Core.Notifications.INotificationProcessor.html": { + "href": "core/Microsoft.Graph.Communications.Core.Notifications.INotificationProcessor.html", + "title": "Interface INotificationProcessor", + "keywords": "Interface INotificationProcessor The notification processor interface. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public interface INotificationProcessor : IDisposable Properties AuthenticationProvider Gets the authentication provider. TODO: This should probably not be a part of the INotificationProcessor . Ideally the request is already validated prior to making it in here. This means that 1) Already sanitized by authentication provider and 2) The tenant/scenario id parameters extracted into the IGraphRequest. Declaration IAuthenticationProvider AuthenticationProvider { get; } Property Value Type Description IAuthenticationProvider The authentication provider. Methods ProcessNotifications(Uri, String, String, Guid, Guid, IEnumerable>) Processes the notifications and raise the required callbacks. This function should be called in order for the SDK to raise any required events and process state changes. Declaration void ProcessNotifications(Uri callbackUri, string content, string tenantId, Guid requestId, Guid scenarioId, IEnumerable> additionalData = null) Parameters Type Name Description Uri callbackUri The callback URI. String content The notifications content. String tenantId The tenant identifier. Guid requestId The request identifier. Guid scenarioId The scenario identifier. IEnumerable < KeyValuePair < String , Object >> additionalData Additional data associated with the notification. Events OnCollectionNotificationReceived Occurs when a collection notification is received. Declaration event Action OnCollectionNotificationReceived Event Type Type Description Action < CollectionNotificationEventArgs > OnNotificationReceived Occurs when a notification is received. This is a global hook for all notifications. Declaration event Action OnNotificationReceived Event Type Type Description Action < NotificationEventArgs > OnResourceNotificationReceived Occurs when a single resource notification is received. Declaration event Action OnResourceNotificationReceived Event Type Type Description Action < NotificationEventArgs > Extension Methods NotificationProcessorExtensions.ProcessNotificationAsync(INotificationProcessor, HttpRequestMessage)" }, - "client/Microsoft.Graph.Communications.Resources.ResourceEventArgs-1.html": { - "href": "client/Microsoft.Graph.Communications.Resources.ResourceEventArgs-1.html", - "title": "Class ResourceEventArgs", - "keywords": "Class ResourceEventArgs The resource event arguments. Inheritance Object ResourceEventArgs Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class ResourceEventArgs where TEntity : Entity Type Parameters Name Description TEntity The containing NewResource type. NewResource Constructors ResourceEventArgs(TEntity, TEntity, String) Initializes a new instance of the ResourceEventArgs class. Declaration public ResourceEventArgs(TEntity oldResource, TEntity newResource, string resourcePath) Parameters Type Name Description TEntity oldResource The old resource. TEntity newResource The new resource. String resourcePath The resource path. Properties AdditionalData Gets or sets the additional data for the event. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > NewResource Gets the new resource. Declaration public TEntity NewResource { get; } Property Value Type Description TEntity OldResource Gets the old resource. Declaration public TEntity OldResource { get; } Property Value Type Description TEntity ResourcePath Gets the resource path for this resource. Declaration public string ResourcePath { get; } Property Value Type Description String" + "common/Microsoft.Graph.Communications.Common.WeakKey-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.WeakKey-1.html", + "title": "Class WeakKey", + "keywords": "Class WeakKey Wrapping a weak reference and recording hash code. Note: It is the responsibility of the client to clean up the collection entry in the finalizer of the object. Otherwise the key will not match for subsequent lookups. Inheritance Object WeakKey Inherited Members Object.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class WeakKey where T : class Type Parameters Name Description T Type of the key to be used in a lookup. Constructors WeakKey(T) Initializes a new instance of the WeakKey class. Declaration public WeakKey(T t) Parameters Type Name Description T t Underlying object. WeakKey(WeakReference) Initializes a new instance of the WeakKey class. Declaration public WeakKey(WeakReference weak) Parameters Type Name Description WeakReference weak Underlying object wrapped in weak reference. Properties Unwrapped Gets the target. Declaration public T Unwrapped { get; } Property Value Type Description T Value Gets the weak reference to the underlying object. Declaration public WeakReference Value { get; } Property Value Type Description WeakReference Methods Equals(Object) Determines whether the specified object is equal to the current object. Declaration public override bool Equals(object obj) Parameters Type Name Description Object obj The object to compare with the current object. Returns Type Description Boolean true if the specified object is equal to the current object. Overrides Object.Equals(Object) GetHashCode() Overrides hash code to hand out the underlying object's hash code. Declaration public override int GetHashCode() Returns Type Description Int32 Hash code of underlying object. Overrides Object.GetHashCode() Operators Implicit(T to WeakKey) Implicit cast operator to weak key. Declaration public static implicit operator WeakKey(T t) Parameters Type Name Description T t Wrap with weak key. Returns Type Description WeakKey Implicit(WeakKey to T) Implicit type cast operator. Declaration public static implicit operator T(WeakKey key) Parameters Type Name Description WeakKey key Extract underlying object. Returns Type Description T Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.IGraphLogger.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.IGraphLogger.html", - "title": "Interface IGraphLogger", - "keywords": "Interface IGraphLogger The logger interface used by Graph Services. This logger emits logs that can be observed by different observers. Inherited Members IObservable.Subscribe(IObserver) Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphLogger : IObservable Properties CorrelationId Gets or sets the correlation identifier. This is used to track correlation between multiple requests for one scenario. Declaration Guid CorrelationId { get; set; } Property Value Type Description Guid DiagnosticLevel Gets or sets the diagnostic level for the logger. Declaration TraceLevel DiagnosticLevel { get; set; } Property Value Type Description TraceLevel LogicalThreadId Gets or sets the logical thread identifier. This id is used for tracking the flow of one request throughout the lifetime until it ends. Declaration uint LogicalThreadId { get; set; } Property Value Type Description UInt32 ObfuscationConfiguration Gets the obfuscation configuration. This is used to obfuscate PII and other data. Declaration ObfuscationConfiguration ObfuscationConfiguration { get; } Property Value Type Description ObfuscationConfiguration Properties Gets the properties of the logger. Declaration IReadOnlyDictionary Properties { get; } Property Value Type Description IReadOnlyDictionary < Type , Object > Methods Log(TraceLevel, String, String, Guid, Guid, LogEventType, IEnumerable, String, String, Int32) Log messages classified as the provided trace level. Declaration LogEvent Log(TraceLevel level, string message, string component = null, Guid correlationId = default(Guid), Guid requestId = default(Guid), LogEventType eventType = LogEventType.Trace, IEnumerable properties = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description TraceLevel level The trace level. String message A composite format string that includes one or more format items. String component The component in which log is created Guid correlationId The correlation identifier. Guid requestId The request identifier. LogEventType eventType Log event type IEnumerable < Object > properties Extra properties for the log event String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.CreateObserver(IObservable, Action, Action, Action) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) LoggingExtensions.Log(IGraphLogger, TraceLevel, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Info(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Verbose(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.LogHttpMessage(IGraphLogger, TraceLevel, TransactionDirection, HttpTraceType, String, String, String, IEnumerable>>, Int32, String, Nullable, Guid, Guid, String, String, Int32) LoggingExtensions.Metric(IGraphLogger, String, String, Int64, Dictionary, Boolean, String, Guid, String, String, Int32) LoggingExtensions.SerializeAndObfuscate(IGraphLogger, Object, Formatting) LoggingExtensions.Obfuscate(IGraphLogger, Object, ObfuscationTag) LoggingExtensions.GetHeaderText(IGraphLogger, IEnumerable>>) LoggingExtensions.CreateShim(IGraphLogger, String, Nullable, IEnumerable, ObfuscationConfiguration) LoggingExtensions.CreateILogger(IGraphLogger, String, Guid, LogEventType, IEnumerable) LoggingExtensions.EnterMethod(IGraphLogger, Guid, String, String, Int32) LoggingExtensions.LeaveMethod(IGraphLogger, Guid, String, String, Int32)" + "bot_media/Microsoft.Skype.Bots.Media.AudioSocket.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioSocket.html", + "title": "Class AudioSocket", + "keywords": "Class AudioSocket Provides Send and Receive I/O access to an audio stream. Inheritance Object AudioSocket Implements IAudioSocket IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public sealed class AudioSocket : IAudioSocket, IDisposable, IInternalAudioSocket, IInternalSocket Constructors AudioSocket(AudioSocketSettings) Initializes a new AudioSocket object. Declaration public AudioSocket(AudioSocketSettings settings) Parameters Type Name Description AudioSocketSettings settings Configuration settings for the AudioSocket Methods Dispose() Disposes the object Declaration public void Dispose() GetQualityOfExperienceData() Get the Quality of Experience (QoE) data for the audio socket. Declaration public AudioQualityOfExperienceData GetQualityOfExperienceData() Returns Type Description AudioQualityOfExperienceData Remarks The bot should fetch the QoE data no more than once every 30 seconds. To get accurate metrics, the bot should let media flow for at least 30 seconds before fetching the QoE data. Send(AudioMediaBuffer) Sends a frame of audio media, where a frame contains 20 milliseconds of audio content (PCM samples). Declaration public void Send(AudioMediaBuffer buffer) Parameters Type Name Description AudioMediaBuffer buffer AudioMediaBuffer containing the frame of audio media to send. Remarks The application must create a concrete class which derives from the AudioMediaBuffer abstract class. The buffer object passed to the Send method is still potentially in-use after the method returns to the caller. The application must not free the buffer's frame data until the the buffer object's Dispose() method is invoked by the Media Platform. The application should be sending 50 frames of audio media per second with each frame containing 20 milliseconds of audio content. The AudioSocket must be enabled to send media via the AudioSocketSettings.StreamDirections property. SendDtmfTone(ToneId) Sends a DTMF tone. Declaration public void SendDtmfTone(ToneId tone) Parameters Type Name Description ToneId tone The DTMF digit. Ranges from 0-16. Remarks Sending DTMF tone is only allowed if the AudioSocket is configured for sending media. SendDtmfTones(IEnumerable, Int32) Sends a sequence of DTMF tones with an optional delay between each tone. Declaration public void SendDtmfTones(IEnumerable tones, int delayBetweenTonesInMilliseconds = -1) Parameters Type Name Description IEnumerable < ToneId > tones The list of DTMF digits to be sent. Ranges from 0-16. Int32 delayBetweenTonesInMilliseconds Delay (in milliseconds) between each DTMF digit sent. Remarks By default, the delay is set to -1 which picks a random time between 0 to 500 milliseconds. Events AudioMediaReceived If the application has configured the AudioSocket to receive media, this event is raised each time a frame of audio media is received, where a frame contains 20 milliseconds of audio content (PCM samples). Once the application has consumed the buffer, it must call the buffer's Dispose() method. Declaration public event EventHandler AudioMediaReceived Event Type Type Description EventHandler < AudioMediaReceivedEventArgs > Remarks The application must be able to handle at least 50 incoming audio buffers per second. Events are serialized, so only one event at a time is raised to the app. The event handler should return as quickly as possible; any time-consuming per-frame processing should be performed asynchronously from the event handler. AudioSendStatusChanged If the application has configured the AudioSocket to send media, this event is raised to inform the application when it may begin sending media and when it should stop. The application cannot send media before receiving a MediaSendStatusChanged event indicating the SendStatus is Active, such media will be discarded. Declaration public event EventHandler AudioSendStatusChanged Event Type Type Description EventHandler < AudioSendStatusChangedEventArgs > DominantSpeakerChanged This event is raised when there is a change in the dominant speaker in the conference. If there is no dominant speaker in the conference the CurrentDominantSpeaker argument in the event will have the value None (0xFFFFFFFF). Declaration public event EventHandler DominantSpeakerChanged Event Type Type Description EventHandler < DominantSpeakerChangedEventArgs > MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration public event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > ToneReceived This event is raised when the DTMF tone is received. ToneId enum indicates the tone value. Declaration public event EventHandler ToneReceived Event Type Type Description EventHandler < ToneReceivedEventArgs > Implements IAudioSocket System.IDisposable" }, - "common/Microsoft.Graph.Communications.Common.JsonUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.JsonUtils.html", - "title": "Class JsonUtils", - "keywords": "Class JsonUtils Json Utils Inheritance Object JsonUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class JsonUtils Fields JsonContentType Json content type Declaration public const string JsonContentType = \"application/json\" Field Value Type Description String" + "core/Microsoft.Graph.Communications.Core.html": { + "href": "core/Microsoft.Graph.Communications.Core.html", + "title": "Namespace Microsoft.Graph.Communications.Core", + "keywords": "Namespace Microsoft.Graph.Communications.Core Classes CommsConstants The communications constants. CommsConstants.HttpPropertyNames Constants used for HTTP property names CommsGeneratedErrorConstants The generated error constants. CommsGeneratedErrorConstants.Codes The codes CommsGeneratedErrorConstants.Messages The messages. GraphModelExtensions Generic graph model extensions." }, - "common/Microsoft.Graph.AdditionalDataExtensions.html": { - "href": "common/Microsoft.Graph.AdditionalDataExtensions.html", - "title": "Class AdditionalDataExtensions", - "keywords": "Class AdditionalDataExtensions The identity set extensions Inheritance Object AdditionalDataExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class AdditionalDataExtensions Methods GetValue(IDictionary, String, T) Gets the object using the key from additional data. Declaration public static T GetValue(this IDictionary additionalData, string key, T default = null) Parameters Type Name Description IDictionary < String , Object > additionalData The additional data. String key The key. T default The default value if value could not be parsed. Returns Type Description T /// The converted value. Type Parameters Name Description T The expected type for the specified key. SetInAdditionalData(Object, String, Object) Sets the object with given key in additional data. Declaration public static void SetInAdditionalData(this object obj, string key, object value) Parameters Type Name Description Object obj The identity. String key The key. Object value The value." + "common/Microsoft.Graph.Communications.Common.Telemetry.ClientLogEventId.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.ClientLogEventId.html", + "title": "Enum ClientLogEventId", + "keywords": "Enum ClientLogEventId Event ids for client logs Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum ClientLogEventId Fields Name Description ClientHttpTrace The event id for client HTTP trace. ClientTrace The event id for client trace Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(ClientLogEventId, String, String) Validator.Equals(ClientLogEventId, String) Validator.NotEquals(ClientLogEventId, String, String)" }, "common/Microsoft.Graph.Communications.Common.OData.ODataConfiguration.html": { "href": "common/Microsoft.Graph.Communications.Common.OData.ODataConfiguration.html", "title": "Class ODataConfiguration", "keywords": "Class ODataConfiguration OData Configuration object to be used for different classes. Inheritance Object ODataConfiguration Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ODataConfiguration Constructors ODataConfiguration(Boolean, Assembly[]) Initializes a new instance of the ODataConfiguration class. Declaration public ODataConfiguration(bool addOdataType, params Assembly[] odataAssemblies) Parameters Type Name Description Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. Assembly [] odataAssemblies The OData assemblies. Properties JsonSerializerSettingsForOData Gets json serializer settings for OData. Declaration public JsonSerializerSettings JsonSerializerSettingsForOData { get; } Property Value Type Description Newtonsoft.Json.JsonSerializerSettings Newtonsoft.Json.JsonSerializerSettings for serializing/deserializing OData objects. Methods FillODataJsonSerializerSettings(Boolean, JsonSerializerSettings) Fills the json serializer settings. Declaration public JsonSerializerSettings FillODataJsonSerializerSettings(bool addOdataType, JsonSerializerSettings settings) Parameters Type Name Description Boolean addOdataType If true, attach the @odata.type property to each object, otherwise only attach this property if it's already present. Newtonsoft.Json.JsonSerializerSettings settings The settings. Returns Type Description Newtonsoft.Json.JsonSerializerSettings Serialization settings. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.SecureStringUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.SecureStringUtils.html", - "title": "Class SecureStringUtils", - "keywords": "Class SecureStringUtils SecureString Utilities Inheritance Object SecureStringUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class SecureStringUtils Methods ConvertToUnsecureString(SecureString) Converts a SecureString into a managed string for consumption Declaration public static string ConvertToUnsecureString(this SecureString secureString) Parameters Type Name Description SecureString secureString The SecureString to convert into a managed string Returns Type Description String String representation of the SecureString" - }, - "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.html": { - "href": "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.html", - "title": "Class LogProperties", - "keywords": "Class LogProperties The log properties. Inheritance Object LogProperties Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Client.dll Syntax public static class LogProperties Remarks For better logging experience, all property names should be specific enough. Avoid using generic name such as Id, Name, etc." + "common/Microsoft.Graph.Communications.Common.OData.CamelCaseStringEnumConverter.html": { + "href": "common/Microsoft.Graph.Communications.Common.OData.CamelCaseStringEnumConverter.html", + "title": "Class CamelCaseStringEnumConverter", + "keywords": "Class CamelCaseStringEnumConverter Converts an System.Enum to and from its name string value. When converting to its string value it will use camelCase formatting. Inheritance Object CamelCaseStringEnumConverter Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class CamelCaseStringEnumConverter : StringEnumConverter Constructors CamelCaseStringEnumConverter() Initializes a new instance of the CamelCaseStringEnumConverter class. Declaration public CamelCaseStringEnumConverter() Properties CanWrite Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Methods CanConvert(Type) Declaration public override bool CanConvert(Type objectType) Parameters Type Name Description Type objectType Returns Type Description Boolean ReadJson(JsonReader, Type, Object, JsonSerializer) Declaration public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonReader reader Type objectType Object existingValue Newtonsoft.Json.JsonSerializer serializer Returns Type Description Object Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also Newtonsoft.Json.Converters.StringEnumConverter" }, - "common/Microsoft.Graph.Communications.Common.Transport.Http.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.Http.html", - "title": "Namespace Microsoft.Graph.Communications.Common.Transport.Http", - "keywords": "Namespace Microsoft.Graph.Communications.Common.Transport.Http Classes HttpUtils Utilities for Http transport" + "common/Microsoft.Graph.Communications.Common.OData.ODataConstants.html": { + "href": "common/Microsoft.Graph.Communications.Common.OData.ODataConstants.html", + "title": "Class ODataConstants", + "keywords": "Class ODataConstants The OData constants. Inheritance Object ODataConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class ODataConstants Fields ODataType The OData type. Declaration public const string ODataType = \"@odata.type\" Field Value Type Description String" }, - "client/Microsoft.Graph.Communications.Client.Authentication.html": { - "href": "client/Microsoft.Graph.Communications.Client.Authentication.html", - "title": "Namespace Microsoft.Graph.Communications.Client.Authentication", - "keywords": "Namespace Microsoft.Graph.Communications.Client.Authentication Structs RequestValidationResult The result of the request validation. Interfaces IRequestAuthenticationProvider The authentication provider interface. This is used to authenticate Inbound requests from Microsoft Graph. It validates the request was issued by Microsoft Graph. Outbound requests to Microsoft Graph. Tenant token is acquired to provide Microsoft Graph the permissions the bot has been consented by the tenant admin" + "common/Microsoft.Graph.Communications.Common.ExceptionUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.ExceptionUtils.html", + "title": "Class ExceptionUtils", + "keywords": "Class ExceptionUtils Exception utilities Inheritance Object ExceptionUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class ExceptionUtils Methods FindInnerException(Exception) Find the inner exception that caused the error. Declaration public static Exception FindInnerException(this Exception exception) Parameters Type Name Description Exception exception Top level exception. Returns Type Description Exception Inner exception causing the error. FormatException(Exception, Int32) Format the exception including up to depth inner exceptions. Includes stack trace of the last inner exception (up to depth ). Declaration public static string FormatException(this Exception exception, int depth = 4) Parameters Type Name Description Exception exception Top level exception. Int32 depth The depth of inner exceptions, valid range is [1..4]. 1 means that most top exception will be formatted. Returns Type Description String Formatted exception GetBaseException(Exception) Gets the base exception of an exception. If the exception is an AggregateException, then the inner exceptions are flattened before getting the base exception. Declaration public static Exception GetBaseException(Exception exception) Parameters Type Name Description Exception exception The exception Returns Type Description Exception Whether it's base exception" }, - "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.Messages.html": { - "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.Messages.html", - "title": "Class ErrorConstants.Messages", - "keywords": "Class ErrorConstants.Messages Error Messages Inheritance Object ErrorConstants.Messages Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Messages Fields AuthenticationProviderMissing The authentication provider missing Declaration public const string AuthenticationProviderMissing = \"Authentication provider is required before sending a request.\" Field Value Type Description String BaseUrlMissing The base URL missing Declaration public const string BaseUrlMissing = \"Base URL cannot be null or empty.\" Field Value Type Description String ClientErrorAuthenticatingRequest The client error processing notifications Declaration public const string ClientErrorAuthenticatingRequest = \"Unexpected exception happened on client when authenticating request.\" Field Value Type Description String ClientErrorProcessingNotifications The client error processing notifications Declaration public const string ClientErrorProcessingNotifications = \"Unexpected exception happened on client when processing notification.\" Field Value Type Description String InvalidTypeForDateConverter The invalid type for date converter Declaration public const string InvalidTypeForDateConverter = \"DateConverter can only serialize objects of type Date.\" Field Value Type Description String LocationHeaderNotSetOnRedirect The location header not set on redirect Declaration public const string LocationHeaderNotSetOnRedirect = \"Location header not present in redirection response.\" Field Value Type Description String MessageContentIsEmpty The message content is empty Declaration public const string MessageContentIsEmpty = \"Unexpected empty message content.\" Field Value Type Description String NotificationChangeTypeIsEmpty The notification change type is empty Declaration public const string NotificationChangeTypeIsEmpty = \"No change type specified for the incoming notification.\" Field Value Type Description String NotificationResourceDataIsEmpty The notification resource data is empty Declaration public const string NotificationResourceDataIsEmpty = \"No resource data specified for the incoming notification.\" Field Value Type Description String NotificationResourceNotRecognized The notification resource is not recognized Declaration public const string NotificationResourceNotRecognized = \"Resource in notification is not recognized.\" Field Value Type Description String NotificationResourcePathIsEmpty The notification resource path is empty Declaration public const string NotificationResourcePathIsEmpty = \"No resource path specified for the incoming notification.\" Field Value Type Description String NotificationsAreEmpty The notifications are empty Declaration public const string NotificationsAreEmpty = \"Notifications received from server are empty.\" Field Value Type Description String NotificationUriNotSet The notification URI not set Declaration public const string NotificationUriNotSet = \"Notification URI is not set for the resource.\" Field Value Type Description String OverallTimeoutCannotBeSet The overall timeout cannot be set Declaration public const string OverallTimeoutCannotBeSet = \"Overall timeout cannot be set after the first request is sent.\" Field Value Type Description String RehydrationFailedNotFound The re-hydration failed not found Declaration public const string RehydrationFailedNotFound = \"Rehydration is performed on a resource that doesn't exist.\" Field Value Type Description String RehydrationFailedWithEmptyResource The re-hydration failed with empty resource Declaration public const string RehydrationFailedWithEmptyResource = \"Rehydration failed since service returned an empty resource.\" Field Value Type Description String RequestTimedOut The request timed out Declaration public const string RequestTimedOut = \"The request timed out.\" Field Value Type Description String RequestUrlMissing The request URL missing Declaration public const string RequestUrlMissing = \"Request URL is required to send a request.\" Field Value Type Description String TooManyRedirectsFormatString The too many redirects format string Declaration public const string TooManyRedirectsFormatString = \"More than {0} redirects encountered while sending the request.\" Field Value Type Description String UnableToCreateInstanceOfTypeFormatString The unable to create instance of type format string Declaration public const string UnableToCreateInstanceOfTypeFormatString = \"Unable to create an instance of type {0}.\" Field Value Type Description String UnableToDeserializeNotification The unable to deserialize notification Declaration public const string UnableToDeserializeNotification = \"Unable to deserialize the notification.\" Field Value Type Description String UnexpectedExceptionOnSend The unexpected exception on send Declaration public const string UnexpectedExceptionOnSend = \"An error occurred sending the request.\" Field Value Type Description String UnexpectedExceptionResponse The unexpected exception response Declaration public const string UnexpectedExceptionResponse = \"Unexpected exception returned from the service.\" Field Value Type Description String" + "client/Microsoft.Graph.Communications.Common.Telemetry.html": { + "href": "client/Microsoft.Graph.Communications.Common.Telemetry.html", + "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry", + "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry Classes CommsLogEventFormatter Test log formatter. LogProperties The log properties. LogProperties.CallData Call data. LogProperties.ChatData Chat data." }, - "common/Microsoft.Graph.Communications.Common.Transport.RequestType.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.RequestType.html", - "title": "Enum RequestType", - "keywords": "Enum RequestType Type of request that we want to issue on the transport Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum RequestType Fields Name Description Create Request to create a resource Delete Request to delete a resource Get Request to get a resource Replace Request to replace a resource Update Request to update a resource Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(RequestType, String, String) Validator.Equals(RequestType, String) Validator.NotEquals(RequestType, String, String) GraphRequestExtensions.ToHttpMethod()" + "client/Microsoft.Graph.Communications.Client.IStateManager-1.html": { + "href": "client/Microsoft.Graph.Communications.Client.IStateManager-1.html", + "title": "Interface IStateManager", + "keywords": "Interface IStateManager The state manager interface. This object is responsible for storing the resources in memory. Inherited Members ICollection.Add(TResource) ICollection.Clear() ICollection.Contains(TResource) ICollection.CopyTo(TResource[], Int32) ICollection.Remove(TResource) ICollection.Count ICollection.IsReadOnly IEnumerable.GetEnumerator() IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IStateManager : ICollection, IEnumerable, IEnumerable, IDisposable where TResource : IResource Type Parameters Name Description TResource The type of the resource. Properties Item[String] Gets the IResource with the specified identifier. Declaration TResource this[string id] { get; } Parameters Type Name Description String id The identifier. Property Value Type Description TResource The IResource . Methods CopyContent() Copies the content contained by this instance. Declaration ICollection CopyContent() Returns Type Description ICollection The copied ICollection GetOrAdd(String, Func) Gets the resource with the specified id if it exists in the collection, otherwise executes the resource factory to create the resource. State manager does not guarantee that the resource factory is executed only once, so operations must be idempotent (I.E. GET, PUT, etc...). Declaration TResource GetOrAdd(string id, Func resourceFactory) Parameters Type Name Description String id The identifier. Func resourceFactory The resource factory. Returns Type Description TResource The IResource that was found or created. GetOrAddAsync(String, Func>) Gets the resource with the specified id if it exists in the collection, otherwise executes the resource factory to create the resource. State manager does not guarantee that the resource factory is executed only once, so operations must be idempotent (I.E. GET, PUT, etc...). This method supports asynchronously creating the resource. Declaration Task GetOrAddAsync(string id, Func> resourceFactory) Parameters Type Name Description String id The identifier. Func < Task > resourceFactory The resource factory. Returns Type Description Task The IResource that was found or created. Remove(String) Removes the resource with the specified id from the state manager. Declaration TResource Remove(string id) Parameters Type Name Description String id The identifier. Returns Type Description TResource The IResource that was removed. TryRemove(String, out TResource) Tries to remove the resource with the specified id. Declaration bool TryRemove(string id, out TResource resource) Parameters Type Name Description String id The identifier. TResource resource The resource. Returns Type Description Boolean true if the IResource was removed, false otherwise." }, - "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.ChatData.html": { - "href": "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.ChatData.html", - "title": "Class LogProperties.ChatData", - "keywords": "Class LogProperties.ChatData Chat data. Inheritance Object LogProperties.ChatData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class ChatData Constructors ChatData() Declaration public ChatData() Properties ChatId Gets or sets the chat identifier. Declaration public string ChatId { get; set; } Property Value Type Description String TenantId Gets or sets the tenant identifier. Declaration public string TenantId { get; set; } Property Value Type Description String" + "client/Microsoft.Graph.Communications.Client.Authentication.RequestValidationResult.html": { + "href": "client/Microsoft.Graph.Communications.Client.Authentication.RequestValidationResult.html", + "title": "Struct RequestValidationResult", + "keywords": "Struct RequestValidationResult The result of the request validation. Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() ValueType.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Graph.Communications.Client.Authentication Assembly : Microsoft.Graph.Communications.Client.dll Syntax public struct RequestValidationResult Fields IsValid Indicates whether the request is valid. Declaration public bool IsValid Field Value Type Description Boolean TenantId The tenant id for the incoming request. Declaration public string TenantId Field Value Type Description String" }, - "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.CallData.html": { - "href": "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.CallData.html", - "title": "Class LogProperties.CallData", - "keywords": "Class LogProperties.CallData Call data. Inheritance Object LogProperties.CallData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class CallData Constructors CallData() Declaration public CallData() Properties CallId Gets or sets the call identifier. Declaration public string CallId { get; set; } Property Value Type Description String TenantId Gets or sets the tenant identifier. Declaration public string TenantId { get; set; } Property Value Type Description String" + "common/Microsoft.Graph.Communications.Common.Telemetry.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.html", + "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry", + "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry Classes AadApplicationIdentity The application identity in Azure AD. CallerInfo Class that encapsulates the caller's (creator's) information ClientEtwLogger Logger for client that publishes to ETW. GraphLogger Logging portion of graph. GraphLoggerShim The graph logger shim. This wrapper on the IGraphLogger attaches some extra data to each log request. GraphLoggerWrapper The ILogger wrapper for IGraphLogger. JsonConverters Json converters. JsonConverters.TypedPropertiesConverter The json converter for Type. LogEvent Log data LogEventFormatter The log event formatter LoggingConstants Constants used for logging that are common between server and client. LoggingExtensions Extensions class for logging. MetricLogData The metric of Geneva Instrumentation Framework (Ifx). Interfaces IGraphLogger The logger interface used by Graph Services. This logger emits logs that can be observed by different observers. ILogEventFormatter Interface to format log event. Enums ClientLogEventId Event ids for client logs HttpTraceType Trace used for HTTP traces. LogEventFormatterFlags The log event formatter enums LogEventType Log event type that describes what type of LogEvent this is. TransactionDirection Direction for request message." }, - "calls/Microsoft.Graph.Communications.Calls.PlayOperationResult.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.PlayOperationResult.html", - "title": "Class PlayOperationResult", - "keywords": "Class PlayOperationResult Class to define parameters required for joining a meeting. Inheritance Object PlayOperationResult Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public class PlayOperationResult Constructors PlayOperationResult(ResultInfo) Initializes a new instance of the PlayOperationResult class. Declaration public PlayOperationResult(ResultInfo resultInfo) Parameters Type Name Description ResultInfo resultInfo The result information. Properties ResultInfo Gets the result information. Declaration public ResultInfo ResultInfo { get; } Property Value Type Description ResultInfo The result information." + "common/Microsoft.Graph.Communications.Common.Telemetry.TransactionDirection.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.TransactionDirection.html", + "title": "Enum TransactionDirection", + "keywords": "Enum TransactionDirection Direction for request message. Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum TransactionDirection Fields Name Description Incoming The incoming request message. Outgoing The outgoing request message. Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(TransactionDirection, String, String) Validator.Equals(TransactionDirection, String) Validator.NotEquals(TransactionDirection, String, String)" }, - "common/Microsoft.Graph.Communications.Common.MetricUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.MetricUtils.html", - "title": "Class MetricUtils", - "keywords": "Class MetricUtils The metric utils class Inheritance Object MetricUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class MetricUtils Methods MeasureDurationAsync(Func, Action) Mesure the duration of task. Declaration public static Task MeasureDurationAsync(Func task, Action setMetricTask) Parameters Type Name Description Func < Task > task The task to measure Action < Int64 > setMetricTask The task to set metric Returns Type Description Task The task for wait" + "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventFormatter.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventFormatter.html", + "title": "Class LogEventFormatter", + "keywords": "Class LogEventFormatter The log event formatter Inheritance Object LogEventFormatter Implements ILogEventFormatter Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class LogEventFormatter : ILogEventFormatter Constructors LogEventFormatter(LogEventFormatterFlags, String, String) Initializes a new instance of the LogEventFormatter class. Declaration public LogEventFormatter(LogEventFormatterFlags flags = LogEventFormatterFlags.ForDefault, string inlineSeparator = \" \", string timestampFormat = \"yyyy-MM-ddTHH:mm:ss.ffffZ\") Parameters Type Name Description LogEventFormatterFlags flags The formatter flags to control which will be shown in output message. String inlineSeparator The inline separator for logging fields String timestampFormat The default timestamp format Fields DefaultTimestampFormat The default timestamp format. Declaration public const string DefaultTimestampFormat = \"yyyy-MM-ddTHH:mm:ss.ffffZ\" Field Value Type Description String Methods Format(LogEvent) Format the log event. Declaration public string Format(LogEvent logEvent) Parameters Type Name Description LogEvent logEvent The log event Returns Type Description String The formatted text. Implements ILogEventFormatter Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.MathUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.MathUtils.html", - "title": "Class MathUtils", - "keywords": "Class MathUtils Various math utilities Inheritance Object MathUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class MathUtils Methods CeilingRound(Int32, Int32) Gets the ceiling value after rounding. Declaration public static int CeilingRound(this int n, int round) Parameters Type Name Description Int32 n Value to round up. Int32 round Rounding increment. Returns Type Description Int32 Ceiling value." + "common/Microsoft.Graph.Communications.Common.Telemetry.LogEvent.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LogEvent.html", + "title": "Class LogEvent", + "keywords": "Class LogEvent Log data Inheritance Object LogEvent Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class LogEvent Constructors LogEvent() Declaration public LogEvent() Properties CallerInfo Gets or sets the caller information Declaration public CallerInfo CallerInfo { get; set; } Property Value Type Description CallerInfo CallerInfoString Gets the caller information string. Declaration public string CallerInfoString { get; } Property Value Type Description String Component Gets or sets the component in which the log is created. Declaration public string Component { get; set; } Property Value Type Description String CorrelationId Gets or sets the correlation id Declaration public Guid CorrelationId { get; set; } Property Value Type Description Guid EventType Gets or sets the type of the event. Declaration public LogEventType EventType { get; set; } Property Value Type Description LogEventType Level Gets or sets the trace level of the event. Declaration public TraceLevel Level { get; set; } Property Value Type Description TraceLevel LogicalThreadId Gets or sets the logical thread identifier. Declaration public uint LogicalThreadId { get; set; } Property Value Type Description UInt32 ManagedThreadId Gets or sets the thread ID. Declaration public int ManagedThreadId { get; set; } Property Value Type Description Int32 Message Gets or sets the Description of the event. Declaration public string Message { get; set; } Property Value Type Description String ProcessId Gets or sets the process ID. Declaration public int ProcessId { get; set; } Property Value Type Description Int32 Properties Gets or sets the Custom properties for the event. Declaration public IReadOnlyDictionary Properties { get; set; } Property Value Type Description IReadOnlyDictionary < Type , Object > PropertiesString Gets the custom properties in string format. Declaration public string PropertiesString { get; } Property Value Type Description String RequestId Gets or sets the request identifier. Declaration public Guid RequestId { get; set; } Property Value Type Description Guid Timestamp Gets or sets the Timestamp of the event. Declaration public DateTime Timestamp { get; set; } Property Value Type Description DateTime Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) LoggingExtensions.GetTypedProperties(LogEvent, Type) LoggingExtensions.GetTypedProperty(LogEvent)" }, - "core/Microsoft.Graph.NotificationsExtensions.html": { - "href": "core/Microsoft.Graph.NotificationsExtensions.html", - "title": "Class NotificationsExtensions", - "keywords": "Class NotificationsExtensions Communications notifications extensions. Inheritance Object NotificationsExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class NotificationsExtensions Methods GetResourceData(CommsNotification) Gets the resource data. Declaration public static object GetResourceData(this CommsNotification notification) Parameters Type Name Description CommsNotification notification The notification. Returns Type Description Object The resource data object for the specified notification. GetResourceData(CommsNotification) Gets the resource data. Declaration public static T GetResourceData(this CommsNotification notification) Parameters Type Name Description CommsNotification notification The notification. Returns Type Description T The resource data T object for the specified notification. Type Parameters Name Description T The expected resource data type. SetResourceData(CommsNotification, Object) Sets the resource data. Declaration public static void SetResourceData(this CommsNotification notification, object data) Parameters Type Name Description CommsNotification notification The notification. Object data The data." + "bot_media/Microsoft.Skype.Bots.Media.VideoSocketSettings.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSocketSettings.html", + "title": "Class VideoSocketSettings", + "keywords": "Class VideoSocketSettings The video socket settings. Inheritance Object VideoSocketSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoSocketSettings Constructors VideoSocketSettings() Initializes a VideoSocketSettings object. Declaration public VideoSocketSettings() Properties CallId An alphanumeric string that uniquely identifies a call. Declaration public string CallId { get; set; } Property Value Type Description String MaxConcurrentSendStreams The maximum number of concurrent (simulcast) streams that can be sent. Declaration public uint MaxConcurrentSendStreams { get; set; } Property Value Type Description UInt32 Remarks This setting applies only if the VideoSocket uses H264 encoded video formats. MediaType Specifies the media type of the VideoSocket. Valid types are: MediaType.Video and MediaType.Vbss Declaration public MediaType? MediaType { get; set; } Property Value Type Description Nullable < MediaType > ReceiveColorFormat What color format should received video be delivered in. Currently only NV12 and H264 are allowed. Declaration public VideoColorFormat ReceiveColorFormat { get; set; } Property Value Type Description VideoColorFormat StreamDirections The directionality of the media stream. This indicates whether it is enabled to both send and receive media, or only send or only receive media. Declaration public StreamDirection StreamDirections { get; set; } Property Value Type Description StreamDirection SupportedSendVideoFormats The list of video formats the VideoSocket supports sending. Declaration public IList SupportedSendVideoFormats { get; set; } Property Value Type Description IList < VideoFormat > Remarks For the main-video modality ( MediaType.Video ), the following ten H264 send video formats are supported: H264_1920x1080_30Fps H264_1280x720_30Fps H264_960x540_30Fps H264_640x360_30Fps H264_640x360_15Fps H264_424x240_15Fps H264_320x180_15Fps H264_320x180_7_5Fps H264_320x180_3_75Fps H264_320x180_1_875Fps (If the SupportedSendVideoFormats list contains other H264 video formats for main-video, they will be ignored and not used.) At least one of the H264_320x180 video formats must be supported. For best video interoperability, the bot should support all the H264_320x180 formats. For the Vbss modality, all of the send formats must be of the same resolution. The resolution should best match the native resolution of the content to be shared. Downscaling the Vbss content to a lower resolution should be avoided (but may be necessary if the native content resolution is larger than 1080p). The bot should support as many different frame rates as possible. The 1.875 fps frame rate must be supported." }, - "common/Microsoft.Graph.Communications.Common.StateMachine-1.Transition.html": { - "href": "common/Microsoft.Graph.Communications.Common.StateMachine-1.Transition.html", - "title": "Class StateMachine.Transition", - "keywords": "Class StateMachine.Transition Single transition from Source to Targets Inheritance Object StateMachine.Transition Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class Transition Constructors Transition(TStateEnum, TStateEnum[]) Initializes a new instance of the StateMachine.Transition class. Declaration public Transition(TStateEnum source, params TStateEnum[] targets) Parameters Type Name Description TStateEnum source The source. TStateEnum[] targets The targets. Properties Source Gets the source state. Declaration public TStateEnum Source { get; } Property Value Type Description TStateEnum The source. Targets Gets the target states. Declaration public TStateEnum[] Targets { get; } Property Value Type Description TStateEnum[] The targets. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.VideoMediaStreamQualityChangedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoMediaStreamQualityChangedEventArgs.html", + "title": "Class VideoMediaStreamQualityChangedEventArgs", + "keywords": "Class VideoMediaStreamQualityChangedEventArgs Event arguments of the video media stream quality event. Inheritance Object EventArgs VideoMediaStreamQualityChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoMediaStreamQualityChangedEventArgs : EventArgs Constructors VideoMediaStreamQualityChangedEventArgs() Declaration public VideoMediaStreamQualityChangedEventArgs() Properties MediaQualityState Indicates the media quality state of the mediaStream quality changed event Declaration public MediaQualityState MediaQualityState { get; set; } Property Value Type Description MediaQualityState SocketId Socket id associated with the event Declaration public int SocketId { get; set; } Property Value Type Description Int32 VideoQualityType Indicates the media quality type of the media stream quality changed event Declaration public VideoQualityType VideoQualityType { get; set; } Property Value Type Description VideoQualityType" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.GraphUriFilters.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.GraphUriFilters.html", - "title": "Class GraphUriFilters", - "keywords": "Class GraphUriFilters Uri filters to filter PII in graph urls. Inheritance Object GraphUriFilters Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphUriFilters Constructors GraphUriFilters() Declaration public GraphUriFilters() Properties ChatUriFilters Gets the chat URI filters. Declaration public static List ChatUriFilters { get; } Property Value Type Description List < UriFilter > Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.SkypeMediaException.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.SkypeMediaException.html", + "title": "Class SkypeMediaException", + "keywords": "Class SkypeMediaException Root class for the exceptions that are specific to the Skype Media Bots SDK, ie. exceptions other than the standard .NET Framework exceptions. Inheritance Object Exception SkypeMediaException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class SkypeMediaException : Exception, ISerializable, _Exception Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.ClientLogEventId.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.ClientLogEventId.html", - "title": "Enum ClientLogEventId", - "keywords": "Enum ClientLogEventId Event ids for client logs Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum ClientLogEventId Fields Name Description ClientHttpTrace The event id for client HTTP trace. ClientTrace The event id for client trace Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(ClientLogEventId, String, String) Validator.Equals(ClientLogEventId, String) Validator.NotEquals(ClientLogEventId, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformInstanceSettings.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformInstanceSettings.html", + "title": "Class MediaPlatformInstanceSettings", + "keywords": "Class MediaPlatformInstanceSettings Class that stores the settings of the Azure instance hosting the Bot Media Platform. Inheritance Object MediaPlatformInstanceSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class MediaPlatformInstanceSettings Constructors MediaPlatformInstanceSettings() Declaration public MediaPlatformInstanceSettings() Properties CertificateThumbprint Thumbprint of a local server certificate to support MTLS authentication of the Media Platform with the Microsoft Skype/Teams calling services. Declaration public string CertificateThumbprint { get; set; } Property Value Type Description String InstanceInternalPort Provides Instance InputEndpoint internal port. Declaration public int InstanceInternalPort { get; set; } Property Value Type Description Int32 InstancePublicIPAddress Provides Instance-Level Public IP address. Declaration public IPAddress InstancePublicIPAddress { get; set; } Property Value Type Description IPAddress InstancePublicPort Provides Instance InputEndpoint public port. Declaration public int InstancePublicPort { get; set; } Property Value Type Description Int32 MediaPortRange The media port range to be allocated for bot calls. Specifying media ports is optional. Declaration public PortRange MediaPortRange { get; set; } Property Value Type Description PortRange ServiceFqdn The FQDN of the Azure service hosting the Media Platform. Declaration public string ServiceFqdn { get; set; } Property Value Type Description String" }, - "calls_media/Microsoft.Graph.Communications.Calls.Media.VideoSendBuffer.html": { - "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.VideoSendBuffer.html", - "title": "Class VideoSendBuffer", - "keywords": "Class VideoSendBuffer Creates a Video Buffer for Send and also implements Dispose Inheritance Object VideoSendBuffer Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public class VideoSendBuffer : VideoMediaBuffer Constructors VideoSendBuffer(Byte[], UInt32, VideoFormat, Int64) Initializes a new instance of the VideoSendBuffer class. Declaration public VideoSendBuffer(byte[] buffer, uint length, VideoFormat format, long timeStamp = 0L) Parameters Type Name Description Byte [] buffer The buffer. UInt32 length The length. VideoFormat format The format. Int64 timeStamp The time stamp. VideoSendBuffer(IntPtr, Int64, VideoFormat, Int64) Initializes a new instance of the VideoSendBuffer class. Declaration public VideoSendBuffer(IntPtr data, long length, VideoFormat videoFormat, long timeStamp = 0L) Parameters Type Name Description IntPtr data The data. Int64 length The length. VideoFormat videoFormat The video format. Int64 timeStamp The time stamp. Methods Dispose(Boolean) Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing" + "core/Microsoft.Graph.Routing.html": { + "href": "core/Microsoft.Graph.Routing.html", + "title": "Namespace Microsoft.Graph.Routing", + "keywords": "Namespace Microsoft.Graph.Routing Enums CloudNamespace Enumeration defining various cloud environment type" }, "core/Microsoft.Graph.Routing.CloudNamespace.html": { "href": "core/Microsoft.Graph.Routing.CloudNamespace.html", "title": "Enum CloudNamespace", "keywords": "Enum CloudNamespace Enumeration defining various cloud environment type Namespace : Microsoft.Graph.Routing Assembly : Microsoft.Graph.Communications.Core.dll Syntax public enum CloudNamespace Fields Name Description DoD Represents a service running on the DoD cloud installation of NGC or a user homed on the DoD cloud. GCCH Represents a service running on the GCCH cloud installation of NGC or a user homed on the GCCH cloud. NotApplicable Used for users like 'teamsvisitor' or on premise sfb user for whom cloud namespace is not applicable Public Represents a service running on the public cloud installation of NGC or a user homed on the public cloud." }, - "common/Microsoft.Graph.Communications.Common.SafeNativeMethods.html": { - "href": "common/Microsoft.Graph.Communications.Common.SafeNativeMethods.html", - "title": "Class SafeNativeMethods", - "keywords": "Class SafeNativeMethods Contains p/invokes and associated wrappers for the Native methods Inheritance Object SafeNativeMethods Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class SafeNativeMethods Methods GetPreciseSystemTime() Gets precise system time Declaration public static DateTime GetPreciseSystemTime() Returns Type Description DateTime Precise system time" + "common/Microsoft.Graph.Communications.Common.HttpConstants.html": { + "href": "common/Microsoft.Graph.Communications.Common.HttpConstants.html", + "title": "Class HttpConstants", + "keywords": "Class HttpConstants The constant values for http. Inheritance Object HttpConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpConstants Fields GraphV1Prefixes Expected values of x-ms-gateway-serviceRoot header in the requests coming in to PMA from GraphV1 endpoints Declaration public static readonly IEnumerable GraphV1Prefixes Field Value Type Description IEnumerable < String >" + }, + "client/Microsoft.Graph.Communications.Resources.ResourceEventHandler-2.html": { + "href": "client/Microsoft.Graph.Communications.Resources.ResourceEventHandler-2.html", + "title": "Delegate ResourceEventHandler", + "keywords": "Delegate ResourceEventHandler The resource event handler delegate. Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public delegate void ResourceEventHandler(TSender sender, ResourceEventArgs e) where TEntity : Entity; Parameters Type Name Description TSender sender The sender. ResourceEventArgs e The event arguments. Type Parameters Name Description TSender The type of the resource. IResource TEntity The containing resource type. Entity Constructors ResourceEventHandler(Object, IntPtr) Declaration public ResourceEventHandler(object object, IntPtr method) Parameters Type Name Description Object object IntPtr method Methods BeginInvoke(TSender, ResourceEventArgs, AsyncCallback, Object) Declaration public virtual IAsyncResult BeginInvoke(TSender sender, ResourceEventArgs e, AsyncCallback callback, object object) Parameters Type Name Description TSender sender ResourceEventArgs e AsyncCallback callback Object object Returns Type Description IAsyncResult EndInvoke(IAsyncResult) Declaration public virtual void EndInvoke(IAsyncResult result) Parameters Type Name Description IAsyncResult result Invoke(TSender, ResourceEventArgs) Declaration public virtual void Invoke(TSender sender, ResourceEventArgs e) Parameters Type Name Description TSender sender ResourceEventArgs e" + }, + "client/Microsoft.Graph.Communications.Resources.ResourceEventArgs-1.html": { + "href": "client/Microsoft.Graph.Communications.Resources.ResourceEventArgs-1.html", + "title": "Class ResourceEventArgs", + "keywords": "Class ResourceEventArgs The resource event arguments. Inheritance Object ResourceEventArgs Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class ResourceEventArgs where TEntity : Entity Type Parameters Name Description TEntity The containing NewResource type. NewResource Constructors ResourceEventArgs(TEntity, TEntity, String) Initializes a new instance of the ResourceEventArgs class. Declaration public ResourceEventArgs(TEntity oldResource, TEntity newResource, string resourcePath) Parameters Type Name Description TEntity oldResource The old resource. TEntity newResource The new resource. String resourcePath The resource path. Properties AdditionalData Gets or sets the additional data for the event. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > NewResource Gets the new resource. Declaration public TEntity NewResource { get; } Property Value Type Description TEntity OldResource Gets the old resource. Declaration public TEntity OldResource { get; } Property Value Type Description TEntity ResourcePath Gets the resource path for this resource. Declaration public string ResourcePath { get; } Property Value Type Description String" + }, + "client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClient.html": { + "href": "client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClient.html", + "title": "Class GraphAuthClient", + "keywords": "Class GraphAuthClient The graph auth client. Inheritance Object GraphAuthClient Namespace : Microsoft.Graph.Communications.Client.Transport Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class GraphAuthClient : GraphHttpClient Constructors GraphAuthClient(IGraphLogger, JsonSerializerSettings, HttpClient, IRequestAuthenticationProvider, ProductInfoHeaderValue, IEnumerable) Initializes a new instance of the GraphAuthClient class. Declaration public GraphAuthClient(IGraphLogger logger, JsonSerializerSettings jsonSerializerSettings, HttpClient httpClient, IRequestAuthenticationProvider authenticationProvider, ProductInfoHeaderValue userAgent, IEnumerable defaultProperties) Parameters Type Name Description IGraphLogger logger The logger. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. HttpClient httpClient The HTTP client. IRequestAuthenticationProvider authenticationProvider The authentication provider. ProductInfoHeaderValue userAgent The user agent. IEnumerable < IGraphProperty > defaultProperties The default properties. Exceptions Type Condition ArgumentNullException If the authentication provider is null. Methods SendHttpRequestAsync(IGraphRequest, CancellationToken) Declaration protected override Task> SendHttpRequestAsync(IGraphRequest graphRequest, CancellationToken cancellationToken) where T1 : class where T2 : class Parameters Type Name Description IGraphRequest graphRequest CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T1 T2 See Also GraphHttpClient" + }, + "client/Microsoft.Graph.Communications.Client.StateManager-2.html": { + "href": "client/Microsoft.Graph.Communications.Client.StateManager-2.html", + "title": "Class StateManager", + "keywords": "Class StateManager The state manager implementation. Inheritance Object StateManager Implements IStateManager ICollection IEnumerable IEnumerable IDisposable Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class StateManager : Disposable, IStateManager, ICollection, IEnumerable, IEnumerable, IDisposable where TResource : IResource where TEntity : Entity Type Parameters Name Description TResource The type of the resource. TEntity The type of the entity. Constructors StateManager(ISerializer, ICache) Initializes a new instance of the StateManager class. Declaration public StateManager(ISerializer serializer, ICache cache) Parameters Type Name Description ISerializer serializer The serializer. ICache cache The cache. Properties Count Declaration public int Count { get; } Property Value Type Description Int32 IsReadOnly Declaration public bool IsReadOnly { get; } Property Value Type Description Boolean Item[String] Declaration public TResource this[string id] { get; } Parameters Type Name Description String id Property Value Type Description TResource Methods Add(TResource) Adds an item to the ICollection . Declaration public void Add(TResource item) Parameters Type Name Description TResource item The object to add to the ICollection . Exceptions Type Condition ServiceException If the resource already exists in the collection. Clear() Declaration public void Clear() Contains(TResource) Declaration public bool Contains(TResource item) Parameters Type Name Description TResource item Returns Type Description Boolean CopyContent() Declaration public ICollection CopyContent() Returns Type Description ICollection CopyTo(TResource[], Int32) Declaration public void CopyTo(TResource[] array, int arrayIndex) Parameters Type Name Description TResource[] array Int32 arrayIndex Dispose(Boolean) Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing GetEnumerator() Declaration public IEnumerator GetEnumerator() Returns Type Description IEnumerator GetOrAdd(String, Func) Declaration public TResource GetOrAdd(string id, Func resourceFactory) Parameters Type Name Description String id Func resourceFactory Returns Type Description TResource GetOrAddAsync(String, Func>) Declaration public Task GetOrAddAsync(string id, Func> resourceFactory) Parameters Type Name Description String id Func < Task > resourceFactory Returns Type Description Task Remove(TResource) Removes the occurrence of a specific object from the IStateManager . Declaration public bool Remove(TResource item) Parameters Type Name Description TResource item The object to remove from the IStateManager . Returns Type Description Boolean true if item was successfully removed from the IStateManager . Exceptions Type Condition ServiceException If the resource does not exist in the collection. Remove(String) Removes the occurrence of a specific object from the IStateManager . Declaration public TResource Remove(string id) Parameters Type Name Description String id The identifier of the object to remove from the IStateManager . Returns Type Description TResource The IResource that was removed. Exceptions Type Condition ServiceException If the resource does not exist in the collection. TryRemove(String, out TResource) Declaration public bool TryRemove(string id, out TResource resource) Parameters Type Name Description String id TResource resource Returns Type Description Boolean Explicit Interface Implementations IEnumerable.GetEnumerator() Declaration IEnumerator IEnumerable.GetEnumerator() Returns Type Description IEnumerator Implements IStateManager System.Collections.Generic.ICollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable System.IDisposable See Also IStateManager " + }, + "common/Microsoft.Graph.Communications.Common.MetricUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.MetricUtils.html", + "title": "Class MetricUtils", + "keywords": "Class MetricUtils The metric utils class Inheritance Object MetricUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class MetricUtils Methods MeasureDurationAsync(Func, Action) Mesure the duration of task. Declaration public static Task MeasureDurationAsync(Func task, Action setMetricTask) Parameters Type Name Description Func < Task > task The task to measure Action < Int64 > setMetricTask The task to set metric Returns Type Description Task The task for wait" }, - "client/Microsoft.Graph.Communications.Client.Authentication.RequestValidationResult.html": { - "href": "client/Microsoft.Graph.Communications.Client.Authentication.RequestValidationResult.html", - "title": "Struct RequestValidationResult", - "keywords": "Struct RequestValidationResult The result of the request validation. Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() ValueType.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Graph.Communications.Client.Authentication Assembly : Microsoft.Graph.Communications.Client.dll Syntax public struct RequestValidationResult Fields IsValid Indicates whether the request is valid. Declaration public bool IsValid Field Value Type Description Boolean TenantId The tenant id for the incoming request. Declaration public string TenantId Field Value Type Description String" + "common/Microsoft.Graph.Communications.Common.MathUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.MathUtils.html", + "title": "Class MathUtils", + "keywords": "Class MathUtils Various math utilities Inheritance Object MathUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class MathUtils Methods CeilingRound(Int32, Int32) Gets the ceiling value after rounding. Declaration public static int CeilingRound(this int n, int round) Parameters Type Name Description Int32 n Value to round up. Int32 round Rounding increment. Returns Type Description Int32 Ceiling value." }, - "client/Microsoft.Graph.Communications.Client.Authentication.IRequestAuthenticationProvider.html": { - "href": "client/Microsoft.Graph.Communications.Client.Authentication.IRequestAuthenticationProvider.html", - "title": "Interface IRequestAuthenticationProvider", - "keywords": "Interface IRequestAuthenticationProvider The authentication provider interface. This is used to authenticate Inbound requests from Microsoft Graph. It validates the request was issued by Microsoft Graph. Outbound requests to Microsoft Graph. Tenant token is acquired to provide Microsoft Graph the permissions the bot has been consented by the tenant admin Namespace : Microsoft.Graph.Communications.Client.Authentication Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IRequestAuthenticationProvider Methods AuthenticateOutboundRequestAsync(HttpRequestMessage, String) Authenticates the specified request message. This method will be called any time there is an outbound request. This method should add any required headers for authentication (eg: Authorization). Declaration Task AuthenticateOutboundRequestAsync(HttpRequestMessage request, string tenant) Parameters Type Name Description HttpRequestMessage request The outbound http request object. String tenant The tenant for which this request belongs to. Returns Type Description Task The Task . SDK awaits on this task to make sure the bot has included the required headers. ValidateInboundRequestAsync(HttpRequestMessage) Validates the inbound request. This method will be called any time we have an incoming request. Returning IsValid false will result in a Forbidden response being created. SDK waits until a successful validation is returned along with tenant data in RequestValidationResult to fire any events. Declaration Task ValidateInboundRequestAsync(HttpRequestMessage request) Parameters Type Name Description HttpRequestMessage request The incoming request. Returns Type Description Task < RequestValidationResult > The RequestValidationResult structure." + "client/Microsoft.Graph.Communications.Resources.IResourceCollection.html": { + "href": "client/Microsoft.Graph.Communications.Resources.IResourceCollection.html", + "title": "Interface IResourceCollection", + "keywords": "Interface IResourceCollection The resource collection interface. Inherited Members IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResourceCollection : IResourceBase, IDisposable Methods TerminateAsync(TimeSpan) Performs collection specific terminate tasks. Declaration Task TerminateAsync(TimeSpan timeout = default(TimeSpan)) Parameters Type Name Description TimeSpan timeout The timeout. Returns Type Description Task < Boolean > True if all instances terminated successfully, false otherwise. See Also IResourceBase" }, - "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaSession.MediaProperties.html": { - "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaSession.MediaProperties.html", - "title": "Class MediaSession.MediaProperties", - "keywords": "Class MediaSession.MediaProperties Gets the media properties. Inheritance Object MediaSession.MediaProperties Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public class MediaProperties Constructors MediaProperties() Declaration public MediaProperties() Properties MediaSessionId Gets or sets the media session identifier. Declaration public Guid MediaSessionId { get; set; } Property Value Type Description Guid" + "client/Microsoft.Graph.Communications.Resources.IResourceCollection-3.html": { + "href": "client/Microsoft.Graph.Communications.Resources.IResourceCollection-3.html", + "title": "Interface IResourceCollection", + "keywords": "Interface IResourceCollection The resource collection interface. Inherited Members IResourceCollection.TryForceRemove(String, TResource) IResourceCollection.Item[String] IResourceCollection.TerminateAsync(TimeSpan) IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResourceCollection : IResourceCollection, IResourceCollection, IResourceBase, IDisposable, IReadOnlyCollection, IEnumerable, IEnumerable where TSelf : IResourceCollection where TResource : IResource where TEntity : Entity Type Parameters Name Description TSelf The self type of the collection. TResource The containing resource type. IResource TEntity The containing resource type. Entity Events OnUpdated Event triggered whenever a resource is updated from the collection. Declaration event CollectionEventHandler OnUpdated Event Type Type Description CollectionEventHandler See Also IResourceCollection " }, - "core/Microsoft.Graph.ContractsConstants.html": { - "href": "core/Microsoft.Graph.ContractsConstants.html", - "title": "Class ContractsConstants", - "keywords": "Class ContractsConstants OData Model Constants Inheritance Object ContractsConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class ContractsConstants" + "client/Microsoft.Graph.Communications.Client.PagedList-1.html": { + "href": "client/Microsoft.Graph.Communications.Client.PagedList-1.html", + "title": "Class PagedList", + "keywords": "Class PagedList An object that contains paginated list of the generic type T. Inheritance Object PagedList Implements IPagedList IReadOnlyList IReadOnlyCollection IEnumerable IEnumerable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class PagedList : IPagedList, IReadOnlyList, IReadOnlyCollection, IEnumerable, IEnumerable Type Parameters Name Description T The type of Paged List. Constructors PagedList() Declaration public PagedList() Properties AdditionalData Gets or sets the additional data. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > Count Declaration public int Count { get; } Property Value Type Description Int32 Item[Int32] Declaration public T this[int index] { get; } Parameters Type Name Description Int32 index Property Value Type Description T NextLinkUrl Gets the next link URL taken from @odata.nextLink. Declaration public Uri NextLinkUrl { get; } Property Value Type Description Uri Value Gets or sets the value in the current page of the list. Declaration public IList Value { get; set; } Property Value Type Description IList Methods GetEnumerator() Declaration public IEnumerator GetEnumerator() Returns Type Description IEnumerator Explicit Interface Implementations IEnumerable.GetEnumerator() Declaration IEnumerator IEnumerable.GetEnumerator() Returns Type Description IEnumerator Implements IPagedList System.Collections.Generic.IReadOnlyList System.Collections.Generic.IReadOnlyCollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable" }, - "core/Microsoft.Graph.ContractsConstants.Signature.html": { - "href": "core/Microsoft.Graph.ContractsConstants.Signature.html", - "title": "Class ContractsConstants.Signature", - "keywords": "Class ContractsConstants.Signature Signature for Assembly visibility. Inheritance Object ContractsConstants.Signature Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Signature Fields VisibleToCastle Visible to property added to InternalsVisibleTo Castle signed builds. Declaration public const string VisibleToCastle = \", PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7\" Field Value Type Description String VisibleToMicrosoft Visible to property added to InternalsVisibleTo Microsoft signed builds. Declaration public const string VisibleToMicrosoft = \", PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9\" Field Value Type Description String" + "client/Microsoft.Graph.Communications.Client.Notifications.html": { + "href": "client/Microsoft.Graph.Communications.Client.Notifications.html", + "title": "Namespace Microsoft.Graph.Communications.Client.Notifications", + "keywords": "Namespace Microsoft.Graph.Communications.Client.Notifications Classes FixedSizeQueue A class that implements a fixed size list." }, - "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.Codes.html": { - "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.Codes.html", - "title": "Class ErrorConstants.Codes", - "keywords": "Class ErrorConstants.Codes Error Codes Inheritance Object ErrorConstants.Codes Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Codes Fields BridgeGone Error code indicating the bridge is gone/deleted from the server. Declaration public const string BridgeGone = \"BridgeGone\" Field Value Type Description String ChatGone Error code indicating the chat is gone/deleted from the server. Declaration public const string ChatGone = \"ChatGone\" Field Value Type Description String ClientCallbackError The client callback error code. Declaration public const string ClientCallbackError = \"clientCallbackError\" Field Value Type Description String ClientContextMissing The client context missing error code. Declaration public const string ClientContextMissing = \"clientContextIsMissing\" Field Value Type Description String GeneralException The general exception error code. Declaration public const string GeneralException = \"generalException\" Field Value Type Description String InvalidRequest The invalid request error code. Declaration public const string InvalidRequest = \"invalidRequest\" Field Value Type Description String ItemNotFound The item not found error code. Declaration public const string ItemNotFound = \"itemNotFound\" Field Value Type Description String MismatchedCompletedOperation The mismatched completed operation error code. Declaration public const string MismatchedCompletedOperation = \"mismatchedCompletedOperation\" Field Value Type Description String NotAllowed The not allowed error code. Declaration public const string NotAllowed = \"notAllowed\" Field Value Type Description String OperationFailed The operation failed error code. Declaration public const string OperationFailed = \"operationFailed\" Field Value Type Description String RehydrationFailedWithEmptyResource The re-hydration failed with empty resource error code. Declaration public const string RehydrationFailedWithEmptyResource = \"rehydrationFailedWithEmptyResource\" Field Value Type Description String RehydrationFailedWithNotFound The re-hydration failed with not found error code. Declaration public const string RehydrationFailedWithNotFound = \"rehydrationFailedWithNotFound\" Field Value Type Description String Timeout The timeout error code. Declaration public const string Timeout = \"timeout\" Field Value Type Description String TooManyRedirects The too many redirects error code. Declaration public const string TooManyRedirects = \"tooManyRedirects\" Field Value Type Description String" + "client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClientFactory.html": { + "href": "client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClientFactory.html", + "title": "Class GraphAuthClientFactory", + "keywords": "Class GraphAuthClientFactory The HTTP graph client factory. Inheritance Object GraphAuthClientFactory Implements IGraphClientFactory Namespace : Microsoft.Graph.Communications.Client.Transport Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class GraphAuthClientFactory : ObjectRoot, IGraphClientFactory Constructors GraphAuthClientFactory(IGraphLogger, JsonSerializerSettings, IRequestAuthenticationProvider, ProductInfoHeaderValue, IEnumerable, HttpClient) Initializes a new instance of the GraphAuthClientFactory class. Declaration public GraphAuthClientFactory(IGraphLogger logger, JsonSerializerSettings jsonSerializerSettings, IRequestAuthenticationProvider authenticationProvider, ProductInfoHeaderValue userAgent, IEnumerable defaultProperties, HttpClient httpClient = null) Parameters Type Name Description IGraphLogger logger Logger instance. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. IRequestAuthenticationProvider authenticationProvider The authentication provider. ProductInfoHeaderValue userAgent The user agent. IEnumerable < IGraphProperty > defaultProperties The default properties. HttpClient httpClient The HTTP client. Properties AuthenticationProvider Gets the authentication provider. Declaration public IRequestAuthenticationProvider AuthenticationProvider { get; } Property Value Type Description IRequestAuthenticationProvider The authentication provider. GraphLogger Gets the graph logger. Declaration public IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Methods Create(IGraphLogger) Creates a new IGraphClient . Declaration public IGraphClient Create(IGraphLogger logger = null) Parameters Type Name Description IGraphLogger logger An optional IGraphLogger logger to be used in the new IGraphClient . Returns Type Description IGraphClient The IGraphClient . Implements IGraphClientFactory See Also ObjectRoot IGraphClientFactory" }, - "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.html": { - "href": "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.html", - "title": "Class CommsGeneratedErrorConstants", - "keywords": "Class CommsGeneratedErrorConstants The generated error constants. Inheritance Object CommsGeneratedErrorConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class CommsGeneratedErrorConstants" + "common/Microsoft.Graph.Communications.Common.Telemetry.AadApplicationIdentity.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.AadApplicationIdentity.html", + "title": "Class AadApplicationIdentity", + "keywords": "Class AadApplicationIdentity The application identity in Azure AD. Inheritance Object AadApplicationIdentity Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class AadApplicationIdentity Remarks For better logging experience, all property names should be specific enough. Avoid using generic name such as Id, Name, etc. Constructors AadApplicationIdentity() Declaration public AadApplicationIdentity() Properties AppId Gets or sets the id of application. Declaration public string AppId { get; set; } Property Value Type Description String AppName Gets or sets the name of application. Declaration public string AppName { get; set; } Property Value Type Description String Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.Messages.html": { - "href": "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.Messages.html", - "title": "Class CommsGeneratedErrorConstants.Messages", - "keywords": "Class CommsGeneratedErrorConstants.Messages The messages. Inheritance Object CommsGeneratedErrorConstants.Messages Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Messages Fields ResponseObjectUsedForUpdate Response object used for update error message. Declaration public const string ResponseObjectUsedForUpdate = \"Do not use objects returned in a response for updating an object in Microsoft Graph. Create a new {0} object and only set the updated properties on it.\" Field Value Type Description String" + "common/Microsoft.Graph.Communications.Common.TaskQueue.html": { + "href": "common/Microsoft.Graph.Communications.Common.TaskQueue.html", + "title": "Class TaskQueue", + "keywords": "Class TaskQueue Task queue to encapsulate chaining of tasks. Inheritance Object Disposable ObjectRootDisposable TaskQueue Implements IDisposable Inherited Members ObjectRootDisposable.GraphLogger Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class TaskQueue : ObjectRootDisposable, IDisposable Constructors TaskQueue(IGraphLogger, Task) Initializes a new instance of the TaskQueue class. Declaration public TaskQueue(IGraphLogger logger, Task antecedent = null) Parameters Type Name Description IGraphLogger logger Logger instance. Task antecedent Optional antecedent task. Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) EnqueueAsync(Func) Enqueue an operation Declaration public Task EnqueueAsync(Func operation) Parameters Type Name Description Func < Task , Task > operation Operation to queue. Returns Type Description Task A task that represents the queued operation. Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.html": { + "href": "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.html", + "title": "Class LogProperties", + "keywords": "Class LogProperties The log properties. Inheritance Object LogProperties Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Client.dll Syntax public static class LogProperties Remarks For better logging experience, all property names should be specific enough. Avoid using generic name such as Id, Name, etc." }, "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationTag.html": { "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationTag.html", "title": "Enum ObfuscationTag", "keywords": "Enum ObfuscationTag Tag used to provide a hint for the type of obfuscation to perform. Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum ObfuscationTag Fields Name Description Fqdn FQDN that needs to be obfuscated. An example would be \"lyncfrontend.lync.com\" Generic A generic blob containing sensitive data that must be obfuscated completely. Guid A guid type that has to be obfuscated. Identity The subject of some information whose data needs to be obfuscated. An example would be \"The user {coolgal} is attempting to to perform some action\". MRIs are also considered identities. IpAddress IP address that needs to be obfuscated. An example would be \"187.23.33.1\" Pstn PSTN related information. An example would be a telephone number like \"+10005559999\". Uri Uri that needs to be obfuscated. This can have any scheme like http, https, etc. An example would be \" https://cheatdays.com/fitguy" ; This could be either absolute or relative uri. Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(ObfuscationTag, String, String) Validator.Equals(ObfuscationTag, String) Validator.NotEquals(ObfuscationTag, String, String)" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationSerializer.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationSerializer.html", - "title": "Class ObfuscationSerializer", - "keywords": "Class ObfuscationSerializer The obfuscation serializer can be used to serialize and de-serialize an obfuscation schema, as well as generate a schema from specified assemblies. Inheritance Object ObfuscationSerializer Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ObfuscationSerializer Constructors ObfuscationSerializer() Declaration public ObfuscationSerializer() Properties Members Gets or sets the members belonging to the class. Declaration public ObfuscationMember[] Members { get; set; } Property Value Type Description ObfuscationMember [] Methods ExtractFromAssemblies(Assembly[]) Extracts the obfuscation members from the specified assemblies. Declaration public ObfuscationMember[] ExtractFromAssemblies(params Assembly[] assemblies) Parameters Type Name Description Assembly [] assemblies The assemblies. Returns Type Description ObfuscationMember [] The list of ObfuscationMember stucts extracted from the specified assemblies. GenerateSchema(ObfuscationMember[]) Generates the schema from the specified obfuscation members. Declaration public string GenerateSchema(params ObfuscationMember[] members) Parameters Type Name Description ObfuscationMember [] members The obfuscation classes. Returns Type Description String The schema associated with the specified classes. LoadFromSchema(String) Loads the obfuscations classes from the specified schema. Declaration public ObfuscationMember[] LoadFromSchema(string schema) Parameters Type Name Description String schema The schema. Returns Type Description ObfuscationMember [] The loaded obfuscation classes. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "calls/Microsoft.Graph.Communications.Calls.CommunicationsClientExtensions.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.CommunicationsClientExtensions.html", + "title": "Class CommunicationsClientExtensions", + "keywords": "Class CommunicationsClientExtensions Extensions for stateful client. Inheritance Object CommunicationsClientExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public static class CommunicationsClientExtensions Methods Calls(ICommunicationsClient, Boolean) Gets the call collection. This is the main entry point for the calling SDK. The return value of this function can be cached by the clients as required. Declaration public static ICallCollection Calls(this ICommunicationsClient client, bool maintainState = true) Parameters Type Name Description ICommunicationsClient client The stateful client. Boolean maintainState If set to true the resulting IResourceCollection will hold all IResource instances it creates unless explicitly deleted (either by the service or by the developer). If set to false no IResource generated by the IResourceCollection or its children will be stored by the ICommunicationsClient , instead it is the developers responsibility to control the lifetime of the generated instances. Returns Type Description ICallCollection The root singleton ICallCollection node. Multiple invocations of this method will return the same ICallCollection ." }, - "common/Microsoft.Graph.Communications.Common.HighResolutionDateTime.html": { - "href": "common/Microsoft.Graph.Communications.Common.HighResolutionDateTime.html", - "title": "Class HighResolutionDateTime", - "keywords": "Class HighResolutionDateTime High resolution datetime Inheritance Object HighResolutionDateTime Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HighResolutionDateTime Properties IsAvailable Gets a value indicating whether high resolution datetime is available Declaration public static bool IsAvailable { get; } Property Value Type Description Boolean UtcNow Gets UTC now Declaration public static DateTime UtcNow { get; } Property Value Type Description DateTime" + "bot_media/Microsoft.Skype.Bots.Media.AudioSendStatusChangedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioSendStatusChangedEventArgs.html", + "title": "Class AudioSendStatusChangedEventArgs", + "keywords": "Class AudioSendStatusChangedEventArgs Event arguments of an AudioSendStatusChanged event. Inheritance Object EventArgs AudioSendStatusChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioSendStatusChangedEventArgs : EventArgs Constructors AudioSendStatusChangedEventArgs() Declaration public AudioSendStatusChangedEventArgs() Properties MediaSendStatus Status if socket is ready to send media. Declaration public MediaSendStatus MediaSendStatus { get; set; } Property Value Type Description MediaSendStatus" }, - "common/Microsoft.Graph.Communications.Common.GuidUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.GuidUtils.html", - "title": "Class GuidUtils", - "keywords": "Class GuidUtils Guid Utils Inheritance Object GuidUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class GuidUtils Methods EnsureNotEmpty(Guid) Ensures Guid is not empty by generating a random guid if it is empty Declaration public static Guid EnsureNotEmpty(this Guid guid) Parameters Type Name Description Guid guid input guid Returns Type Description Guid A guaranteed guid that is not empty EnsureNotEmpty(Nullable) Ensures Guid is not empty by generating a random guid if it is empty Declaration public static Guid EnsureNotEmpty(this Guid? guid) Parameters Type Name Description Nullable < Guid > guid input guid Returns Type Description Guid A guaranteed guid that is not empty ParseOrNew(String) Parse and return the guid if valid else return new guid Declaration public static Guid ParseOrNew(string input) Parameters Type Name Description String input input Returns Type Description Guid Guid of input or new guid" + "core/Microsoft.Graph.Communications.Core.Exceptions.ServiceException.html": { + "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ServiceException.html", + "title": "Class ServiceException", + "keywords": "Class ServiceException A Service Exception. Inheritance Object ServiceException Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax [Obsolete(\"Deprecated, please use Microsoft.Graph.ServiceException instead.\")] public class ServiceException : ServiceException Constructors ServiceException(Error, Exception) Initializes a new instance of the ServiceException class. Declaration [Obsolete(\"Deprecated, please use Microsoft.Graph.ServiceException instead.\")] public ServiceException(Error error = null, Exception innerException = null) Parameters Type Name Description Error error The error. Exception innerException The inner exception. ServiceException(Error, HttpResponseHeaders, HttpStatusCode, Exception) Initializes a new instance of the ServiceException class. Declaration [Obsolete(\"Deprecated, please use Microsoft.Graph.ServiceException instead.\")] public ServiceException(Error error, HttpResponseHeaders responseHeaders, HttpStatusCode statusCode, Exception innerException = null) Parameters Type Name Description Error error The error. HttpResponseHeaders responseHeaders The response headers. HttpStatusCode statusCode The status code. Exception innerException The inner exception. See Also ServiceException" }, - "core/Microsoft.Graph.IdentitySetExtensions.html": { - "href": "core/Microsoft.Graph.IdentitySetExtensions.html", - "title": "Class IdentitySetExtensions", - "keywords": "Class IdentitySetExtensions Extentions for graph api contracts Inheritance Object IdentitySetExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class IdentitySetExtensions Fields DodAppParticipantPrefix The application participant prefix for dod cloud Declaration public const string DodAppParticipantPrefix = \"28:dod-global:\" Field Value Type Description String DodDirectoryAppParticipantPrefix The directory application participant prefix for dod cloud Declaration public const string DodDirectoryAppParticipantPrefix = \"28:dod:\" Field Value Type Description String DodDirectoryParticipantPrefix The directory participant prefix for DoD cloud Declaration public const string DodDirectoryParticipantPrefix = \"8:dod:\" Field Value Type Description String DodOnPremisesParticipantPrefix The external prefix for DoD cloud Declaration public const string DodOnPremisesParticipantPrefix = \"8:dod-sfb:\" Field Value Type Description String EncryptedParticipantPrefix The encrypted participant prefix Declaration public const string EncryptedParticipantPrefix = \"29:\" Field Value Type Description String GcchAppParticipantPrefix The application participant prefix for gcch cloud Declaration public const string GcchAppParticipantPrefix = \"28:gcch-global:\" Field Value Type Description String GcchDirectoryAppParticipantPrefix The directory application participant prefix for gcch cloud Declaration public const string GcchDirectoryAppParticipantPrefix = \"28:gcch:\" Field Value Type Description String GcchDirectoryParticipantPrefix The directory participant prefix for GCCH cloud Declaration public const string GcchDirectoryParticipantPrefix = \"8:gcch:\" Field Value Type Description String GcchOnPremisesParticipantPrefix The external prefix for GCCH cloud Declaration public const string GcchOnPremisesParticipantPrefix = \"8:gcch-sfb:\" Field Value Type Description String PhoneParticipantPrefix The phone participant prefix Declaration public const string PhoneParticipantPrefix = \"4:\" Field Value Type Description String PublicAppParticipantPrefix The application participant prefix Declaration public const string PublicAppParticipantPrefix = \"28:\" Field Value Type Description String PublicDirectoryAppParticipantPrefix The directory application participant prefix for public cloud Declaration public const string PublicDirectoryAppParticipantPrefix = \"28:orgid:\" Field Value Type Description String PublicDirectoryParticipantPrefix The directory participant prefix for public cloud Declaration public const string PublicDirectoryParticipantPrefix = \"8:orgid:\" Field Value Type Description String PublicOnPremisesParticipantPrefix The external prefix for public cloud Declaration public const string PublicOnPremisesParticipantPrefix = \"8:sfb:\" Field Value Type Description String SkypeParticipantPrefix The skype participant prefix Declaration public const string SkypeParticipantPrefix = \"8:\" Field Value Type Description String TeamsVisitorParticipantPrefix The teams visitor participant prefix For anonymous users we need to support 8:teamsvisitor:objectId Declaration public const string TeamsVisitorParticipantPrefix = \"8:teamsvisitor:\" Field Value Type Description String Methods CreateIdentitySetByMri(String, String, String) Creates participant from MRI if possible. For chat service thread mris we return null Declaration public static IdentitySet CreateIdentitySetByMri(string mri, string tenantId, string displayName) Parameters Type Name Description String mri Participant MRI String tenantId The tenant identifier. String displayName The display name. Returns Type Description IdentitySet Created identity set Exceptions Type Condition ArgumentOutOfRangeException mri GetAppParticipantPrefix(CloudNamespace) Gets app participant prefix for the provided CloudNamespace . Declaration public static string GetAppParticipantPrefix(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace The cloud where the app participant belongs Returns Type Description String Prefix to be used to construct the MRI GetDirectoryAppParticipantEnv(CloudNamespace) Returns the env differentiator part of the app participant prefix corresponding to cloudNamespace . This differentiator doesn't have participant prefix (8:, 4:, 28: or 29:) in it. Declaration public static string GetDirectoryAppParticipantEnv(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace Cloud environment where the identity set belongs Returns Type Description String Env differentiator part of the app participant prefix corresponding to cloudNamespace GetDirectoryAppParticipantPrefix(CloudNamespace) Gets directory app participant prefix for the provided CloudNamespace . Declaration public static string GetDirectoryAppParticipantPrefix(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace The cloud where the directory app participant belongs Returns Type Description String Prefix to be used to construct the MRI GetDirectoryParticipantPrefix(CloudNamespace) Gets a user prefix for the provided CloudNamespace . Declaration public static string GetDirectoryParticipantPrefix(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace The cloud where the user belongs Returns Type Description String Prefix to be used to construct the MRI GetEnumerator(IdentitySet) Enumerates through all the Identity objects found in this IdentitySet Declaration public static IEnumerable> GetEnumerator(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description IEnumerable < KeyValuePair < String , Identity >> The IEnumerable{KeyValuePair{string, Identity}} for the specified IdentitySet . GetMri(IdentitySet, CloudNamespace) Gets participant MRI The priority order is: User, Guest, Encrypted, Application Instance, Application, Phone Declaration public static string GetMri(this IdentitySet identitySet, CloudNamespace cloudNamespace) Parameters Type Name Description IdentitySet identitySet Participant identity set CloudNamespace cloudNamespace Cloud environment where the identity set belongs Returns Type Description String Participant MRI GetObjectIdForAppParticipant(String) Get the object id for an app Declaration public static string GetObjectIdForAppParticipant(string mri) Parameters Type Name Description String mri participant mri Returns Type Description String The object id of the participant> GetObjectIdForDirectoryAppParticipant(String) Get the object id for a directory app participant Declaration public static string GetObjectIdForDirectoryAppParticipant(string mri) Parameters Type Name Description String mri participant mri Returns Type Description String The object id of the participant> GetObjectIdForDirectoryParticipant(String) /Get the object id for a directory participant Declaration public static string GetObjectIdForDirectoryParticipant(string mri) Parameters Type Name Description String mri participant mri Returns Type Description String The object id of the participant> GetObjectIdForOnPremisesParticipant(String) /Get the object id for an external participant Declaration public static string GetObjectIdForOnPremisesParticipant(string mri) Parameters Type Name Description String mri participant mri Returns Type Description String The object id of the participant> GetOnPremisesParticipantPrefix(CloudNamespace) Gets an external prefix for the provided CloudNamespace . Declaration public static string GetOnPremisesParticipantPrefix(CloudNamespace cloudNamespace) Parameters Type Name Description CloudNamespace cloudNamespace The cloud where the user belongs Returns Type Description String Prefix to be used to construct the MRI GetPrimaryIdentity(IdentitySet) Gets the primary identity from the specified IdentitySet . The priority order is: User, Guest, Phone, Encrypted, OnPremises, Application Instance, Application Declaration public static Identity GetPrimaryIdentity(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Primary Identity IsConsumer(IdentitySet) Indicates whether this identity set is a consumer identity. Declaration public static bool IsConsumer(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Boolean true if the identity is a consumer identity, false otherwise. MriHasAppParticipantPrefix(String) Returns whether a MRI is a directory participant prefix or not. Declaration public static bool MriHasAppParticipantPrefix(string mri) Parameters Type Name Description String mri Participant MRI Returns Type Description Boolean true if mri is a valid directory participant prefix MriHasDirectoryAppParticipantPrefix(String) Returns whether a MRI is a directory participant prefix or not. Declaration public static bool MriHasDirectoryAppParticipantPrefix(string mri) Parameters Type Name Description String mri Participant MRI Returns Type Description Boolean true if mri is a valid directory participant prefix MriHasDirectoryParticipantPrefix(String) Returns whether a MRI is a directory participant prefix or not. Declaration public static bool MriHasDirectoryParticipantPrefix(string mri) Parameters Type Name Description String mri Participant MRI Returns Type Description Boolean true if mri is a valid directory participant prefix MriHasOnPremisesParticipantPrefix(String) Returns whether a MRI is an external participant prefix or not. Declaration public static bool MriHasOnPremisesParticipantPrefix(string mri) Parameters Type Name Description String mri Participant MRI Returns Type Description Boolean true if mri is a valid external participant prefix" + "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.html": { + "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.html", + "title": "Class ErrorConstants", + "keywords": "Class ErrorConstants Error Constants Inheritance Object ErrorConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class ErrorConstants" }, - "calls/Microsoft.Graph.Communications.Calls.ParticipantExtensions.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.ParticipantExtensions.html", - "title": "Class ParticipantExtensions", - "keywords": "Class ParticipantExtensions Extensions for the stateful participant resource. Inheritance Object ParticipantExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public static class ParticipantExtensions Methods InviteAsync(IParticipantCollection, IdentitySet, String, CancellationToken) Invite a participant into the existing call. Declaration public static Task InviteAsync(this IParticipantCollection participantCollection, IdentitySet identitySet, string replacesCallId = null, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description IParticipantCollection participantCollection The participant collection into which a new participant is being invited. IdentitySet identitySet The identity set of the invited participant. String replacesCallId The replaces call identifier. This is an optional field used for consultative transfer. This is used to bring a participant from an existing call. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the participant has joined. Any updates on the participant collection will be delivered via notification and can be observed using IParticipantCollection.OnUpdated Exceptions Type Condition ArgumentNullException If IdentitySet is null." + "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.Messages.html": { + "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.Messages.html", + "title": "Class ErrorConstants.Messages", + "keywords": "Class ErrorConstants.Messages Error Messages Inheritance Object ErrorConstants.Messages Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Messages Fields AuthenticationProviderMissing The authentication provider missing Declaration public const string AuthenticationProviderMissing = \"Authentication provider is required before sending a request.\" Field Value Type Description String BaseUrlMissing The base URL missing Declaration public const string BaseUrlMissing = \"Base URL cannot be null or empty.\" Field Value Type Description String ClientErrorAuthenticatingRequest The client error processing notifications Declaration public const string ClientErrorAuthenticatingRequest = \"Unexpected exception happened on client when authenticating request.\" Field Value Type Description String ClientErrorProcessingNotifications The client error processing notifications Declaration public const string ClientErrorProcessingNotifications = \"Unexpected exception happened on client when processing notification.\" Field Value Type Description String InvalidTypeForDateConverter The invalid type for date converter Declaration public const string InvalidTypeForDateConverter = \"DateConverter can only serialize objects of type Date.\" Field Value Type Description String LocationHeaderNotSetOnRedirect The location header not set on redirect Declaration public const string LocationHeaderNotSetOnRedirect = \"Location header not present in redirection response.\" Field Value Type Description String MessageContentIsEmpty The message content is empty Declaration public const string MessageContentIsEmpty = \"Unexpected empty message content.\" Field Value Type Description String NotificationChangeTypeIsEmpty The notification change type is empty Declaration public const string NotificationChangeTypeIsEmpty = \"No change type specified for the incoming notification.\" Field Value Type Description String NotificationResourceDataIsEmpty The notification resource data is empty Declaration public const string NotificationResourceDataIsEmpty = \"No resource data specified for the incoming notification.\" Field Value Type Description String NotificationResourceNotRecognized The notification resource is not recognized Declaration public const string NotificationResourceNotRecognized = \"Resource in notification is not recognized.\" Field Value Type Description String NotificationResourcePathIsEmpty The notification resource path is empty Declaration public const string NotificationResourcePathIsEmpty = \"No resource path specified for the incoming notification.\" Field Value Type Description String NotificationsAreEmpty The notifications are empty Declaration public const string NotificationsAreEmpty = \"Notifications received from server are empty.\" Field Value Type Description String NotificationUriNotSet The notification URI not set Declaration public const string NotificationUriNotSet = \"Notification URI is not set for the resource.\" Field Value Type Description String OverallTimeoutCannotBeSet The overall timeout cannot be set Declaration public const string OverallTimeoutCannotBeSet = \"Overall timeout cannot be set after the first request is sent.\" Field Value Type Description String RehydrationFailedNotFound The re-hydration failed not found Declaration public const string RehydrationFailedNotFound = \"Rehydration is performed on a resource that doesn't exist.\" Field Value Type Description String RehydrationFailedWithEmptyResource The re-hydration failed with empty resource Declaration public const string RehydrationFailedWithEmptyResource = \"Rehydration failed since service returned an empty resource.\" Field Value Type Description String RequestTimedOut The request timed out Declaration public const string RequestTimedOut = \"The request timed out.\" Field Value Type Description String RequestUrlMissing The request URL missing Declaration public const string RequestUrlMissing = \"Request URL is required to send a request.\" Field Value Type Description String TooManyRedirectsFormatString The too many redirects format string Declaration public const string TooManyRedirectsFormatString = \"More than {0} redirects encountered while sending the request.\" Field Value Type Description String UnableToCreateInstanceOfTypeFormatString The unable to create instance of type format string Declaration public const string UnableToCreateInstanceOfTypeFormatString = \"Unable to create an instance of type {0}.\" Field Value Type Description String UnableToDeserializeNotification The unable to deserialize notification Declaration public const string UnableToDeserializeNotification = \"Unable to deserialize the notification.\" Field Value Type Description String UnexpectedExceptionOnSend The unexpected exception on send Declaration public const string UnexpectedExceptionOnSend = \"An error occurred sending the request.\" Field Value Type Description String UnexpectedExceptionResponse The unexpected exception response Declaration public const string UnexpectedExceptionResponse = \"Unexpected exception returned from the service.\" Field Value Type Description String" }, - "calls/Microsoft.Graph.Communications.Calls.JoinMeetingParameters.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.JoinMeetingParameters.html", - "title": "Class JoinMeetingParameters", - "keywords": "Class JoinMeetingParameters Class to define parameters required for joining a meeting. Inheritance Object JoinMeetingParameters Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public class JoinMeetingParameters Constructors JoinMeetingParameters(ChatInfo, MeetingInfo, IMediaSession) Initializes a new instance of the JoinMeetingParameters class. Use this constructor for app hosted media. Declaration public JoinMeetingParameters(ChatInfo chatInfo, MeetingInfo meetingInfo, IMediaSession mediaSession) Parameters Type Name Description ChatInfo chatInfo The chat information. MeetingInfo meetingInfo The meeting information. IMediaSession mediaSession The media session. JoinMeetingParameters(ChatInfo, MeetingInfo, IEnumerable, IEnumerable) Initializes a new instance of the JoinMeetingParameters class. Use this constructor for service hosted media. Declaration public JoinMeetingParameters(ChatInfo chatInfo, MeetingInfo meetingInfo, IEnumerable requestedModalities, IEnumerable prefetchPrompts = null) Parameters Type Name Description ChatInfo chatInfo The chat information. MeetingInfo meetingInfo The meeting information. IEnumerable < Modality > requestedModalities The list of modalities for the call IEnumerable < MediaInfo > prefetchPrompts The list of media files to prefetch Properties AdditionalData Gets or sets the additional data. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > AllowGuestToBypassLobby Gets or sets a value indicating whether to bypass lobby when joining a group call as guest. Declaration public bool? AllowGuestToBypassLobby { get; set; } Property Value Type Description Nullable < Boolean > ChatInfo Gets the chat information. Declaration public ChatInfo ChatInfo { get; } Property Value Type Description ChatInfo CorrelationId Gets or sets the correlation identifier. Declaration [Obsolete(\"Please use AddAsync(JoinMeetingParameters parameters, Guid scenarioId).\")] public Guid CorrelationId { get; set; } Property Value Type Description Guid GuestIdentity Gets or sets the guest identity. Declaration public Identity GuestIdentity { get; set; } Property Value Type Description Identity MediaSession Gets the media session. Declaration public IMediaSession MediaSession { get; } Property Value Type Description IMediaSession MeetingInfo Gets the meeting information. Declaration public MeetingInfo MeetingInfo { get; } Property Value Type Description MeetingInfo PrefetchPrompts Gets the list of media files to prefetch. Declaration public IEnumerable PrefetchPrompts { get; } Property Value Type Description IEnumerable < MediaInfo > RequestedModalities Gets the list of modalities to join the call with. Declaration public IEnumerable RequestedModalities { get; } Property Value Type Description IEnumerable < Modality > Subject Gets or sets the subject. Declaration public string Subject { get; set; } Property Value Type Description String TenantId Gets or sets the tenant id Declaration public string TenantId { get; set; } Property Value Type Description String" + "bot_media/Microsoft.Skype.Bots.Media.ToneId.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.ToneId.html", + "title": "Enum ToneId", + "keywords": "Enum ToneId DTMF Tone Id enum. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum ToneId Fields Name Description A Tone A B Tone B C Tone C D Tone D Flash Tone flash Pound Pound tone Star Star tone Tone0 Tone 0 Tone1 Tone 1 Tone2 Tone 2 Tone3 Tone 3 Tone4 Tone 4 Tone5 Tone 5 Tone6 Tone 6 Tone7 Tone 7 Tone8 Tone 8 Tone9 Tone 9" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.html", - "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry.HttpLogging", - "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry.HttpLogging Classes HttpLogData The log data for http trace. HttpObfuscationHelpers Static class that provides helper functions for HTTP Logging." + "bot_media/Microsoft.Skype.Bots.Media.MediaQualityOfExperienceData.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaQualityOfExperienceData.html", + "title": "Class MediaQualityOfExperienceData", + "keywords": "Class MediaQualityOfExperienceData Media quality of experience (QoE) data Inheritance Object MediaQualityOfExperienceData AudioQualityOfExperienceData VideoQualityOfExperienceData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public abstract class MediaQualityOfExperienceData Constructors MediaQualityOfExperienceData() MediaQualityOfExperienceData constructor Declaration public MediaQualityOfExperienceData() Properties NetworkMetrics QoE network level metrics Declaration public NetworkMetrics NetworkMetrics { get; set; } Property Value Type Description NetworkMetrics TotalMediaDuration Total duration of the media stream Declaration public TimeSpan TotalMediaDuration { get; set; } Property Value Type Description TimeSpan" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.HttpObfuscationHelpers.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.HttpObfuscationHelpers.html", - "title": "Class HttpObfuscationHelpers", - "keywords": "Class HttpObfuscationHelpers Static class that provides helper functions for HTTP Logging. Inheritance Object HttpObfuscationHelpers Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpObfuscationHelpers Methods GetUrlText(Uri, Boolean, IEnumerable, IObfuscationEngine) Converts the URL to its representation depending on the filters. Declaration public static string GetUrlText(Uri url, bool obfuscationEnabled, IEnumerable uriFilters = null, IObfuscationEngine engine = null) Parameters Type Name Description Uri url The URL. Boolean obfuscationEnabled if set to true [filter pii]. IEnumerable < UriFilter > uriFilters The URI filters. IObfuscationEngine engine Custom obfuscation engine. If null, use (redacted) Returns Type Description String String representation LogHeaderText(ObfuscationConfiguration, IEnumerable>>) Logs the header text. Declaration public static IEnumerable LogHeaderText(this ObfuscationConfiguration configuration, IEnumerable>> headers) Parameters Type Name Description ObfuscationConfiguration configuration The configuration. IEnumerable < KeyValuePair < String , IEnumerable < String >>> headers The headers. Returns Type Description IEnumerable < String > The obfuscated header and value pairs. LogHeaderText(ObfuscationConfiguration, String, IEnumerable) Logs the header text. Declaration public static string LogHeaderText(this ObfuscationConfiguration configuration, string headerName, IEnumerable headerValues) Parameters Type Name Description ObfuscationConfiguration configuration The configuration. String headerName Name of the header. IEnumerable < String > headerValues The header values. Returns Type Description String The obfuscated header and value pair." + "bot_media/Microsoft.Skype.Bots.Media.IMediaPlatformLogger.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.IMediaPlatformLogger.html", + "title": "Interface IMediaPlatformLogger", + "keywords": "Interface IMediaPlatformLogger Interface for collecting MediaPlatform logs from the Bots.Media library. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IMediaPlatformLogger Methods WriteLog(LogLevel, String) Log a trace statement Declaration void WriteLog(LogLevel level, string logStatement) Parameters Type Name Description LogLevel level Level of log String logStatement The log itself." }, - "common/Microsoft.Graph.Communications.Common.Telemetry.ILogEventFormatter.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.ILogEventFormatter.html", - "title": "Interface ILogEventFormatter", - "keywords": "Interface ILogEventFormatter Interface to format log event. Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface ILogEventFormatter Methods Format(LogEvent) Format the log event. Declaration string Format(LogEvent logEvent) Parameters Type Name Description LogEvent logEvent The log event Returns Type Description String The formatted text. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.DataSocket.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.DataSocket.html", + "title": "Class DataSocket", + "keywords": "Class DataSocket Reserved for the internal use. Inheritance Object DataSocket Implements IDataSocket IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public sealed class DataSocket : IDataSocket, IDisposable, IInternalSocket Constructors DataSocket(DataSocketSettings) Reserverd for internal use. Declaration public DataSocket(DataSocketSettings settings) Parameters Type Name Description DataSocketSettings settings Methods Dispose() Reserved for the internal use. Declaration public void Dispose() Send(DataMediaBuffer, UInt32[]) Reserved for the internal use. Declaration public void Send(DataMediaBuffer buffer, uint[] recipientIds) Parameters Type Name Description DataMediaBuffer buffer UInt32 [] recipientIds Events DataMediaReceived Reserved for the internal use. Declaration public event EventHandler DataMediaReceived Event Type Type Description EventHandler < DataMediaReceivedEventArgs > DataSendStatusChanged Reserved for the internal use. Declaration public event EventHandler DataSendStatusChanged Event Type Type Description EventHandler < DataSendStatusChangedEventArgs > MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration public event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > Implements IDataSocket System.IDisposable" }, - "core/Microsoft.Graph.Communications.Core.CommsConstants.HttpPropertyNames.html": { - "href": "core/Microsoft.Graph.Communications.Core.CommsConstants.HttpPropertyNames.html", - "title": "Class CommsConstants.HttpPropertyNames", - "keywords": "Class CommsConstants.HttpPropertyNames Constants used for HTTP property names Inheritance Object CommsConstants.HttpPropertyNames Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class HttpPropertyNames Fields ResponseHeaders The Response Headers string Declaration public const string ResponseHeaders = \"responseHeaders\" Field Value Type Description String StatusCode The Status Code string Declaration public const string StatusCode = \"statusCode\" Field Value Type Description String" + "client/Microsoft.Graph.Communications.Client.GraphLoggerExtensions.html": { + "href": "client/Microsoft.Graph.Communications.Client.GraphLoggerExtensions.html", + "title": "Class GraphLoggerExtensions", + "keywords": "Class GraphLoggerExtensions The graph logger extensions for the communications client. Inheritance Object GraphLoggerExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public static class GraphLoggerExtensions Methods LogHttpRequest(IGraphLogger, HttpRequestMessage, HttpStatusCode, Object, Exception, String, String, Int32) Logs the request message. Declaration public static TraceLevel LogHttpRequest(this IGraphLogger logger, HttpRequestMessage request, HttpStatusCode statusCode, object requestContent = null, Exception exception = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. HttpRequestMessage request The request. HttpStatusCode statusCode The status code. Object requestContent The request content. Exception exception The exception. String memberName The member name. String filePath The file path. Int32 lineNumber The line number. Returns Type Description TraceLevel The trace level of the logged request message. LogHttpResponse(IGraphLogger, TraceLevel, HttpRequestMessage, HttpResponseMessage, Int64, Object, String, String, Int32) Logs the http response message. Declaration public static void LogHttpResponse(this IGraphLogger logger, TraceLevel level, HttpRequestMessage request, HttpResponseMessage response, long responseTime, object responseContent = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. TraceLevel level The log level. HttpRequestMessage request The request. HttpResponseMessage response The response. Int64 responseTime The response time in milliseconds. Object responseContent The response content. String memberName The member name. String filePath The file path. Int32 lineNumber The line number. ParseRequestId(IGraphLogger, HttpRequestMessage) Parses the request identifier. Declaration public static Guid ParseRequestId(this IGraphLogger logger, HttpRequestMessage request) Parameters Type Name Description IGraphLogger logger The logger. HttpRequestMessage request The request. Returns Type Description Guid The message id. ParseScenarioId(IGraphLogger, HttpRequestMessage) Parses the scenario identifier. Declaration public static Guid ParseScenarioId(this IGraphLogger logger, HttpRequestMessage request) Parameters Type Name Description IGraphLogger logger The logger. HttpRequestMessage request The request. Returns Type Description Guid The scenario id." }, - "common/Microsoft.Graph.Communications.Common.Telemetry.LogEvent.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LogEvent.html", - "title": "Class LogEvent", - "keywords": "Class LogEvent Log data Inheritance Object LogEvent Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class LogEvent Constructors LogEvent() Declaration public LogEvent() Properties CallerInfo Gets or sets the caller information Declaration public CallerInfo CallerInfo { get; set; } Property Value Type Description CallerInfo CallerInfoString Gets the caller information string. Declaration public string CallerInfoString { get; } Property Value Type Description String Component Gets or sets the component in which the log is created. Declaration public string Component { get; set; } Property Value Type Description String CorrelationId Gets or sets the correlation id Declaration public Guid CorrelationId { get; set; } Property Value Type Description Guid EventType Gets or sets the type of the event. Declaration public LogEventType EventType { get; set; } Property Value Type Description LogEventType Level Gets or sets the trace level of the event. Declaration public TraceLevel Level { get; set; } Property Value Type Description TraceLevel LogicalThreadId Gets or sets the logical thread identifier. Declaration public uint LogicalThreadId { get; set; } Property Value Type Description UInt32 ManagedThreadId Gets or sets the thread ID. Declaration public int ManagedThreadId { get; set; } Property Value Type Description Int32 Message Gets or sets the Description of the event. Declaration public string Message { get; set; } Property Value Type Description String ProcessId Gets or sets the process ID. Declaration public int ProcessId { get; set; } Property Value Type Description Int32 Properties Gets or sets the Custom properties for the event. Declaration public IReadOnlyDictionary Properties { get; set; } Property Value Type Description IReadOnlyDictionary < Type , Object > PropertiesString Gets the custom properties in string format. Declaration public string PropertiesString { get; } Property Value Type Description String RequestId Gets or sets the request identifier. Declaration public Guid RequestId { get; set; } Property Value Type Description Guid Timestamp Gets or sets the Timestamp of the event. Declaration public DateTime Timestamp { get; set; } Property Value Type Description DateTime Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) LoggingExtensions.GetTypedProperties(LogEvent, Type) LoggingExtensions.GetTypedProperty(LogEvent)" + "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaSession.MediaProperties.html": { + "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaSession.MediaProperties.html", + "title": "Class MediaSession.MediaProperties", + "keywords": "Class MediaSession.MediaProperties Gets the media properties. Inheritance Object MediaSession.MediaProperties Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public class MediaProperties Constructors MediaProperties() Declaration public MediaProperties() Properties MediaSessionId Gets or sets the media session identifier. Declaration public Guid MediaSessionId { get; set; } Property Value Type Description Guid" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.JsonConverters.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.JsonConverters.html", - "title": "Class JsonConverters", - "keywords": "Class JsonConverters Json converters. Inheritance Object JsonConverters Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class JsonConverters" + "calls/Microsoft.Graph.Communications.Calls.IParticipantCollection.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.IParticipantCollection.html", + "title": "Interface IParticipantCollection", + "keywords": "Interface IParticipantCollection The stateful participant collection interface. Inherited Members IDisposable.Dispose() IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface IParticipantCollection : IResourceCollection, IResourceCollection, IResourceCollection, IResourceBase, IDisposable, IReadOnlyCollection, IEnumerable, IEnumerable Methods GetAsync(String, CancellationToken) Gets the participant from the collection. Declaration Task GetAsync(string participantId, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description String participantId The participant identifier. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IParticipant > The found IParticipant . Exceptions Type Condition ServiceException If the specified participant was not found. InviteAsync(IEnumerable, CancellationToken) Invites a list of participants given their identities. Declaration Task InviteAsync(IEnumerable participants, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description IEnumerable < InvitationParticipantInfo > participants The list of InvitationParticipantInfo to invite. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The invite updates will come in on IParticipantCollection.OnUpdated Extension Methods ParticipantExtensions.InviteAsync(IParticipantCollection, IdentitySet, String, CancellationToken)" }, - "calls/Microsoft.Graph.Communications.Calls.ICallCollection.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.ICallCollection.html", - "title": "Interface ICallCollection", - "keywords": "Interface ICallCollection The stateful call collection interface. Inherited Members IDisposable.Dispose() IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface ICallCollection : IResourceCollection, IResourceCollection, IResourceCollection, IResourceBase, IDisposable, IReadOnlyCollection, IEnumerable, IEnumerable Methods AddAsync(Call, IMediaSession, Guid, CancellationToken) Create a new call and add to the collection. Declaration Task AddAsync(Call resource, IMediaSession mediaSession = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Call resource The call resource to be added. IMediaSession mediaSession The media session object, if any. This is valid only for application hosted media scenarios. Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < ICall > The ICall that has been created. This call has not yet been established and those notifications will fire on ICall.OnUpdated Events OnIncoming The incoming call event. This event is triggered when a new call is being received by the bot. Declaration event CollectionEventHandler OnIncoming Event Type Type Description CollectionEventHandler < ICallCollection , ICall > Extension Methods CallCollectionExtensions.AddAsync(ICallCollection, JoinMeetingParameters, Guid, CancellationToken)" + "bot_media/Microsoft.Skype.Bots.Media.VideoSendStatusChangedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSendStatusChangedEventArgs.html", + "title": "Class VideoSendStatusChangedEventArgs", + "keywords": "Class VideoSendStatusChangedEventArgs Event arguments of a VideoSendStatusChanged event. Inheritance Object EventArgs VideoSendStatusChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoSendStatusChangedEventArgs : EventArgs Constructors VideoSendStatusChangedEventArgs() Declaration public VideoSendStatusChangedEventArgs() Properties MediaSendStatus The media send status. Declaration public MediaSendStatus MediaSendStatus { get; set; } Property Value Type Description MediaSendStatus MediaType MediaType of the video socket raising the event. This could be Video or Vbss. Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType PreferredEncodedVideoSourceFormats The preferred video source format if encoded video is sent. Declaration public VideoFormat[] PreferredEncodedVideoSourceFormats { get; set; } Property Value Type Description VideoFormat [] PreferredVideoSourceFormat The preferred video source format if raw video is sent. Declaration public VideoFormat PreferredVideoSourceFormat { get; set; } Property Value Type Description VideoFormat SocketId The 0-based ID of the socket that is raising this event. This socket ID can be used in multiview (ie. more than 1 video socket) to determine which video socket is raising this event. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the Microsoft.Skype.Bots.Media.MediaPlatform (or IMediaPlatform) API CreateMediaConfiguration. Eg. If the collection of IVideoSocket objects in the CreateMediaConfiguration API contains { socketA, socketB, socketC }, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Declaration public int SocketId { get; set; } Property Value Type Description Int32" }, - "calls/Microsoft.Graph.Communications.Calls.CallCollectionExtensions.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.CallCollectionExtensions.html", - "title": "Class CallCollectionExtensions", - "keywords": "Class CallCollectionExtensions Extensions for call collections. Inheritance Object CallCollectionExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public static class CallCollectionExtensions Methods AddAsync(ICallCollection, JoinMeetingParameters, Guid, CancellationToken) Join a new meeting with the provided parameters Declaration public static Task AddAsync(this ICallCollection callCollection, JoinMeetingParameters parameters, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ICallCollection callCollection The call collection. JoinMeetingParameters parameters The join meeting parameters. Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < ICall > The stateful call object once the call is joined." + "core/Microsoft.Graph.Communications.Core.Notifications.html": { + "href": "core/Microsoft.Graph.Communications.Core.Notifications.html", + "title": "Namespace Microsoft.Graph.Communications.Core.Notifications", + "keywords": "Namespace Microsoft.Graph.Communications.Core.Notifications Classes CollectionNotificationEventArgs The collection notification event args. FailedNotificationEventArgs Event arguments used when exceptions are raised in callbacks. NotificationEventArgs Notification event arguments class. NotificationProcessor The notification processor class. NotificationProcessorExtensions Extensions for container client. Interfaces INotificationProcessor The notification processor interface." }, - "common/Microsoft.Graph.Communications.Common.Transport.Http.HttpUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.Transport.Http.HttpUtils.html", - "title": "Class HttpUtils", - "keywords": "Class HttpUtils Utilities for Http transport Inheritance Object HttpUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport.Http Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpUtils Methods GetRequestTypeForHttpMethod(String) Gets the type of the request for the given http method. Declaration public static RequestType GetRequestTypeForHttpMethod(string httpMethod) Parameters Type Name Description String httpMethod The HTTP method. Returns Type Description RequestType RequestType corresponding to the httpMethod Exceptions Type Condition InvalidOperationException Thrown if httpMethod has no corresponding RequestType" + "common/Microsoft.Graph.Communications.Common.Utilities.html": { + "href": "common/Microsoft.Graph.Communications.Common.Utilities.html", + "title": "Class Utilities", + "keywords": "Class Utilities Utilities class. Inheritance Object Utilities Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class Utilities Methods CombineHashCodes(Object[]) Combine several hash codes into a single hash code Declaration public static int CombineHashCodes(params object[] args) Parameters Type Name Description Object [] args Objects to combine into a single hash. Returns Type Description Int32 Combined hash code. DecodeReplacesContextFromBase64(String) Decodes the replaces context for consultative call transfer scenario. Declaration public static Uri DecodeReplacesContextFromBase64(this string replacesContext) Parameters Type Name Description String replacesContext The replaces context. Returns Type Description Uri The decoded replaces URI. Exceptions Type Condition InvalidOperationException Replaces context provided for consultative transfer is invalid. EncodeReplacesUriToBase64(Uri) Base64 Encodes the replaces URI for consultative call transfer scenario. Declaration public static string EncodeReplacesUriToBase64(this Uri replacesUri) Parameters Type Name Description Uri replacesUri The replaces URI. Returns Type Description String The encoded replaces context. SafeDispose(ref T, IGraphLogger) Safely dispose members. Declaration public static void SafeDispose(ref T t, IGraphLogger logger = null) where T : class, IDisposable Parameters Type Name Description T t Reference to member. IGraphLogger logger Logger instance. Type Parameters Name Description T Type of the member." }, - "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.IObfuscationEngine.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.IObfuscationEngine.html", - "title": "Interface IObfuscationEngine", - "keywords": "Interface IObfuscationEngine Obfuscation engine that can obfuscate data. Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IObfuscationEngine Properties Enabled Gets a value indicating whether obfuscation is enabled. Declaration bool Enabled { get; } Property Value Type Description Boolean ObfuscationConfiguration Gets or sets the obfuscation configuration. This is also set when configuration is linked to an obfuscation engine. Declaration ObfuscationConfiguration ObfuscationConfiguration { get; set; } Property Value Type Description ObfuscationConfiguration Methods Obfuscate(Object, ObfuscationTag) Obfuscates the specified payload. Declaration string Obfuscate(object payload, ObfuscationTag obfuscationTag) Parameters Type Name Description Object payload The payload. ObfuscationTag obfuscationTag The obfuscation tag. Returns Type Description String Obfuscated data. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.VideoFormat.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoFormat.html", + "title": "Class VideoFormat", + "keywords": "Class VideoFormat VideoFormat Inheritance Object VideoFormat Implements IEquatable < VideoFormat > Inherited Members Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoFormat : IEquatable Fields H264_1280x720_1_875Fps H264 1280x720 1.875fps video format Declaration public static readonly VideoFormat H264_1280x720_1_875Fps Field Value Type Description VideoFormat H264_1280x720_15Fps H264 1280x720 15fps video format Declaration public static readonly VideoFormat H264_1280x720_15Fps Field Value Type Description VideoFormat H264_1280x720_3_75Fps H264 1280x720 3.75fps video format Declaration public static readonly VideoFormat H264_1280x720_3_75Fps Field Value Type Description VideoFormat H264_1280x720_30Fps H264 1280x720 30fps video format Declaration public static readonly VideoFormat H264_1280x720_30Fps Field Value Type Description VideoFormat H264_1280x720_7_5Fps H264 1280x720 7.5fps video format Declaration public static readonly VideoFormat H264_1280x720_7_5Fps Field Value Type Description VideoFormat H264_1920x1080_1_875Fps H264 1920x1080 1.875fps video format Declaration public static readonly VideoFormat H264_1920x1080_1_875Fps Field Value Type Description VideoFormat H264_1920x1080_15Fps H264 1920x1080 15fps video format Declaration public static readonly VideoFormat H264_1920x1080_15Fps Field Value Type Description VideoFormat H264_1920x1080_3_75Fps H264 1920x1080 3.75fps video format Declaration public static readonly VideoFormat H264_1920x1080_3_75Fps Field Value Type Description VideoFormat H264_1920x1080_30Fps H264 1920x1080 30fps video format Declaration public static readonly VideoFormat H264_1920x1080_30Fps Field Value Type Description VideoFormat H264_1920x1080_7_5Fps H264 1920x1080 7.5fps video format Declaration public static readonly VideoFormat H264_1920x1080_7_5Fps Field Value Type Description VideoFormat H264_320x180_1_875Fps H264 320x180 1.875fps video format Declaration public static readonly VideoFormat H264_320x180_1_875Fps Field Value Type Description VideoFormat H264_320x180_15Fps H264 320x180 15fps video format Declaration public static readonly VideoFormat H264_320x180_15Fps Field Value Type Description VideoFormat H264_320x180_3_75Fps H264 320x180 3.75fps video format Declaration public static readonly VideoFormat H264_320x180_3_75Fps Field Value Type Description VideoFormat H264_320x180_7_5Fps H264 320x180 7.5fps video format Declaration public static readonly VideoFormat H264_320x180_7_5Fps Field Value Type Description VideoFormat H264_424x240_15Fps H264 424x240 15fps video format Declaration public static readonly VideoFormat H264_424x240_15Fps Field Value Type Description VideoFormat H264_640x360_15Fps H264 640x360 15fps video format Declaration public static readonly VideoFormat H264_640x360_15Fps Field Value Type Description VideoFormat H264_640x360_30Fps H264 640x360 30fps video format Declaration public static readonly VideoFormat H264_640x360_30Fps Field Value Type Description VideoFormat H264_960x540_30Fps H264 960x540 30fps video format Declaration public static readonly VideoFormat H264_960x540_30Fps Field Value Type Description VideoFormat NV12_1080x1920_30Fps NV12 1080x1920 30fps video format Declaration public static readonly VideoFormat NV12_1080x1920_30Fps Field Value Type Description VideoFormat NV12_1280x720_1_875Fps NV12 1280x720 1.875fps video format Declaration public static readonly VideoFormat NV12_1280x720_1_875Fps Field Value Type Description VideoFormat NV12_1280x720_15Fps NV12 1280x720 15fps video format Declaration public static readonly VideoFormat NV12_1280x720_15Fps Field Value Type Description VideoFormat NV12_1280x720_3_75Fps NV12 1280x720 3.75fps video format Declaration public static readonly VideoFormat NV12_1280x720_3_75Fps Field Value Type Description VideoFormat NV12_1280x720_30Fps NV12 1280x720 30fps video format Declaration public static readonly VideoFormat NV12_1280x720_30Fps Field Value Type Description VideoFormat NV12_1280x720_7_5Fps NV12 1280x720 7.5fps video format Declaration public static readonly VideoFormat NV12_1280x720_7_5Fps Field Value Type Description VideoFormat NV12_180x320_30Fps NV12 180x320 15fps video format Declaration public static readonly VideoFormat NV12_180x320_30Fps Field Value Type Description VideoFormat NV12_1920x1080_1_875Fps NV12 1920x1080 1.875fps video format Declaration public static readonly VideoFormat NV12_1920x1080_1_875Fps Field Value Type Description VideoFormat NV12_1920x1080_15Fps NV12 1920x1080 15fps video format Declaration public static readonly VideoFormat NV12_1920x1080_15Fps Field Value Type Description VideoFormat NV12_1920x1080_3_75Fps NV12 1920x1080 3.75fps video format Declaration public static readonly VideoFormat NV12_1920x1080_3_75Fps Field Value Type Description VideoFormat NV12_1920x1080_30Fps NV12 1920x1080 30fps video format Declaration public static readonly VideoFormat NV12_1920x1080_30Fps Field Value Type Description VideoFormat NV12_1920x1080_7_5Fps NV12 1920x1080 7.5fps video format Declaration public static readonly VideoFormat NV12_1920x1080_7_5Fps Field Value Type Description VideoFormat NV12_240x424_15Fps NV12 240x424 15fps video format Declaration public static readonly VideoFormat NV12_240x424_15Fps Field Value Type Description VideoFormat NV12_270x480_15Fps NV12 270x480 15fps video format Declaration public static readonly VideoFormat NV12_270x480_15Fps Field Value Type Description VideoFormat NV12_320x180_15Fps NV12 320x180 15fps video format Declaration public static readonly VideoFormat NV12_320x180_15Fps Field Value Type Description VideoFormat NV12_360x640_15Fps NV12 360x640 15fps video format Declaration public static readonly VideoFormat NV12_360x640_15Fps Field Value Type Description VideoFormat NV12_360x640_30Fps NV12 360x640 30fps video format Declaration public static readonly VideoFormat NV12_360x640_30Fps Field Value Type Description VideoFormat NV12_424x240_15Fps NV12 424x240 15fps video format Declaration public static readonly VideoFormat NV12_424x240_15Fps Field Value Type Description VideoFormat NV12_480x270_15Fps NV12 480x270 15fps video format Declaration public static readonly VideoFormat NV12_480x270_15Fps Field Value Type Description VideoFormat NV12_480x848_30Fps NV12 480x848 30fps video format Declaration public static readonly VideoFormat NV12_480x848_30Fps Field Value Type Description VideoFormat NV12_540x960_30Fps NV12 540x960 30fps video format Declaration public static readonly VideoFormat NV12_540x960_30Fps Field Value Type Description VideoFormat NV12_640x360_15Fps NV12 640x360 15fps video format Declaration public static readonly VideoFormat NV12_640x360_15Fps Field Value Type Description VideoFormat NV12_640x360_30Fps NV12 640x360 30fps video format Declaration public static readonly VideoFormat NV12_640x360_30Fps Field Value Type Description VideoFormat NV12_720x1280_30Fps NV12 720x1280 30fps video format Declaration public static readonly VideoFormat NV12_720x1280_30Fps Field Value Type Description VideoFormat NV12_848x480_30Fps NV12 848x480 30fps video format Declaration public static readonly VideoFormat NV12_848x480_30Fps Field Value Type Description VideoFormat NV12_960x540_30Fps NV12 960x540 30fps video format Declaration public static readonly VideoFormat NV12_960x540_30Fps Field Value Type Description VideoFormat Rgb24_1080x1920_30Fps Rgb24 1080x1920 30fps video format Declaration public static readonly VideoFormat Rgb24_1080x1920_30Fps Field Value Type Description VideoFormat Rgb24_1280x720_1_875Fps Rgb24 1280x720 1.875fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_1_875Fps Field Value Type Description VideoFormat Rgb24_1280x720_15Fps Rgb24 1280x720 15fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_15Fps Field Value Type Description VideoFormat Rgb24_1280x720_3_75Fps Rgb24 1280x720 3.75fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_3_75Fps Field Value Type Description VideoFormat Rgb24_1280x720_30Fps Rgb24 1280x720 30fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_30Fps Field Value Type Description VideoFormat Rgb24_1280x720_7_5Fps Rgb24 1280x720 7.5fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_7_5Fps Field Value Type Description VideoFormat Rgb24_180x320_30Fps Rgb24 180x320 15fps video format Declaration public static readonly VideoFormat Rgb24_180x320_30Fps Field Value Type Description VideoFormat Rgb24_1920x1080_1_875Fps Rgb24 1920x1080 1.875fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_1_875Fps Field Value Type Description VideoFormat Rgb24_1920x1080_15Fps Rgb24 1920x1080 15fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_15Fps Field Value Type Description VideoFormat Rgb24_1920x1080_3_75Fps Rgb24 1920x1080 3.75fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_3_75Fps Field Value Type Description VideoFormat Rgb24_1920x1080_30Fps Rgb24 1920x1080 30fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_30Fps Field Value Type Description VideoFormat Rgb24_1920x1080_7_5Fps Rgb24 1920x1080 7.5fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_7_5Fps Field Value Type Description VideoFormat Rgb24_240x424_15Fps Rgb24 240x424 15fps video format Declaration public static readonly VideoFormat Rgb24_240x424_15Fps Field Value Type Description VideoFormat Rgb24_270x480_15Fps Rgb24 270x480 15fps video format Declaration public static readonly VideoFormat Rgb24_270x480_15Fps Field Value Type Description VideoFormat Rgb24_320x180_15Fps Rgb24 320x180 15fps video format Declaration public static readonly VideoFormat Rgb24_320x180_15Fps Field Value Type Description VideoFormat Rgb24_360x640_15Fps Rgb24 360x640 15fps video format Declaration public static readonly VideoFormat Rgb24_360x640_15Fps Field Value Type Description VideoFormat Rgb24_360x640_30Fps Rgb24 360x640 30fps video format Declaration public static readonly VideoFormat Rgb24_360x640_30Fps Field Value Type Description VideoFormat Rgb24_424x240_15Fps Rgb24 424x240 15fps video format Declaration public static readonly VideoFormat Rgb24_424x240_15Fps Field Value Type Description VideoFormat Rgb24_480x270_15Fps Rgb24 480x270 15fps video format Declaration public static readonly VideoFormat Rgb24_480x270_15Fps Field Value Type Description VideoFormat Rgb24_480x848_30Fps Rgb24 480x848 30fps video format Declaration public static readonly VideoFormat Rgb24_480x848_30Fps Field Value Type Description VideoFormat Rgb24_540x960_30Fps Rgb24 540x960 30fps video format Declaration public static readonly VideoFormat Rgb24_540x960_30Fps Field Value Type Description VideoFormat Rgb24_640x360_15Fps Rgb24 640x360 15fps video format Declaration public static readonly VideoFormat Rgb24_640x360_15Fps Field Value Type Description VideoFormat Rgb24_640x360_30Fps Rgb24 640x360 30fps video format Declaration public static readonly VideoFormat Rgb24_640x360_30Fps Field Value Type Description VideoFormat Rgb24_720x1280_30Fps Rgb24 720x1280 30fps video format Declaration public static readonly VideoFormat Rgb24_720x1280_30Fps Field Value Type Description VideoFormat Rgb24_848x480_30Fps Rgb24 848x480 30fps video format Declaration public static readonly VideoFormat Rgb24_848x480_30Fps Field Value Type Description VideoFormat Rgb24_960x540_30Fps Rgb24 960x540 30fps video format Declaration public static readonly VideoFormat Rgb24_960x540_30Fps Field Value Type Description VideoFormat Yuy2_1080x1920_30Fps YUY2 1080x1920 30fps video format Declaration public static readonly VideoFormat Yuy2_1080x1920_30Fps Field Value Type Description VideoFormat Yuy2_1280x720_1_875Fps YUY2 1280x720 1.875fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_1_875Fps Field Value Type Description VideoFormat Yuy2_1280x720_15Fps YUY2 1280x720 15fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_15Fps Field Value Type Description VideoFormat Yuy2_1280x720_3_75Fps YUY2 1280x720 3.75fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_3_75Fps Field Value Type Description VideoFormat Yuy2_1280x720_30Fps YUY2 1280x720 30fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_30Fps Field Value Type Description VideoFormat Yuy2_1280x720_7_5Fps YUY2 1280x720 7.5fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_7_5Fps Field Value Type Description VideoFormat Yuy2_180x320_30Fps YUY2 180x320 15fps video format Declaration public static readonly VideoFormat Yuy2_180x320_30Fps Field Value Type Description VideoFormat Yuy2_1920x1080_1_875Fps YUY2 1920x1080 1.875fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_1_875Fps Field Value Type Description VideoFormat Yuy2_1920x1080_15Fps YUY2 1920x1080 15fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_15Fps Field Value Type Description VideoFormat Yuy2_1920x1080_3_75Fps YUY2 1920x1080 3.75fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_3_75Fps Field Value Type Description VideoFormat Yuy2_1920x1080_30Fps YUY2 1920x1080 30fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_30Fps Field Value Type Description VideoFormat Yuy2_1920x1080_7_5Fps YUY2 1920x1080 7.5fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_7_5Fps Field Value Type Description VideoFormat Yuy2_240x424_15Fps YUY2 240x424 15fps video format Declaration public static readonly VideoFormat Yuy2_240x424_15Fps Field Value Type Description VideoFormat Yuy2_270x480_15Fps YUY2 270x480 15fps video format Declaration public static readonly VideoFormat Yuy2_270x480_15Fps Field Value Type Description VideoFormat Yuy2_320x180_15Fps YUY2 320x180 15fps video format Declaration public static readonly VideoFormat Yuy2_320x180_15Fps Field Value Type Description VideoFormat Yuy2_360x640_15Fps YUY2 360x640 15fps video format Declaration public static readonly VideoFormat Yuy2_360x640_15Fps Field Value Type Description VideoFormat Yuy2_360x640_30Fps YUY2 360x640 30fps video format Declaration public static readonly VideoFormat Yuy2_360x640_30Fps Field Value Type Description VideoFormat Yuy2_424x240_15Fps YUY2 424x240 15fps video format Declaration public static readonly VideoFormat Yuy2_424x240_15Fps Field Value Type Description VideoFormat Yuy2_480x270_15Fps YUY2 480x270 15fps video format Declaration public static readonly VideoFormat Yuy2_480x270_15Fps Field Value Type Description VideoFormat Yuy2_480x848_30Fps YUY2 480x848 30fps video format Declaration public static readonly VideoFormat Yuy2_480x848_30Fps Field Value Type Description VideoFormat Yuy2_540x960_30Fps YUY2 540x960 30fps video format Declaration public static readonly VideoFormat Yuy2_540x960_30Fps Field Value Type Description VideoFormat Yuy2_640x360_15Fps YUY2 640x360 15fps video format Declaration public static readonly VideoFormat Yuy2_640x360_15Fps Field Value Type Description VideoFormat Yuy2_640x360_30Fps YUY2 640x360 30fps video format Declaration public static readonly VideoFormat Yuy2_640x360_30Fps Field Value Type Description VideoFormat Yuy2_720x1280_30Fps YUY2 720x1280 30fps video format Declaration public static readonly VideoFormat Yuy2_720x1280_30Fps Field Value Type Description VideoFormat Yuy2_848x480_30Fps YUY2 848x480 30fps video format Declaration public static readonly VideoFormat Yuy2_848x480_30Fps Field Value Type Description VideoFormat Yuy2_960x540_30Fps YUY2 960x540 30fps video format Declaration public static readonly VideoFormat Yuy2_960x540_30Fps Field Value Type Description VideoFormat Properties BitRate Bit rate Declaration public uint BitRate { get; } Property Value Type Description UInt32 FrameRate Frame rate Declaration public float FrameRate { get; } Property Value Type Description Single Height Height Declaration public int Height { get; } Property Value Type Description Int32 VideoColorFormat VideoColorFormat Declaration public VideoColorFormat VideoColorFormat { get; } Property Value Type Description VideoColorFormat Width Width Declaration public int Width { get; } Property Value Type Description Int32 Methods Equals(VideoFormat) Equals to compare videoformat objects Declaration public bool Equals(VideoFormat videoFormat) Parameters Type Name Description VideoFormat videoFormat Returns Type Description Boolean Equals(Object) Overrides base Equals to compare objects Declaration public override bool Equals(object obj) Parameters Type Name Description Object obj Returns Type Description Boolean Overrides Object.Equals(Object) GetHashCode() Custom GetHashCode implementation Declaration public override int GetHashCode() Returns Type Description Int32 Overrides Object.GetHashCode() ToString() Provides video format details by overriding the default ToString(). Declaration public override string ToString() Returns Type Description String Details of VideoFormat. Overrides Object.ToString() Operators Equality(VideoFormat, VideoFormat) Overload == operator to do VideoFormat comparison Declaration public static bool operator ==(VideoFormat a, VideoFormat b) Parameters Type Name Description VideoFormat a VideoFormat b Returns Type Description Boolean Inequality(VideoFormat, VideoFormat) Overload != operator to do VideoFormat comparison Declaration public static bool operator !=(VideoFormat a, VideoFormat b) Parameters Type Name Description VideoFormat a VideoFormat b Returns Type Description Boolean Implements System.IEquatable" }, - "common/Microsoft.Graph.Communications.Common.TaskExtension.html": { - "href": "common/Microsoft.Graph.Communications.Common.TaskExtension.html", - "title": "Class TaskExtension", - "keywords": "Class TaskExtension Extensions for Task Inheritance Object TaskExtension Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class TaskExtension Methods ExpectExceptionAsync(Task, Type) Except an exception Declaration public static Task ExpectExceptionAsync(this Task task, Type expectedEx) Parameters Type Name Description Task task task Type expectedEx expected exception Returns Type Description Task Task representing completion ExpectExceptionAsync(Task, Type) Except an exception Declaration public static Task ExpectExceptionAsync(this Task task, Type expectedEx) Parameters Type Name Description Task task task Type expectedEx expected exception Returns Type Description Task Task representing completion Type Parameters Name Description T type IgnoreExceptionAsync(Task, Type) Ignore exception Declaration public static Task IgnoreExceptionAsync(this Task task, Type exceptionType) Parameters Type Name Description Task task task Type exceptionType exception type Returns Type Description Task Task representing completion IgnoreExceptionAsync(Task, Type) Ignore exception Declaration public static Task IgnoreExceptionAsync(this Task task, Type exceptionType) Parameters Type Name Description Task task task Type exceptionType exception type Returns Type Description Task Task representing completion Type Parameters Name Description T type" + "bot_media/Microsoft.Skype.Bots.Media.NetworkMetrics.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.NetworkMetrics.html", + "title": "Class NetworkMetrics", + "keywords": "Class NetworkMetrics QoE network level metrics Inheritance Object NetworkMetrics Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class NetworkMetrics Constructors NetworkMetrics() Declaration public NetworkMetrics() Properties AverageInboundPacketLossRateInPercentage Average packet loss rate on the inbound media stream Declaration public double AverageInboundPacketLossRateInPercentage { get; set; } Property Value Type Description Double AverageInboundRoundTripDelay Average round trip delay on the inbound media stream Declaration public TimeSpan AverageInboundRoundTripDelay { get; set; } Property Value Type Description TimeSpan AverageOutboundPacketLossRateInPercentage Average packet loss rate on the outbound media stream Declaration public double AverageOutboundPacketLossRateInPercentage { get; set; } Property Value Type Description Double AverageOutboundRoundTripDelay Average round trip delay on the outbound media stream Declaration public TimeSpan AverageOutboundRoundTripDelay { get; set; } Property Value Type Description TimeSpan MaximumInboundPacketLossRateInPercentage Maximum packet loss rate on the inbound media stream Declaration public double MaximumInboundPacketLossRateInPercentage { get; set; } Property Value Type Description Double MaximumInboundRoundTripDelay Maximum round trip delay on the inbound media stream Declaration public TimeSpan MaximumInboundRoundTripDelay { get; set; } Property Value Type Description TimeSpan MaximumOutboundPacketLossRateInPercentage Maximum packet loss rate on the outbound media stream Declaration public double MaximumOutboundPacketLossRateInPercentage { get; set; } Property Value Type Description Double MaximumOutboundRoundTripDelay Maximum round trip delay on the outbound media stream Declaration public TimeSpan MaximumOutboundRoundTripDelay { get; set; } Property Value Type Description TimeSpan TotalInboundPackets Total number of packets received on the inbound media stream Declaration public uint TotalInboundPackets { get; set; } Property Value Type Description UInt32 TotalOutboundPackets Total number of packets sent on the outbound media stream Declaration public uint TotalOutboundPackets { get; set; } Property Value Type Description UInt32" }, - "common/Microsoft.Graph.Communications.Common.StringUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.StringUtils.html", - "title": "Class StringUtils", - "keywords": "Class StringUtils String Utils Inheritance Object StringUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class StringUtils Methods ConvertOrDefault(String, T) Convert string to type or return default Declaration public static T ConvertOrDefault(string value, T defaultValue = null) Parameters Type Name Description String value input value T defaultValue default value Returns Type Description T result of the conversion Type Parameters Name Description T Type of return value EqualsIgnoreCase(String, String) Case insensitive string comparison Declaration public static bool EqualsIgnoreCase(this string valueA, string valueB) Parameters Type Name Description String valueA Input string A String valueB Input string B Returns Type Description Boolean Value indicating whether strings are equal in a case insensitive comparision FromBase64(String) Converts the specified string, which encodes binary data as base-64 digits, to an equivalent 8-bit unsigned integer array. Declaration public static byte[] FromBase64(this string data) Parameters Type Name Description String data The string to convert. Returns Type Description Byte [] An array of 8-bit unsigned integers. FromBase64Url(String) Converts the specified string, which encodes binary data as base-64 digits, to an equivalent 8-bit unsigned integer array. Declaration public static byte[] FromBase64Url(this string data) Parameters Type Name Description String data The string to convert. Returns Type Description Byte [] An array of 8-bit unsigned integers. GetSHA256Hash(String) Creates a SHA256 hash of the passed string. Declaration public static string GetSHA256Hash(this string input) Parameters Type Name Description String input The input string. Returns Type Description String The SHA256 hash. Join(IEnumerable, String) Concatenates the members of a constructed IEnumerable collection of type String , using the specified separator between each member. Declaration public static string Join(this IEnumerable values, string separator) Parameters Type Name Description IEnumerable < String > values A collection that contains the strings to concatenate. String separator The string to use as a separator. separator is included in the returned string only if values has more than one element. Returns Type Description String A string that consists of the members of values delimited by the separator string. If values has no members, the method returns Empty . NamespaceInCamelCase(String) Returns a namespace in camel case. Declaration public static string NamespaceInCamelCase(this string value) Parameters Type Name Description String value Value to convert. Returns Type Description String The namespace string in camel case. NamespaceInPascalCase(String) Returns a namespace in pascal case. Declaration public static string NamespaceInPascalCase(this string value) Parameters Type Name Description String value Value to convert. Returns Type Description String The namespace string in pascal case. SafeFormat(String, Object[]) Format a string with arguments. Declaration public static string SafeFormat(this string text, params object[] args) Parameters Type Name Description String text Format string. Object [] args Optional arguments. Returns Type Description String Formatted string. ToBase64(ArraySegment, Nullable, Nullable) Convert array segment to base 64 representation. Declaration public static string ToBase64(this ArraySegment data, int? offset = default(int? ), int? count = default(int? )) Parameters Type Name Description ArraySegment < Byte > data Data to convert. Nullable < Int32 > offset Optional override offset. Nullable < Int32 > count Optional override count. Returns Type Description String Base 64 encoded string. ToBase64(Byte[]) Convert byte array to base64. Declaration public static string ToBase64(this byte[] data) Parameters Type Name Description Byte [] data The data. Returns Type Description String Base64 representation. ToBase64Url(ArraySegment, Nullable, Nullable) Convert array segment to base 64 URL representation. Declaration public static string ToBase64Url(this ArraySegment data, int? offset = default(int? ), int? count = default(int? )) Parameters Type Name Description ArraySegment < Byte > data Data to convert. Nullable < Int32 > offset Optional override offset. Nullable < Int32 > count Optional override count. Returns Type Description String Base 64 encoded string. ToCamelCase(String) Converts value to camel casing. Declaration public static string ToCamelCase(this string value) Parameters Type Name Description String value Value to convert. Returns Type Description String Returns string in camel case. ToPascalCase(String) Converts value to pascal casing. Declaration public static string ToPascalCase(this string value) Parameters Type Name Description String value Value to convert. Returns Type Description String Returns string in pascal case. TrimEnd(String, String) Remove a substring from the end of a given string. This is called iteratively. Declaration public static string TrimEnd(this string target, string trimString) Parameters Type Name Description String target The target. String trimString The trim string. Returns Type Description String The string after being trimmed. TrimStart(String, String) Remove a substring from the beginning of a given string. This is called iteratively. Declaration public static string TrimStart(this string target, string trimString) Parameters Type Name Description String target The target. String trimString The trim string. Returns Type Description String The string after being trimmed." + "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCallExtensions.html": { + "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCallExtensions.html", + "title": "Class MediaCallExtensions", + "keywords": "Class MediaCallExtensions Stateful call media extensions Inheritance Object MediaCallExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public static class MediaCallExtensions Methods CreateMediaSession(ICall, AudioSocketSettings, VideoSocketSettings, VideoSocketSettings, DataSocketSettings, Guid) Creates a local media session for the provided call with a given socket configuration. Declaration public static ILocalMediaSession CreateMediaSession(this ICall call, AudioSocketSettings audioSocketSettings, VideoSocketSettings videoSocketSettings, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null, Guid mediaSessionId = default(Guid)) Parameters Type Name Description ICall call The call. AudioSocketSettings audioSocketSettings The audio socket settings. VideoSocketSettings videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Guid mediaSessionId The id for the media session. Returns Type Description ILocalMediaSession A ILocalMediaSession . Exceptions Type Condition ArgumentNullException If the call has not been specified. ArgumentException If the call does not have a valid identifier. CreateMediaSession(ICall, AudioSocketSettings, IEnumerable, VideoSocketSettings, DataSocketSettings, Guid) Creates a local media session for the provided call with a given socket configuration. Declaration public static ILocalMediaSession CreateMediaSession(this ICall call, AudioSocketSettings audioSocketSettings, IEnumerable videoSocketSettings = null, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null, Guid mediaSessionId = default(Guid)) Parameters Type Name Description ICall call The call. AudioSocketSettings audioSocketSettings The audio socket settings. IEnumerable < VideoSocketSettings > videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Guid mediaSessionId The id for the media session. Returns Type Description ILocalMediaSession A ILocalMediaSession . Exceptions Type Condition ArgumentNullException If the call has not been specified. ArgumentException If the call does not have a valid identifier. GetLocalMediaSession(ICall) Gets the local media session for this call object. Declaration public static ILocalMediaSession GetLocalMediaSession(this ICall call) Parameters Type Name Description ICall call The call. Returns Type Description ILocalMediaSession Local media session object Exceptions Type Condition InvalidCastException This call does not have a valid ILocalMediaSession object." }, - "core/Microsoft.Graph.ContractsConstants.AuthConstants.html": { - "href": "core/Microsoft.Graph.ContractsConstants.AuthConstants.html", - "title": "Class ContractsConstants.AuthConstants", - "keywords": "Class ContractsConstants.AuthConstants Various constants used by the AuthZ layer Inheritance Object ContractsConstants.AuthConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class AuthConstants Fields ConsumerTenantIds list of tenant ids that are considered as skype consumer tenants Declaration public static readonly ICollection ConsumerTenantIds Field Value Type Description ICollection < String >" + "calls/Microsoft.Graph.Communications.Calls.CallExtensions.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.CallExtensions.html", + "title": "Class CallExtensions", + "keywords": "Class CallExtensions Extensions for calls. Inheritance Object CallExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public static class CallExtensions Methods AnswerAsync(ICall, IMediaSession, String, Guid, CancellationToken) Answers a call with locally hosted media configuration. Declaration public static Task AnswerAsync(this ICall call, IMediaSession mediaSession, string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ICall call The call to be answered. IMediaSession mediaSession The media session object which defines the media configuration. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated Exceptions Type Condition ArgumentNullException When mediaSession is not specified. AnswerAsync(ICall, IEnumerable, IEnumerable, String, Guid, CancellationToken) Answers a call with service hosted media configuration. Declaration public static Task AnswerAsync(this ICall call, IEnumerable preFetchMedia, IEnumerable acceptedModalities, string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ICall call The call to be answered. IEnumerable < MediaInfo > preFetchMedia List of media files that service will cache, so that when playing these media files; the latency is lower. IEnumerable < Modality > acceptedModalities The modalities to accept. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated Exceptions Type Condition ArgumentNullException When pre-fetch media is null. AnswerAsync(ICall, IEnumerable, String, Guid, CancellationToken) Answers a call with service hosted media configuration. Declaration public static Task AnswerAsync(this ICall call, IEnumerable acceptedModalities, string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ICall call The call to be answered. IEnumerable < Modality > acceptedModalities The modalities to accept. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated SetOutgoingCallOptions(Call, Nullable) Set outgoing call options for the call. Declaration public static void SetOutgoingCallOptions(this Call call, bool? allowGuestToBypassLobby) Parameters Type Name Description Call call The call. Nullable < Boolean > allowGuestToBypassLobby Enable bypass lobby when joining a group call as guest." }, - "core/Microsoft.Graph.Communications.Core.html": { - "href": "core/Microsoft.Graph.Communications.Core.html", - "title": "Namespace Microsoft.Graph.Communications.Core", - "keywords": "Namespace Microsoft.Graph.Communications.Core Classes CommsConstants The communications constants. CommsConstants.HttpPropertyNames Constants used for HTTP property names CommsGeneratedErrorConstants The generated error constants. CommsGeneratedErrorConstants.Codes The codes CommsGeneratedErrorConstants.Messages The messages. GraphModelExtensions Generic graph model extensions." + "bot_media/Microsoft.Skype.Bots.Media.DataSendStatusChangedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.DataSendStatusChangedEventArgs.html", + "title": "Class DataSendStatusChangedEventArgs", + "keywords": "Class DataSendStatusChangedEventArgs Reserved for the internal use. Inheritance Object EventArgs DataSendStatusChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class DataSendStatusChangedEventArgs : EventArgs Constructors DataSendStatusChangedEventArgs() Declaration public DataSendStatusChangedEventArgs() Properties MediaSendStatus Reserved for the internal use. Declaration public MediaSendStatus MediaSendStatus { get; set; } Property Value Type Description MediaSendStatus" + }, + "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.Messages.html": { + "href": "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.Messages.html", + "title": "Class CommsGeneratedErrorConstants.Messages", + "keywords": "Class CommsGeneratedErrorConstants.Messages The messages. Inheritance Object CommsGeneratedErrorConstants.Messages Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Messages Fields ResponseObjectUsedForUpdate Response object used for update error message. Declaration public const string ResponseObjectUsedForUpdate = \"Do not use objects returned in a response for updating an object in Microsoft Graph. Create a new {0} object and only set the updated properties on it.\" Field Value Type Description String" + }, + "calls/Microsoft.Graph.Communications.Calls.PlayOperationResult.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.PlayOperationResult.html", + "title": "Class PlayOperationResult", + "keywords": "Class PlayOperationResult Class to define parameters required for joining a meeting. Inheritance Object PlayOperationResult Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public class PlayOperationResult Constructors PlayOperationResult(ResultInfo) Initializes a new instance of the PlayOperationResult class. Declaration public PlayOperationResult(ResultInfo resultInfo) Parameters Type Name Description ResultInfo resultInfo The result information. Properties ResultInfo Gets the result information. Declaration public ResultInfo ResultInfo { get; } Property Value Type Description ResultInfo The result information." + }, + "common/Microsoft.Graph.Communications.Common.Exceptions.RoutingBadRequestException.html": { + "href": "common/Microsoft.Graph.Communications.Common.Exceptions.RoutingBadRequestException.html", + "title": "Class RoutingBadRequestException", + "keywords": "Class RoutingBadRequestException Indicate there's a bad request Inheritance Object Exception RoutingException RoutingBadRequestException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Exceptions Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class RoutingBadRequestException : RoutingException, ISerializable, _Exception Constructors RoutingBadRequestException(String) Initializes a new instance of the RoutingBadRequestException class. Declaration public RoutingBadRequestException(string message) Parameters Type Name Description String message message RoutingBadRequestException(String, Exception) Initializes a new instance of the RoutingBadRequestException class. Declaration public RoutingBadRequestException(string message, Exception innerException) Parameters Type Name Description String message message Exception innerException inner exception Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "bot_media/Microsoft.Skype.Bots.Media.VideoReceiveStatusChangedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoReceiveStatusChangedEventArgs.html", + "title": "Class VideoReceiveStatusChangedEventArgs", + "keywords": "Class VideoReceiveStatusChangedEventArgs Event arguments of a VideoReceiveStatusChanged event. Inheritance Object EventArgs VideoReceiveStatusChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoReceiveStatusChangedEventArgs : EventArgs Constructors VideoReceiveStatusChangedEventArgs() Declaration public VideoReceiveStatusChangedEventArgs() Properties MediaReceiveStatus The media receive status. Declaration public MediaReceiveStatus MediaReceiveStatus { get; set; } Property Value Type Description MediaReceiveStatus MediaType MediaType of the video socket raising the event. This could be Video or Vbss. Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType SocketId Socket Id associated with the video receive event Declaration public int SocketId { get; set; } Property Value Type Description Int32" }, - "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.Codes.html": { - "href": "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.Codes.html", - "title": "Class CommsGeneratedErrorConstants.Codes", - "keywords": "Class CommsGeneratedErrorConstants.Codes The codes Inheritance Object CommsGeneratedErrorConstants.Codes Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Codes Fields NotAllowed Not allowed error code. Declaration public const string NotAllowed = \"notAllowed\" Field Value Type Description String" + "common/Microsoft.Graph.Communications.Common.Transport.GraphProperty-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphProperty-1.html", + "title": "Struct GraphProperty", + "keywords": "Struct GraphProperty Implements IGraphProperty IGraphProperty IEquatable < IGraphProperty > Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public struct GraphProperty : IGraphProperty, IGraphProperty, IEquatable Type Parameters Name Description T Constructors GraphProperty(IGraphProperty) Initializes a new instance of the GraphProperty struct. Declaration public GraphProperty(IGraphProperty property) Parameters Type Name Description IGraphProperty property The property. GraphProperty(String, T, String) Initializes a new instance of the GraphProperty struct. Declaration public GraphProperty(string key, T value, string type = null) Parameters Type Name Description String key The key. T value The value. String type The type. Properties Key Gets the key. Declaration public string Key { get; } Property Value Type Description String Type Gets the type of the property. Declaration public string Type { get; } Property Value Type Description String Value Declaration public T Value { get; } Property Value Type Description T Methods Equals(IGraphProperty) Declaration public bool Equals(IGraphProperty other) Parameters Type Name Description IGraphProperty other Returns Type Description Boolean ToString() Declaration public override string ToString() Returns Type Description String Overrides ValueType.ToString() Explicit Interface Implementations IGraphProperty.Value Gets the value. Declaration object IGraphProperty.Value { get; } Returns Type Description Object Implements IGraphProperty IGraphProperty System.IEquatable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphProperty.ConvertProperty(IGraphProperty)" }, - "core/Microsoft.Graph.Communications.Core.CommsConstants.html": { - "href": "core/Microsoft.Graph.Communications.Core.CommsConstants.html", - "title": "Class CommsConstants", - "keywords": "Class CommsConstants The communications constants. Inheritance Object CommsConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class CommsConstants" + "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClientFactory.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClientFactory.html", + "title": "Class GraphHttpClientFactory", + "keywords": "Class GraphHttpClientFactory The HTTP graph client factory. Inheritance Object ObjectRoot GraphHttpClientFactory Implements IGraphClientFactory Inherited Members ObjectRoot.GraphLogger Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphHttpClientFactory : ObjectRoot, IGraphClientFactory Constructors GraphHttpClientFactory(IGraphLogger, JsonSerializerSettings, HttpClient, String) Initializes a new instance of the GraphHttpClientFactory class. Declaration public GraphHttpClientFactory(IGraphLogger logger, JsonSerializerSettings serializerSettings, HttpClient httpClient = null, string correlationIdHeader = null) Parameters Type Name Description IGraphLogger logger Logger instance. Newtonsoft.Json.JsonSerializerSettings serializerSettings The serializer settings. HttpClient httpClient The HTTP client. String correlationIdHeader The correlation identifier header. Methods Create(IGraphLogger) Creates a new IGraphClient . Declaration public IGraphClient Create(IGraphLogger logger = null) Parameters Type Name Description IGraphLogger logger An optional IGraphLogger logger to be used in the new IGraphClient . Returns Type Description IGraphClient The IGraphClient . Implements IGraphClientFactory Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also ObjectRoot IGraphClientFactory" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.CallerInfo.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.CallerInfo.html", - "title": "Class CallerInfo", - "keywords": "Class CallerInfo Class that encapsulates the caller's (creator's) information Inheritance Object CallerInfo Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class CallerInfo Constructors CallerInfo(String, String, Int32) Initializes a new instance of the CallerInfo class. Declaration public CallerInfo(string memberName = \"\", string filePath = \"\", int lineNumber = 0) Parameters Type Name Description String memberName Name of the member. String filePath The file path. Int32 lineNumber The line number. Methods GetHashCode() Returns a hash code for this instance. Declaration public override int GetHashCode() Returns Type Description Int32 A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. Overrides Object.GetHashCode() ToString() Returns a String that represents the caller info. Declaration public override string ToString() Returns Type Description String A String that represents the caller info. Overrides Object.ToString() Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Telemetry.LoggingExtensions.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LoggingExtensions.html", + "title": "Class LoggingExtensions", + "keywords": "Class LoggingExtensions Extensions class for logging. Inheritance Object LoggingExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class LoggingExtensions Methods BindToILoggerFactory(GraphLogger, ILoggerFactory, ILogEventFormatter) Bind to ILogger Declaration public static Observer BindToILoggerFactory(this GraphLogger graphLogger, ILoggerFactory loggerFactory, ILogEventFormatter formatter = null) Parameters Type Name Description GraphLogger graphLogger The graph logger ILoggerFactory loggerFactory The ILogger ILogEventFormatter formatter The message formatter Returns Type Description Observer < LogEvent > The observer of graph logger Concat(IReadOnlyDictionary, IEnumerable) Get the merged propertied. Declaration public static IReadOnlyDictionary Concat(this IReadOnlyDictionary properties, IEnumerable additionalProperties) Parameters Type Name Description IReadOnlyDictionary < Type , Object > properties The property collection. IEnumerable < Object > additionalProperties The additional property collection. Returns Type Description IReadOnlyDictionary < Type , Object > The merged property collection. CreateILogger(IGraphLogger, String, Guid, LogEventType, IEnumerable) Creates the ILogger interface from Logging abstractions. Declaration public static ILogger CreateILogger(this IGraphLogger logger, string component = null, Guid correlationId = default(Guid), LogEventType eventType = LogEventType.Trace, IEnumerable properties = null) Parameters Type Name Description IGraphLogger logger The logger. String component The component for which log is created. Guid correlationId The correlation identifier. LogEventType eventType Log event type IEnumerable < Object > properties Extra properties for the log event Returns Type Description ILogger The ILogger interface. CreateShim(IGraphLogger, String, Nullable, IEnumerable, ObfuscationConfiguration) Creates the shim graph logger. The shim IGraphLogger wraps this logger and appends the specified content to each log request. Declaration public static IGraphLogger CreateShim(this IGraphLogger logger, string component = null, Guid? correlationId = default(Guid? ), IEnumerable properties = null, ObfuscationConfiguration obfuscationConfiguration = null) Parameters Type Name Description IGraphLogger logger The logger. String component The component for which log is created. Nullable < Guid > correlationId The correlation identifier. IEnumerable < Object > properties Extra properties for the log event ObfuscationConfiguration obfuscationConfiguration The obfuscation configuration. Returns Type Description IGraphLogger The IGraphLogger shim. EnterMethod(IGraphLogger, Guid, String, String, Int32) Log for entering method. Declaration public static LogEvent EnterMethod(this IGraphLogger logger, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Error(IGraphLogger, Exception, String, String, Guid, String, String, Int32) Log exceptions with error level. Declaration public static LogEvent Error(this IGraphLogger logger, Exception exception, string message = \"\", string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. Exception exception Exception information. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Error(IGraphLogger, String, String, Guid, String, String, Int32) Log messages with error level. Declaration public static LogEvent Error(this IGraphLogger logger, string message, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Flatten(IReadOnlyDictionary, IEnumerable, IEnumerable) Get the flatten key-value pairs for the properties of LogEvent. Declaration public static IEnumerable> Flatten(this IReadOnlyDictionary properties, IEnumerable ignoreTypes = null, IEnumerable ignoreSubProperties = null) Parameters Type Name Description IReadOnlyDictionary < Type , Object > properties The properties IEnumerable < Type > ignoreTypes The types in this list will be ingored IEnumerable < PropertyInfo > ignoreSubProperties The property members of specific types in this list will be ingored Returns Type Description IEnumerable < KeyValuePair < String , Object >> The flattern result. Remarks The primitive types and types implemented IEnumerable (string, list, dictionary, etc) will keep original value. The flatten support one level property lookup only. GetHeaderText(IGraphLogger, IEnumerable>>) Logs the headers text. Declaration public static IEnumerable GetHeaderText(this IGraphLogger logger, IEnumerable>> headers) Parameters Type Name Description IGraphLogger logger The logger. IEnumerable < KeyValuePair < String , IEnumerable < String >>> headers The headers. Returns Type Description IEnumerable < String > Log Text GetTypedProperties(LogEvent, Type) Gets the client common properties from log event. Declaration public static object GetTypedProperties(this LogEvent logEvent, Type type) Parameters Type Name Description LogEvent logEvent The log event. Type type The type of the property. Returns Type Description Object The client common properties. GetTypedProperty(LogEvent) Gets the client common properties from log event. Declaration public static T GetTypedProperty(this LogEvent logEvent) where T : class Parameters Type Name Description LogEvent logEvent The log event. Returns Type Description T The client common properties. Type Parameters Name Description T The property type. Info(IGraphLogger, String, String, Guid, String, String, Int32) Log exceptions with info level. Declaration public static LogEvent Info(this IGraphLogger logger, string message, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. LeaveMethod(IGraphLogger, Guid, String, String, Int32) Log for leaving method. Declaration public static LogEvent LeaveMethod(this IGraphLogger logger, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Log(IGraphLogger, TraceLevel, Exception, String, String, Guid, String, String, Int32) Log exceptions. Declaration public static LogEvent Log(this IGraphLogger logger, TraceLevel level, Exception exception, string message = null, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. TraceLevel level The trace level. Exception exception Exception information. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. LogHttpMessage(IGraphLogger, TraceLevel, TransactionDirection, HttpTraceType, String, String, String, IEnumerable>>, Int32, String, Nullable, Guid, Guid, String, String, Int32) Logs the http message. Declaration public static LogEvent LogHttpMessage(this IGraphLogger logger, TraceLevel level, TransactionDirection direction, HttpTraceType traceType, string url, string method, string obfuscatedContent, IEnumerable>> headers, int responseCode = 200, string component = null, long? responseTime = default(long? ), Guid correlationId = default(Guid), Guid requestId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. TraceLevel level The trace level. TransactionDirection direction The direction for request. HttpTraceType traceType Type of the http trace. String url The URL. String method The method. String obfuscatedContent The obfuscatedContent. IEnumerable < KeyValuePair < String , IEnumerable < String >>> headers The headers. Int32 responseCode The response code. (used only if [traceType == HttpResponse]) String component The component in which log is created. Nullable < Int64 > responseTime The response time. (used only if [traceType == HttpResponse]) Guid correlationId The correlation identifier. Guid requestId The message identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object Metric(IGraphLogger, String, String, Int64, Dictionary, Boolean, String, Guid, String, String, Int32) Log metrics Declaration public static LogEvent Metric(this IGraphLogger logger, string metricNamespace, string metricName, long rawData, Dictionary dimensions, bool addDefaultDimension = true, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String metricNamespace Metric namespace String metricName Metric name Int64 rawData Raw data Dictionary < String , String > dimensions Dimension name-value dictionary Boolean addDefaultDimension Indicates whether adds default dimension String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Obfuscate(IGraphLogger, Object, ObfuscationTag) Obfuscates the specified payload with the tag. Declaration public static string Obfuscate(this IGraphLogger logger, object payload, ObfuscationTag obfuscationTag) Parameters Type Name Description IGraphLogger logger The logger. Object payload The payload. ObfuscationTag obfuscationTag The obfuscation tag. Returns Type Description String Obfuscated data SerializeAndObfuscate(IGraphLogger, Object, Formatting) Serializes the payload and obfuscates it. Declaration public static string SerializeAndObfuscate(this IGraphLogger logger, object payload, Formatting formatting) Parameters Type Name Description IGraphLogger logger The logger. Object payload The payload. Newtonsoft.Json.Formatting formatting The formatting. Returns Type Description String Obfuscated data. ToLogLevel(TraceLevel) Get log level from trace level. Declaration public static LogLevel ToLogLevel(this TraceLevel level) Parameters Type Name Description TraceLevel level The trace level Returns Type Description LogLevel The log level ToTraceLevel(LogLevel) Gets the tracelevel for log level. Declaration public static TraceLevel ToTraceLevel(this LogLevel logLevel) Parameters Type Name Description LogLevel logLevel The log level. Returns Type Description TraceLevel trace level Verbose(IGraphLogger, String, String, Guid, String, String, Int32) Log verbose level. Declaration public static LogEvent Verbose(this IGraphLogger logger, string message, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Warn(IGraphLogger, Exception, String, String, Guid, String, String, Int32) Log exceptions with warning level. Declaration public static LogEvent Warn(this IGraphLogger logger, Exception exception, string message = \"\", string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. Exception exception Exception information. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Warn(IGraphLogger, String, String, Guid, String, String, Int32) Log exceptions with warning level. Declaration public static LogEvent Warn(this IGraphLogger logger, string message, string component = null, Guid correlationId = default(Guid), string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description IGraphLogger logger The logger. String message The message. String component The component in which log is created Guid correlationId The correlation identifier. String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object." }, - "common/Microsoft.Graph.Communications.Common.Telemetry.AadApplicationIdentity.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.AadApplicationIdentity.html", - "title": "Class AadApplicationIdentity", - "keywords": "Class AadApplicationIdentity The application identity in Azure AD. Inheritance Object AadApplicationIdentity Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class AadApplicationIdentity Remarks For better logging experience, all property names should be specific enough. Avoid using generic name such as Id, Name, etc. Constructors AadApplicationIdentity() Declaration public AadApplicationIdentity() Properties AppId Gets or sets the id of application. Declaration public string AppId { get; set; } Property Value Type Description String AppName Gets or sets the name of application. Declaration public string AppName { get; set; } Property Value Type Description String Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Telemetry.LoggingConstants.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LoggingConstants.html", + "title": "Class LoggingConstants", + "keywords": "Class LoggingConstants Constants used for logging that are common between server and client. Inheritance Object LoggingConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class LoggingConstants Fields ActivityTrackingLatencySeconds The activity tracking latency in seconds Declaration public const string ActivityTrackingLatencySeconds = \"ActivityTrackingLatencySeconds\" Field Value Type Description String AppId AppId constant. Declaration public const string AppId = \"AppId\" Field Value Type Description String ChatId Chat Id. Declaration public const string ChatId = \"ChatId\" Field Value Type Description String ChatInactivityTrackingExceedingInterval The chat inactivity tracking that exceeds the expected interval Declaration public const string ChatInactivityTrackingExceedingInterval = \"ChatInactivityTrackingExceedingInterval\" Field Value Type Description String CosmosDBCollection The name of CosmosDB collection Declaration public const string CosmosDBCollection = \"CosmosDBCollection\" Field Value Type Description String CosmosDBRequestCharge The metric name of CosmosDB request charge Declaration public const string CosmosDBRequestCharge = \"CosmosDBRequestCharge\" Field Value Type Description String CosmosDBRequestLatency The metric name of CosmosDB request latency in milliseconds Declaration public const string CosmosDBRequestLatency = \"CosmosDBRequestLatency\" Field Value Type Description String CosmosDBRequestType The CosmosDB request type, read/create/update/upsert/delete/query Declaration public const string CosmosDBRequestType = \"CosmosDBRequestType\" Field Value Type Description String ErrorCode The error code. Declaration public const string ErrorCode = \"ErrorCode\" Field Value Type Description String FailedBridgedMessages Failed bridged messages constant. Declaration public const string FailedBridgedMessages = \"FailedBridgedMessages\" Field Value Type Description String FailedChatInactivityTracking The failed chat inactivity tracking Declaration public const string FailedChatInactivityTracking = \"FailedChatInactivityTracking\" Field Value Type Description String FailedChatInactivityTrackingSum The failed chat inactivity tracking sum Declaration public const string FailedChatInactivityTrackingSum = \"FailedChatInactivityTrackingSum\" Field Value Type Description String FailedChatNotifications The failed chat notifications Declaration public const string FailedChatNotifications = \"FailedChatNotifications\" Field Value Type Description String FailedRoutingCacheRequests The failed routing cache requests. Declaration public const string FailedRoutingCacheRequests = \"FailedRoutingCacheRequests\" Field Value Type Description String HTTPMetrics The namespace of HTTP metrics Declaration public const string HTTPMetrics = \"HTTPMetrics\" Field Value Type Description String InstanceId Instance ID. Declaration public const string InstanceId = \"InstanceId\" Field Value Type Description String JsonSerializationMaxDepth Max depth of json serializer in case the json serializer settings is configured as ReferenceLoopHandling.Serialize Declaration public const int JsonSerializationMaxDepth = 10 Field Value Type Description Int32 Method Method dimension name. Declaration public const string Method = \"Method\" Field Value Type Description String ObjectId UserId constant. Declaration public const string ObjectId = \"ObjectId\" Field Value Type Description String Operation Operation dimension name. Declaration public const string Operation = \"Operation\" Field Value Type Description String OutgoingChatMessageLatency The time taken to send outgoing message. Declaration public const string OutgoingChatMessageLatency = \"OutgoingChatMessageLatency\" Field Value Type Description String PartitionKey Partition Id. Declaration public const string PartitionKey = \"PartitionKey\" Field Value Type Description String Partner Partner dimension name. Declaration public const string Partner = \"Partner\" Field Value Type Description String PropertyDoesNotExist Property does not exist error message Declaration public const string PropertyDoesNotExist = \"Property doesn't exist in LogEvent Properties dictionary.\" Field Value Type Description String ReplaceId The constant pointing to the replace id to be used for Api Path. Declaration public const string ReplaceId = \"\" Field Value Type Description String RequestId The request ID (used to identify request-response pair) Declaration public const string RequestId = \"RequestId\" Field Value Type Description String RequestPath Request path dimension name. Declaration public const string RequestPath = \"RequestPath\" Field Value Type Description String ResponseTimeInMilliseconds The metric name of HTTP response time Declaration public const string ResponseTimeInMilliseconds = \"Response time in milli-seconds\" Field Value Type Description String Result The result. Declaration public const string Result = \"Result\" Field Value Type Description String RoutingCacheRequests The routing cache requests. Declaration public const string RoutingCacheRequests = \"RoutingCacheRequests\" Field Value Type Description String StatusCode StatusCode dimension name. Declaration public const string StatusCode = \"StatusCode\" Field Value Type Description String SuccessfulBridgedMessages Successful bridged messages constant. Declaration public const string SuccessfulBridgedMessages = \"SuccessfulBridgedMessages\" Field Value Type Description String SuccessfulChatInactivityTracking The successful chat inactivity tracking Declaration public const string SuccessfulChatInactivityTracking = \"SuccessfulChatInactivityTracking\" Field Value Type Description String SuccessfulChatInactivityTrackingSum The successful chat inactivity tracking sum. Declaration public const string SuccessfulChatInactivityTrackingSum = \"SuccessfulChatInactivityTrackingSum\" Field Value Type Description String SuccessfulChatNotifications The successful chat notifications Declaration public const string SuccessfulChatNotifications = \"SuccessfulChatNotifications\" Field Value Type Description String TenantId Tenant Id constant. Declaration public const string TenantId = \"TenantId\" Field Value Type Description String TotalChatInactivityTracking The total chat inactivity tracking Declaration public const string TotalChatInactivityTracking = \"TotalChatInactivityTracking\" Field Value Type Description String UserAgent UserAgent dimension name. Declaration public const string UserAgent = \"UserAgent\" Field Value Type Description String" }, - "calls_media/Microsoft.Graph.Communications.Calls.Media.AudioSendBuffer.html": { - "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.AudioSendBuffer.html", - "title": "Class AudioSendBuffer", - "keywords": "Class AudioSendBuffer Creates an Audio Buffer for Send and also implements Dispose Inheritance Object AudioSendBuffer Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public class AudioSendBuffer : AudioMediaBuffer Constructors AudioSendBuffer(IntPtr, Int64, AudioFormat, Int64) Initializes a new instance of the AudioSendBuffer class. Declaration public AudioSendBuffer(IntPtr data, long length, AudioFormat audioFormat, long timeStamp = 0L) Parameters Type Name Description IntPtr data The buffer data. Int64 length The length of the buffer. AudioFormat audioFormat The audio format. Int64 timeStamp The time stamp. Methods Dispose(Boolean) Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing" + "common/Microsoft.Graph.Communications.Common.SafeNativeMethods.html": { + "href": "common/Microsoft.Graph.Communications.Common.SafeNativeMethods.html", + "title": "Class SafeNativeMethods", + "keywords": "Class SafeNativeMethods Contains p/invokes and associated wrappers for the Native methods Inheritance Object SafeNativeMethods Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class SafeNativeMethods Methods GetPreciseSystemTime() Gets precise system time Declaration public static DateTime GetPreciseSystemTime() Returns Type Description DateTime Precise system time" }, - "calls/Microsoft.Graph.Communications.Calls.IMediaSession.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.IMediaSession.html", - "title": "Interface IMediaSession", - "keywords": "Interface IMediaSession The IMediaSession interface. For local media scenarios, this session object represents the modalities and the media configuration. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface IMediaSession : IDisposable Properties MediaSessionId Gets the id of this media session. Declaration Guid MediaSessionId { get; } Property Value Type Description Guid Modalities Gets the supported modalities Declaration Modality[] Modalities { get; } Property Value Type Description Modality [] Methods GetMediaConfiguration() Get the media configuration Declaration JObject GetMediaConfiguration() Returns Type Description Newtonsoft.Json.Linq.JObject A Newtonsoft.Json.Linq.JObject produced by the Media library." + "common/Microsoft.Graph.Communications.Common.ReflectionUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.ReflectionUtils.html", + "title": "Class ReflectionUtils", + "keywords": "Class ReflectionUtils Reflection utilities Inheritance Object ReflectionUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class ReflectionUtils Methods DerivesFrom(Type, Type) Check if the type derives from the base type Declaration public static bool DerivesFrom(this Type type, Type baseType) Parameters Type Name Description Type type Type to check Type baseType Base type Returns Type Description Boolean True if it is or derives from the base type DerivesFrom(Type) Check if the type derives from the T type. Declaration public static bool DerivesFrom(this Type type) Parameters Type Name Description Type type Type to check Returns Type Description Boolean True if it is or derives from the base type Type Parameters Name Description T The type to check. GetPropertyUsingReflection(Object, String) Get named property of an object Declaration public static object GetPropertyUsingReflection(this object obj, string name) Parameters Type Name Description Object obj Object to get property from. String name Name of the property. Returns Type Description Object Value of the property GetValueCached(PropertyInfo, Object) Gets the value using a cached delegate. Declaration public static object GetValueCached(this PropertyInfo propertyInfo, object object) Parameters Type Name Description PropertyInfo propertyInfo The property info to use. Object object The object containing the property. Returns Type Description Object The fetched object. Implements(Type, Type) Check if type is subclass of a generic type. Declaration public static bool Implements(this Type type, Type checkType) Parameters Type Name Description Type type Type to check. Type checkType Generic type. Returns Type Description Boolean True if it is a subclass. Implements(Type) Check if type is subclass of a generic type. Declaration public static bool Implements(this Type type) Parameters Type Name Description Type type Type to check. Returns Type Description Boolean True if it is a subclass. Type Parameters Name Description T The type to check. SetPropertyUsingReflection(Object, String, Object) Set named property of an object Declaration public static bool SetPropertyUsingReflection(this object obj, string name, object value) Parameters Type Name Description Object obj Object to get property from. String name Name of the property. Object value Value of the property. Returns Type Description Boolean true if the property was set successfully, false otherwise SetValueCached(PropertyInfo, Object, Object) Set the value using a cached delegate. Declaration public static void SetValueCached(this PropertyInfo propertyInfo, object object, object value) Parameters Type Name Description PropertyInfo propertyInfo The property info to use. Object object The object containing the property. Object value The value to be set." }, - "core/Microsoft.Graph.IdentityExtensions.html": { - "href": "core/Microsoft.Graph.IdentityExtensions.html", - "title": "Class IdentityExtensions", - "keywords": "Class IdentityExtensions Extensions for graph api contracts Inheritance Object IdentityExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class IdentityExtensions Methods GetApplicationInstance(IdentitySet) Gets the application instance identity from identity set. This is part of additional data. Declaration public static Identity GetApplicationInstance(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Identity GetEncrypted(IdentitySet) Get the encrypted identity part of the additional data This identity must be retrieved when other identities are not listed Declaration public static Identity GetEncrypted(this IdentitySet identity) Parameters Type Name Description IdentitySet identity The identity Returns Type Description Identity The encrypted identity GetGuest(IdentitySet) Gets the guest identity from identity set. This is part of additional data. Declaration public static Identity GetGuest(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Identity GetIdentityProvider(Identity) Gets the identity provider. Declaration public static string GetIdentityProvider(this Identity identity) Parameters Type Name Description Identity identity The identity. Returns Type Description String The identity provider string. GetOnPremises(IdentitySet) Gets the on-premises identity from identity set. This is part of additional data. Declaration public static Identity GetOnPremises(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Identity GetPhone(IdentitySet) Gets the phone identity from identity set. This is part of additional data. Declaration public static Identity GetPhone(this IdentitySet identitySet) Parameters Type Name Description IdentitySet identitySet The identity set. Returns Type Description Identity Identity GetTenantId(Identity) Gets the tenant identifier. Declaration public static string GetTenantId(this Identity identity) Parameters Type Name Description Identity identity The identity. Returns Type Description String The tenant identifier string. SetApplicationInstance(IdentitySet, Identity) Sets the application instance identity in identity set. This is part of additional data. Declaration public static void SetApplicationInstance(this IdentitySet identitySet, Identity identity) Parameters Type Name Description IdentitySet identitySet The identity set. Identity identity The identity. SetEncrypted(IdentitySet, Identity) Sets the encrypted identity to the additional data This identity must be retrieved when other identities are not listed Declaration public static void SetEncrypted(this IdentitySet identitySet, Identity identity) Parameters Type Name Description IdentitySet identitySet The identity set. Identity identity The identity SetGuest(IdentitySet, Identity) Sets the guest identity in identity set. This is part of additional data. Declaration public static void SetGuest(this IdentitySet identitySet, Identity identity) Parameters Type Name Description IdentitySet identitySet The identity set. Identity identity The identity. SetIdentityProvider(Identity, String) Sets the identity provider. Declaration public static void SetIdentityProvider(this Identity identity, string identityProvider) Parameters Type Name Description Identity identity The identity. String identityProvider The identity provider. SetPhone(IdentitySet, Identity) Sets the phone identity in identity set. This is part of additional data. Declaration public static void SetPhone(this IdentitySet identitySet, Identity identity) Parameters Type Name Description IdentitySet identitySet The identity set. Identity identity The identity. SetTenantId(Identity, String) Sets the tenant identifier. Declaration public static void SetTenantId(this Identity identity, string tenantId) Parameters Type Name Description Identity identity The identity. String tenantId The tenant identifier." + "common/Microsoft.Graph.Communications.Common.Exceptions.html": { + "href": "common/Microsoft.Graph.Communications.Common.Exceptions.html", + "title": "Namespace Microsoft.Graph.Communications.Common.Exceptions", + "keywords": "Namespace Microsoft.Graph.Communications.Common.Exceptions Classes ConfigurationException Configuration is bad. Mandatory configuration setting is missing. Or raw (string) setting value can not be converted to property type. InvalidStateTransitionException Exception to throw when a invalid transition is requested RoutingBadRequestException Indicate there's a bad request RoutingException Generic routing exception" }, - "client/Microsoft.Graph.Communications.Client.Transport.GraphClientContext.html": { - "href": "client/Microsoft.Graph.Communications.Client.Transport.GraphClientContext.html", - "title": "Class GraphClientContext", - "keywords": "Class GraphClientContext The context for the graph client wrapper. Inheritance Object GraphClientContext Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client.Transport Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class GraphClientContext Constructors GraphClientContext() Declaration public GraphClientContext() Properties ScenarioId Gets or sets the scenario identifier. Declaration public Guid ScenarioId { get; set; } Property Value Type Description Guid TenantId Gets or sets the tenant. Declaration public string TenantId { get; set; } Property Value Type Description String" + "bot_media/Microsoft.Skype.Bots.Media.AudioSettings.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.AudioSettings.html", + "title": "Class AudioSettings", + "keywords": "Class AudioSettings Audio frame player settings Inheritance Object AudioSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioSettings Constructors AudioSettings(UInt32) Default constructor Declaration public AudioSettings(uint buffersizeInMs) Parameters Type Name Description UInt32 buffersizeInMs Properties BufferSizeInMs Audio buffer length in ms Declaration public uint BufferSizeInMs { get; set; } Property Value Type Description UInt32" }, - "calls/Microsoft.Graph.Communications.Calls.RecordOperationResult.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.RecordOperationResult.html", - "title": "Class RecordOperationResult", - "keywords": "Class RecordOperationResult Class to define parameters required for joining a meeting. Inheritance Object RecordOperationResult Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public class RecordOperationResult Constructors RecordOperationResult(String, String, ResultInfo) Initializes a new instance of the RecordOperationResult class. Declaration public RecordOperationResult(string recordingLocation, string recordingAccessToken, ResultInfo resultInfo) Parameters Type Name Description String recordingLocation The location of the recording. String recordingAccessToken Token to access the recording. ResultInfo resultInfo The result information. Properties RecordingAccessToken Gets the recording access token required to retrieve the recording. Declaration public string RecordingAccessToken { get; } Property Value Type Description String RecordingLocation Gets the recording location. Link to the \"live raw stream as it is being recorded\" or \"recorded stream after it’s recorded\". Client need to call GET request on this link passing RecordingAccessToken as bearer token in order to download the stream. Declaration public string RecordingLocation { get; } Property Value Type Description String ResultInfo Gets the result information. Declaration public ResultInfo ResultInfo { get; } Property Value Type Description ResultInfo The result information." + "core/Microsoft.Graph.ContractsConstants.Signature.html": { + "href": "core/Microsoft.Graph.ContractsConstants.Signature.html", + "title": "Class ContractsConstants.Signature", + "keywords": "Class ContractsConstants.Signature Signature for Assembly visibility. Inheritance Object ContractsConstants.Signature Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Signature Fields VisibleToCastle Visible to property added to InternalsVisibleTo Castle signed builds. Declaration public const string VisibleToCastle = \", PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7\" Field Value Type Description String VisibleToMicrosoft Visible to property added to InternalsVisibleTo Microsoft signed builds. Declaration public const string VisibleToMicrosoft = \", PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9\" Field Value Type Description String" }, "core/Microsoft.Graph.ContractsConstants.NotificationProperties.html": { "href": "core/Microsoft.Graph.ContractsConstants.NotificationProperties.html", @@ -989,15 +859,140 @@ "title": "Class ContractsConstants.EntityContainerNames", "keywords": "Class ContractsConstants.EntityContainerNames Singleton/EntitySet constants Inheritance Object ContractsConstants.EntityContainerNames Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class EntityContainerNames Fields Application The application singleton root. Compatible for old path. Declaration public const string Application = \"app\" Field Value Type Description String CallRecords The \"callRecords\" Declaration public const string CallRecords = \"callRecords\" Field Value Type Description String Communications The communications singleton for v1. Declaration public const string Communications = \"communications\" Field Value Type Description String Me The \"me\" Declaration public const string Me = \"me\" Field Value Type Description String Presence The \"presence\" Declaration public const string Presence = \"presence\" Field Value Type Description String Users The users Declaration public const string Users = \"users\" Field Value Type Description String" }, - "core/Microsoft.Graph.ContractsConstants.CallProperties.html": { - "href": "core/Microsoft.Graph.ContractsConstants.CallProperties.html", - "title": "Class ContractsConstants.CallProperties", - "keywords": "Class ContractsConstants.CallProperties Call properties constants Inheritance Object ContractsConstants.CallProperties Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class CallProperties Fields AllowGuestToBypassLobby The lobbyBypass value for group call join. Declaration public const string AllowGuestToBypassLobby = \"allowGuestToBypassLobby\" Field Value Type Description String" + "articles/calls/MultipleAppSupport.html": { + "href": "articles/calls/MultipleAppSupport.html", + "title": "Supporting Multiple Applications Within Single Code Base", + "keywords": "Supporting Multiple Applications Within Single Code Base Some developers may wish to support multiple applications from within the same application code. With very little effort, this can be done using multiple instances of ICommunicationsClient . There are some steps that should be taken to ensure that we make outbound requests with the right application, and we forward incoming notifications to the right application. This writeup will demonstrate how to alter the existing samples to add multiple application support. We have not created a sample of this scenario explicitly given that it is not a standard way to use the Graph SDK. Create multiple communications clients First, each application instance requires it's own ICommunicationsClient instance, given that it supports a single IRequestAuthenticationProvider Let's change the Bot ICommunicationsClient Client to an IDictionary Clients and create our clients. /// /// Prevents a default instance of the class from being created. /// private Bot() { this.AddClient( Service.Instance.Configuration.MicrosoftAppId, Service.Instance.Configuration.MicrosoftAppPassword); this.AddClient( Service.Instance.Configuration.MicrosoftApp2Id, Service.Instance.Configuration.MicrosoftApp2Password); } private void AddClient(string appId, string appSecret) { // Create a unique notification uri for first app instance // This appends the app id to the callback uri so we get // https://base.uri/callbacks/{appId} var notificationUri = new Uri( Service.Instance.Configuration.CallControlBaseUrl, appId); var builder = new CommunicationsClientBuilder(\"AudioVideoPlaybackBot\", appId); builder .SetAuthenticationProvider( new AuthenticationProvider( appId, appSecret, Service.Instance.Configuration.TokenAudienceResourceLink)) .SetNotificationUrl(notificationUri) .SetMediaPlatformSettings(Service.Instance.Configuration.MediaPlatformSettings) .SetServiceBaseUrl(Service.Instance.Configuration.PlaceCallEndpointUrl); var client = builder.Build(); this.Clients.Add(appId, client); client.Calls().OnIncoming += this.CallsOnIncoming; client.Calls().OnUpdated += this.CallsOnUpdated; } /// /// Gets the contained app clients /// public IDictionary Clients { get; } Let's also add a reference to the ICallCollection to the call handler for ease of access. This will allow us to reference the correct collection/client from any given call id. /// /// Initializes a new instance of the class. /// /// The call collection. /// The call. public CallHandler(ICallCollection callCollection, ICall call); /// /// Gets the call collection /// public ICallCollection CallCollection { get; } /// /// Gets the call /// public ICall Call { get; } Handle notifications Next we need to adjust the incoming call controller to forward the notifications to the right client. If there is no need to handle incoming call, then the above configuration will automatically route the the correct apps endpoint. If we need to handle incoming call, we can either have a default app process all those scenarios, or the callback URI of each app can contain the app id. For example, if our service URI is https://base.uri/callback , we can set all our bots to use this URI directly, but then we lose knowledge of which app is receiving the incoming call. If we change each app's callback URI to https://base.uri/callback/{appId} (example: https://base.uri/callback/9ecd52e5-6592-42b7-b562-093f37f13bde , where the appId is 9ecd52e5-6592-42b7-b562-093f37f13bde) then we have the app context when an incoming call occurs. Of course there are other ways to get the app ID, like from the auth token or the payload, but this is one simple option. To handle the app id in the URI the controllers for callbacks need to be changed to the following: /// /// Gets a reference to singleton sample bot/client instance /// private IDictionary Clients => Bot.Instance.Clients; /// /// Handle a callback for an incoming call. /// Here we don't know what application is receiving the callback. /// /// /// The . /// [HttpPost] [Route(\"\")] public Task OnIncomingRequestAsync() { // Pick some app id to handle this call. var appId = this.Clients.Keys.First(); return this.OnIncomingRequestAsync(appId); } /// /// Handle a callback for an incoming call or notification. /// Here we've added the application id to the callback URI. /// /// /// The . /// [HttpPost] [Route(\"{appId}\")] public async Task OnIncomingRequestAsync(string appId) { Log.Info(new CallerInfo(), LogContext.FrontEnd, $\"Received HTTP {this.Request.Method}, {this.Request.RequestUri}\"); // Pass the incoming message to the sdk. The sdk takes care of what to do with it. var client = this.Clients[appId]; var response = await client.ProcessNotificationAsync(this.Request).ConfigureAwait(false); // Enforce the connection close to ensure that requests are evenly load balanced so // calls do no stick to one instance of the worker role. response.Headers.ConnectionClose = true; return response; } Additional notes There are a few items not addressed here. For instance, when a VTC joins a meeting, which app should it use? This has been purposefuly excluded from this guide given that it is unique business logic. Some may want a different bot configuration for each client, others may associate unique permissions to each bot and use depending on action being performed." }, - "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.html": { - "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.html", - "title": "Class ErrorConstants", - "keywords": "Class ErrorConstants Error Constants Inheritance Object ErrorConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class ErrorConstants" + "articles/calls/IVR.html": { + "href": "articles/calls/IVR.html", + "title": "Interactive Voice Response (IVR)", + "keywords": "Interactive Voice Response (IVR) Graph Communications Calling SDK and Core SDK can be used to make and manage IVR calls. Features Join exiting calls Answer incoming calls Subscribe to tones Transfer call Play media Record Cancel media operations Calling SDK Snippets Join Existing Call and Answer Incoming Call Please refer to the concept articles Redirect and Transfer In order to do a redirect or transfer, you need to create an invitation object. This invitation target is the transferee in blind transfer and the original caller in consultative transfer. var target = new InvitationParticipantInfo { Identity = new IdentitySet { User = new Identity { Id = \"**The Target's AAD ID**\", DisplayName = \"**(optional) The Target's Display Name**\", } } }; ICall call = this.GetIncomingCall(); await call.RedirectAsync(new[] { target }).ConfigureAwait(false); Blind transfer To make a blind transfer, only the target needs to be specified. ICall oritinalCall = this.Client.Calls()[\"*call id to transfer*\"]; await oritinalCall.TransferAsync(target).ConfigureAwait(false); Consultative transfer ICall newCall = this.Client.Calls()[\"*call id of second call*\"]; await newCall.TransferAsync(target, \"*id of the original call*\").ConfigureAwait(false); Subscribe to tones ICall call = this.Client.Calls()[\"*id of the call*\"]; await call.SubscribeToToneAsync().ConfigureAwait(false); Any tones that are received are sent as part of a call update in ToneInfo property of the call resource. Play media prompts ICall call = this.Client.Calls()[\"*id of the call*\"]; await call.PlayPromptAsync(*A list of media prompts to play*).ConfigureAwait(false); Record ICall call = this.Client.Calls()[\"*id of the call*\"]; HttpClient httpClient = this.HttpClient; RecordOperationResult result = await call.RecordAsync(*record options*).ConfigureAwait(false); string location = result.RecordResourceLocation; string token = result.RecordResourceAccessToken; // Stream the content of the recording somewhere. using (var outputStream = new MemoryStream()) using (var request = new HttpRequestMessage(HttpMethod.Get, new Uri(location))) { // Set the authorization header. request.Headers.Authorization = new AuthenticationHeaderValue(\"Bearer\", token); using(var response = await httpClient.SendAsync(request).ConfigureAwait(false)) using(var content = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) { await content.CopyToAsync(outputStream); outputStream?.Seek(0, SeekOrigin.Begin); // Do something with stream. } } Cancel media processing This API will cancel all prompts that are queued to be played. ICall call = this.Client.Calls()[\"*id of the call*\"]; await call.CancelMediaProcessingAsync().ConfigureAwait(false);" + }, + "articles/calls/calling-notifications.html": { + "href": "articles/calls/calling-notifications.html", + "title": "Notifications in Calling", + "keywords": "Notifications in Calling Refer to Registering a Calling Bot on how to register the callback URL. This callback is used for all incoming calls to the application. Protocol determination The incoming notification is provided in legacy format for compatibility with the previous protocol . In order to convert the call to the Microsoft Graph protocol, the bot must determine the notification is in legacy format and reply with: HTTP/1.1 204 No Content The application will again receive the notification but this time it will be in the Microsoft Graph protocol. You may configure the protocol your application supports and avoid receiving the initial callback in legacy format. The setting is available as a configuration option in the Skype Channel. Redirects for region affinity We will invoke your callback from the data-center hosting the call. The call may start in any data-center and does not take into account region affinities. The notification will be sent to your deployment depending on the GeoDNS resolution. If your application determines, by inspecting the initial notification payload or otherwise, that it needs to run in a different deployment, the application may reply with: HTTP/1.1 302 Found Location: your-new-location You may decide to pickup the call and answer . You can specify the callback URL to handle this particular call. This is useful for stateful instances where your call is handled by a particular partition and you want to embed this information on the callback URL for routing to the right instance. Authenticating the callback Application should inspect the token passed by on the notification to validate the request. Whenever the API raises a web hook event, the API gets an OAUTH token from us, with audience as the application's App ID and adds it in the Authorization header as a Bearer token. The application is expected to validate this token before accepting the callback request. POST https://bot.contoso.com/api/calls Content-Type: application/json Authentication: Bearer \"value\": [ \"subscriptionId\": \"2887CEE8344B47C291F1AF628599A93C\", \"subscriptionExpirationDateTime\": \"2016-11-20T18:23:45.9356913Z\", \"changeType\": \"updated\", \"resource\": \"/app/calls/8A934F51F25B4EE19613D4049491857B\", \"resourceData\": { \"@odata.type\": \"#microsoft.graph.call\", \"state\": \"Established\" } ] The OAUTH token would have values like the following, and will be signed by us. The openid configuration published at https://api.aps.skype.com/v1/.well-known/OpenIdConfiguration can be used to verify the token. { \"aud\": \"0efc74f7-41c3-47a4-8775-7259bfef4241\", \"iss\": \"https://api.botframework.com\", \"iat\": 1466741440, \"nbf\": 1466741440, \"exp\": 1466745340, \"tid\": \"1fdd12d0-4620-44ed-baec-459b611f84b2\" } aud audience is the App ID URI specified for the application. tid is the tenant id for contoso iss is the token issuer, https://api.botframework.com The listener interface on the web hook URL can validate the token, ensure it has not expired, checking whether it has been signed by our published openid configuration. You must also check whether audience matches your App ID before accepting the callback request. Sample shows how to validate inbound requests. Additional information You can read more about AAD tokens and Validation" + }, + "articles/calls/appHostedMediaCalls.html": { + "href": "articles/calls/appHostedMediaCalls.html", + "title": "Application Hosted Media Calls", + "keywords": "Application Hosted Media Calls Application Hosted Media calls are those calls in which the bot manages the call's video and audio sockets. The bots send and receive raw audio and video data over the network. Building a CommunicationsClient with Media Platform Settings Create the an instance of the ICommunicationsClientBuilder . Create an instance of MediaPlatformSettings and use MediaCommunicationsClientBuilderExtensions.SetMediaPlatformSettings method to pass the MediaPlatformSettings to build the ICommunicationsClient Once the builder builds the ICommunicationsClient , a media session can be created using either MediaCommunicationsClientExtension.CreateMediaSession or MediaCommunicationsClientExtension.CreateMediaSession depending on how many video sockets are required. When creating an object of the Call resource, MediaConfig needs to be set to AppHostedMediaConfig . Important When creating a new call that uses application hosted media, an instance of IMediaSession needs to be passed into CallCollectionExtensions.AddAsync" + }, + "articles/Testing.html": { + "href": "articles/Testing.html", + "title": "Testing of Bots", + "keywords": "Testing of Bots This document describes how to setup the Graph Communications Calling SDK to run on your localhost, run tests against it against the Graph Platform. Caution Do not use this testing setup for production traffic. Please limit it to debugging your bot locally with test traffic because of security concerns. Prerequisites The testing setup requires ngrok to create tunnels to localhost. Go to ngrok and sign up for a free account. Once you signed up, go to the dashboard and get your authtoken. Create an ngrok configuration file ngrok.yml with the following data authtoken: Tip Free ngrok account does not provide static tunnels. Tunnels change everytime a tunnel is created. So, if using free account, it is recommended to not close ngrok until it's use is completed. Tip Ngrok does not require sign up if you do not use TCP tunnels. Setting up Signaling In order for the platform to talk to your bot, the bot needs to be reached over the internet. So, an ngrok tunnel is created in http mode with an address pointing to a port on your localhost. Add the following lines to your ngrok config tunnels: signaling: addr: proto: http Setting up Application Hosted Media Note This section is only required for Application Hosted Media bots and can be skipped if you do not host media yourself. Application Hosted Media uses certificates and TCP tunnels to properly work. The following steps are required in order for proper media establishment. Ngrok's public TCP endpoints have fixed urls. They are 0.tcp.ngrok.io , 1.tcp.ngrok.io , etc. You should have a dns CNAME entry for your service that points to these urls. In this example, let's say 0.bot.contoso.com is pointing to 0.tcp.ngrok.io , and similarly for other urls. Now you require an SSL certificate for the url you own. To make it easy, use an SSL certificate issued to a wild card domain. In this case, it would be *.bot.contoso.com . This ssl certificate is validated by Media flow so should match your media flow's public url. Note down the thumbprint and install the certificate in your machine certificates. Now, we setup a TCP tunnel to forward the traffic to localhost. Write the following lines into your ngrok config. media: addr: proto: tcp Important Because ngrok's tcp urls can be same for multiple users (just differing in ports), it is possible for a third party to look like your service. This is a security issue. Therefore this document should be followed only for testing and also using a separate domain that is not linked to your production services. Start Ngok Now that ngrok configuration is ready, start it up. Download the ngrok executable and run the following command ngrok.exe start -all -config This would start ngrok and provide you the public urls which provide the tunnels to your localhost. The output looks like the following Forwarding http://signal.ngrok.io -> localhost:12345 Forwarding https://signal.ngrok.io -> localhost:12345 Forwarding tcp://1.tcp.ngrok.io:12332 -> localhost:8445 Here, 12345 is my signaling port, 8445 is the local media port and 12332 is the remote media port exposed by ngrok. Note that we have a forwarding from 1.bot.contoso.com to 1.tcp.ngrok.io . This will be used as the media url for bot. Update Code Once ngrok is up and running, we update the code to use the config we just setup. Update Signaling In the builder, change the NotficationUrl to the signaling url provided by ngrok. clientBuilder.SetNotificationUrl( new Uri(\"https://signal.ngrok.io/notificationEndpoint\")) Important Replace signal with the one provided by ngrok and the NotificationEndpoint with the controller path that receives notification. Important The url in SetNotificationUrl must be HTTPS. Important Your local instance must be listening to http traffic on the signaling port. The requests made by Graph Platform will reach the bot as localhost http traffic when End to End encryption is not setup. Update Media Update your MediaPlatformSettings to the following. var mediaPlatform = new MediaPlatformSettings { ApplicationId = MediaPlatformInstanceSettings = new MediaPlatformInstanceSettings { CertificateThumbprint = , InstanceInternalPort = , InstancePublicPort = , InstancePublicIPAddress = new IPAddress(0x0), ServiceFqdn = , }, } Caution The Certificate Thumbprint provided above should match the Service FQDN. That is why the DNS entries are required. Caveats The free accounts of ngrok do NOT provide End to End encryption. The HTTPS data ends at the ngrok url and the data flows unencrypted from ngrok to localhost. You require paid ngrok account and configuration update to use End to End encryption. See ngrok docs for steps on setting up secure E2E tunnels. Because the bot callback url is dynamic, incoming call scenarios won't work as they are part of bot registration and they are static. One way to fix this is to use a paid ngrok account which provides fixed subdomains to which you can point your bot and the platform." + }, + "articles/index.html": { + "href": "articles/index.html", + "title": "Graph Core and Communications SDK Concepts", + "keywords": "Graph Core and Communications SDK Concepts The Graph signaling SDK is quite flexible and can run in multiple environments, and support both stateful and stateless architectures. It can run on Azure Cloud Service , Azure Service Fabric , and Azure App Service . Furthermore, because the SDK supports both .net framework 4.6.1+ and netstandard 2.0 it is cross platform . This article describes the key concepts in order to effectively utilize the Graph Core SDK and the Graph Communications SDK including the Calling SDK. Graph Communications Core SDK The GraphServiceClient object is the entry point to the Graph Core SDK. The majority of the Graph Core SDK is automatically generated by the Graph SDK generator using the OData resource model. It reflects the REST-ful wire protocol provided by the Graph Communications service. Graph Communications Stateful SDK and Client Builder The ICommunicationsClient object is the entry point to the Graph Communications SDK and the Calling SDK. This SDK is designed for stateful services and provides additional support on top of the Graph Core SDK for resource state management and media management. The ICommunicationsClientBuilder is the object used to construct a new ICommunicationsClient with the desired settings. Building media bots has additional considerations which are further outlined in the media section . Notification Dispatching Notifications for root collections, such as the ICallCollection generated by ICommunicationsClient.Calls() , are handled in a single queue. Any root resource, such as the ICall , that has been added to the root collection is given it's own queue. Any child resources, of the root resource, such as the ICallParticipant use the same queue as the root resource. Each queue will delivered event callbacks to the developer sequentially. The SDK will wait to deliver the next event callbacks until all the callbacks for the current event have been processed. This has been done as to help developers avoid concurrency issues and will in the future support resource versioning and jitter buffers. Important It is important for all event handlers to be non-blocking, and any long running operations need to be offloaded to another thread. Long running operations in any event will block further operations from being raised for the given resource. Example Outgoing Calls To illustrate functionality of the Graph Communications Calling SDK, the below examples demonstrate 2 common scenarios: how to make an outbound call to a Microsoft Teams user and how to join an existing Microsoft Teams meeting. Making an Outbound Call Assuming a bot has been properly registered and deployed, the ICommunicationsClient configured and built. The bot needs to create the Call object with the corresponding parameters and pass the object to the CallCollectionExtensions.AddAsync method as follows: Call callResource = new Call { Subject = \"**Subject**\", Targets = new List { new InvitationParticipantInfo { Identity = new IdentitySet { User = new Identity { Id = \"**Target's AAD ObjectId GUID**\" }, }, } }, TenantId = \"**The id of the tenant that will host the meeting**\" }; IMediaSession mediaSession = this.Client.CreateMediaSession(**media session settings**); ICall call = await this.Client.Calls().AddAsync(callResource, mediaSession); SDK will store the state of the call in memory after calling AddAsync . The returned call object above contains the call Id set by the service. Making an Outbound Call to Join an Existing Microsoft Teams Meeting The above example shows how to create an outbound call to single or multiple participants and create a new conversation. If the bot needs to join an existing conversation, the SDK provides an overload of AddAsync that takes JoinMeetingParameters as input. The bot needs to create the JoinMeetingParameters object with the corresponding meeting parameters and pass the object to the CallCollectionExtensions.AddAsync method as follows: ChatInfo chatInfo = new ChatInfo { MessageId = \"**Message Id**\", ThreadId = \"**Thread Id**\", ReplyChainMessageId = \"**Reply Chain Message Id**\" }; OrganizerMeetingInfo meetingInfo = new OrganizerMeetingInfo { Organizer = new IdentitySet { User = new Identity { Id = \"**Meeting Organizer's AAD ObjectId GUID**\" }, } }; meetingInfo.Organizer.User.SetTenantId(\"**TenantId Guid**\"); IMediaSession mediaSession = this.Client.CreateMediaSession(**media session settings**); JoinMeetingParameters joinCallParameters = new JoinMeetingParameters( chatInfo, meetingInfo, mediaSession); ICall call = await this.Client.Calls().AddAsync(joinCallParameters); SDK will store the state of the call in memory after calling AddAsync . The returned call object above contains the callId set by the service. Example Incoming Calls Any time another user or bot places a call to your bot, you will receive a notification to the global application endpoint specified when registering your bot. Incoming call scenarios are supported with both Service Hosted Media and App Hosted Media configurations. Important For all incoming call scenarios, the initial incoming call notification will still be received using the BotBuilder protocol. The Graph SDK automatically returns 204 No Content to the initial notification to invoke the new Graph protocol. Answering incoming call with application hosted media First, subscribe to incoming calls. this.Client.Calls().OnIncoming += this.CallsOnIncoming; When incoming call comes, the bot needs to answer with an IMediaSession . This can be a media session created using the ICommunicationsClient.CreateMediaSession() extension or a custom IMediaSession . private void CallsOnIncoming(ICallCollection sender, CollectionEventArgs collectionEventArgs) { IMediaSession mediaSession = this.Client.CreateMediaSession( new AudioSocketSettings { StreamDirections = StreamDirection.Recvonly, SupportedAudioFormat = AudioFormat.Pcm16K }, new VideoSocketSettings { StreamDirections = StreamDirection.Sendrecv, ReceiveColorFormat = VideoColorFormat.NV12, SupportedSendVideoFormats = new List { VideoFormat.NV12_720x1280_30Fps, VideoFormat.NV12_1280x720_30Fps } } ); // Run async as not to block subsequent notifications. Task.Run(async () => { await collectionEventArgs .AddedResources .FirstOrDefault() .AnswerAsync(mediaSession) .ConfigureAwait(false); }); } Answer incoming call with service hosted media First subscribe to incoming calls. this.Client.Calls().OnIncoming += this.CallsOnIncoming; When incoming call comes, the bot will answer with a ServiceHostedMediaConfig . private void CallsOnIncoming(ICallCollection sender, CollectionEventArgs collectionEventArgs) { // Run async as not to block subsequent notifications. Task.Run(async () => { await collectionEventArgs .AddedResources .FirstOrDefault() .AnswerAsync(new Modality[] { Modality.Audio }) .ConfigureAwait(false); }); } State Management Graph Communications SDK can be used to store state of all resources in memory. This has 2 implications: The instance hosting the call needs to be up throughout the lifetime of a call. Any subsequent asynchronous notifications delivered by the service need to be redirected to the instance hosting the call. Any bot that hosts its own media stack should to be built using the Graph Communications SDK given that the media stream has a requirement that it needs to persist in memory throughout the lifetime of the call. More details can be found in the State Management article." + }, + "README.Internal.html": { + "href": "README.Internal.html", + "title": "How to generate docs", + "keywords": "How to generate docs Download and unzip docfx.zip from https://github.com/dotnet/docfx/releases , extract it to a local folder, and add it to PATH so you can run it anywhere. Install Visual STUDIO 2017 Developer tools v15.0 and later After installation, open a X64 Native Tools Command Prompt for VS 2017. Run docfx in the docs folder, this will generate a _site folder Pack the _site folder with the project level README.md that explains how to go through the docs. How to serve the docs Download and unzip docfx.zip from https://github.com/dotnet/docfx/releases , extract it to a local folder, and add it to PATH so you can run it anywhere. Open a console window and cd to the directory which contains the _site folder Serve the docs site using docfx serve .\\_site command Goto http://localhost:8080 in your browser to view the documentation." + }, + "articles/Logging.html": { + "href": "articles/Logging.html", + "title": "Logging in SDK", + "keywords": "Logging in SDK The Graph SDK uses a custom logger named IGraphLogger which allows custom subscribers for log events. These events can be observed and logged as required by the bot developers. You need to create an IObserver for log events (the LogEvent class). private class LogObserver : IObserver { private readonly LogEventFormatter formatter = new LogEventFormatter(); /// /// Provides the observer with new data. /// /// The current notification information. public void OnNext(LogEvent logEvent) { // Log event. // Event Severity: logEvent.Level // Http trace: logEvent.EventType == LogEventType.HttpTrace // Log trace: logEvent.EventType == LogEventType.Trace var logString = this.formatter.Format(logEvent); MyLogger.Log(logEvent.Level, logString) } /// /// Notifies the observer that the provider has experienced an error condition. /// /// An object that provides additional information about the error. public void OnError(Exception error) { // Error occurred with the logger, not with the SDK. } /// /// Notifies the observer that the provider has finished sending push-based notifications. /// public void OnCompleted() { // Graph Logger has completed logging (shutdown). } } After a class is ready, you need to subscribe to the log events. ICommunicationsClient client; // Substitute this with the instance of the SDK. var observer = new LogObserver(); var disposableSubsription = client.GraphLogger.Subscribe(observer); Note The disposableSubscription object should be persisted, otherwise logging will not work once it is garbage collected." + }, + "README.html": { + "href": "README.html", + "title": "Get started", + "keywords": "Get started Review the documentation to understand the concepts behind using our SDK (which is also used by the samples). Get started quickly with our samples ." + }, + "index.html": { + "href": "index.html", + "title": "Graph Communications Calling SDK", + "keywords": "Graph Communications Calling SDK Introduction The Graph Communications Calling SDK simplifies the creation of calling and meetings bots that use the Cloud Communications APIs . The SDK provides the functionality to manage states of resources in memory and simplify tasks like call setup and media session establishment. It provides interfaces for bot's service-to-service interactions with calls and meetings, including an optional Media Extension SDK that enables a bot developer to host media on their machines and gain access to low level Audio/Video sockets and media streams. SDK The Graph Communications Calling SDK is built on top of the Microsoft Graph API and distributed as NuGet packages. The Core Concepts article is designed to better explain all the constructs used by the SDKs. To dive right in and deploy a Calling Bot refer to the documentation in each sample for further instructions. The SDK is divided into multiple nuget packages each described as below. Microsoft.Graph.Communications.Common ( nuget ): This is the nuget containing all the utilities used throughout the Stateful SDK. It contains telemetry, http, obfuscation support along with helper methods. Microsoft.Graph.Communications.Core ( nuget ): This library contains the serialization and notification for the communications APIs. Microsoft.Graph.Communications.Client ( nuget ): This is the base client for the Stateful SDK. This implements all the common SDK features used within different verticals like calling, etc. Microsoft.Graph.Communications.Calls ( nuget ): This is the SDK that implements calling APIs. This supports making, receiving, and joining calls with Microsoft Teams users, and creating voice and video enabled bots. Microsoft.Graph.Communications.Calls.Media ( nuget ): This library allows developers to use the Microsoft.Graph.Communications.Calls SDK and gain direct access to the audio, video, screen sharing, and data streams. This is an optional library on top of Microsoft.Graph.Communications.Calls Microsoft.Skype.Bots.Media ( nuget ): The Real-Time Media Platform for Bots adds a new dimension to how bots can interact with users: by enabling real-time voice, video and screen sharing modalities. Concepts and Examples For more details on concepts used by the SDK and examples on joining calls and receiving calls please refer to the concepts and examples page. You can find samples using the following service: Stateful bot using Application Hosted Media on Azure Cloud Service Stateful bot using Application Hosted Media on Azure Service Fabric Stateful bot using Service Hosted Media running on Azure App Service . ICommunicationsClient and Extension Methods The Stateful SDK is exposed using a single class ICommunicationsClient . This class is defined in the Microsoft.Graph.Communications.Client nuget and has no dependency on the Microsoft.Graph.Communications.Calls calling vertical nuget package. The different verticals therefore make heavy usage of extension methods on ICommunicationsClient rather than standalone functions or properties. The intention here is to add new verticals into the ICommunicationsClient using the same pattern without the ICommunicationsClient itself taking a dependency on the new vertical's nuget, which provides greater decoupling between future verticals we will support. For a usage example please see the ICommunicationsClient.Calls() extension method. Accompanying Information Accessing the Microsoft Teams Service through a Microsoft API Cloud Video Interop (CVI) partners and contact centers may integrate with Microsoft Teams to aid their solution. Contact centers may route calls to Microsoft Teams but may not build a separate or independent communications related solution while using Microsoft Teams as a base for the solution." + }, + "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformSettings.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformSettings.html", + "title": "Class MediaPlatformSettings", + "keywords": "Class MediaPlatformSettings Class that stores settings needed to initialize Bot Media Platform. Inheritance Object MediaPlatformSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class MediaPlatformSettings Constructors MediaPlatformSettings() Declaration public MediaPlatformSettings() Properties ApplicationId String that uniquely identifies the application that initializes the platform. Declaration public string ApplicationId { get; set; } Property Value Type Description String HostingEnvironmentConfiguration Specifies the HostingEnvironmentConfiguration to use for the MediaPlatform. In most cases, the default value is sufficient. Only in Azure Government clouds do different settings need to be applied. Declaration public HostingEnvironmentConfiguration HostingEnvironmentConfiguration { get; set; } Property Value Type Description HostingEnvironmentConfiguration MediaPlatformInstanceSettings The media platform instance settings. Declaration public MediaPlatformInstanceSettings MediaPlatformInstanceSettings { get; set; } Property Value Type Description MediaPlatformInstanceSettings MediaPlatformLogger Optional logger object to receive MediaPlatform traces. Declaration public IMediaPlatformLogger MediaPlatformLogger { get; set; } Property Value Type Description IMediaPlatformLogger RegionAffinity Reserved for the internal use. Declaration public string RegionAffinity { get; set; } Property Value Type Description String" + }, + "bot_media/Microsoft.Skype.Bots.Media.DataMediaBuffer.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.DataMediaBuffer.html", + "title": "Class DataMediaBuffer", + "keywords": "Class DataMediaBuffer Reserved for the internal use. Inheritance Object DataMediaBuffer Implements IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public abstract class DataMediaBuffer : IDisposable Constructors DataMediaBuffer() Declaration protected DataMediaBuffer() Properties Data Reserved for the internal use. Declaration public byte[] Data { get; protected set; } Property Value Type Description Byte [] MediaSourceId Reserved for the internal use. Declaration public uint MediaSourceId { get; protected set; } Property Value Type Description UInt32 Methods Dispose() Reserved for the internal use. Declaration public void Dispose() Dispose(Boolean) Reserved for the internal use. Declaration protected abstract void Dispose(bool disposing) Parameters Type Name Description Boolean disposing Implements System.IDisposable" + }, + "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.Codes.html": { + "href": "core/Microsoft.Graph.Communications.Core.Exceptions.ErrorConstants.Codes.html", + "title": "Class ErrorConstants.Codes", + "keywords": "Class ErrorConstants.Codes Error Codes Inheritance Object ErrorConstants.Codes Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Exceptions Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Codes Fields BridgeGone Error code indicating the bridge is gone/deleted from the server. Declaration public const string BridgeGone = \"BridgeGone\" Field Value Type Description String ChatGone Error code indicating the chat is gone/deleted from the server. Declaration public const string ChatGone = \"ChatGone\" Field Value Type Description String ClientCallbackError The client callback error code. Declaration public const string ClientCallbackError = \"clientCallbackError\" Field Value Type Description String ClientContextMissing The client context missing error code. Declaration public const string ClientContextMissing = \"clientContextIsMissing\" Field Value Type Description String GeneralException The general exception error code. Declaration public const string GeneralException = \"generalException\" Field Value Type Description String InvalidRequest The invalid request error code. Declaration public const string InvalidRequest = \"invalidRequest\" Field Value Type Description String ItemNotFound The item not found error code. Declaration public const string ItemNotFound = \"itemNotFound\" Field Value Type Description String MismatchedCompletedOperation The mismatched completed operation error code. Declaration public const string MismatchedCompletedOperation = \"mismatchedCompletedOperation\" Field Value Type Description String NotAllowed The not allowed error code. Declaration public const string NotAllowed = \"notAllowed\" Field Value Type Description String OperationFailed The operation failed error code. Declaration public const string OperationFailed = \"operationFailed\" Field Value Type Description String RehydrationFailedWithEmptyResource The re-hydration failed with empty resource error code. Declaration public const string RehydrationFailedWithEmptyResource = \"rehydrationFailedWithEmptyResource\" Field Value Type Description String RehydrationFailedWithNotFound The re-hydration failed with not found error code. Declaration public const string RehydrationFailedWithNotFound = \"rehydrationFailedWithNotFound\" Field Value Type Description String Timeout The timeout error code. Declaration public const string Timeout = \"timeout\" Field Value Type Description String TooManyRedirects The too many redirects error code. Declaration public const string TooManyRedirects = \"tooManyRedirects\" Field Value Type Description String" + }, + "common/Microsoft.Graph.Communications.Common.Transport.IGraphProperty-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphProperty-1.html", + "title": "Interface IGraphProperty", + "keywords": "Interface IGraphProperty Inherited Members IGraphProperty.Key IGraphProperty.Type IEquatable.Equals(IGraphProperty) Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphProperty : IGraphProperty, IEquatable Type Parameters Name Description T The type of content contained in this property. Properties Value Gets the value. Declaration T Value { get; } Property Value Type Description T Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphProperty.ConvertProperty(IGraphProperty)" + }, + "common/Microsoft.Graph.Communications.Common.OData.ODataResolver.html": { + "href": "common/Microsoft.Graph.Communications.Common.OData.ODataResolver.html", + "title": "Class ODataResolver", + "keywords": "Class ODataResolver Contract resolver that allows us to create OData json payloads with type information. Inheritance Object ODataResolver GraphObfuscationContractResolver Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ODataResolver : CamelCasePropertyNamesContractResolver Constructors ODataResolver(Boolean, Assembly[]) Initializes a new instance of the ODataResolver class which can be used to serialize/deserialize classes present in typeAssemblies . Declaration public ODataResolver(bool addOdataType, params Assembly[] typeAssemblies) Parameters Type Name Description Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. Assembly [] typeAssemblies Assemblies in which the OData object exist. Methods CreateProperties(Type, MemberSerialization) Declaration protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) Parameters Type Name Description Type type Newtonsoft.Json.MemberSerialization memberSerialization Returns Type Description IList < Newtonsoft.Json.Serialization.JsonProperty > ResolveContractConverter(Type) Declaration protected override JsonConverter ResolveContractConverter(Type objectType) Parameters Type Name Description Type objectType Returns Type Description Newtonsoft.Json.JsonConverter Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Disposable.html": { + "href": "common/Microsoft.Graph.Communications.Common.Disposable.html", + "title": "Class Disposable", + "keywords": "Class Disposable Common disposable pattern Inheritance Object Disposable AutoClean ObjectRootDisposable Observer SlimLock GraphLogger Implements IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class Disposable : IDisposable Constructors Disposable() Declaration public Disposable() Properties IsDisposed Gets a value indicating whether this instance is disposed. Declaration protected bool IsDisposed { get; } Property Value Type Description Boolean true if this instance is disposed; otherwise, false . Methods Dispose() Dispose resources. Declaration public void Dispose() Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected virtual void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Finalize() Finalizes an instance of the Disposable class. Declaration protected void Finalize() Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationConfiguration.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationConfiguration.html", + "title": "Class ObfuscationConfiguration", + "keywords": "Class ObfuscationConfiguration Configuration for obfuscation of different parts. Inheritance Object ObfuscationConfiguration HashingObfuscationConfiguration Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ObfuscationConfiguration Constructors ObfuscationConfiguration(IObfuscationEngine, IEnumerable, Boolean, ObfuscationMember[]) Initializes a new instance of the ObfuscationConfiguration class. Declaration public ObfuscationConfiguration(IObfuscationEngine engine, IEnumerable filters = null, bool addOdataType = true, ObfuscationMember[] members = null) Parameters Type Name Description IObfuscationEngine engine The obfuscation engine. IEnumerable < BaseFilter > filters The filters. Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. ObfuscationMember [] members The predefined set of obfuscation members. When specified the obfuscation serializer will cache the members and check the cache for the ObfuscationTag . ObfuscationConfiguration(IObfuscationEngine, IEnumerable, IEnumerable, IEnumerable, Boolean, ObfuscationMember[]) Initializes a new instance of the ObfuscationConfiguration class. Declaration public ObfuscationConfiguration(IObfuscationEngine engine, IEnumerable headerFilters, IEnumerable contentDispositionFilters, IEnumerable contentTypeFilters, bool addOdataType = true, ObfuscationMember[] members = null) Parameters Type Name Description IObfuscationEngine engine The obfuscation engine. IEnumerable < HeaderFilter > headerFilters The header filters. IEnumerable < ContentDispositionFilter > contentDispositionFilters The content disposition filters. IEnumerable < ContentTypeFilter > contentTypeFilters The content type filters. Boolean addOdataType If true, attach the @odata.type property, otherwise only attach this property if it's already present as a first class property. ObfuscationMember [] members The predefined set of obfuscation members. When specified the obfuscation serializer will cache the members and check the cache for the ObfuscationTag . Properties ContentDispositionFilters Gets the content disposition filters. Declaration public IEnumerable ContentDispositionFilters { get; } Property Value Type Description IEnumerable < ContentDispositionFilter > ContentTypeFilters Gets the content type filters. Declaration public IEnumerable ContentTypeFilters { get; } Property Value Type Description IEnumerable < ContentTypeFilter > DefaultContentDispositionFilters Gets the default content disposition filters. Declaration public static IEnumerable DefaultContentDispositionFilters { get; } Property Value Type Description IEnumerable < ContentDispositionFilter > DefaultContentTypeFilters Gets the default content type filters. Declaration public static IEnumerable DefaultContentTypeFilters { get; } Property Value Type Description IEnumerable < ContentTypeFilter > DefaultHeaderFilters Gets the default header filters. Transfer-Encoding: (redacted) OData-Version: (redacted) Duration: (redacted) Strict-Transport-Security: (redacted) Cache-Control: (redacted) Date: (redacted) Location: (redacted) x-ms-ags-diagnostic: (redacted) scenario-id: (redacted) request-id: (redacted) client-request-id: (redacted) X-Microsoft-Skype-Chain-ID: (redacted) X-Microsoft-Skype-Caller-Region: (redacted) X-Microsoft-Skype-Callee-Region: (redacted) X-Microsoft-Skype-Message-ID: (redacted) X-Microsoft-Skype-Original-Message-ID: (redacted) Declaration public static IEnumerable DefaultHeaderFilters { get; } Property Value Type Description IEnumerable < HeaderFilter > DefaultUriFilters Gets the default header filters. Declaration public static IEnumerable DefaultUriFilters { get; } Property Value Type Description IEnumerable < UriFilter > HeaderFilters Gets the header filters. Declaration public IEnumerable HeaderFilters { get; } Property Value Type Description IEnumerable < HeaderFilter > ObfuscationEngine Gets the obfuscation engine. Declaration public IObfuscationEngine ObfuscationEngine { get; } Property Value Type Description IObfuscationEngine ObfuscationMembers Gets the obfuscation members. When specified the obfuscation serializer will cache the members and check the cache for the ObfuscationTag . This can be used to cache obfuscation attributes, but it can also be used in cases where original contracts are not redily available (such as in SDK). Declaration public ObfuscationMember[] ObfuscationMembers { get; } Property Value Type Description ObfuscationMember [] ObfuscationSerializerSettings Gets the obfuscation serializer settings. Declaration public JsonSerializerSettings ObfuscationSerializerSettings { get; } Property Value Type Description Newtonsoft.Json.JsonSerializerSettings UriFilters Gets the URI filters. Declaration public IEnumerable UriFilters { get; } Property Value Type Description IEnumerable < UriFilter > Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) HttpObfuscationHelpers.LogHeaderText(ObfuscationConfiguration, IEnumerable>>) HttpObfuscationHelpers.LogHeaderText(ObfuscationConfiguration, String, IEnumerable)" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscatedValueProvider.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscatedValueProvider.html", + "title": "Class ObfuscatedValueProvider", + "keywords": "Class ObfuscatedValueProvider Newtonsoft JSONs value provider for obfuscated data. Inheritance Object ObfuscatedValueProvider Implements Newtonsoft.Json.Serialization.IValueProvider Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ObfuscatedValueProvider : IValueProvider Constructors ObfuscatedValueProvider(MemberInfo, IObfuscationEngine, ObfuscationTag) Initializes a new instance of the ObfuscatedValueProvider class. Declaration public ObfuscatedValueProvider(MemberInfo memberInfo, IObfuscationEngine obfuscationEngine, ObfuscationTag obfuscationTag) Parameters Type Name Description MemberInfo memberInfo The member information. IObfuscationEngine obfuscationEngine The obfuscation engine. ObfuscationTag obfuscationTag The obfuscation tag. Methods GetValue(Object) Declaration public object GetValue(object target) Parameters Type Name Description Object target Returns Type Description Object SetValue(Object, Object) Sets the value. Declaration public void SetValue(object target, object value) Parameters Type Name Description Object target The target to set the value on. Object value The value to set on the target. Implements Newtonsoft.Json.Serialization.IValueProvider Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpTraceType.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpTraceType.html", + "title": "Enum HttpTraceType", + "keywords": "Enum HttpTraceType Trace used for HTTP traces. Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum HttpTraceType Fields Name Description HttpRequest The HTTP request type HttpResponse The HTTP response type. Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(HttpTraceType, String, String) Validator.Equals(HttpTraceType, String) Validator.NotEquals(HttpTraceType, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.html", + "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry.HttpLogging", + "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry.HttpLogging Classes HttpLogData The log data for http trace. HttpObfuscationHelpers Static class that provides helper functions for HTTP Logging." + }, + "bot_media/Microsoft.Skype.Bots.Media.VideoQualityType.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoQualityType.html", + "title": "Enum VideoQualityType", + "keywords": "Enum VideoQualityType Type of the video media quality Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum VideoQualityType Fields Name Description ReceiveFreeze Video freeze for the received stream" + }, + "common/Microsoft.Graph.Communications.Common.Validator.html": { + "href": "common/Microsoft.Graph.Communications.Common.Validator.html", + "title": "Class Validator", + "keywords": "Class Validator Helper class with various condition validation utilities. Inheritance Object Validator Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class Validator Methods Any(IEnumerable) Determines whether a sequence contains any elements. Declaration public static bool Any(this IEnumerable source) Parameters Type Name Description IEnumerable source The IEnumerable to check for emptiness. Returns Type Description Boolean true if the source sequence contains any elements; otherwise, false . Equals(T, T, IComparer, String, String) Throw if value > is not equal to expected Declaration public static T Equals(T value, T expected, IComparer comparer, string paramName = null, string message = null) Parameters Type Name Description T value value T expected expected IComparer comparer comparer String paramName paramName String message Optional message. Returns Type Description T The input value if validation succeeded. Type Parameters Name Description T Type of the input value Exceptions Type Condition ArgumentException The argument value should match the expected value. Equals(T, T, String, String) Throw if value > is not equal to expected Declaration public static T Equals(this T value, T expected, string paramName = null, string message = null) Parameters Type Name Description T value value T expected expected String paramName paramName String message Optional message. Returns Type Description T The input value if validation succeeded. Type Parameters Name Description T Type of the input value Exceptions Type Condition ArgumentException The argument value should match the expected value. Equals(T, T, String) Throws the TE if value > is not equal to expected Declaration public static T Equals(this T value, T expected, string message = null) where TE : Exception Parameters Type Name Description T value value T expected expected String message Optional message. Returns Type Description T The input value if validation succeeded. Type Parameters Name Description T Type of the input value TE The type of Exception to throw FirstObject(IEnumerable) Gets the first object in the enumerable. Declaration public static object FirstObject(this IEnumerable source) Parameters Type Name Description IEnumerable source The IEnumerable to check for object. Returns Type Description Object langword_csharp_object if the source sequence contains an element; otherwise, null . FirstObject(IEnumerable, Func) Gets the first object in the enumerable that matches the specified predicate. Declaration public static object FirstObject(this IEnumerable source, Func predicate) Parameters Type Name Description IEnumerable source The IEnumerable to check for object. Func < Object , Boolean > predicate The Func used to match the object. Returns Type Description Object langword_csharp_object if the source sequence contains the matching element; otherwise, null . InRange(T, T, T, String) Throws ArgumentOutOfRangeException if value is not in the given range defined by minValue and maxValue Declaration public static void InRange(this T value, T minValue, T maxValue, string paramName = null) where T : IComparable Parameters Type Name Description T value value to verify T minValue Minimum range value T maxValue Maximum range value String paramName Variable name. Type Parameters Name Description T Comparable Exceptions Type Condition ArgumentOutOfRangeException If the value is out of range. IsEnum(Type) Throws the ArgumentException if given type is not Enum Declaration public static void IsEnum(this Type type) Parameters Type Name Description Type type The type IsFalse(Boolean, String, String) Throw ArgumentException condition is not false Declaration public static void IsFalse(this bool condition, string paramName = null, string message = null) Parameters Type Name Description Boolean condition Condition to check. String paramName Optional variable name. String message Optional message. IsFalse(Boolean, String) Throw T exception if condition is not false Declaration public static void IsFalse(this bool condition, string message = null) where T : Exception Parameters Type Name Description Boolean condition Condition to check. String message Optional message. Type Parameters Name Description T Exception type to raise IsNull(Object, String, String) Throw ArgumentException if obj is not null. Declaration public static void IsNull(this object obj, string paramName = null, string message = null) Parameters Type Name Description Object obj The object to check. String paramName Optional variable name. String message Optional message. IsTrue(Boolean, String, String) Throw ArgumentException condition is not true Declaration public static void IsTrue(this bool condition, string paramName = null, string message = null) Parameters Type Name Description Boolean condition Condition to check. String paramName Optional variable name. String message Optional message. IsTrue(Boolean, String) Throw T exception if condition is not true Declaration public static void IsTrue(this bool condition, string message = null) where T : Exception Parameters Type Name Description Boolean condition Condition to check. String message Optional message. Type Parameters Name Description T Exception type to raise NotEmpty(T, String, String) Throw ArgumentNullException if obj is null. Declaration public static T NotEmpty(this T obj, string paramName = null, string message = null) where T : IEnumerable Parameters Type Name Description T obj The object to check. String paramName Variable name. String message Optional message. Returns Type Description T The validated IEnumerable . Type Parameters Name Description T Enumerable type Exceptions Type Condition ArgumentNullException If the object is null. ArgumentException If the object is empty. NotEquals(T, T, String, String) Throw if value > is equal to unexpected Declaration public static T NotEquals(this T value, T unexpected, string paramName = null, string message = null) Parameters Type Name Description T value The value to compare. T unexpected The unexpected value. String paramName the parameter name. String message Optional message. Returns Type Description T The input value if validation succeeded. Type Parameters Name Description T Type of the input value Exceptions Type Condition ArgumentException The argument value should not match the expected value. NotNull(T, String, String) Throw ArgumentNullException if obj is null. Declaration public static T NotNull(this T obj, string paramName = null, string message = null) Parameters Type Name Description T obj The object. String paramName Name of the parameter. String message The message. Returns Type Description T The validated object. Type Parameters Name Description T The type of the object to validate. Exceptions Type Condition ArgumentException If the object is null. NotNullOrWhitespace(String, String, String) Throws the ArgumentException if string is null or whitespace. Declaration public static string NotNullOrWhitespace(this string value, string paramName = null, string message = null) Parameters Type Name Description String value value to check String paramName Variable name. String message Optional message. Returns Type Description String The validated String . Exceptions Type Condition ArgumentException If the string is null or whitespace. VerifyContains(IEnumerable, T) Throws the ArgumentException if collection does not contains the specified value Declaration public static void VerifyContains(this IEnumerable enumerable, T value) Parameters Type Name Description IEnumerable enumerable The enumerable. T value The value. Type Parameters Name Description T Type of value VerifyContainsKey(IDictionary, TK) Throws the ArgumentException if collection does not contain the specified key Declaration public static void VerifyContainsKey(this IDictionary dictionary, TK key) Parameters Type Name Description IDictionary dictionary The dictionary. TK key The key. Type Parameters Name Description TK Key type TV Value type VerifyContainsKey(IReadOnlyDictionary, TK) Throws the ArgumentException if collection does not contain the specified key Declaration public static void VerifyContainsKey(this IReadOnlyDictionary dictionary, TK key) Parameters Type Name Description IReadOnlyDictionary dictionary The dictionary. TK key The key. Type Parameters Name Description TK Key type TV Value type VerifyNotContainsKey(IDictionary, TK) Throws the ArgumentException if collection contains the specified key Declaration public static void VerifyNotContainsKey(this IDictionary dictionary, TK key) Parameters Type Name Description IDictionary dictionary The dictionary. TK key The key. Type Parameters Name Description TK Key type TV Value type" + }, + "common/Microsoft.Graph.Communications.Common.Transport.GraphRequestExtensions.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphRequestExtensions.html", + "title": "Class GraphRequestExtensions", + "keywords": "Class GraphRequestExtensions Extensions for IGraphRequest class. Inheritance Object GraphRequestExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class GraphRequestExtensions Methods ToHttpMethod(RequestType) Convert RequestType to the corresponding HTTP method. Declaration public static HttpMethod ToHttpMethod(this RequestType requestType) Parameters Type Name Description RequestType requestType Type of the request. Returns Type Description HttpMethod HttpMethod for the RequestType ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable) Converts IGraphRequest into a HttpRequestMessage . Declaration public static HttpRequestMessage ToHttpRequestMessage(this IGraphRequest graphRequest, JsonSerializerSettings jsonSerializerSettings = null, IEnumerable defaultProperties = null) Parameters Type Name Description IGraphRequest graphRequest The graph request to be converted. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. IEnumerable < IGraphProperty > defaultProperties The default properties. Returns Type Description HttpRequestMessage HttpRequestMessage corresponding to graphRequest . Type Parameters Name Description T Type of content available in the request." + }, + "common/Microsoft.Graph.Communications.Common.Transport.GraphRequest.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphRequest.html", + "title": "Class GraphRequest", + "keywords": "Class GraphRequest Inheritance Object GraphRequest < NoContentMessage > GraphRequest Implements IGraphRequest IGraphRequest < NoContentMessage > IGraphExchange < NoContentMessage > IGraphExchange Inherited Members GraphRequest.ToString() GraphRequest.Content GraphRequest.Properties GraphRequest.Uri GraphRequest.RequestType Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphRequest : GraphRequest, IGraphRequest, IGraphRequest, IGraphExchange, IGraphExchange Constructors GraphRequest(IGraphRequest) Initializes a new instance of the GraphRequest class. Declaration public GraphRequest(IGraphRequest graphRequest) Parameters Type Name Description IGraphRequest < NoContentMessage > graphRequest The graph request. GraphRequest(Uri, RequestType) Initializes a new instance of the GraphRequest class. Create the graph request object Declaration public GraphRequest(Uri location, RequestType requestType) Parameters Type Name Description Uri location The uri location for the request. RequestType requestType Type of the request. Implements IGraphRequest IGraphRequest IGraphExchange IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphRequestExtensions.ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable)" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.GraphObfuscationAttribute.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.GraphObfuscationAttribute.html", + "title": "Class GraphObfuscationAttribute", + "keywords": "Class GraphObfuscationAttribute Attribute used for decoration of data objects. This is used for obfuscation for logging. Inheritance Object Attribute GraphObfuscationAttribute Implements _Attribute Inherited Members Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, Boolean) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, Boolean) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo, Boolean) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, Boolean) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, Boolean) Attribute.GetCustomAttributes(Module, Type, Boolean) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, Boolean) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, Boolean) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, Boolean) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, Boolean) Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, Boolean) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, Boolean) Attribute.Equals(Object) Attribute.GetHashCode() Attribute.Match(Object) Attribute.IsDefaultAttribute() Attribute._Attribute.GetTypeInfoCount(UInt32) Attribute._Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) Attribute._Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) Attribute._Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) Attribute.TypeId Object.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax [AttributeUsage(AttributeTargets.Class | AttributeTargets.Enum | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] public class GraphObfuscationAttribute : Attribute, _Attribute Constructors GraphObfuscationAttribute() Declaration public GraphObfuscationAttribute() Properties Tag Gets or sets the tag. Declaration public ObfuscationTag Tag { get; set; } Property Value Type Description ObfuscationTag Implements System.Runtime.InteropServices._Attribute Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also Attribute" + }, + "common/Microsoft.Graph.html": { + "href": "common/Microsoft.Graph.html", + "title": "Namespace Microsoft.Graph", + "keywords": "Namespace Microsoft.Graph Classes AdditionalDataExtensions The identity set extensions" + }, + "common/Microsoft.Graph.Communications.Common.Transport.Http.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.Http.html", + "title": "Namespace Microsoft.Graph.Communications.Common.Transport.Http", + "keywords": "Namespace Microsoft.Graph.Communications.Common.Transport.Http Classes HttpUtils Utilities for Http transport" }, "core/index.html": { "href": "core/index.html", @@ -1009,6 +1004,11 @@ "title": "Graph Common Utilities Documentation", "keywords": "Graph Common Utilities Documentation This is the documentation for Microsoft.Graph.Communications.Common nuget package. This is the nuget containing all the utilities used throughout the Communications SDK. It contains telemetry, http, obfuscation support along with helper methods. For more information on logging please see the graph logger guide Select a class on the left to dive into the reference docs" }, + "client/index.html": { + "href": "client/index.html", + "title": "Graph Communications SDK", + "keywords": "Graph Communications SDK This SDK is the core component of Communications SDK. This contains all the standard features and functionality available in the Graph Stateful SDK. Authentication Provider All calls made and received by the SDK must be authenticated by the bot developers. The SDK requires the developers to implement the IRequestAuthenticationProvider interface and specify it when building the ICommunicationsClient . There are two parts to the interface. AuthenticateOutboundRequestAsync : This method should add the Authorization header to the outbound HTTP requests from the SDK. AuthenticateOutboundRequestAsync : This method should validate the Authorization header for incoming HTTP requests from Graph, extract the Tenant ID from that header and provide it to the SDK. Examples of the Authentication Provider can be found in samples . Notification Handling The Graph Platform sends out notifications via HTTP that need to be handled by the Bot Developers. The Platform sends out notifications on the notification url, and the bot developers should listen to HTTP messages on that url. Once the HTTP message has been received by the developer, they need to forward the message to ICommunicationsClient using the ProcessNotificationAsync method. The SDK processes the notification, calls the IRequestAuthenticationProvider and raises any corresponding events asynchronously. The SDK then returns a HttpResponseMessage that needs to be sent out as a response to the Graph Platform. Note Developers using ASP.NET Core should convert the HttpRequest object into HttpRequestMessage before passing it to the SDK. Also, they need to convert the resulting HttpResponseMessage into HttpResponse . Select a class on the left to dive into the reference docs Accompanying Information Accessing the Microsoft Teams Service through a Microsoft API Cloud Video Interop (CVI) partners and contact centers may integrate with Microsoft Teams to aid their solution. Contact centers may route calls to Microsoft Teams but may not build a separate or independent communications related solution while using Microsoft Teams as a base for the solution." + }, "calls_media/index.html": { "href": "calls_media/index.html", "title": "Graph Communications Media SDK", @@ -1019,509 +1019,509 @@ "title": "Graph Communications Calling SDK", "keywords": "Graph Communications Calling SDK The Calling components can be found in the Microsoft.Graph.Communications.Calls namespace. State Management The Graph Communications Calling SDK exposes a different set of APIs to manage states of resources in memory. Bots built using this SDK need to register event handlers for each newly created resource in order to be informed of any changes happening on that resource. The strengths and limitations of each are further explained in the State Management article. Media Session For calls with locally hosted media the ICallCollection has an extended AddAsync method which expects an IMediaSession object. This object contains the IAudioSocket and IVideoSocket composition. The IMediaSession also knows how to construct the MediaConfiguration required by the back end services to enable the AV stream to flow through the call instance. A Media Extension SDK has been added on top of this SDK to support locally hosted media scenarios. To use this extension the ICommunicationsClient must be built with MediaCommunicationsClientBuilderExtensions.SetMediaPlatformSettings . The MediaCommunicationsClientExtensions.CreateMediaSession extension method facilitates the creation of IMediaSession objects. Please see the calls with locally hosted media article for more information on the IMediaSession object. Select a class on the left to dive into the reference docs Accompanying Information Accessing the Microsoft Teams Service through a Microsoft API Cloud Video Interop (CVI) partners and contact centers may integrate with Microsoft Teams to aid their solution. Contact centers may route calls to Microsoft Teams but may not build a separate or independent communications related solution while using Microsoft Teams as a base for the solution." }, - "articles/calls/StateManagement.html": { - "href": "articles/calls/StateManagement.html", - "title": "State Management", - "keywords": "State Management All states of resources associated with a Call in the Graph Communications Calling SDK are handled internally. The notifications and events for a particular ICall or a particular resource contained in ICall are always received on a single application instance. This means that the instance should be maintaining the state of a call in memory and a single ICall object exists throughout the duration of the call. These are called Stateful calls and the bots are called Stateful bots. The notification or events for any call can hit any instance of the application. This means that everytime a notification comes to an instance, a new Call object is created by the Graph Communications Calling Core SDK and is destroyed once the notification/event has been handled. Any state required for the call should be maintained by the bot logic. These type of bots are called Stateless bots signifying that the Graph Communications Calling Core SDK itself does not maintain any state for the bot. Differences Between Stateless and Stateful Bots The major difference between Stateless and Stateful bots is that maintaining Stateful bots requires that the bot instance would not go down when a call is in progress. If the instance goes down, the call object is lost and no notifications or events are received by the Graph Communications Calling SDK and the calls gets dropped by the server. On the contrast, in Stateless bots, even if the bot instance goes down, the events and notifications go to the other instances of the bot and the bot can continue its logic. Important In Application Hosted Media Calls , the media is handled by a single instance of the bot. Therefore, all the notifications should reach the same instance of the bot for signaling of the media to be properly handled. Thus stateless scenarios for Application Hosted Media bots are not supported." - }, - "articles/calls/serviceHostedMediaCalls.html": { - "href": "articles/calls/serviceHostedMediaCalls.html", - "title": "Service Hosted Media Calls", - "keywords": "Service Hosted Media Calls Service Hosted Media calls are those calls in which the bot offloads the media to the Microsoft infrastructure. This makes the bot much more lightweight, but it cannot access the raw audio/video streams. Creating a Service Hosted Media Call When creating an object of the Call resource, MediaConfig needs to be set to ServiceHostedMediaConfig ." - }, - "articles/calls/register-calling-bot.html": { - "href": "articles/calls/register-calling-bot.html", - "title": "Registering a calling bot", - "keywords": "Registering a calling bot In this topic you will learn how to register a new Calling Bot. Register your bot in the Azure Bot Service Complete the following steps: Register a bot by creating a Bot Channels Registration through Azure Bot Channel Registration . Once you complete the registration, take a note of the registered config values (Bot Name, Application Id, and Application Secret). You will need these values later in the code samples. In the resource blade, click Channels . Enable the Microsoft Teams channel and enable calling on the Calling tab. Fill in the Webhook (for calling) where you will receive incoming notifications. E.g. https://{your domain}/api/calls . Refer to Connect a bot to channels for more information on how to configure channels. Permissions Add Microsoft Graph permissions for calling to your bot Microsoft Graph exposes granular permissions controlling the access apps have to resources. As a developer, you decide which permissions for Microsoft Graph your app requests. The Microsoft Graph Communications Calling APIs support Application permissions, which are used by apps that run without a signed-in user present; for example, apps that run as background services or bots. Application permissions can only be consented by a tenant administrator. Calling bots and applications have some capabilties that will need tenant administrator consent. Below is a list of those permissions: Permission Display String Description Admin Consent Required Calls.Initiate.All Initiate outgoing 1:1 calls from the app (preview) Allows the app to place outbound calls to a single user and transfer calls to users in your organization's directory, without a signed-in user. Yes Calls.InitiateGroupCall.All Initiate outgoing group calls from the app (preview) Allows the app to place outbound calls to multiple users and add participants to meetings in your organization, without a signed-in user. Yes Calls.JoinGroupCall.All Join Group Calls and Meetings as an app (preview) Allows the app to join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined with the privileges of a directory user to meetings in your tenant. Yes Calls.JoinGroupCallasGuest.All Join Group Calls and Meetings as a guest (preview) Allows the app to anonymously join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined as a guest to meetings in your tenant. Yes Calls.AccessMedia.All *see below* Access media streams in a call as an app (preview) Allows the app to get direct access to participant media streams in a call, without a signed-in user. Yes Important: You may not use the Microsoft.Graph.Calls.Media API to record or otherwise persist media content from calls or meetings that your bot accesses. Assigning permissions You pre-configure the application permissions your app needs when you register your app. To add permissions from the Azure Bot Registration Portal: From the Settings blade, click Manage . This is the link appearing by the Microsoft App ID . This link will open a window where you can click on API permissions and then click Add a permission in the right pane. Select Microsoft Graph , choose Application Permissions and then select the permissions your app requires in the Select Permissions dialog. Getting administrator consent An administrator can either consent to these permissions using the Azure portal when your app is installed in their organization, or you can provide a sign-up experience in your app through which administrators can consent to the permissions you configured. Once administrator consent is recorded by Azure AD, your app can request tokens without having to request consent again. You can rely on an administrator to grant the permissions your app needs at the Azure portal , but often a better option is to provide a sign-up experience for administrators by using the Azure AD v2.0 /adminconsent endpoint. Please refer to the instructions on constructing an Admin Consent URL for more detail. Note : Constructing the Tenant Admin Consent URL requires a configured Redirect URI/Reply URL in the App Registration Portal . To add reply URLs for your bot, access your bot registration, choose Advanced Options > Edit Application Manifest. Add your Redirect URI to the field replyURLs. Important : Any time you make a change to the configured permissions, you must also repeat the Admin Consent process. Changes made in the app registration portal will not be reflected until consent has been reapplied by the tenant's administrator. Register bot in Microsoft Teams The code samples can be used in combination with a Microsoft Teams App Manifest settings to add the Calling and Video buttons for a 1:1 bot interaction. To develop calling bot, add 'supportsCalling' and 'supportsVideo' boolean properties to the bots section in the app manifest and the bot is all set to receive calls once installed (either to a personal context or a team). App Manifests can be uploaded through the App Studio in the Microsoft Teams client. In the Teams client, select Apps from the left pane and then select App Studio . From the top pane, click Manifest editor and then Create a new app from the left pane. In the App details tab, provide the basic information. Navigate to the Capabilities section, and select the Bots tab. Then select Set Up in the right pane. Fill in the desired bot name Select the Select from one of my existing bots option, and find your bot from above in the dropdown. Check all options under Calling Bot and Scope Press Save" - }, - "articles/calls/MultipleAppSupport.html": { - "href": "articles/calls/MultipleAppSupport.html", - "title": "Supporting Multiple Applications Within Single Code Base", - "keywords": "Supporting Multiple Applications Within Single Code Base Some developers may wish to support multiple applications from within the same application code. With very little effort, this can be done using multiple instances of ICommunicationsClient . There are some steps that should be taken to ensure that we make outbound requests with the right application, and we forward incoming notifications to the right application. This writeup will demonstrate how to alter the existing samples to add multiple application support. We have not created a sample of this scenario explicitly given that it is not a standard way to use the Graph SDK. Create multiple communications clients First, each application instance requires it's own ICommunicationsClient instance, given that it supports a single IRequestAuthenticationProvider Let's change the Bot ICommunicationsClient Client to an IDictionary Clients and create our clients. /// /// Prevents a default instance of the class from being created. /// private Bot() { this.AddClient( Service.Instance.Configuration.MicrosoftAppId, Service.Instance.Configuration.MicrosoftAppPassword); this.AddClient( Service.Instance.Configuration.MicrosoftApp2Id, Service.Instance.Configuration.MicrosoftApp2Password); } private void AddClient(string appId, string appSecret) { // Create a unique notification uri for first app instance // This appends the app id to the callback uri so we get // https://base.uri/callbacks/{appId} var notificationUri = new Uri( Service.Instance.Configuration.CallControlBaseUrl, appId); var builder = new CommunicationsClientBuilder(\"AudioVideoPlaybackBot\", appId); builder .SetAuthenticationProvider( new AuthenticationProvider( appId, appSecret, Service.Instance.Configuration.TokenAudienceResourceLink)) .SetNotificationUrl(notificationUri) .SetMediaPlatformSettings(Service.Instance.Configuration.MediaPlatformSettings) .SetServiceBaseUrl(Service.Instance.Configuration.PlaceCallEndpointUrl); var client = builder.Build(); this.Clients.Add(appId, client); client.Calls().OnIncoming += this.CallsOnIncoming; client.Calls().OnUpdated += this.CallsOnUpdated; } /// /// Gets the contained app clients /// public IDictionary Clients { get; } Let's also add a reference to the ICallCollection to the call handler for ease of access. This will allow us to reference the correct collection/client from any given call id. /// /// Initializes a new instance of the class. /// /// The call collection. /// The call. public CallHandler(ICallCollection callCollection, ICall call); /// /// Gets the call collection /// public ICallCollection CallCollection { get; } /// /// Gets the call /// public ICall Call { get; } Handle notifications Next we need to adjust the incoming call controller to forward the notifications to the right client. If there is no need to handle incoming call, then the above configuration will automatically route the the correct apps endpoint. If we need to handle incoming call, we can either have a default app process all those scenarios, or the callback URI of each app can contain the app id. For example, if our service URI is https://base.uri/callback , we can set all our bots to use this URI directly, but then we lose knowledge of which app is receiving the incoming call. If we change each app's callback URI to https://base.uri/callback/{appId} (example: https://base.uri/callback/9ecd52e5-6592-42b7-b562-093f37f13bde , where the appId is 9ecd52e5-6592-42b7-b562-093f37f13bde) then we have the app context when an incoming call occurs. Of course there are other ways to get the app ID, like from the auth token or the payload, but this is one simple option. To handle the app id in the URI the controllers for callbacks need to be changed to the following: /// /// Gets a reference to singleton sample bot/client instance /// private IDictionary Clients => Bot.Instance.Clients; /// /// Handle a callback for an incoming call. /// Here we don't know what application is receiving the callback. /// /// /// The . /// [HttpPost] [Route(\"\")] public Task OnIncomingRequestAsync() { // Pick some app id to handle this call. var appId = this.Clients.Keys.First(); return this.OnIncomingRequestAsync(appId); } /// /// Handle a callback for an incoming call or notification. /// Here we've added the application id to the callback URI. /// /// /// The . /// [HttpPost] [Route(\"{appId}\")] public async Task OnIncomingRequestAsync(string appId) { Log.Info(new CallerInfo(), LogContext.FrontEnd, $\"Received HTTP {this.Request.Method}, {this.Request.RequestUri}\"); // Pass the incoming message to the sdk. The sdk takes care of what to do with it. var client = this.Clients[appId]; var response = await client.ProcessNotificationAsync(this.Request).ConfigureAwait(false); // Enforce the connection close to ensure that requests are evenly load balanced so // calls do no stick to one instance of the worker role. response.Headers.ConnectionClose = true; return response; } Additional notes There are a few items not addressed here. For instance, when a VTC joins a meeting, which app should it use? This has been purposefuly excluded from this guide given that it is unique business logic. Some may want a different bot configuration for each client, others may associate unique permissions to each bot and use depending on action being performed." - }, - "articles/calls/IVR.html": { - "href": "articles/calls/IVR.html", - "title": "Interactive Voice Response (IVR)", - "keywords": "Interactive Voice Response (IVR) Graph Communications Calling SDK and Core SDK can be used to make and manage IVR calls. Features Join exiting calls Answer incoming calls Subscribe to tones Transfer call Play media Record Cancel media operations Calling SDK Snippets Join Existing Call and Answer Incoming Call Please refer to the concept articles Redirect and Transfer In order to do a redirect or transfer, you need to create an invitation object. This invitation target is the transferee in blind transfer and the original caller in consultative transfer. var target = new InvitationParticipantInfo { Identity = new IdentitySet { User = new Identity { Id = \"**The Target's AAD ID**\", DisplayName = \"**(optional) The Target's Display Name**\", } } }; ICall call = this.GetIncomingCall(); await call.RedirectAsync(new[] { target }).ConfigureAwait(false); Blind transfer To make a blind transfer, only the target needs to be specified. ICall oritinalCall = this.Client.Calls()[\"*call id to transfer*\"]; await oritinalCall.TransferAsync(target).ConfigureAwait(false); Consultative transfer ICall newCall = this.Client.Calls()[\"*call id of second call*\"]; await newCall.TransferAsync(target, \"*id of the original call*\").ConfigureAwait(false); Subscribe to tones ICall call = this.Client.Calls()[\"*id of the call*\"]; await call.SubscribeToToneAsync().ConfigureAwait(false); Any tones that are received are sent as part of a call update in ToneInfo property of the call resource. Play media prompts ICall call = this.Client.Calls()[\"*id of the call*\"]; await call.PlayPromptAsync(*A list of media prompts to play*).ConfigureAwait(false); Record ICall call = this.Client.Calls()[\"*id of the call*\"]; HttpClient httpClient = this.HttpClient; RecordOperationResult result = await call.RecordAsync(*record options*).ConfigureAwait(false); string location = result.RecordResourceLocation; string token = result.RecordResourceAccessToken; // Stream the content of the recording somewhere. using (var outputStream = new MemoryStream()) using (var request = new HttpRequestMessage(HttpMethod.Get, new Uri(location))) { // Set the authorization header. request.Headers.Authorization = new AuthenticationHeaderValue(\"Bearer\", token); using(var response = await httpClient.SendAsync(request).ConfigureAwait(false)) using(var content = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) { await content.CopyToAsync(outputStream); outputStream?.Seek(0, SeekOrigin.Begin); // Do something with stream. } } Cancel media processing This API will cancel all prompts that are queued to be played. ICall call = this.Client.Calls()[\"*id of the call*\"]; await call.CancelMediaProcessingAsync().ConfigureAwait(false);" - }, - "articles/calls/calling-notifications.html": { - "href": "articles/calls/calling-notifications.html", - "title": "Notifications in Calling", - "keywords": "Notifications in Calling Refer to Registering a Calling Bot on how to register the callback URL. This callback is used for all incoming calls to the application. Protocol determination The incoming notification is provided in legacy format for compatibility with the previous protocol . In order to convert the call to the Microsoft Graph protocol, the bot must determine the notification is in legacy format and reply with: HTTP/1.1 204 No Content The application will again receive the notification but this time it will be in the Microsoft Graph protocol. You may configure the protocol your application supports and avoid receiving the initial callback in legacy format. The setting is available as a configuration option in the Skype Channel. Redirects for region affinity We will invoke your callback from the data-center hosting the call. The call may start in any data-center and does not take into account region affinities. The notification will be sent to your deployment depending on the GeoDNS resolution. If your application determines, by inspecting the initial notification payload or otherwise, that it needs to run in a different deployment, the application may reply with: HTTP/1.1 302 Found Location: your-new-location You may decide to pickup the call and answer . You can specify the callback URL to handle this particular call. This is useful for stateful instances where your call is handled by a particular partition and you want to embed this information on the callback URL for routing to the right instance. Authenticating the callback Application should inspect the token passed by on the notification to validate the request. Whenever the API raises a web hook event, the API gets an OAUTH token from us, with audience as the application's App ID and adds it in the Authorization header as a Bearer token. The application is expected to validate this token before accepting the callback request. POST https://bot.contoso.com/api/calls Content-Type: application/json Authentication: Bearer \"value\": [ \"subscriptionId\": \"2887CEE8344B47C291F1AF628599A93C\", \"subscriptionExpirationDateTime\": \"2016-11-20T18:23:45.9356913Z\", \"changeType\": \"updated\", \"resource\": \"/app/calls/8A934F51F25B4EE19613D4049491857B\", \"resourceData\": { \"@odata.type\": \"#microsoft.graph.call\", \"state\": \"Established\" } ] The OAUTH token would have values like the following, and will be signed by us. The openid configuration published at https://api.aps.skype.com/v1/.well-known/OpenIdConfiguration can be used to verify the token. { \"aud\": \"0efc74f7-41c3-47a4-8775-7259bfef4241\", \"iss\": \"https://api.botframework.com\", \"iat\": 1466741440, \"nbf\": 1466741440, \"exp\": 1466745340, \"tid\": \"1fdd12d0-4620-44ed-baec-459b611f84b2\" } aud audience is the App ID URI specified for the application. tid is the tenant id for contoso iss is the token issuer, https://api.botframework.com The listener interface on the web hook URL can validate the token, ensure it has not expired, checking whether it has been signed by our published openid configuration. You must also check whether audience matches your App ID before accepting the callback request. Sample shows how to validate inbound requests. Additional information You can read more about AAD tokens and Validation" - }, - "articles/Testing.html": { - "href": "articles/Testing.html", - "title": "Testing of Bots", - "keywords": "Testing of Bots This document describes how to setup the Graph Communications Calling SDK to run on your localhost, run tests against it against the Graph Platform. Caution Do not use this testing setup for production traffic. Please limit it to debugging your bot locally with test traffic because of security concerns. Prerequisites The testing setup requires ngrok to create tunnels to localhost. Go to ngrok and sign up for a free account. Once you signed up, go to the dashboard and get your authtoken. Create an ngrok configuration file ngrok.yml with the following data authtoken: Tip Free ngrok account does not provide static tunnels. Tunnels change everytime a tunnel is created. So, if using free account, it is recommended to not close ngrok until it's use is completed. Tip Ngrok does not require sign up if you do not use TCP tunnels. Setting up Signaling In order for the platform to talk to your bot, the bot needs to be reached over the internet. So, an ngrok tunnel is created in http mode with an address pointing to a port on your localhost. Add the following lines to your ngrok config tunnels: signaling: addr: proto: http Setting up Application Hosted Media Note This section is only required for Application Hosted Media bots and can be skipped if you do not host media yourself. Application Hosted Media uses certificates and TCP tunnels to properly work. The following steps are required in order for proper media establishment. Ngrok's public TCP endpoints have fixed urls. They are 0.tcp.ngrok.io , 1.tcp.ngrok.io , etc. You should have a dns CNAME entry for your service that points to these urls. In this example, let's say 0.bot.contoso.com is pointing to 0.tcp.ngrok.io , and similarly for other urls. Now you require an SSL certificate for the url you own. To make it easy, use an SSL certificate issued to a wild card domain. In this case, it would be *.bot.contoso.com . This ssl certificate is validated by Media flow so should match your media flow's public url. Note down the thumbprint and install the certificate in your machine certificates. Now, we setup a TCP tunnel to forward the traffic to localhost. Write the following lines into your ngrok config. media: addr: proto: tcp Important Because ngrok's tcp urls can be same for multiple users (just differing in ports), it is possible for a third party to look like your service. This is a security issue. Therefore this document should be followed only for testing and also using a separate domain that is not linked to your production services. Start Ngok Now that ngrok configuration is ready, start it up. Download the ngrok executable and run the following command ngrok.exe start -all -config This would start ngrok and provide you the public urls which provide the tunnels to your localhost. The output looks like the following Forwarding http://signal.ngrok.io -> localhost:12345 Forwarding https://signal.ngrok.io -> localhost:12345 Forwarding tcp://1.tcp.ngrok.io:12332 -> localhost:8445 Here, 12345 is my signaling port, 8445 is the local media port and 12332 is the remote media port exposed by ngrok. Note that we have a forwarding from 1.bot.contoso.com to 1.tcp.ngrok.io . This will be used as the media url for bot. Update Code Once ngrok is up and running, we update the code to use the config we just setup. Update Signaling In the builder, change the NotficationUrl to the signaling url provided by ngrok. clientBuilder.SetNotificationUrl( new Uri(\"https://signal.ngrok.io/notificationEndpoint\")) Important Replace signal with the one provided by ngrok and the NotificationEndpoint with the controller path that receives notification. Important The url in SetNotificationUrl must be HTTPS. Important Your local instance must be listening to http traffic on the signaling port. The requests made by Graph Platform will reach the bot as localhost http traffic when End to End encryption is not setup. Update Media Update your MediaPlatformSettings to the following. var mediaPlatform = new MediaPlatformSettings { ApplicationId = MediaPlatformInstanceSettings = new MediaPlatformInstanceSettings { CertificateThumbprint = , InstanceInternalPort = , InstancePublicPort = , InstancePublicIPAddress = new IPAddress(0x0), ServiceFqdn = , }, } Caution The Certificate Thumbprint provided above should match the Service FQDN. That is why the DNS entries are required. Caveats The free accounts of ngrok do NOT provide End to End encryption. The HTTPS data ends at the ngrok url and the data flows unencrypted from ngrok to localhost. You require paid ngrok account and configuration update to use End to End encryption. See ngrok docs for steps on setting up secure E2E tunnels. Because the bot callback url is dynamic, incoming call scenarios won't work as they are part of bot registration and they are static. One way to fix this is to use a paid ngrok account which provides fixed subdomains to which you can point your bot and the platform." + "bot_media/index.html": { + "href": "bot_media/index.html", + "title": "Graph Communications Bot Media SDK", + "keywords": "Graph Communications Bot Media SDK The Real-time Media Platform enables bots to interact with Microsoft Teams calls and meetings using real-time voice, video and screen sharing. This is an advanced capability which allows the bot to send and receive voice and video content frame by frame. The bot has \"raw\" access to the voice, video and screen sharing media streams. (Bots which process media themselves are called application-hosted media bots, as opposed to simpler service-hosted media bots that rely on the Real-time Media platform for all media processing.) For example, in a 1:1 call with a bot, as the user speaks, the bot will receive 50 audio frames per second, with each frame containing 20 milliseconds (ms) of audio. An application-hosted media bot can perform real-time speech recognition as the audio frames are received, rather than having to wait for a recording after the user has stopped speaking. The bot can also send and receive high-definition-resolution video, including video-based screen sharing content. The platform provides a simple \"socket\"-like API for the bot to send and receive media, and handles the real-time encoding and decoding of audio/video packets, using codecs such as SILK and G.722 for audio and H.264 for video. The platform also handles all media packet encryption/decryption and packet network transmission automatically, so the bot just needs to concern itself with the actual audio/video content. A real-time media bot may participate in 1:1 calls as well as meetings with multiple participants. Microsoft Real-Time Media Platform for Bots API (\"Media Access API\") Accompanying Documentation The Media Access API is offered under the terms of the Microsoft APIs Terms of Use ( https://docs.microsoft.com/en-us/legal/microsoft-apis/terms-of-use ) and this accompanying documentation. \"Media Access API\" means (i) any form of machine accessible application programming interface that Microsoft makes publicly available which provides access to a Microsoft Offering that includes media content (e.g., audio or video), including all associated tools, elements, components and executables therein, (ii) any Microsoft sample code that enables interactions with a Microsoft Offering, and (iii) documentation that Microsoft makes available to help enable your access to the Media Access API. Additional Restriction : You may NOT use the Media Access API to record or otherwise persist media content from calls or meetings that your Application accesses, or data derived from that media content. Select a class on the left to dive into the reference docs" }, - "README.html": { - "href": "README.html", - "title": "Get started", - "keywords": "Get started Review the documentation to understand the concepts behind using our SDK (which is also used by the samples). Get started quickly with our samples ." + "articles/calls/StateManagement.html": { + "href": "articles/calls/StateManagement.html", + "title": "State Management", + "keywords": "State Management All states of resources associated with a Call in the Graph Communications Calling SDK are handled internally. The notifications and events for a particular ICall or a particular resource contained in ICall are always received on a single application instance. This means that the instance should be maintaining the state of a call in memory and a single ICall object exists throughout the duration of the call. These are called Stateful calls and the bots are called Stateful bots. The notification or events for any call can hit any instance of the application. This means that everytime a notification comes to an instance, a new Call object is created by the Graph Communications Calling Core SDK and is destroyed once the notification/event has been handled. Any state required for the call should be maintained by the bot logic. These type of bots are called Stateless bots signifying that the Graph Communications Calling Core SDK itself does not maintain any state for the bot. Differences Between Stateless and Stateful Bots The major difference between Stateless and Stateful bots is that maintaining Stateful bots requires that the bot instance would not go down when a call is in progress. If the instance goes down, the call object is lost and no notifications or events are received by the Graph Communications Calling SDK and the calls gets dropped by the server. On the contrast, in Stateless bots, even if the bot instance goes down, the events and notifications go to the other instances of the bot and the bot can continue its logic. Important In Application Hosted Media Calls , the media is handled by a single instance of the bot. Therefore, all the notifications should reach the same instance of the bot for signaling of the media to be properly handled. Thus stateless scenarios for Application Hosted Media bots are not supported." }, - "README.Internal.html": { - "href": "README.Internal.html", - "title": "How to generate docs", - "keywords": "How to generate docs Download and unzip docfx.zip from https://github.com/dotnet/docfx/releases , extract it to a local folder, and add it to PATH so you can run it anywhere. Install Visual STUDIO 2017 Developer tools v15.0 and later After installation, open a X64 Native Tools Command Prompt for VS 2017. Run docfx in the docs folder, this will generate a _site folder Pack the _site folder with the project level README.md that explains how to go through the docs. How to serve the docs Download and unzip docfx.zip from https://github.com/dotnet/docfx/releases , extract it to a local folder, and add it to PATH so you can run it anywhere. Open a console window and cd to the directory which contains the _site folder Serve the docs site using docfx serve .\\_site command Goto http://localhost:8080 in your browser to view the documentation." + "articles/calls/serviceHostedMediaCalls.html": { + "href": "articles/calls/serviceHostedMediaCalls.html", + "title": "Service Hosted Media Calls", + "keywords": "Service Hosted Media Calls Service Hosted Media calls are those calls in which the bot offloads the media to the Microsoft infrastructure. This makes the bot much more lightweight, but it cannot access the raw audio/video streams. Creating a Service Hosted Media Call When creating an object of the Call resource, MediaConfig needs to be set to ServiceHostedMediaConfig ." }, - "common/Microsoft.Graph.Communications.Common.Telemetry.TransactionDirection.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.TransactionDirection.html", - "title": "Enum TransactionDirection", - "keywords": "Enum TransactionDirection Direction for request message. Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum TransactionDirection Fields Name Description Incoming The incoming request message. Outgoing The outgoing request message. Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(TransactionDirection, String, String) Validator.Equals(TransactionDirection, String) Validator.NotEquals(TransactionDirection, String, String)" + "articles/calls/register-calling-bot.html": { + "href": "articles/calls/register-calling-bot.html", + "title": "Registering a calling bot", + "keywords": "Registering a calling bot In this topic you will learn how to register a new Calling Bot. Register your bot in the Azure Bot Service Complete the following steps: Register a bot by creating a Bot Channels Registration through Azure Bot Channel Registration . Once you complete the registration, take a note of the registered config values (Bot Name, Application Id, and Application Secret). You will need these values later in the code samples. In the resource blade, click Channels . Enable the Microsoft Teams channel and enable calling on the Calling tab. Fill in the Webhook (for calling) where you will receive incoming notifications. E.g. https://{your domain}/api/calls . Refer to Connect a bot to channels for more information on how to configure channels. Permissions Add Microsoft Graph permissions for calling to your bot Microsoft Graph exposes granular permissions controlling the access apps have to resources. As a developer, you decide which permissions for Microsoft Graph your app requests. The Microsoft Graph Communications Calling APIs support Application permissions, which are used by apps that run without a signed-in user present; for example, apps that run as background services or bots. Application permissions can only be consented by a tenant administrator. Calling bots and applications have some capabilties that will need tenant administrator consent. Below is a list of those permissions: Permission Display String Description Admin Consent Required Calls.Initiate.All Initiate outgoing 1:1 calls from the app (preview) Allows the app to place outbound calls to a single user and transfer calls to users in your organization's directory, without a signed-in user. Yes Calls.InitiateGroupCall.All Initiate outgoing group calls from the app (preview) Allows the app to place outbound calls to multiple users and add participants to meetings in your organization, without a signed-in user. Yes Calls.JoinGroupCall.All Join Group Calls and Meetings as an app (preview) Allows the app to join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined with the privileges of a directory user to meetings in your tenant. Yes Calls.JoinGroupCallasGuest.All Join Group Calls and Meetings as a guest (preview) Allows the app to anonymously join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined as a guest to meetings in your tenant. Yes Calls.AccessMedia.All *see below* Access media streams in a call as an app (preview) Allows the app to get direct access to participant media streams in a call, without a signed-in user. Yes Important: You may not use the Microsoft.Graph.Calls.Media API to record or otherwise persist media content from calls or meetings that your bot accesses. Assigning permissions You pre-configure the application permissions your app needs when you register your app. To add permissions from the Azure Bot Registration Portal: From the Settings blade, click Manage . This is the link appearing by the Microsoft App ID . This link will open a window where you can click on API permissions and then click Add a permission in the right pane. Select Microsoft Graph , choose Application Permissions and then select the permissions your app requires in the Select Permissions dialog. Getting administrator consent An administrator can either consent to these permissions using the Azure portal when your app is installed in their organization, or you can provide a sign-up experience in your app through which administrators can consent to the permissions you configured. Once administrator consent is recorded by Azure AD, your app can request tokens without having to request consent again. You can rely on an administrator to grant the permissions your app needs at the Azure portal , but often a better option is to provide a sign-up experience for administrators by using the Azure AD v2.0 /adminconsent endpoint. Please refer to the instructions on constructing an Admin Consent URL for more detail. Note : Constructing the Tenant Admin Consent URL requires a configured Redirect URI/Reply URL in the App Registration Portal . To add reply URLs for your bot, access your bot registration, choose Advanced Options > Edit Application Manifest. Add your Redirect URI to the field replyURLs. Important : Any time you make a change to the configured permissions, you must also repeat the Admin Consent process. Changes made in the app registration portal will not be reflected until consent has been reapplied by the tenant's administrator. Register bot in Microsoft Teams The code samples can be used in combination with a Microsoft Teams App Manifest settings to add the Calling and Video buttons for a 1:1 bot interaction. To develop calling bot, add 'supportsCalling' and 'supportsVideo' boolean properties to the bots section in the app manifest and the bot is all set to receive calls once installed (either to a personal context or a team). App Manifests can be uploaded through the App Studio in the Microsoft Teams client. In the Teams client, select Apps from the left pane and then select App Studio . From the top pane, click Manifest editor and then Create a new app from the left pane. In the App details tab, provide the basic information. Navigate to the Capabilities section, and select the Bots tab. Then select Set Up in the right pane. Fill in the desired bot name Select the Select from one of my existing bots option, and find your bot from above in the dropdown. Check all options under Calling Bot and Scope Press Save" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventFormatterFlags.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventFormatterFlags.html", - "title": "Enum LogEventFormatterFlags", - "keywords": "Enum LogEventFormatterFlags The log event formatter enums Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum LogEventFormatterFlags Fields Name Description ForDefault For default case, which includes all fields. ForILoggerFactory For ILoggerFactory binding format, which doesn't include component and level, as these fields are set in ILogger outside of message. IncludeManagedThreadId Managed thread ID IncludeProcessId Process ID IncludesCallInfo Call info IncludesComponent Component IncludesCorrelationId Correlation ID IncludesLevel Level IncludesProperties Properties IncludesTimestamp Timestamp Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(LogEventFormatterFlags, String, String) Validator.Equals(LogEventFormatterFlags, String) Validator.NotEquals(LogEventFormatterFlags, String, String)" + "bot_media/Microsoft.Skype.Bots.Media.UnmixedAudioBuffer.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.UnmixedAudioBuffer.html", + "title": "Struct UnmixedAudioBuffer", + "keywords": "Struct UnmixedAudioBuffer Represents an unmanaged audio buffer containing unmixed data corresponding to a specific speaker in a conference. This structure contains a pointer to the unmanaged audio buffer, the length of the buffer and the ID of the audio source of the active speaker. Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() ValueType.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public struct UnmixedAudioBuffer Properties ActiveSpeakerId The ID of the audio source of the active speaker. Declaration public uint ActiveSpeakerId { get; } Property Value Type Description UInt32 Data Pointer to the unmanaged media buffer. Declaration public IntPtr Data { get; } Property Value Type Description IntPtr Length The length in bytes of the media buffer. Declaration public long Length { get; } Property Value Type Description Int64 OriginalSenderTimestamp Original timestamp of the unmixed audio buffer as it was sourced, in 100-ns units. This property may differ from AudioMediaBuffer.Timestamp, which represents the timestamp of when the media content was received by the bot. Declaration public long OriginalSenderTimestamp { get; } Property Value Type Description Int64 Remarks The OriginalSenderTimestamp can have a value of 0 under various circumstances, eg. in the first 4-5 seconds of the call, or during various media events (media reconnects, sample rate changes, etc)." }, - "common/Microsoft.Graph.Communications.Common.HttpConstants.html": { - "href": "common/Microsoft.Graph.Communications.Common.HttpConstants.html", - "title": "Class HttpConstants", - "keywords": "Class HttpConstants The constant values for http. Inheritance Object HttpConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpConstants Fields GraphV1Prefixes Expected values of x-ms-gateway-serviceRoot header in the requests coming in to PMA from GraphV1 endpoints Declaration public static readonly IEnumerable GraphV1Prefixes Field Value Type Description IEnumerable < String >" + "core/Microsoft.Graph.Communications.Core.GraphModelExtensions.html": { + "href": "core/Microsoft.Graph.Communications.Core.GraphModelExtensions.html", + "title": "Class GraphModelExtensions", + "keywords": "Class GraphModelExtensions Generic graph model extensions. Inheritance Object GraphModelExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class GraphModelExtensions Methods FixModel(Object) Fixes the model to match latest protocol. Declaration public static void FixModel(object object) Parameters Type Name Description Object object The object." }, - "common/Microsoft.Graph.Communications.Common.HttpConstants.HeaderNames.html": { - "href": "common/Microsoft.Graph.Communications.Common.HttpConstants.HeaderNames.html", - "title": "Class HttpConstants.HeaderNames", - "keywords": "Class HttpConstants.HeaderNames The header names. Inheritance Object HttpConstants.HeaderNames Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HeaderNames Fields Accept The accept header. Declaration public const string Accept = \"Accept\" Field Value Type Description String AccessControlAllowCredentials Access-Control-Allow-Credentials Declaration public const string AccessControlAllowCredentials = \"Access-Control-Allow-Credentials\" Field Value Type Description String AccessControlAllowHeaders Access-Control-Allow-Headers Declaration public const string AccessControlAllowHeaders = \"Access-Control-Allow-Headers\" Field Value Type Description String AccessControlAllowOrigin Access-Control-Allow-Origin Declaration public const string AccessControlAllowOrigin = \"Access-Control-Allow-Origin\" Field Value Type Description String AccessControlMaxAge Access-Control-Max-Age Declaration public const string AccessControlMaxAge = \"Access-Control-Max-Age\" Field Value Type Description String AccessControlRequestHeaders Access-Control-Request-Headers Declaration public const string AccessControlRequestHeaders = \"Access-Control-Request-Headers\" Field Value Type Description String AccessControlRequestMethod Access-Control-Request-Method Declaration public const string AccessControlRequestMethod = \"Access-Control-Request-Method\" Field Value Type Description String Authorization The authorization header. Declaration public const string Authorization = \"Authorization\" Field Value Type Description String CacheControl The cache control header. Declaration public const string CacheControl = \"Cache-Control\" Field Value Type Description String CalleeRegion The callee region header. Declaration public const string CalleeRegion = \"X-Microsoft-Skype-Callee-Region\" Field Value Type Description String CallerRegion The caller region header. Declaration public const string CallerRegion = \"X-Microsoft-Skype-Caller-Region\" Field Value Type Description String ChainId The chain identifier header. This header is used to correlate requests to each other within the NGC stack. Declaration public const string ChainId = \"X-Microsoft-Skype-Chain-ID\" Field Value Type Description String ClientRequestId The client request identifier header. This header is used to track individual requests between the client and SF services. Declaration public const string ClientRequestId = \"Client-Request-Id\" Field Value Type Description String Connection The connection header. Declaration public const string Connection = \"Connection\" Field Value Type Description String ContentLength The content length header. Declaration public const string ContentLength = \"Content-Length\" Field Value Type Description String ContentType The content type header. Declaration public const string ContentType = \"Content-Type\" Field Value Type Description String ContextId The context identifier header. Declaration public const string ContextId = \"ContextId\" Field Value Type Description String Date The date header. Declaration public const string Date = \"Date\" Field Value Type Description String Duration The duration header. Declaration public const string Duration = \"Duration\" Field Value Type Description String GatewayServiceRootHeader the header that graph adds to the proxied request to PMA Declaration public const string GatewayServiceRootHeader = \"x-ms-gateway-serviceRoot\" Field Value Type Description String Host The host header. Declaration public const string Host = \"Host\" Field Value Type Description String Location The location header. Declaration public const string Location = \"Location\" Field Value Type Description String MessageId The message identifier header. This header is used to track individual requests within the NGC stack. Declaration public const string MessageId = \"X-Microsoft-Skype-Message-ID\" Field Value Type Description String MsAttribution X-MS-Attribution. Declaration public const string MsAttribution = \"X-MS-Attribution\" Field Value Type Description String MsDiagnostics The microsoft graph diagnostics header. Declaration public const string MsDiagnostics = \"x-ms-ags-diagnostic\" Field Value Type Description String MsParticipants X-MS-Participants. Declaration public const string MsParticipants = \"X-MS-Participants\" Field Value Type Description String ODataVersion The odata version header. Declaration public const string ODataVersion = \"OData-Version\" Field Value Type Description String Origin Origin Declaration public const string Origin = \"Origin\" Field Value Type Description String OriginalMessageId The original message identifier header. Declaration public const string OriginalMessageId = \"X-Microsoft-Skype-Original-Message-ID\" Field Value Type Description String PmaInstanceUrl The pma instance URL. Used to retarget PSA to a particular PMA instance. Declaration public const string PmaInstanceUrl = \"X-Microsoft-Pma-Instance\" Field Value Type Description String RedirectDu The redirect du header. Declaration public const string RedirectDu = \"X-Plat-Redirect-Du\" Field Value Type Description String RedirectRegion The redirect region header. Declaration public const string RedirectRegion = \"X-Plat-Redirect-Region\" Field Value Type Description String RequestId The request identifier header. This header is returned by graph to identify the specific request. Declaration public const string RequestId = \"Request-Id\" Field Value Type Description String RoutingTargetRegion The Routing-Target-Region header. Declaration public const string RoutingTargetRegion = \"Routing-Target-Region\" Field Value Type Description String ScenarioId The scenario identifier header. This header is used to correlate requests to each other between client and SF services. Declaration public const string ScenarioId = \"Scenario-Id\" Field Value Type Description String SchedulingServiceTelemetryId Scheduling service telemetry header. This header is used to correlate requests with SS service. Declaration public const string SchedulingServiceTelemetryId = \"X-MS-Skype-MLC-Telemetry-Id\" Field Value Type Description String Skypetoken X-Skypetoken Declaration public const string Skypetoken = \"X-Skypetoken\" Field Value Type Description String StrictTransportSecurity The strict transport security header. Declaration public const string StrictTransportSecurity = \"Strict-Transport-Security\" Field Value Type Description String Tenant The tenant header Declaration public const string Tenant = \"X-Microsoft-Tenant\" Field Value Type Description String TenantRegion The tenant region header. Declaration public const string TenantRegion = \"Tenant-Region\" Field Value Type Description String ThrowSite The throw site header. Declaration public const string ThrowSite = \"X-ThrowSite\" Field Value Type Description String TransferEncoding The transfer encoding header. Declaration public const string TransferEncoding = \"Transfer-Encoding\" Field Value Type Description String UserAgent The user agent header. Declaration public const string UserAgent = \"User-Agent\" Field Value Type Description String WebhooksResource Webhooks-WorkloadResource Declaration public const string WebhooksResource = \"Webhooks-WorkloadResource\" Field Value Type Description String XMsClientUserAgent Client User Agent header. This header has the user agent in requests. Used in requests to presence service at the moment. Declaration public const string XMsClientUserAgent = \"X-Ms-Client-User-Agent\" Field Value Type Description String XMsClientVersion The client version header. This header has the client version in requests. Used in requests to presence service at the moment. Declaration public const string XMsClientVersion = \"X-Ms-Client-Version\" Field Value Type Description String XMsCorrelationId the correlation id header. This header is used to correlate requests with presence service at the moment. Declaration public const string XMsCorrelationId = \"X-Ms-Correlation-Id\" Field Value Type Description String" + "core/Microsoft.Graph.Communications.Core.Exceptions.html": { + "href": "core/Microsoft.Graph.Communications.Core.Exceptions.html", + "title": "Namespace Microsoft.Graph.Communications.Core.Exceptions", + "keywords": "Namespace Microsoft.Graph.Communications.Core.Exceptions Classes ClientException Class for client error exception. ErrorConstants Error Constants ErrorConstants.Codes Error Codes ErrorConstants.Messages Error Messages ServiceException A Service Exception." }, - "client/Microsoft.Graph.Communications.Resources.CollectionEventHandler-2.html": { - "href": "client/Microsoft.Graph.Communications.Resources.CollectionEventHandler-2.html", - "title": "Delegate CollectionEventHandler", - "keywords": "Delegate CollectionEventHandler The call collection event handler delegate. Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public delegate void CollectionEventHandler(TSender sender, CollectionEventArgs e); Parameters Type Name Description TSender sender The sender. CollectionEventArgs e The event arguments. Type Parameters Name Description TSender The type of the sender. TEntity The type of the arguments. Constructors CollectionEventHandler(Object, IntPtr) Declaration public CollectionEventHandler(object object, IntPtr method) Parameters Type Name Description Object object IntPtr method Methods BeginInvoke(TSender, CollectionEventArgs, AsyncCallback, Object) Declaration public virtual IAsyncResult BeginInvoke(TSender sender, CollectionEventArgs e, AsyncCallback callback, object object) Parameters Type Name Description TSender sender CollectionEventArgs e AsyncCallback callback Object object Returns Type Description IAsyncResult EndInvoke(IAsyncResult) Declaration public virtual void EndInvoke(IAsyncResult result) Parameters Type Name Description IAsyncResult result Invoke(TSender, CollectionEventArgs) Declaration public virtual void Invoke(TSender sender, CollectionEventArgs e) Parameters Type Name Description TSender sender CollectionEventArgs e" + "common/Microsoft.Graph.Communications.Common.Observable-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.Observable-1.html", + "title": "Class Observable", + "keywords": "Class Observable Observable Base class Inheritance Object ObjectRoot Observable Implements IObservable IObserver INotifyCollectionChanged Inherited Members ObjectRoot.GraphLogger Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class Observable : ObjectRoot, IObservable, IObserver, INotifyCollectionChanged Type Parameters Name Description T Type of the value being observed. Constructors Observable(IGraphLogger) Initializes a new instance of the Observable class. Declaration public Observable(IGraphLogger logger) Parameters Type Name Description IGraphLogger logger Logger instance. Properties Observers Gets the observers. Declaration public ICollection> Observers { get; } Property Value Type Description ICollection < IObserver > Methods OnCompleted() Notify observers of completion. Declaration public void OnCompleted() OnError(Exception) Notify observers of error. Declaration public void OnError(Exception error) Parameters Type Name Description Exception error Exception information. OnNext(T) Notify observers. Declaration public void OnNext(T value) Parameters Type Name Description T value Value to observers. OnNext(T, IEnumerable>) Notify observers. Declaration public void OnNext(T value, IEnumerable> observersSubset) Parameters Type Name Description T value Value to observers. IEnumerable < IObserver > observersSubset Subset of observers to notify. Subscribe(IObserver) Notifies the provider that an observer is to receive notifications. Declaration public virtual IDisposable Subscribe(IObserver observer) Parameters Type Name Description IObserver observer The object that is to receive notifications. Returns Type Description IDisposable A reference to an interface that allows observers to stop receiving notifications before the provider has finished sending them. Events CollectionChanged Collection changed event. Declaration public event NotifyCollectionChangedEventHandler CollectionChanged Event Type Type Description NotifyCollectionChangedEventHandler Implements System.IObservable System.IObserver System.Collections.Specialized.INotifyCollectionChanged Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "common/Microsoft.Graph.Communications.Common.ExceptionUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.ExceptionUtils.html", - "title": "Class ExceptionUtils", - "keywords": "Class ExceptionUtils Exception utilities Inheritance Object ExceptionUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class ExceptionUtils Methods FindInnerException(Exception) Find the inner exception that caused the error. Declaration public static Exception FindInnerException(this Exception exception) Parameters Type Name Description Exception exception Top level exception. Returns Type Description Exception Inner exception causing the error. FormatException(Exception, Int32) Format the exception including up to depth inner exceptions. Includes stack trace of the last inner exception (up to depth ). Declaration public static string FormatException(this Exception exception, int depth = 4) Parameters Type Name Description Exception exception Top level exception. Int32 depth The depth of inner exceptions, valid range is [1..4]. 1 means that most top exception will be formatted. Returns Type Description String Formatted exception GetBaseException(Exception) Gets the base exception of an exception. If the exception is an AggregateException, then the inner exceptions are flattened before getting the base exception. Declaration public static Exception GetBaseException(Exception exception) Parameters Type Name Description Exception exception The exception Returns Type Description Exception Whether it's base exception" + "common/Microsoft.Graph.Communications.Common.AutoClean-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.AutoClean-1.html", + "title": "Class AutoClean", + "keywords": "Class AutoClean Helper class to automatically cleanup but with associated state. Inheritance Object Disposable AutoClean AutoClean Implements IDisposable Inherited Members AutoClean.Dispose(Boolean) Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class AutoClean : AutoClean, IDisposable Type Parameters Name Description T State type. Constructors AutoClean(T, Action) Initializes a new instance of the AutoClean class. Declaration public AutoClean(T t, Action action) Parameters Type Name Description T t Instance of the custom data. Action action Cleanup action. Properties Data Gets the custom data. Declaration public T Data { get; } Property Value Type Description T Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "calls/Microsoft.Graph.Communications.Calls.IParticipantCollection.html": { - "href": "calls/Microsoft.Graph.Communications.Calls.IParticipantCollection.html", - "title": "Interface IParticipantCollection", - "keywords": "Interface IParticipantCollection The stateful participant collection interface. Inherited Members IDisposable.Dispose() IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface IParticipantCollection : IResourceCollection, IResourceCollection, IResourceCollection, IResourceBase, IDisposable, IReadOnlyCollection, IEnumerable, IEnumerable Methods GetAsync(String, CancellationToken) Gets the participant from the collection. Declaration Task GetAsync(string participantId, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description String participantId The participant identifier. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IParticipant > The found IParticipant . Exceptions Type Condition ServiceException If the specified participant was not found. InviteAsync(IEnumerable, CancellationToken) Invites a list of participants given their identities. Declaration Task InviteAsync(IEnumerable participants, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description IEnumerable < InvitationParticipantInfo > participants The list of InvitationParticipantInfo to invite. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The invite updates will come in on IParticipantCollection.OnUpdated Extension Methods ParticipantExtensions.InviteAsync(IParticipantCollection, IdentitySet, String, CancellationToken)" + "common/Microsoft.Graph.AdditionalDataExtensions.html": { + "href": "common/Microsoft.Graph.AdditionalDataExtensions.html", + "title": "Class AdditionalDataExtensions", + "keywords": "Class AdditionalDataExtensions The identity set extensions Inheritance Object AdditionalDataExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class AdditionalDataExtensions Methods GetValue(IDictionary, String, T) Gets the object using the key from additional data. Declaration public static T GetValue(this IDictionary additionalData, string key, T default = null) Parameters Type Name Description IDictionary < String , Object > additionalData The additional data. String key The key. T default The default value if value could not be parsed. Returns Type Description T /// The converted value. Type Parameters Name Description T The expected type for the specified key. SetInAdditionalData(Object, String, Object) Sets the object with given key in additional data. Declaration public static void SetInAdditionalData(this object obj, string key, object value) Parameters Type Name Description Object obj The identity. String key The key. Object value The value." }, - "core/Microsoft.Graph.html": { - "href": "core/Microsoft.Graph.html", - "title": "Namespace Microsoft.Graph", - "keywords": "Namespace Microsoft.Graph Classes ContractsConstants OData Model Constants ContractsConstants.AuthConstants Various constants used by the AuthZ layer ContractsConstants.CallProperties Call properties constants ContractsConstants.EntityContainerNames Singleton/EntitySet constants ContractsConstants.IdentityProperties Identity properties constants ContractsConstants.NotificationProperties Notification properties constants ContractsConstants.Signature Signature for Assembly visibility. IdentityExtensions Extensions for graph api contracts IdentitySetExtensions Extentions for graph api contracts NotificationsExtensions Communications notifications extensions." + "client/Microsoft.Graph.Communications.Client.ICommunicationsClient.html": { + "href": "client/Microsoft.Graph.Communications.Client.ICommunicationsClient.html", + "title": "Interface ICommunicationsClient", + "keywords": "Interface ICommunicationsClient The CommunicationsClient interface. This is the entry point of the SDK and a reference to this instance must be held for the duration of the session. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Client Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface ICommunicationsClient : IDisposable Properties AppId Gets the application identifier. Declaration string AppId { get; } Property Value Type Description String AppName Gets the name of the application. Declaration string AppName { get; } Property Value Type Description String AuthenticationProvider Gets the authentication provider used to authenticate both inbound and outbound requests. Declaration IRequestAuthenticationProvider AuthenticationProvider { get; } Property Value Type Description IRequestAuthenticationProvider BaseUrl Gets the Graph service's base URL. Declaration string BaseUrl { get; } Property Value Type Description String GraphClient Gets the graph client. This is the Client used to communicate with the service. Declaration IGraphClient GraphClient { get; } Property Value Type Description IGraphClient GraphLogger Gets the graph logger. This is the logger used within the SDK. Declaration IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Id Gets the client identifier. Declaration Guid Id { get; } Property Value Type Description Guid Serializer Gets the serializer Declaration ISerializer Serializer { get; } Property Value Type Description ISerializer Methods ProcessNotifications(Uri, CommsNotifications, String, Guid, Guid, IDictionary) Processes the notifications and raise the required callbacks. This function should be called in order for the SDK to raise any required events and process state changes. Declaration void ProcessNotifications(Uri callbackUri, CommsNotifications notifications, string tenantId, Guid requestId, Guid scenarioId, IDictionary additionalData = null) Parameters Type Name Description Uri callbackUri The callback URI. CommsNotifications notifications The notifications. String tenantId The tenant identifier. Guid requestId The request identifier. Guid scenarioId The scenario identifier. IDictionary < String , Object > additionalData Additional data associated with the notification. RehydrateAsync(String, String, Guid) Re-hydrates the resource at the specified path asynchronously. Declaration Task RehydrateAsync(string resourcePath, string tenantId, Guid scenarioId = default(Guid)) Parameters Type Name Description String resourcePath The resource path. String tenantId The tenant identifier. Guid scenarioId The scenario identifier. Returns Type Description Task The Task . TerminateAsync(TimeSpan) Terminates this client asynchronously. This terminates all the calls, waits for dispose events, and disposes everything. Declaration Task TerminateAsync(TimeSpan timeout = default(TimeSpan)) Parameters Type Name Description TimeSpan timeout The timeout. Returns Type Description Task < Boolean > True if all instances terminated successfully, false otherwise. Events OnNotificationException Occurs when exceptions are raised on notification callbacks. Declaration event Action OnNotificationException Event Type Type Description Action < FailedNotificationEventArgs > OnNotificationProcessed Occurs when the notification has been processed by all callbacks. Declaration event Action OnNotificationProcessed Event Type Type Description Action < NotificationEventArgs > OnNotificationQueued Occurs when the notification has been queued into the backlog. Declaration event Action OnNotificationQueued Event Type Type Description Action < NotificationEventArgs > Extension Methods CommunicationsClientExtensions.ProcessNotificationAsync(ICommunicationsClient, HttpRequestMessage) CommunicationsClientExtensions.LogAndCreateResponse(ICommunicationsClient, HttpRequestMessage, Guid, Guid, CommsNotifications, HttpStatusCode, Stopwatch, Exception) CommunicationsClientExtensions.CreateResponse(ICommunicationsClient, HttpStatusCode, Guid, Guid, Object)" }, - "core/Microsoft.Graph.Routing.html": { - "href": "core/Microsoft.Graph.Routing.html", - "title": "Namespace Microsoft.Graph.Routing", - "keywords": "Namespace Microsoft.Graph.Routing Enums CloudNamespace Enumeration defining various cloud environment type" + "core/Microsoft.Graph.Communications.Core.Notifications.NotificationProcessorExtensions.html": { + "href": "core/Microsoft.Graph.Communications.Core.Notifications.NotificationProcessorExtensions.html", + "title": "Class NotificationProcessorExtensions", + "keywords": "Class NotificationProcessorExtensions Extensions for container client. Inheritance Object NotificationProcessorExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class NotificationProcessorExtensions Methods ExtractResouceData(CommsNotification) Extracts the resource data from the specified notification. Declaration public static object ExtractResouceData(this CommsNotification notification) Parameters Type Name Description CommsNotification notification The notification. Returns Type Description Object The resource data notification content. Exceptions Type Condition ServiceException If the specified notification is invalid. ProcessNotificationAsync(INotificationProcessor, HttpRequestMessage) Processes the notification sent from the server to the client. This overload accepts the type of HttpRequest. Declaration public static Task ProcessNotificationAsync(this INotificationProcessor processor, HttpRequestMessage request) Parameters Type Name Description INotificationProcessor processor The processor. HttpRequestMessage request The request. Returns Type Description Task < HttpResponseMessage > Response to be sent back. SanitizeResource(String, String) Gets the model URI. Declaration public static string SanitizeResource(this string resource, string baseUrl = null) Parameters Type Name Description String resource The resource. String baseUrl The base URL. Returns Type Description String The model uri string. Exceptions Type Condition ArgumentNullException If the resource string is null or whitespace. TryGetGuid(HttpHeaders, String, out Guid) Tries to get the GUID value for the specifed header. Declaration public static bool TryGetGuid(this HttpHeaders headers, string header, out Guid guid) Parameters Type Name Description HttpHeaders headers The headers collection. String header The header to look at. Guid guid The found guid Returns Type Description Boolean True if the specified header is a valid guid, false otherwise." }, - "core/Microsoft.Graph.Communications.Core.Notifications.FailedNotificationEventArgs.html": { - "href": "core/Microsoft.Graph.Communications.Core.Notifications.FailedNotificationEventArgs.html", - "title": "Class FailedNotificationEventArgs", - "keywords": "Class FailedNotificationEventArgs Event arguments used when exceptions are raised in callbacks. Inheritance Object FailedNotificationEventArgs Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class FailedNotificationEventArgs Constructors FailedNotificationEventArgs(NotificationEventArgs, Exception) Initializes a new instance of the FailedNotificationEventArgs class. Declaration public FailedNotificationEventArgs(NotificationEventArgs notification, Exception exception) Parameters Type Name Description NotificationEventArgs notification The NotificationEventArgs instance containing the event data. Exception exception The exception. Properties Exception Gets the exception being raised. Declaration public Exception Exception { get; } Property Value Type Description Exception Notification Gets the notification that was being processed while this callback failed. Declaration public NotificationEventArgs Notification { get; } Property Value Type Description NotificationEventArgs" + "core/Microsoft.Graph.Communications.Core.Notifications.NotificationProcessor.html": { + "href": "core/Microsoft.Graph.Communications.Core.Notifications.NotificationProcessor.html", + "title": "Class NotificationProcessor", + "keywords": "Class NotificationProcessor The notification processor class. Inheritance Object NotificationProcessor Implements INotificationProcessor IDisposable Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class NotificationProcessor : Disposable, INotificationProcessor, IDisposable Constructors NotificationProcessor(IAuthenticationProvider, ISerializer) Initializes a new instance of the NotificationProcessor class. Declaration public NotificationProcessor(IAuthenticationProvider authenticationProvider, ISerializer serializer) Parameters Type Name Description IAuthenticationProvider authenticationProvider The authentication provider. ISerializer serializer The serializer. Exceptions Type Condition ArgumentNullException If the authentication provider is null. Properties AuthenticationProvider Gets the authentication provider. TODO: This should probably not be a part of the INotificationProcessor . Ideally the request is already validated prior to making it in here. This means that 1) Already sanitized by authentication provider and 2) The tenant/scenario id parameters extracted into the IGraphRequest. Declaration public IAuthenticationProvider AuthenticationProvider { get; } Property Value Type Description IAuthenticationProvider The authentication provider. Methods ExtractNotifications(String, ISerializer) Extracts the notifications from the specified content string. Declaration public static CommsNotifications ExtractNotifications(string content, ISerializer serializer) Parameters Type Name Description String content The content. ISerializer serializer The serializer. Returns Type Description CommsNotifications The deserialized CommsNotifications . Exceptions Type Condition ServiceException If the specified content is invalid. ProcessNotifications(Uri, String, String, Guid, Guid, IEnumerable>) Processes the notifications and raise the required callbacks. This function should be called in order for the SDK to raise any required events and process state changes. Declaration public void ProcessNotifications(Uri callbackUri, string content, string tenantId, Guid requestId, Guid scenarioId, IEnumerable> additionalData = null) Parameters Type Name Description Uri callbackUri The callback URI. String content The notifications content. String tenantId The tenant identifier. Guid requestId The request identifier. Guid scenarioId The scenario identifier. IEnumerable < KeyValuePair < String , Object >> additionalData Additional data associated with the notification. Events OnCollectionNotificationReceived Occurs when a collection notification is received. Declaration public event Action OnCollectionNotificationReceived Event Type Type Description Action < CollectionNotificationEventArgs > OnNotificationReceived Occurs when a notification is received. This is a global hook for all notifications. Declaration public event Action OnNotificationReceived Event Type Type Description Action < NotificationEventArgs > OnResourceNotificationReceived Occurs when a single resource notification is received. Declaration public event Action OnResourceNotificationReceived Event Type Type Description Action < NotificationEventArgs > Implements INotificationProcessor System.IDisposable See Also INotificationProcessor" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.HttpLogData.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.HttpLogData.html", - "title": "Class HttpLogData", - "keywords": "Class HttpLogData The log data for http trace. Inheritance Object HttpLogData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class HttpLogData Constructors HttpLogData() Declaration public HttpLogData() Properties Content Gets or sets the content. Declaration public string Content { get; set; } Property Value Type Description String Headers Gets or sets the headers. Declaration public IEnumerable Headers { get; set; } Property Value Type Description IEnumerable < String > HeadersString Gets the headers string. Declaration public string HeadersString { get; } Property Value Type Description String Method Gets or sets the method. Declaration public string Method { get; set; } Property Value Type Description String ResponseStatusCode Gets or sets the response status code. Declaration public int? ResponseStatusCode { get; set; } Property Value Type Description Nullable < Int32 > ResponseTime Gets or sets the response time in milliseconds. Declaration public long? ResponseTime { get; set; } Property Value Type Description Nullable < Int64 > TraceType Gets or sets the trace type. Declaration public HttpTraceType TraceType { get; set; } Property Value Type Description HttpTraceType TransactionDirection Gets or sets the transaction direction. Declaration public TransactionDirection TransactionDirection { get; set; } Property Value Type Description TransactionDirection Url Gets or sets the url. Declaration public string Url { get; set; } Property Value Type Description String Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "common/Microsoft.Graph.Communications.Common.Transport.ResponseStatus.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.ResponseStatus.html", + "title": "Enum ResponseStatus", + "keywords": "Enum ResponseStatus Different status of IGraphResponse . Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum ResponseStatus Fields Name Description Accepted The request was successfully accepted. BadRequest The request was semantically/syntactically invalid. Conflict There was a conflict in processing the request. Created The request resource was successfully created. Forbidden The request was forbidden. InternalServerError The request resulted in an internal server error. MultiStatus The multi status response. NoContent There was no content in the response. NotFound The requested resource was not found. NotImplemented The not implemented Ok The request was successfully processed. RequestTimeout Client did not send a request within the time the server was expecting the request. ServiceUnavailable The server is temporarily unavailable. TooManyRequests Too many requests were tried. Unauthorized The request was not authorized by the callee. Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(ResponseStatus, String, String) Validator.Equals(ResponseStatus, String) Validator.NotEquals(ResponseStatus, String, String) GraphResponseExtensions.ToHttpStatus()" }, - "common/Microsoft.Graph.Communications.Common.ReflectionUtils.html": { - "href": "common/Microsoft.Graph.Communications.Common.ReflectionUtils.html", - "title": "Class ReflectionUtils", - "keywords": "Class ReflectionUtils Reflection utilities Inheritance Object ReflectionUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class ReflectionUtils Methods DerivesFrom(Type, Type) Check if the type derives from the base type Declaration public static bool DerivesFrom(this Type type, Type baseType) Parameters Type Name Description Type type Type to check Type baseType Base type Returns Type Description Boolean True if it is or derives from the base type DerivesFrom(Type) Check if the type derives from the T type. Declaration public static bool DerivesFrom(this Type type) Parameters Type Name Description Type type Type to check Returns Type Description Boolean True if it is or derives from the base type Type Parameters Name Description T The type to check. GetPropertyUsingReflection(Object, String) Get named property of an object Declaration public static object GetPropertyUsingReflection(this object obj, string name) Parameters Type Name Description Object obj Object to get property from. String name Name of the property. Returns Type Description Object Value of the property GetValueCached(PropertyInfo, Object) Gets the value using a cached delegate. Declaration public static object GetValueCached(this PropertyInfo propertyInfo, object object) Parameters Type Name Description PropertyInfo propertyInfo The property info to use. Object object The object containing the property. Returns Type Description Object The fetched object. Implements(Type, Type) Check if type is subclass of a generic type. Declaration public static bool Implements(this Type type, Type checkType) Parameters Type Name Description Type type Type to check. Type checkType Generic type. Returns Type Description Boolean True if it is a subclass. Implements(Type) Check if type is subclass of a generic type. Declaration public static bool Implements(this Type type) Parameters Type Name Description Type type Type to check. Returns Type Description Boolean True if it is a subclass. Type Parameters Name Description T The type to check. SetPropertyUsingReflection(Object, String, Object) Set named property of an object Declaration public static bool SetPropertyUsingReflection(this object obj, string name, object value) Parameters Type Name Description Object obj Object to get property from. String name Name of the property. Object value Value of the property. Returns Type Description Boolean true if the property was set successfully, false otherwise SetValueCached(PropertyInfo, Object, Object) Set the value using a cached delegate. Declaration public static void SetValueCached(this PropertyInfo propertyInfo, object object, object value) Parameters Type Name Description PropertyInfo propertyInfo The property info to use. Object object The object containing the property. Object value The value to be set." + "common/Microsoft.Graph.Communications.Common.Transport.RequestType.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.RequestType.html", + "title": "Enum RequestType", + "keywords": "Enum RequestType Type of request that we want to issue on the transport Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum RequestType Fields Name Description Create Request to create a resource Delete Request to delete a resource Get Request to get a resource Replace Request to replace a resource Update Request to update a resource Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(RequestType, String, String) Validator.Equals(RequestType, String) Validator.NotEquals(RequestType, String, String) GraphRequestExtensions.ToHttpMethod()" }, - "core/Microsoft.Graph.Communications.Core.GraphModelExtensions.html": { - "href": "core/Microsoft.Graph.Communications.Core.GraphModelExtensions.html", - "title": "Class GraphModelExtensions", - "keywords": "Class GraphModelExtensions Generic graph model extensions. Inheritance Object GraphModelExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class GraphModelExtensions Methods FixModel(Object) Fixes the model to match latest protocol. Declaration public static void FixModel(object object) Parameters Type Name Description Object object The object." + "bot_media/Microsoft.Skype.Bots.Media.IVideoSocket.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.IVideoSocket.html", + "title": "Interface IVideoSocket", + "keywords": "Interface IVideoSocket Interface to a VideoSocket. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IVideoSocket : IDisposable Properties MediaType MediaType of the video socket. This could be Video or Vbss. The MediaType is set after the socket is passed to the CreateMediaConfiguration API Declaration MediaType MediaType { get; } Property Value Type Description MediaType SocketId The 0-based ID of the socket. This socket ID is useful to identify a socket in a multiview (ie. more than 1 video socket) call. The same ID is used in the event args of the VideoMediaReceived and VideoSendStatusChanged events that this class may raise. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the CreateMediaConfiguration API. Eg., if the collection of IVideoSocket objects in the CreateMediaConfiguration API contains {socketA, socketB, socketC}, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Before the call to CreateMediaConfiguration, the SocketId has a value of -1. Declaration int SocketId { get; } Property Value Type Description Int32 Methods GetQualityOfExperienceData() Get the Quality of Experience (QoE) data for the video socket. Declaration VideoQualityOfExperienceData GetQualityOfExperienceData() Returns Type Description VideoQualityOfExperienceData Remarks The bot should fetch the QoE data no more than once every 30 seconds. RequestKeyFrame() Allows the application to request for key frame. Only valid for sockets with the ReceiveColorFormat as H264 Declaration void RequestKeyFrame() Send(VideoMediaBuffer) Sends a frame of video media. Declaration void Send(VideoMediaBuffer buffer) Parameters Type Name Description VideoMediaBuffer buffer VideoMediaBuffer containing the frame of video media to send. Remarks The application must create a concrete class which derives from the VideoMediaBuffer abstract class. The buffer object passed to the Send method is still potentially in-use after the method returns to the caller. The application must not free the buffer's data until the the buffer object's Dispose() method is invoked by the Media Platform. The application should be sending up to 30 video frames per second. The VideoSocket must be enabled to send media via the VideoSocketSettings.StreamDirections property. SetReceiveBandwidthLimit(UInt32) Sets the bandwidth limit on the receive stream of the VideoSocket. This is only supported if the socket supports receiving H264 video format. It is recommended to wait for the VideoReceiveStatusChanged event with MediaReceiveStatus Active state during the initial call setup before applying the receive bandwidth limit on the socket. Bandwidth range (in bits per second) for various resolutions and frame rates per media type: Media type: Video 1000000 - 4000000 1080p at 30 fps 550000 - 2500000 720p at 30 fps 375000 - 1500000 540p at 30 fps 200000 - 800000 360p at 30 fps 150000 - 250000 360p at 15 fps 120000 - 220000 240p at 15 fps 60000 - 200000 180p at 15 fps 20000 - 100000 180p at 7.5 fps 10000 - 25000 180p at 3.75 fps 1000 - 12500 180p at 1.875 fps Media type: Vbss Resolution: 1080p 2000000 - 4000000 at 30 fps 600000 - 3000000 at 15 fps 300000 - 700000 at 7.5 fps 150000 - 350000 at 3.75 fps 70000 - 200000 at 1.875 fps Declaration void SetReceiveBandwidthLimit(uint bitsPerSecond) Parameters Type Name Description UInt32 bitsPerSecond The receive bitrate SetSendBandwidthLimit(UInt32) Sets the bandwidth limit on the send stream of the VideoSocket. This is only supported if the socket supports sending H264 video formats. It is recommended to wait for the VideoSendStatusChanged event with MediaSendStatus Active state during the initial call setup before applying the send bandwidth limit on the socket. Bandwidth range (in bits per second) for various resolutions and frame rates per media type: Media type: Video 1000000 - 4000000 1080p at 30 fps 550000 - 2500000 720p at 30 fps 375000 - 1500000 540p at 30 fps 200000 - 800000 360p at 30 fps 150000 - 250000 360p at 15 fps 120000 - 220000 240p at 15 fps 60000 - 200000 180p at 15 fps 20000 - 100000 180p at 7.5 fps 10000 - 25000 180p at 3.75 fps 1000 - 12500 180p at 1.875 fps Media type: Vbss Resolution: 1080p 2000000 - 4000000 at 30 fps 600000 - 3000000 at 15 fps 300000 - 700000 at 7.5 fps 150000 - 350000 at 3.75 fps 70000 - 200000 at 1.875 fps Declaration void SetSendBandwidthLimit(uint bitsPerSecond) Parameters Type Name Description UInt32 bitsPerSecond The send bitrate Subscribe(VideoResolution) Request to receive the video of the peer in a 1:1 call. No need to specify a MediaSourceId. The bot cannot subscribe to a video source unless the VideoReceiveStatusChanged event is raised indicating the VideoSocket's MediaReceiveStatus is Active . Declaration void Subscribe(VideoResolution preferredVideoResolution) Parameters Type Name Description VideoResolution preferredVideoResolution The requested video resolution. The received video frames should have this resolution if the bandwidth constraints and sender capabilities allow, however the bot may receive video frames at a resolution lower than requested. Subscribe(VideoResolution, UInt32) Request to receive the video source of a participant in a meeting or group call. The video source must be identified by its MediaSourceId available from the roster. The bot cannot subscribe to a video source unless the VideoReceiveStatusChanged event is raised indicating the VideoSocket's MediaReceiveStatus is Active . Declaration void Subscribe(VideoResolution preferredVideoResolution, uint MediaSourceId) Parameters Type Name Description VideoResolution preferredVideoResolution The requested video resolution. The received video frames should have this resolution if the bandwidth constraints and sender capabilities allow, however the bot may receive video frames at a resolution lower than requested. UInt32 MediaSourceId Media source identifier of the video source to be received Exceptions Type Condition ObjectDisposedException Thrown if the VideoSocket is disposed. InvalidOperationException Thrown if the subscription is invalid. SkypeMediaException Thrown if an internal media failure occurs. Unsubscribe() Stops the current video subscription on the VideoSocket. The VideoMediaReceived events will stop raising video buffers. Declaration void Unsubscribe() UpdateVideoSendCapability(VideoSendCapability) Updates the send capabilities (such as SupportedSendVideoFormats or MaxConcurrentSendStreams) of the video socket, allowing the bot to add and remove video formats mid-call. Declaration void UpdateVideoSendCapability(VideoSendCapability capability) Parameters Type Name Description VideoSendCapability capability Events MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > Remarks Note: this event can be raised even if there is no active video subscription; i.e., the VideoSocket is \"idle\" and not receiving media. MediaStreamQualityChanged The event is raised if a media stream quality change was detected Declaration event EventHandler MediaStreamQualityChanged Event Type Type Description EventHandler < VideoMediaStreamQualityChangedEventArgs > VideoKeyFrameNeeded If the application has configured the VideoSocket to receive encoded media, this event is raised each time a key frame is needed. Events are serialized, so only one event at a time is raised to the app. Declaration event EventHandler VideoKeyFrameNeeded Event Type Type Description EventHandler < VideoKeyFrameNeededEventArgs > VideoMediaReceived If the application has configured the VideoSocket to receive media, this event is raised each time a frame of video media is received. Once the application has consumed the buffer, it must call the buffer's Dispose() method. Declaration event EventHandler VideoMediaReceived Event Type Type Description EventHandler < VideoMediaReceivedEventArgs > Remarks The incoming video frame rate is variable. The frame rate can vary between 1.875 frames per second (fps) up to 30 fps. The application must be able to receive up to 30 video buffers per second. Events are serialized, so only one event at a time is raised to the app. The event handler should return as quickly as possible; any time-consuming per-frame processing should be performed asynchronously from the event handler. VideoReceiveStatusChanged If the application has configured the VideoSocket to receive media, this event is raised to inform the application when it is ready to receive media. When the status is active the application can subscribe to a video source, when inactive video subscription won't be allowed Declaration event EventHandler VideoReceiveStatusChanged Event Type Type Description EventHandler < VideoReceiveStatusChangedEventArgs > VideoSendStatusChanged If the application has configured the VideoSocket to send media, this event is raised to inform the application when it may begin sending media and when it should stop. The application cannot send media before receiving a VideoMediaSendStatusChanged event indicating the SendStatus is Active, such media will be discarded. Declaration event EventHandler VideoSendStatusChanged Event Type Type Description EventHandler < VideoSendStatusChangedEventArgs >" }, - "common/Microsoft.Graph.html": { - "href": "common/Microsoft.Graph.html", - "title": "Namespace Microsoft.Graph", - "keywords": "Namespace Microsoft.Graph Classes AdditionalDataExtensions The identity set extensions" + "bot_media/Microsoft.Skype.Bots.Media.DataSocketSettings.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.DataSocketSettings.html", + "title": "Class DataSocketSettings", + "keywords": "Class DataSocketSettings Reserved for the internal use. Inheritance Object DataSocketSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class DataSocketSettings Constructors DataSocketSettings() Reserved for the internal use. Declaration public DataSocketSettings() Properties CallId Reserved for the internal use. Declaration public string CallId { get; set; } Property Value Type Description String ReceiveDataType Reserved for the internal use. Declaration public DataType ReceiveDataType { get; set; } Property Value Type Description DataType SendDataType Reserved for the internal use. Declaration public DataType SendDataType { get; set; } Property Value Type Description DataType StreamDirections Reserved for the internal use. Declaration public StreamDirection StreamDirections { get; set; } Property Value Type Description StreamDirection" }, - "common/Microsoft.Graph.Communications.Common.OData.ODataConstants.html": { - "href": "common/Microsoft.Graph.Communications.Common.OData.ODataConstants.html", - "title": "Class ODataConstants", - "keywords": "Class ODataConstants The OData constants. Inheritance Object ODataConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class ODataConstants Fields ODataType The OData type. Declaration public const string ODataType = \"@odata.type\" Field Value Type Description String" + "client/Microsoft.Graph.Communications.Client.Cache.ICache.html": { + "href": "client/Microsoft.Graph.Communications.Client.Cache.ICache.html", + "title": "Interface ICache", + "keywords": "Interface ICache The cache interface used to store and recover the data used by the SDK. Namespace : Microsoft.Graph.Communications.Client.Cache Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface ICache Methods GetDataAsync(IEnumerable, String, CancellationToken) Gets the serialized string of the data at the specified resource path asynchronously. Fetching data only happens in HA/DR scenarios, so could take longer. Declaration Task GetDataAsync(IEnumerable properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken)) where T : Entity Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < String > The recovered serialized data at the specified resource path. Type Parameters Name Description T The type of Entity to fetch. GetDataCollectionAsync(IEnumerable, String, CancellationToken) Gets the resource paths for the children of the collection with the specified resource path asynchronously. Fetching data only happens in HA/DR scenarios, so could take longer. Declaration Task> GetDataCollectionAsync(IEnumerable properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken)) where T : Entity Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IEnumerable < String >> The recovered collection or child resource paths. Type Parameters Name Description T The type of Entity contained in the collection. SetData(ChangeType, IResource, IEnumerable, String, Lazy) Sets the data under the specified resource path. These should be short running operations, as they block notification callbacks. Declaration void SetData(ChangeType change, IResource resource, IEnumerable properties, string resourcePath, Lazy serializedData) Parameters Type Name Description ChangeType change The type of change occuring. IResource resource The resource being serialized. IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. Lazy < String > serializedData The serialized data lazy string. For performance reasons the string is only serialized when requested." }, - "common/Microsoft.Graph.Communications.Common.Telemetry.MetricLogData.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.MetricLogData.html", - "title": "Class MetricLogData", - "keywords": "Class MetricLogData The metric of Geneva Instrumentation Framework (Ifx). Inheritance Object MetricLogData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class MetricLogData Constructors MetricLogData() Declaration public MetricLogData() Properties AddDefaultDimension Gets or sets a value indicating whether the default dimensions are included. Declaration public bool AddDefaultDimension { get; set; } Property Value Type Description Boolean Dimensions Gets or sets the dimensions. Declaration public Dictionary Dimensions { get; set; } Property Value Type Description Dictionary < String , String > Name Gets or sets the name. Declaration public string Name { get; set; } Property Value Type Description String Namespace Gets or sets the namespace. Declaration public string Namespace { get; set; } Property Value Type Description String RawData Gets or sets the raw data. Declaration public long RawData { get; set; } Property Value Type Description Int64 Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + "client/Microsoft.Graph.Communications.Client.Cache.CacheContext-1.html": { + "href": "client/Microsoft.Graph.Communications.Client.Cache.CacheContext-1.html", + "title": "Struct CacheContext", + "keywords": "Struct CacheContext The stored cache context Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() ValueType.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Graph.Communications.Client.Cache Assembly : Microsoft.Graph.Communications.Client.dll Syntax public struct CacheContext where TEntity : Entity Type Parameters Name Description TEntity The type of the entity. Properties Id Gets or sets the context identifier. Declaration public string Id { get; set; } Property Value Type Description String Resource Gets or sets the resource. Declaration public TEntity Resource { get; set; } Property Value Type Description TEntity ScenarioId Gets or sets the scenario identifier associated with this resource. Declaration public Guid ScenarioId { get; set; } Property Value Type Description Guid TenantId Gets or sets the tenant identifier associated with this resource. Declaration public string TenantId { get; set; } Property Value Type Description String" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.LoggingConstants.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LoggingConstants.html", - "title": "Class LoggingConstants", - "keywords": "Class LoggingConstants Constants used for logging that are common between server and client. Inheritance Object LoggingConstants Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class LoggingConstants Fields ActivityTrackingLatencySeconds The activity tracking latency in seconds Declaration public const string ActivityTrackingLatencySeconds = \"ActivityTrackingLatencySeconds\" Field Value Type Description String AppId AppId constant. Declaration public const string AppId = \"AppId\" Field Value Type Description String ChatId Chat Id. Declaration public const string ChatId = \"ChatId\" Field Value Type Description String ChatInactivityTrackingExceedingInterval The chat inactivity tracking that exceeds the expected interval Declaration public const string ChatInactivityTrackingExceedingInterval = \"ChatInactivityTrackingExceedingInterval\" Field Value Type Description String CosmosDBCollection The name of CosmosDB collection Declaration public const string CosmosDBCollection = \"CosmosDBCollection\" Field Value Type Description String CosmosDBRequestCharge The metric name of CosmosDB request charge Declaration public const string CosmosDBRequestCharge = \"CosmosDBRequestCharge\" Field Value Type Description String CosmosDBRequestLatency The metric name of CosmosDB request latency in milliseconds Declaration public const string CosmosDBRequestLatency = \"CosmosDBRequestLatency\" Field Value Type Description String CosmosDBRequestType The CosmosDB request type, read/create/update/upsert/delete/query Declaration public const string CosmosDBRequestType = \"CosmosDBRequestType\" Field Value Type Description String ErrorCode The error code. Declaration public const string ErrorCode = \"ErrorCode\" Field Value Type Description String FailedBridgedMessages Failed bridged messages constant. Declaration public const string FailedBridgedMessages = \"FailedBridgedMessages\" Field Value Type Description String FailedChatInactivityTracking The failed chat inactivity tracking Declaration public const string FailedChatInactivityTracking = \"FailedChatInactivityTracking\" Field Value Type Description String FailedChatInactivityTrackingSum The failed chat inactivity tracking sum Declaration public const string FailedChatInactivityTrackingSum = \"FailedChatInactivityTrackingSum\" Field Value Type Description String FailedChatNotifications The failed chat notifications Declaration public const string FailedChatNotifications = \"FailedChatNotifications\" Field Value Type Description String FailedRoutingCacheRequests The failed routing cache requests. Declaration public const string FailedRoutingCacheRequests = \"FailedRoutingCacheRequests\" Field Value Type Description String HTTPMetrics The namespace of HTTP metrics Declaration public const string HTTPMetrics = \"HTTPMetrics\" Field Value Type Description String InstanceId Instance ID. Declaration public const string InstanceId = \"InstanceId\" Field Value Type Description String JsonSerializationMaxDepth Max depth of json serializer in case the json serializer settings is configured as ReferenceLoopHandling.Serialize Declaration public const int JsonSerializationMaxDepth = 10 Field Value Type Description Int32 Method Method dimension name. Declaration public const string Method = \"Method\" Field Value Type Description String ObjectId UserId constant. Declaration public const string ObjectId = \"ObjectId\" Field Value Type Description String Operation Operation dimension name. Declaration public const string Operation = \"Operation\" Field Value Type Description String OutgoingChatMessageLatency The time taken to send outgoing message. Declaration public const string OutgoingChatMessageLatency = \"OutgoingChatMessageLatency\" Field Value Type Description String PartitionKey Partition Id. Declaration public const string PartitionKey = \"PartitionKey\" Field Value Type Description String Partner Partner dimension name. Declaration public const string Partner = \"Partner\" Field Value Type Description String PropertyDoesNotExist Property does not exist error message Declaration public const string PropertyDoesNotExist = \"Property doesn't exist in LogEvent Properties dictionary.\" Field Value Type Description String ReplaceId The constant pointing to the replace id to be used for Api Path. Declaration public const string ReplaceId = \"\" Field Value Type Description String RequestId The request ID (used to identify request-response pair) Declaration public const string RequestId = \"RequestId\" Field Value Type Description String RequestPath Request path dimension name. Declaration public const string RequestPath = \"RequestPath\" Field Value Type Description String ResponseTimeInMilliseconds The metric name of HTTP response time Declaration public const string ResponseTimeInMilliseconds = \"Response time in milli-seconds\" Field Value Type Description String Result The result. Declaration public const string Result = \"Result\" Field Value Type Description String RoutingCacheRequests The routing cache requests. Declaration public const string RoutingCacheRequests = \"RoutingCacheRequests\" Field Value Type Description String StatusCode StatusCode dimension name. Declaration public const string StatusCode = \"StatusCode\" Field Value Type Description String SuccessfulBridgedMessages Successful bridged messages constant. Declaration public const string SuccessfulBridgedMessages = \"SuccessfulBridgedMessages\" Field Value Type Description String SuccessfulChatInactivityTracking The successful chat inactivity tracking Declaration public const string SuccessfulChatInactivityTracking = \"SuccessfulChatInactivityTracking\" Field Value Type Description String SuccessfulChatInactivityTrackingSum The successful chat inactivity tracking sum. Declaration public const string SuccessfulChatInactivityTrackingSum = \"SuccessfulChatInactivityTrackingSum\" Field Value Type Description String SuccessfulChatNotifications The successful chat notifications Declaration public const string SuccessfulChatNotifications = \"SuccessfulChatNotifications\" Field Value Type Description String TenantId Tenant Id constant. Declaration public const string TenantId = \"TenantId\" Field Value Type Description String TotalChatInactivityTracking The total chat inactivity tracking Declaration public const string TotalChatInactivityTracking = \"TotalChatInactivityTracking\" Field Value Type Description String UserAgent UserAgent dimension name. Declaration public const string UserAgent = \"UserAgent\" Field Value Type Description String" + "client/Microsoft.Graph.Communications.Client.Authentication.html": { + "href": "client/Microsoft.Graph.Communications.Client.Authentication.html", + "title": "Namespace Microsoft.Graph.Communications.Client.Authentication", + "keywords": "Namespace Microsoft.Graph.Communications.Client.Authentication Structs RequestValidationResult The result of the request validation. Interfaces IRequestAuthenticationProvider The authentication provider interface. This is used to authenticate Inbound requests from Microsoft Graph. It validates the request was issued by Microsoft Graph. Outbound requests to Microsoft Graph. Tenant token is acquired to provide Microsoft Graph the permissions the bot has been consented by the tenant admin" }, - "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventType.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventType.html", - "title": "Enum LogEventType", - "keywords": "Enum LogEventType Log event type that describes what type of LogEvent this is. Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum LogEventType Fields Name Description HttpTrace The event used to track HTTP Calls. Metric The event used to track metrics Trace The event used to track Traces. Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(LogEventType, String, String) Validator.Equals(LogEventType, String) Validator.NotEquals(LogEventType, String, String)" + "calls/Microsoft.Graph.Communications.Calls.RecordOperationResult.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.RecordOperationResult.html", + "title": "Class RecordOperationResult", + "keywords": "Class RecordOperationResult Class to define parameters required for joining a meeting. Inheritance Object RecordOperationResult Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public class RecordOperationResult Constructors RecordOperationResult(String, String, ResultInfo) Initializes a new instance of the RecordOperationResult class. Declaration public RecordOperationResult(string recordingLocation, string recordingAccessToken, ResultInfo resultInfo) Parameters Type Name Description String recordingLocation The location of the recording. String recordingAccessToken Token to access the recording. ResultInfo resultInfo The result information. Properties RecordingAccessToken Gets the recording access token required to retrieve the recording. Declaration public string RecordingAccessToken { get; } Property Value Type Description String RecordingLocation Gets the recording location. Link to the \"live raw stream as it is being recorded\" or \"recorded stream after it’s recorded\". Client need to call GET request on this link passing RecordingAccessToken as bearer token in order to download the stream. Declaration public string RecordingLocation { get; } Property Value Type Description String ResultInfo Gets the result information. Declaration public ResultInfo ResultInfo { get; } Property Value Type Description ResultInfo The result information." }, - "common/Microsoft.Graph.Communications.Common.Telemetry.HttpTraceType.html": { - "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpTraceType.html", - "title": "Enum HttpTraceType", - "keywords": "Enum HttpTraceType Trace used for HTTP traces. Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum HttpTraceType Fields Name Description HttpRequest The HTTP request type HttpResponse The HTTP response type. Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(HttpTraceType, String, String) Validator.Equals(HttpTraceType, String) Validator.NotEquals(HttpTraceType, String, String)" + "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.CallData.html": { + "href": "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.CallData.html", + "title": "Class LogProperties.CallData", + "keywords": "Class LogProperties.CallData Call data. Inheritance Object LogProperties.CallData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class CallData Constructors CallData() Declaration public CallData() Properties CallId Gets or sets the call identifier. Declaration public string CallId { get; set; } Property Value Type Description String TenantId Gets or sets the tenant identifier. Declaration public string TenantId { get; set; } Property Value Type Description String" }, - "bot_media/Microsoft.Skype.Bots.Media.IMediaPlatformLogger.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.IMediaPlatformLogger.html", - "title": "Interface IMediaPlatformLogger", - "keywords": "Interface IMediaPlatformLogger Interface for collecting MediaPlatform logs from the Bots.Media library. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IMediaPlatformLogger Methods WriteLog(LogLevel, String) Log a trace statement Declaration void WriteLog(LogLevel level, string logStatement) Parameters Type Name Description LogLevel level Level of log String logStatement The log itself." + "client/Microsoft.Graph.Communications.Common.Telemetry.CommsLogEventFormatter.html": { + "href": "client/Microsoft.Graph.Communications.Common.Telemetry.CommsLogEventFormatter.html", + "title": "Class CommsLogEventFormatter", + "keywords": "Class CommsLogEventFormatter Test log formatter. Inheritance Object CommsLogEventFormatter Implements ILogEventFormatter Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class CommsLogEventFormatter : ILogEventFormatter Constructors CommsLogEventFormatter() Declaration public CommsLogEventFormatter() Methods Format(LogEvent) Declaration public string Format(LogEvent logEvent) Parameters Type Name Description LogEvent logEvent Returns Type Description String Implements ILogEventFormatter" }, - "bot_media/Microsoft.Skype.Bots.Media.AudioMediaReceivedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioMediaReceivedEventArgs.html", - "title": "Class AudioMediaReceivedEventArgs", - "keywords": "Class AudioMediaReceivedEventArgs Event arguments of an AudioMediaReceived event. Inheritance Object EventArgs AudioMediaReceivedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioMediaReceivedEventArgs : EventArgs Constructors AudioMediaReceivedEventArgs() Declaration public AudioMediaReceivedEventArgs() Properties Buffer The received audio media buffer. Declaration public AudioMediaBuffer Buffer { get; set; } Property Value Type Description AudioMediaBuffer" + "client/Microsoft.Graph.Communications.Client.Notifications.FixedSizeQueue-1.html": { + "href": "client/Microsoft.Graph.Communications.Client.Notifications.FixedSizeQueue-1.html", + "title": "Class FixedSizeQueue", + "keywords": "Class FixedSizeQueue A class that implements a fixed size list. Inheritance Object FixedSizeQueue Implements IReadOnlyCollection IEnumerable IEnumerable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Client.Notifications Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class FixedSizeQueue : IReadOnlyCollection, IEnumerable, IEnumerable Type Parameters Name Description T The generic type Constructors FixedSizeQueue(Int32) Initializes a new instance of the FixedSizeQueue class. Declaration public FixedSizeQueue(int maxSize) Parameters Type Name Description Int32 maxSize The maximum size. Properties Count Gets the number of elements in the collection. Declaration public int Count { get; } Property Value Type Description Int32 Methods Enqueue(T) Enqueues the item. Declaration public void Enqueue(T item) Parameters Type Name Description T item The object. GetEnumerator() Declaration public IEnumerator GetEnumerator() Returns Type Description IEnumerator Remove(T) Removes the specified item. Declaration public void Remove(T item) Parameters Type Name Description T item The item. Explicit Interface Implementations IEnumerable.GetEnumerator() Declaration IEnumerator IEnumerable.GetEnumerator() Returns Type Description IEnumerator Implements System.Collections.Generic.IReadOnlyCollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable See Also ICollection " }, - "bot_media/Microsoft.Skype.Bots.Media.DataSocket.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.DataSocket.html", - "title": "Class DataSocket", - "keywords": "Class DataSocket Reserved for the internal use. Inheritance Object DataSocket Implements IDataSocket IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public sealed class DataSocket : IDataSocket, IDisposable, IInternalSocket Constructors DataSocket(DataSocketSettings) Reserverd for internal use. Declaration public DataSocket(DataSocketSettings settings) Parameters Type Name Description DataSocketSettings settings Methods Dispose() Reserved for the internal use. Declaration public void Dispose() Send(DataMediaBuffer, UInt32[]) Reserved for the internal use. Declaration public void Send(DataMediaBuffer buffer, uint[] recipientIds) Parameters Type Name Description DataMediaBuffer buffer UInt32 [] recipientIds Events DataMediaReceived Reserved for the internal use. Declaration public event EventHandler DataMediaReceived Event Type Type Description EventHandler < DataMediaReceivedEventArgs > DataSendStatusChanged Reserved for the internal use. Declaration public event EventHandler DataSendStatusChanged Event Type Type Description EventHandler < DataSendStatusChangedEventArgs > MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration public event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > Implements IDataSocket System.IDisposable" + "calls_media/Microsoft.Graph.Communications.Calls.Media.ILocalMediaSession.html": { + "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.ILocalMediaSession.html", + "title": "Interface ILocalMediaSession", + "keywords": "Interface ILocalMediaSession Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public interface ILocalMediaSession : IMediaSession, IDisposable Properties AudioSocket Gets the audio socket associated with this media session. Declaration IAudioSocket AudioSocket { get; } Property Value Type Description IAudioSocket DataSocket Gets the data socket associated with this media session. Declaration IDataSocket DataSocket { get; } Property Value Type Description IDataSocket VbssSocket Gets the VBSS socket associated with this media session. Declaration IVideoSocket VbssSocket { get; } Property Value Type Description IVideoSocket VideoSocket Gets the video socket associated with this media session. If current media session contains multiple sockets, this will return the first one in the list. Declaration IVideoSocket VideoSocket { get; } Property Value Type Description IVideoSocket VideoSockets Gets the list of video socket associated with this media session. Declaration IReadOnlyList VideoSockets { get; } Property Value Type Description IReadOnlyList < IVideoSocket >" }, - "bot_media/Microsoft.Skype.Bots.Media.IDataSocket.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.IDataSocket.html", - "title": "Interface IDataSocket", - "keywords": "Interface IDataSocket Reserved for the internal use. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IDataSocket : IDisposable Methods Send(DataMediaBuffer, UInt32[]) Reserved for the internal use. Declaration void Send(DataMediaBuffer buffer, uint[] recipientIds) Parameters Type Name Description DataMediaBuffer buffer UInt32 [] recipientIds Events DataMediaReceived Reserved for the internal use. Declaration event EventHandler DataMediaReceived Event Type Type Description EventHandler < DataMediaReceivedEventArgs > DataSendStatusChanged Reserved for the internal use. Declaration event EventHandler DataSendStatusChanged Event Type Type Description EventHandler < DataSendStatusChangedEventArgs > MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs >" + "calls/Microsoft.Graph.Communications.Calls.IParticipant.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.IParticipant.html", + "title": "Interface IParticipant", + "keywords": "Interface IParticipant The stateful participant interface. This represents a single participant in a call. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface IParticipant : IResource, IResource, IResourceBase, IDisposable Properties Resource Gets the stateful participant resource. Declaration Participant Resource { get; } Property Value Type Description Participant Methods DeleteAsync(Boolean, CancellationToken) Deletes this participant asynchronously. Declaration Task DeleteAsync(bool handleHttpNotFoundInternally = false, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Boolean handleHttpNotFoundInternally If the IParticipant is already gone, whether to handle the exception gracefully or not. CancellationToken cancellationToken The CancellationToken for the request. Returns Type Description Task The Task that completes after the request has been sent. The completion of this task does not guarantee deletion. Confirmation of deletion comes as a notification and can be subscribed by IParticipant.OnUpdated and IParticipantCollection.OnUpdated MuteAsync(CancellationToken) Performs the mute operation asynchronously. Declaration Task MuteAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The mute notification will come in on IParticipant.OnUpdated See Also IResource" }, - "bot_media/Microsoft.Skype.Bots.Media.MediaReceiveStatus.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaReceiveStatus.html", - "title": "Enum MediaReceiveStatus", - "keywords": "Enum MediaReceiveStatus Indicates if the VideoSocket is capable of receiving media. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaReceiveStatus Fields Name Description Active Media can be received, video subscription is allowed Inactive Media cannot be received. Video subscription is not allowed" + "common/Microsoft.Graph.Communications.Common.WeakKeyDictionary-2.html": { + "href": "common/Microsoft.Graph.Communications.Common.WeakKeyDictionary-2.html", + "title": "Class WeakKeyDictionary", + "keywords": "Class WeakKeyDictionary Dictionary with weak reference for the key. Inheritance Object ConcurrentDictionary < WeakKey , TValue> WeakKeyDictionary Implements IDictionary < WeakKey , TValue> ICollection < KeyValuePair < WeakKey , TValue>> IDictionary ICollection IReadOnlyDictionary < WeakKey , TValue> IReadOnlyCollection < KeyValuePair < WeakKey , TValue>> IEnumerable < KeyValuePair < WeakKey , TValue>> IEnumerable Inherited Members ConcurrentDictionary, TValue>.TryAdd(WeakKey, TValue) ConcurrentDictionary, TValue>.ContainsKey(WeakKey) ConcurrentDictionary, TValue>.TryRemove(WeakKey, TValue) ConcurrentDictionary, TValue>.TryGetValue(WeakKey, TValue) ConcurrentDictionary, TValue>.TryUpdate(WeakKey, TValue, TValue) ConcurrentDictionary, TValue>.Clear() System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.CopyTo(System.Collections.Generic.KeyValuePair, TValue>[], System.Int32) ConcurrentDictionary, TValue>.ToArray() ConcurrentDictionary, TValue>.GetEnumerator() ConcurrentDictionary, TValue>.GetOrAdd(WeakKey, Func, TValue>) ConcurrentDictionary, TValue>.GetOrAdd(WeakKey, TValue) ConcurrentDictionary, TValue>.GetOrAdd(WeakKey, Func, TArg, TValue>, TArg) ConcurrentDictionary, TValue>.AddOrUpdate(WeakKey, Func, TArg, TValue>, Func, TValue, TArg, TValue>, TArg) ConcurrentDictionary, TValue>.AddOrUpdate(WeakKey, Func, TValue>, Func, TValue, TValue>) ConcurrentDictionary, TValue>.AddOrUpdate(WeakKey, TValue, Func, TValue, TValue>) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.IDictionary, TValue>.Add(Microsoft.Graph.Communications.Common.WeakKey, TValue) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.IDictionary, TValue>.Remove(Microsoft.Graph.Communications.Common.WeakKey) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.Add(System.Collections.Generic.KeyValuePair, TValue>) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.Contains(System.Collections.Generic.KeyValuePair, TValue>) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.Remove(System.Collections.Generic.KeyValuePair, TValue>) ConcurrentDictionary, TValue>.IEnumerable.GetEnumerator() ConcurrentDictionary, TValue>.IDictionary.Add(Object, Object) ConcurrentDictionary, TValue>.IDictionary.Contains(Object) ConcurrentDictionary, TValue>.IDictionary.GetEnumerator() ConcurrentDictionary, TValue>.IDictionary.Remove(Object) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.IDictionary.get_Item(System.Object) System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.IDictionary.set_Item(System.Object, System.Object) ConcurrentDictionary, TValue>.ICollection.CopyTo(Array, Int32) ConcurrentDictionary, TValue>.Item[WeakKey] ConcurrentDictionary, TValue>.Count ConcurrentDictionary, TValue>.IsEmpty ConcurrentDictionary, TValue>.Keys System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.IReadOnlyDictionary, TValue>.Keys ConcurrentDictionary, TValue>.Values System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.IReadOnlyDictionary, TValue>.Values System.Collections.Concurrent.ConcurrentDictionary, TValue>.System.Collections.Generic.ICollection, TValue>>.IsReadOnly ConcurrentDictionary, TValue>.IDictionary.IsFixedSize ConcurrentDictionary, TValue>.IDictionary.IsReadOnly ConcurrentDictionary, TValue>.IDictionary.Keys ConcurrentDictionary, TValue>.IDictionary.Values ConcurrentDictionary, TValue>.IDictionary.Item[Object] ConcurrentDictionary, TValue>.ICollection.IsSynchronized ConcurrentDictionary, TValue>.ICollection.SyncRoot Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class WeakKeyDictionary : ConcurrentDictionary, TValue>, IDictionary, TValue>, ICollection, TValue>>, IDictionary, ICollection, IReadOnlyDictionary, TValue>, IReadOnlyCollection, TValue>>, IEnumerable, TValue>>, IEnumerable where TKey : class Type Parameters Name Description TKey Key type which must be a reference type. TValue Value type. Constructors WeakKeyDictionary() Declaration public WeakKeyDictionary() Methods Cleanup() Cleans keys where the weak references have been garbage collected. Declaration public void Cleanup() Implements System.Collections.Generic.IDictionary System.Collections.Generic.ICollection System.Collections.IDictionary System.Collections.ICollection System.Collections.Generic.IReadOnlyDictionary System.Collections.Generic.IReadOnlyCollection System.Collections.Generic.IEnumerable System.Collections.IEnumerable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) CollectionUtils.ForEach(IEnumerable, Action) CollectionUtils.ForEachParallel(IEnumerable, Action, IGraphLogger) CollectionUtils.GetValueOrDefault(IDictionary, TKey) CollectionUtils.GetValueOrDefault(IDictionary, TKey, TValue) CollectionUtils.AddRange(ICollection, IEnumerable) CollectionUtils.ToSortedList(IEnumerable, Func) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.Any(IEnumerable) Validator.FirstObject(IEnumerable, Func) Validator.FirstObject(IEnumerable) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.NotEmpty(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) Validator.VerifyNotContainsKey(IDictionary, TK) Validator.VerifyContainsKey(IDictionary, TK) Validator.VerifyContainsKey(IReadOnlyDictionary, TK) Validator.VerifyContains(IEnumerable, T)" }, - "bot_media/Microsoft.Skype.Bots.Media.MediaSendStatus.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaSendStatus.html", - "title": "Enum MediaSendStatus", - "keywords": "Enum MediaSendStatus Indicates whether an AudioSocket or VideoSocket is capable of sending media. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaSendStatus Fields Name Description Active Media can be sent Inactive Media cannot be sent" + "common/Microsoft.Graph.Communications.Common.Transport.GraphResponseExtensions.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphResponseExtensions.html", + "title": "Class GraphResponseExtensions", + "keywords": "Class GraphResponseExtensions Extensions for IGraphResponse class. Inheritance Object GraphResponseExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class GraphResponseExtensions Methods ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable) Converts IGraphResponse into a HttpResponseMessage . Declaration public static HttpResponseMessage ToHttpResponseMessage(this IGraphResponse graphResponse, JsonSerializerSettings jsonSerializerSettings = null, IEnumerable defaultProperties = null) Parameters Type Name Description IGraphResponse graphResponse The graph response to be converted. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. IEnumerable < IGraphProperty > defaultProperties The default properties. Returns Type Description HttpResponseMessage HttpResponseMessage corresponding to graphResponse . Type Parameters Name Description T Type of content available in the response. ToHttpStatus(ResponseStatus) Convert ResponseStatus to it's corresponding HttpStatusCode . Declaration public static HttpStatusCode ToHttpStatus(this ResponseStatus status) Parameters Type Name Description ResponseStatus status The status. Returns Type Description HttpStatusCode HttpStatusCode for the ResponseStatus" }, - "bot_media/Microsoft.Skype.Bots.Media.PerfCounterConfiguration.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.PerfCounterConfiguration.html", - "title": "Class PerfCounterConfiguration", - "keywords": "Class PerfCounterConfiguration Perf counter configuration Inheritance Object PerfCounterConfiguration Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class PerfCounterConfiguration Constructors PerfCounterConfiguration() Constructor Declaration public PerfCounterConfiguration() Properties UseMPAzureAppHostPerfCounterProvider If set to true, will use MPAzureAppHost's default perf counter provider which uses the registered win32 perf counters Otherwise, will use the in-memory MPPerfCounterProvider that doesn't load win32 perf counters Declaration public bool UseMPAzureAppHostPerfCounterProvider { get; set; } Property Value Type Description Boolean VerifyPerfCounterConfiguration Default is true If set to false, will not verify the perf counter configuration of the bot (MediaPerf.dll and/or MP perf counters) Declaration public bool VerifyPerfCounterConfiguration { get; set; } Property Value Type Description Boolean Methods IsValidConfiguration(PerfCounterConfiguration) Checks if the config is valid Declaration public static bool IsValidConfiguration(PerfCounterConfiguration perfConfig) Parameters Type Name Description PerfCounterConfiguration perfConfig Returns Type Description Boolean ToString() ToString override Declaration public override string ToString() Returns Type Description String Overrides Object.ToString()" + "common/Microsoft.Graph.Communications.Common.Transport.GraphResponseException.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphResponseException.html", + "title": "Class GraphResponseException", + "keywords": "Class GraphResponseException Class representing GraphResponseException Inheritance Object Exception GraphResponseException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphResponseException : Exception, ISerializable, _Exception Constructors GraphResponseException(IGraphResponse) Initializes a new instance of the GraphResponseException class. Declaration public GraphResponseException(IGraphResponse errorResponse) Parameters Type Name Description IGraphResponse errorResponse The error response. Properties Response Gets the response. Declaration public IGraphResponse Response { get; } Property Value Type Description IGraphResponse The response. Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also Exception" }, - "bot_media/Microsoft.Skype.Bots.Media.ToneReceivedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.ToneReceivedEventArgs.html", - "title": "Class ToneReceivedEventArgs", - "keywords": "Class ToneReceivedEventArgs Event arguments of the ToneReceived event. Inheritance Object EventArgs ToneReceivedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class ToneReceivedEventArgs : EventArgs Constructors ToneReceivedEventArgs() Declaration public ToneReceivedEventArgs() Properties Tone Tone id Declaration public ToneId Tone { get; set; } Property Value Type Description ToneId" + "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.IObfuscationEngine.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.IObfuscationEngine.html", + "title": "Interface IObfuscationEngine", + "keywords": "Interface IObfuscationEngine Obfuscation engine that can obfuscate data. Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IObfuscationEngine Properties Enabled Gets a value indicating whether obfuscation is enabled. Declaration bool Enabled { get; } Property Value Type Description Boolean ObfuscationConfiguration Gets or sets the obfuscation configuration. This is also set when configuration is linked to an obfuscation engine. Declaration ObfuscationConfiguration ObfuscationConfiguration { get; set; } Property Value Type Description ObfuscationConfiguration Methods Obfuscate(Object, ObfuscationTag) Obfuscates the specified payload. Declaration string Obfuscate(object payload, ObfuscationTag obfuscationTag) Parameters Type Name Description Object payload The payload. ObfuscationTag obfuscationTag The obfuscation tag. Returns Type Description String Obfuscated data. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoReceiveStatusChangedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoReceiveStatusChangedEventArgs.html", - "title": "Class VideoReceiveStatusChangedEventArgs", - "keywords": "Class VideoReceiveStatusChangedEventArgs Event arguments of a VideoReceiveStatusChanged event. Inheritance Object EventArgs VideoReceiveStatusChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoReceiveStatusChangedEventArgs : EventArgs Constructors VideoReceiveStatusChangedEventArgs() Declaration public VideoReceiveStatusChangedEventArgs() Properties MediaReceiveStatus The media receive status. Declaration public MediaReceiveStatus MediaReceiveStatus { get; set; } Property Value Type Description MediaReceiveStatus MediaType MediaType of the video socket raising the event. This could be Video or Vbss. Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType SocketId Socket Id associated with the video receive event Declaration public int SocketId { get; set; } Property Value Type Description Int32" + "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.HashingObfuscationEngine.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.HashingObfuscationEngine.html", + "title": "Class HashingObfuscationEngine", + "keywords": "Class HashingObfuscationEngine Obfuscation engine that hashes PII using salt. Inheritance Object HashingObfuscationEngine Implements IObfuscationEngine Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class HashingObfuscationEngine : IObfuscationEngine Constructors HashingObfuscationEngine(Func) Initializes a new instance of the HashingObfuscationEngine class. Declaration public HashingObfuscationEngine(Func saltProvider) Parameters Type Name Description Func < Byte []> saltProvider The salt provider. Properties Enabled Gets a value indicating whether obfuscation is enabled. Declaration public bool Enabled { get; } Property Value Type Description Boolean HashAlgorithm Gets or sets the hash algorithm. Declaration public HashAlgorithm HashAlgorithm { get; set; } Property Value Type Description HashAlgorithm HashLength Gets or sets the length of the hashed payload. Set this to -1 for full salt. Declaration public int HashLength { get; set; } Property Value Type Description Int32 ObfuscationConfiguration Gets or sets the obfuscation configuration. This is also set when configuration is linked to an obfuscation engine. Declaration public ObfuscationConfiguration ObfuscationConfiguration { get; set; } Property Value Type Description ObfuscationConfiguration SaltProvider Gets or sets the salt provider. Declaration protected Func SaltProvider { get; set; } Property Value Type Description Func < Byte []> Methods Obfuscate(Object, ObfuscationTag) Obfuscates the specified payload. Declaration public string Obfuscate(object payload, ObfuscationTag obfuscationTag) Parameters Type Name Description Object payload The payload. ObfuscationTag obfuscationTag The obfuscation tag. Returns Type Description String Obfuscated data. Implements IObfuscationEngine Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoResolution.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoResolution.html", - "title": "Enum VideoResolution", - "keywords": "Enum VideoResolution Video resolution for vbss and video Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum VideoResolution Fields Name Description HD1080p 1920 X 1080 HD720p 1280 X 720 SD180p 320 X 180 SD240p 424 X 240 SD360p 640 X 360 SD540p 960 X 540" + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.html", + "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters", + "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Classes BaseFilter Non generic base filter. BaseFilter Base filter. ContentDispositionFilter Does match of content disposition header. If content disposition matches filter then whole body is removed. ContentTypeFilter Does match of content-type header. If content-type matches filter then whole body is removed. GraphUriFilters Uri filters to filter PII in graph urls. HeaderFilter Header filters act as whitelists. UriFilter URI Filter. Any group matches from REGEX are obfuscated." }, - "bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayer.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayer.html", - "title": "Class AudioVideoFramePlayer", - "keywords": "Class AudioVideoFramePlayer AudioVideoFramePlayer is responsible for streaming real time audio and video buffers. This frame player will handle audio and video sync from the audio and video buffer's timestamps Inheritance Object AudioVideoFramePlayer Implements IAudioVideoFramePlayer Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioVideoFramePlayer : IAudioVideoFramePlayer Constructors AudioVideoFramePlayer(AudioSocket, VideoSocket, AudioVideoFramePlayerSettings) Constructor for the audio video frame player. Declaration public AudioVideoFramePlayer(AudioSocket audioSocket, VideoSocket videoSocket, AudioVideoFramePlayerSettings audioVideoFramePlayerSettings) Parameters Type Name Description AudioSocket audioSocket VideoSocket videoSocket AudioVideoFramePlayerSettings audioVideoFramePlayerSettings Methods ClearAsync(Boolean, List) Clear the enqueued buffers. This will also invoke Dispose() on the buffers still in the queue. Declaration public Task ClearAsync(bool clearAudio = true, List videoFormats = null) Parameters Type Name Description Boolean clearAudio true will clear the audio buffers, Default value is set to true List < VideoFormat > videoFormats list of video formats to clear, default is null Returns Type Description Task EnqueueBuffersAsync(IList, IList) Enqueue the audio and video media buffers. Usage should be to enqueue the same audio and video length, if audio and video sockets are active. Declaration public Task EnqueueBuffersAsync(IList audioMediaBuffers, IList videoMediaBuffers) Parameters Type Name Description IList < AudioMediaBuffer > audioMediaBuffers IList < VideoMediaBuffer > videoMediaBuffers Returns Type Description Task ShutdownAsync() Shuts down the player and releases allocated resources Declaration public Task ShutdownAsync() Returns Type Description Task Events LowOnFrames Event to signal the player is low on frames Declaration public event EventHandler LowOnFrames Event Type Type Description EventHandler < LowOnFramesEventArgs > Implements IAudioVideoFramePlayer" + "common/Microsoft.Graph.Communications.Common.OData.html": { + "href": "common/Microsoft.Graph.Communications.Common.OData.html", + "title": "Namespace Microsoft.Graph.Communications.Common.OData", + "keywords": "Namespace Microsoft.Graph.Communications.Common.OData Classes CamelCaseStringEnumConverter Converts an System.Enum to and from its name string value. When converting to its string value it will use camelCase formatting. ODataConfiguration OData Configuration object to be used for different classes. ODataConstants The OData constants. ODataJsonConverter Handles resolving interfaces to the correct derived class during serialization/deserialization. ODataResolver Contract resolver that allows us to create OData json payloads with type information. ODataSerializeAsTypeAttribute Specify how a given object should be written/read on the wire. ODataTimeSpanConverter Custom json converter for TimeSpans." }, - "bot_media/Microsoft.Skype.Bots.Media.AudioSendStatusChangedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioSendStatusChangedEventArgs.html", - "title": "Class AudioSendStatusChangedEventArgs", - "keywords": "Class AudioSendStatusChangedEventArgs Event arguments of an AudioSendStatusChanged event. Inheritance Object EventArgs AudioSendStatusChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioSendStatusChangedEventArgs : EventArgs Constructors AudioSendStatusChangedEventArgs() Declaration public AudioSendStatusChangedEventArgs() Properties MediaSendStatus Status if socket is ready to send media. Declaration public MediaSendStatus MediaSendStatus { get; set; } Property Value Type Description MediaSendStatus" + "common/Microsoft.Graph.Communications.Common.OData.ODataTimeSpanConverter.html": { + "href": "common/Microsoft.Graph.Communications.Common.OData.ODataTimeSpanConverter.html", + "title": "Class ODataTimeSpanConverter", + "keywords": "Class ODataTimeSpanConverter Custom json converter for TimeSpans. Inheritance Object ODataTimeSpanConverter Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ODataTimeSpanConverter : JsonConverter Constructors ODataTimeSpanConverter() Declaration public ODataTimeSpanConverter() Properties CanWrite Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Methods CanConvert(Type) Declaration public override bool CanConvert(Type objectType) Parameters Type Name Description Type objectType Returns Type Description Boolean ReadJson(JsonReader, Type, Object, JsonSerializer) Deserializes the object to the correct type. Declaration public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonReader reader The Newtonsoft.Json.JsonReader to read from. Type objectType The interface type. Object existingValue The existing value of the object being read. Newtonsoft.Json.JsonSerializer serializer The Newtonsoft.Json.JsonSerializer for deserialization. Returns Type Description Object The deserialized object WriteJson(JsonWriter, Object, JsonSerializer) Declaration public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonWriter writer Object value Newtonsoft.Json.JsonSerializer serializer Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.DominantSpeakerChangedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.DominantSpeakerChangedEventArgs.html", - "title": "Class DominantSpeakerChangedEventArgs", - "keywords": "Class DominantSpeakerChangedEventArgs Event arguments of the DominantSpeakerChanged event. Inheritance Object EventArgs DominantSpeakerChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class DominantSpeakerChangedEventArgs : EventArgs Constructors DominantSpeakerChangedEventArgs() Declaration public DominantSpeakerChangedEventArgs() Fields None Constant value which indicates there is no dominant speaker in the conference. Declaration public const uint None = 4294967295U Field Value Type Description UInt32 Properties CurrentDominantSpeaker Current dominant speaker in the conference. The value is the MediaSourceId (MSI) of the dominant speaker in the conference. If there is no dominant speaker in the conference this value will be None (0xFFFFFFFF). Declaration public uint CurrentDominantSpeaker { get; set; } Property Value Type Description UInt32 DominantSpeakerHistory History of the dominant speakers. However, DominantSpeakerHistory won't contain any element to indicate the absence of dominant speaker in the conference. Declaration public uint[] DominantSpeakerHistory { get; set; } Property Value Type Description UInt32 []" + "common/Microsoft.Graph.Communications.Common.Exceptions.ConfigurationException.html": { + "href": "common/Microsoft.Graph.Communications.Common.Exceptions.ConfigurationException.html", + "title": "Class ConfigurationException", + "keywords": "Class ConfigurationException Configuration is bad. Mandatory configuration setting is missing. Or raw (string) setting value can not be converted to property type. Inheritance Object Exception ConfigurationException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Exceptions Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ConfigurationException : Exception, ISerializable, _Exception Constructors ConfigurationException(String) Initializes a new instance of the ConfigurationException class. Declaration public ConfigurationException(string message) Parameters Type Name Description String message The message that describes the error. ConfigurationException(String, Exception) Initializes a new instance of the ConfigurationException class. Declaration public ConfigurationException(string message, Exception innerException) Parameters Type Name Description String message The error message that explains the reason for the exception. Exception innerException The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformHealthStatus.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformHealthStatus.html", - "title": "Enum MediaPlatformHealthStatus", - "keywords": "Enum MediaPlatformHealthStatus Health status of the media platform Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaPlatformHealthStatus Fields Name Description HeavilyLoaded The media platform is under heavy load and the application should avoid allowing the current call volume to increase Normal The media platform is operating normally Overloaded The media platform is overloaded and new calls may be rejected" + "common/Microsoft.Graph.Communications.Common.EnumUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.EnumUtils.html", + "title": "Class EnumUtils", + "keywords": "Class EnumUtils Enum Utilities Inheritance Object EnumUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class EnumUtils Methods GetDescription(Enum) Gets the enum's description attribute. Declaration public static string GetDescription(this Enum value) Parameters Type Name Description Enum value The value. Returns Type Description String Enum's description Parse(String) Parses the string into enum Declaration public static TEnum Parse(string value) where TEnum : struct, IComparable, IFormattable, IConvertible Parameters Type Name Description String value input string Returns Type Description TEnum Enum's parsed value Type Parameters Name Description TEnum Enum's type to output" }, - "bot_media/Microsoft.Skype.Bots.Media.MediaQualityState.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaQualityState.html", - "title": "Enum MediaQualityState", - "keywords": "Enum MediaQualityState Indicates the media quality state Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaQualityState Fields Name Description Detected Detected Recovered Recovered" + "core/Microsoft.Graph.NotificationsExtensions.html": { + "href": "core/Microsoft.Graph.NotificationsExtensions.html", + "title": "Class NotificationsExtensions", + "keywords": "Class NotificationsExtensions Communications notifications extensions. Inheritance Object NotificationsExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class NotificationsExtensions Methods GetResourceData(CommsNotification) Gets the resource data. Declaration public static object GetResourceData(this CommsNotification notification) Parameters Type Name Description CommsNotification notification The notification. Returns Type Description Object The resource data object for the specified notification. GetResourceData(CommsNotification) Gets the resource data. Declaration public static T GetResourceData(this CommsNotification notification) Parameters Type Name Description CommsNotification notification The notification. Returns Type Description T The resource data T object for the specified notification. Type Parameters Name Description T The expected resource data type. SetResourceData(CommsNotification, Object) Sets the resource data. Declaration public static void SetResourceData(this CommsNotification notification, object data) Parameters Type Name Description CommsNotification notification The notification. Object data The data." }, - "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformHealthChangedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformHealthChangedEventArgs.html", - "title": "Class MediaPlatformHealthChangedEventArgs", - "keywords": "Class MediaPlatformHealthChangedEventArgs Event arguments of the MediaPlatformHealthChangedEvent providing the current and previous health status of the media platform. Inheritance Object EventArgs MediaPlatformHealthChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class MediaPlatformHealthChangedEventArgs : EventArgs Constructors MediaPlatformHealthChangedEventArgs() Declaration public MediaPlatformHealthChangedEventArgs() Properties CurrentHealth The current health status. Declaration public MediaPlatformHealthStatus CurrentHealth { get; set; } Property Value Type Description MediaPlatformHealthStatus PreviousHealth The previous health status. Declaration public MediaPlatformHealthStatus PreviousHealth { get; set; } Property Value Type Description MediaPlatformHealthStatus" + "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.ChatData.html": { + "href": "client/Microsoft.Graph.Communications.Common.Telemetry.LogProperties.ChatData.html", + "title": "Class LogProperties.ChatData", + "keywords": "Class LogProperties.ChatData Chat data. Inheritance Object LogProperties.ChatData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class ChatData Constructors ChatData() Declaration public ChatData() Properties ChatId Gets or sets the chat identifier. Declaration public string ChatId { get; set; } Property Value Type Description String TenantId Gets or sets the tenant identifier. Declaration public string TenantId { get; set; } Property Value Type Description String" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoColorFormat.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoColorFormat.html", - "title": "Enum VideoColorFormat", - "keywords": "Enum VideoColorFormat VideoColorFormat Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum VideoColorFormat Fields Name Description H264 H264 NV12 NV12 Rgb24 RGB24 Yuy2 YUY2" + "bot_media/Microsoft.Skype.Bots.Media.ToneReceivedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.ToneReceivedEventArgs.html", + "title": "Class ToneReceivedEventArgs", + "keywords": "Class ToneReceivedEventArgs Event arguments of the ToneReceived event. Inheritance Object EventArgs ToneReceivedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class ToneReceivedEventArgs : EventArgs Constructors ToneReceivedEventArgs() Declaration public ToneReceivedEventArgs() Properties Tone Tone id Declaration public ToneId Tone { get; set; } Property Value Type Description ToneId" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoSendStatusChangedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSendStatusChangedEventArgs.html", - "title": "Class VideoSendStatusChangedEventArgs", - "keywords": "Class VideoSendStatusChangedEventArgs Event arguments of a VideoSendStatusChanged event. Inheritance Object EventArgs VideoSendStatusChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoSendStatusChangedEventArgs : EventArgs Constructors VideoSendStatusChangedEventArgs() Declaration public VideoSendStatusChangedEventArgs() Properties MediaSendStatus The media send status. Declaration public MediaSendStatus MediaSendStatus { get; set; } Property Value Type Description MediaSendStatus MediaType MediaType of the video socket raising the event. This could be Video or Vbss. Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType PreferredEncodedVideoSourceFormats The preferred video source format if encoded video is sent. Declaration public VideoFormat[] PreferredEncodedVideoSourceFormats { get; set; } Property Value Type Description VideoFormat [] PreferredVideoSourceFormat The preferred video source format if raw video is sent. Declaration public VideoFormat PreferredVideoSourceFormat { get; set; } Property Value Type Description VideoFormat SocketId The 0-based ID of the socket that is raising this event. This socket ID can be used in multiview (ie. more than 1 video socket) to determine which video socket is raising this event. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the Microsoft.Skype.Bots.Media.MediaPlatform (or IMediaPlatform) API CreateMediaConfiguration. Eg. If the collection of IVideoSocket objects in the CreateMediaConfiguration API contains { socketA, socketB, socketC }, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Declaration public int SocketId { get; set; } Property Value Type Description Int32" + "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.Codes.html": { + "href": "core/Microsoft.Graph.Communications.Core.CommsGeneratedErrorConstants.Codes.html", + "title": "Class CommsGeneratedErrorConstants.Codes", + "keywords": "Class CommsGeneratedErrorConstants.Codes The codes Inheritance Object CommsGeneratedErrorConstants.Codes Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class Codes Fields NotAllowed Not allowed error code. Declaration public const string NotAllowed = \"notAllowed\" Field Value Type Description String" }, - "calls_media/Microsoft.Graph.Communications.Calls.Media.html": { - "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.html", - "title": "Namespace Microsoft.Graph.Communications.Calls.Media", - "keywords": "Namespace Microsoft.Graph.Communications.Calls.Media Classes AudioSendBuffer Creates an Audio Buffer for Send and also implements Dispose MediaCallExtensions Stateful call media extensions MediaCommunicationsClientBuilderExtensions The stateful client builder extension. MediaCommunicationsClientExtensions The stateful client extension. MediaSession MediaSession.MediaProperties Gets the media properties. VideoSendBuffer Creates a Video Buffer for Send and also implements Dispose Interfaces ILocalMediaSession" + "common/Microsoft.Graph.Communications.Common.GuidUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.GuidUtils.html", + "title": "Class GuidUtils", + "keywords": "Class GuidUtils Guid Utils Inheritance Object GuidUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class GuidUtils Methods EnsureNotEmpty(Guid) Ensures Guid is not empty by generating a random guid if it is empty Declaration public static Guid EnsureNotEmpty(this Guid guid) Parameters Type Name Description Guid guid input guid Returns Type Description Guid A guaranteed guid that is not empty EnsureNotEmpty(Nullable) Ensures Guid is not empty by generating a random guid if it is empty Declaration public static Guid EnsureNotEmpty(this Guid? guid) Parameters Type Name Description Nullable < Guid > guid input guid Returns Type Description Guid A guaranteed guid that is not empty ParseOrNew(String) Parse and return the guid if valid else return new guid Declaration public static Guid ParseOrNew(string input) Parameters Type Name Description String input input Returns Type Description Guid Guid of input or new guid" }, - "bot_media/Microsoft.Skype.Bots.Media.DataMediaBuffer.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.DataMediaBuffer.html", - "title": "Class DataMediaBuffer", - "keywords": "Class DataMediaBuffer Reserved for the internal use. Inheritance Object DataMediaBuffer Implements IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public abstract class DataMediaBuffer : IDisposable Constructors DataMediaBuffer() Declaration protected DataMediaBuffer() Properties Data Reserved for the internal use. Declaration public byte[] Data { get; protected set; } Property Value Type Description Byte [] MediaSourceId Reserved for the internal use. Declaration public uint MediaSourceId { get; protected set; } Property Value Type Description UInt32 Methods Dispose() Reserved for the internal use. Declaration public void Dispose() Dispose(Boolean) Reserved for the internal use. Declaration protected abstract void Dispose(bool disposing) Parameters Type Name Description Boolean disposing Implements System.IDisposable" + "common/Microsoft.Graph.Communications.Common.Extensions.html": { + "href": "common/Microsoft.Graph.Communications.Common.Extensions.html", + "title": "Class Extensions", + "keywords": "Class Extensions Defines Extensions. Inheritance Object Extensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class Extensions Methods ChangeType(Object, Type) Returns an object of the specified type and whose value is equivalent to the specified object. Declaration public static object ChangeType(this object value, Type conversionType) Parameters Type Name Description Object value An object that implements the IConvertible interface. Type conversionType The type of object to return. Returns Type Description Object Converted object Exceptions Type Condition InvalidCastException This conversion is not supported. -or- value is null and conversionType is a value conversionType.-or- value does not implement the IConvertible interface. FormatException value is not in a format recognized by conversionType . OverflowException value represents a number that is out of the range of conversionType . ArgumentNullException conversionType is null. ChangeType(Object) Convert conversionType of an object Declaration public static T ChangeType(this object value) Parameters Type Name Description Object value An object that implements the IConvertible interface. Returns Type Description T Converted object Type Parameters Name Description T Type requested Exceptions Type Condition InvalidCastException This conversion is not supported. -or- value is null and is a value conversionType.-or- value does not implement the IConvertible interface. FormatException value is not in a format recognized by . OverflowException value represents a number that is out of the range of . ArgumentNullException is null. CreateObserver(IObservable, Action, Action, Action) Create observer Declaration public static Observer CreateObserver(this IObservable observable, Action onNext, Action onError = null, Action onCompleted = null) Parameters Type Name Description IObservable observable Object providing the events. Action onNext Callback for data. Action < Exception > onError Callback for errors. Action onCompleted Callback for completion. Returns Type Description Observer New observer object Type Parameters Name Description T Type of the observer. GetDeterministicHashCode(String) Gets deterministic hash code of the given string. Using FNV-1a hash: https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function Declaration public static uint GetDeterministicHashCode(this string str) Parameters Type Name Description String str The string. Returns Type Description UInt32 The unsigned hash code. Lock(Mutex) Lock mutex Declaration public static IDisposable Lock(this Mutex mutex) Parameters Type Name Description Mutex mutex Mutex to enter. Returns Type Description IDisposable Disposable cleanup to release mutex. Pin(Object) Pin object memory. Declaration public static AutoClean Pin(this object obj) Parameters Type Name Description Object obj Object to pin. Returns Type Description AutoClean < IntPtr > Disposable cleanup to release pinned memory. PushDir(String) Push directory and restore when done. Declaration public static IDisposable PushDir(string directory) Parameters Type Name Description String directory New directory to change to. Returns Type Description IDisposable Disposable to restore to previous directory. Read(ReaderWriterLockSlim) Automatic cleanup of entering read lock. Declaration public static IDisposable Read(this ReaderWriterLockSlim lockSlim) Parameters Type Name Description ReaderWriterLockSlim lockSlim Lock instance. Returns Type Description IDisposable Disposable cleanup instance. ReplaceFirst(String, String, String) Replaces the first occurence of search string with replace string. Declaration public static string ReplaceFirst(this string text, string search, string replace) Parameters Type Name Description String text The source text. String search The search string. String replace String to be replaced. Returns Type Description String Updated soruce text. ReplaceScheme(Uri, String, String) Replace URI scheme. Declaration public static Uri ReplaceScheme(this Uri uri, string find, string replace) Parameters Type Name Description Uri uri Subject URI String find Find string. String replace Replace string. Returns Type Description Uri New URI. SafeWait(SemaphoreSlim) Safe wait on semaphore Declaration public static IDisposable SafeWait(this SemaphoreSlim semaphoreSlim) Parameters Type Name Description SemaphoreSlim semaphoreSlim The semaphore to wait on. Returns Type Description IDisposable Disposable cleanup to release semaphore. SafeWaitAsync(SemaphoreSlim) Safe wait on semaphore Declaration public static Task SafeWaitAsync(this SemaphoreSlim semaphoreSlim) Parameters Type Name Description SemaphoreSlim semaphoreSlim The semaphore to wait on. Returns Type Description Task < IDisposable > Disposable cleanup to release semaphore. TrapErrors(Action, IGraphLogger, TraceLevel, String, String, String, Int32) Trap exceptions from action. Declaration public static Exception TrapErrors(this Action action, IGraphLogger logger, TraceLevel level, string component = \"\", string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description Action action Action to run. IGraphLogger logger Logger to log exception data. TraceLevel level Trace level. String component The component in which this log is created. String memberName Calling function. String filePath Filename where code is located. Int32 lineNumber Line number where code is located. Returns Type Description Exception Task containing exception if any. TrapErrors(Action, TKey, IGraphLogger, TraceLevel, String, String, String, Int32) Trap exceptions from action. Declaration public static Exception TrapErrors(this Action action, TKey key, IGraphLogger logger, TraceLevel level, string component = \"\", string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description Action action Action to run. TKey key Key for the action. IGraphLogger logger Logger to log exception data. TraceLevel level Trace level. String component The component in which this log is created. String memberName Calling function. String filePath Filename where code is located. Int32 lineNumber Line number where code is located. Returns Type Description Exception Task containing exception if any. Type Parameters Name Description TKey Action key type. TrapErrorsAsync(Task, IGraphLogger, TraceLevel, String, String, String, Int32) Trap exceptions from antecedent task. Declaration public static Task TrapErrorsAsync(this Task task, IGraphLogger logger, TraceLevel level, string component = \"\", string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description Task task Antecedent task. IGraphLogger logger Logger to log exception data. TraceLevel level Trace level. String component The component in which this log is created. String memberName Calling function. String filePath Filename where code is located. Int32 lineNumber Line number where code is located. Returns Type Description Task < Exception > Task containing exception if any. TryDispose(Object, IGraphLogger) Try and dispose the object if it supports the right interface. Declaration public static void TryDispose(this object obj, IGraphLogger logger = null) Parameters Type Name Description Object obj Object to dispose. IGraphLogger logger Logger instance. UpgradeableRead(ReaderWriterLockSlim) Automatic cleanup of entering read lock. Declaration public static IDisposable UpgradeableRead(this ReaderWriterLockSlim lockSlim) Parameters Type Name Description ReaderWriterLockSlim lockSlim Lock instance. Returns Type Description IDisposable Disposable cleanup instance. WaitAsync(Task, Int32) Waits for the Task to complete execution within a specified number of milliseconds. Traps errors on the task to avoid unobserved task exceptions. Declaration public static Task WaitAsync(this Task task, int millisecondsTimeout = -1) Parameters Type Name Description Task task Task to wait. Int32 millisecondsTimeout The number of milliseconds to wait, or Infinite (-1) to wait indefinitely. Returns Type Description Task < Boolean > true if the Task completed execution within the allotted time; otherwise, false. Write(ReaderWriterLockSlim) Automatic cleanup of entering write lock. Declaration public static IDisposable Write(this ReaderWriterLockSlim lockSlim) Parameters Type Name Description ReaderWriterLockSlim lockSlim Lock instance. Returns Type Description IDisposable Disposable cleanup instance." }, - "bot_media/Microsoft.Skype.Bots.Media.IAudioVideoFramePlayer.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.IAudioVideoFramePlayer.html", - "title": "Interface IAudioVideoFramePlayer", - "keywords": "Interface IAudioVideoFramePlayer Interface for the AudioVideoFramePlayer responsible for streaming real time audio video Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IAudioVideoFramePlayer Methods ClearAsync(Boolean, List) Clears media buffers from the param settings, if nothing is specified it will clear all the audio and video buffers that are in the queue Declaration Task ClearAsync(bool clearAudio = true, List videoFormats = null) Parameters Type Name Description Boolean clearAudio true will clear the audio buffers, default value is set to true List < VideoFormat > videoFormats list of video formats to clear, default value is null Returns Type Description Task EnqueueBuffersAsync(IList, IList) Enqueue the audio and video media buffers. Usage should be to enqueue the same audio and video length, if audio and video socket are active. Declaration Task EnqueueBuffersAsync(IList audioMediaBuffers, IList videoMediaBuffers) Parameters Type Name Description IList < AudioMediaBuffer > audioMediaBuffers IList < VideoMediaBuffer > videoMediaBuffers Returns Type Description Task ShutdownAsync() This will shutdown the player and clean the associated resources Declaration Task ShutdownAsync() Returns Type Description Task Events LowOnFrames This event will be raised if the player is low on frames Declaration event EventHandler LowOnFrames Event Type Type Description EventHandler < LowOnFramesEventArgs >" + "client/Microsoft.Graph.Communications.Resources.IResourceCollection-2.html": { + "href": "client/Microsoft.Graph.Communications.Resources.IResourceCollection-2.html", + "title": "Interface IResourceCollection", + "keywords": "Interface IResourceCollection The resource collection interface. Inherited Members IResourceCollection.TerminateAsync(TimeSpan) IResourceBase.CreatedDateTime IResourceBase.Client IResourceBase.GraphClient IResourceBase.GraphLogger IResourceBase.ResourcePath IDisposable.Dispose() IReadOnlyCollection.Count IEnumerable.GetEnumerator() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResourceCollection : IResourceCollection, IResourceBase, IDisposable, IReadOnlyCollection, IEnumerable, IEnumerable where TResource : IResource where TEntity : Entity Type Parameters Name Description TResource The containing resource type. IResource TEntity The containing resource type. Entity Properties Item[String] The resource with the specified identifier. Declaration TResource this[string id] { get; } Parameters Type Name Description String id The identifier. Property Value Type Description TResource The IResource . Methods TryForceRemove(String, out TResource) Attempts to remove and return the value that has the specified id from the IResourceCollection . This will force remove the object, if for whatever reason it cannot be removed by the service. It should only be used as a last resort to clean up stale resources. Declaration bool TryForceRemove(string id, out TResource resource) Parameters Type Name Description String id The identifier. TResource resource The resource. Returns Type Description Boolean true if the object was removed successfully; otherwise, false. See Also IResourceCollection IReadOnlyCollection " }, - "bot_media/Microsoft.Skype.Bots.Media.MediaStreamFailureEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaStreamFailureEventArgs.html", - "title": "Class MediaStreamFailureEventArgs", - "keywords": "Class MediaStreamFailureEventArgs Event arguments of the MediaStreamFailure event. Inheritance Object EventArgs MediaStreamFailureEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class MediaStreamFailureEventArgs : EventArgs Constructors MediaStreamFailureEventArgs() Declaration public MediaStreamFailureEventArgs()" + "client/Microsoft.Graph.Communications.Resources.IResourceBase.html": { + "href": "client/Microsoft.Graph.Communications.Resources.IResourceBase.html", + "title": "Interface IResourceBase", + "keywords": "Interface IResourceBase The resource base interface. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public interface IResourceBase : IDisposable Properties Client Gets the client. Declaration ICommunicationsClient Client { get; } Property Value Type Description ICommunicationsClient CreatedDateTime Gets the created date time of this resource. Declaration DateTimeOffset CreatedDateTime { get; } Property Value Type Description DateTimeOffset GraphClient Gets the graph client. Declaration IGraphClient GraphClient { get; } Property Value Type Description IGraphClient GraphLogger Gets the graph logger. Declaration IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger ResourcePath Gets the resource path for this collection. Declaration string ResourcePath { get; } Property Value Type Description String See Also IDisposable" }, - "bot_media/Microsoft.Skype.Bots.Media.SkypeMediaException.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.SkypeMediaException.html", - "title": "Class SkypeMediaException", - "keywords": "Class SkypeMediaException Root class for the exceptions that are specific to the Skype Media Bots SDK, ie. exceptions other than the standard .NET Framework exceptions. Inheritance Object Exception SkypeMediaException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class SkypeMediaException : Exception, ISerializable, _Exception Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" + "common/Microsoft.Graph.Communications.Common.Transport.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.html", + "title": "Namespace Microsoft.Graph.Communications.Common.Transport", + "keywords": "Namespace Microsoft.Graph.Communications.Common.Transport Classes GraphHttpClient Graph client that handles transport over http. GraphHttpClientContainer This class is used to handle multiple http clients within one service. This class extends the concurrent dictionary and contains a mapping from a key for the client to the http client itself. GraphHttpClientFactory The HTTP graph client factory. GraphProperty The IGraphProperty helpers and extensions. GraphRequest GraphRequest The base of the exchange of a IGraphRequest or IGraphResponse . GraphRequestExtensions Extensions for IGraphRequest class. GraphResponse GraphResponse The base of the exchange of a IGraphRequest or IGraphResponse . GraphResponseException Class representing GraphResponseException GraphResponseExtensions Extensions for IGraphResponse class. HttpRequestMessageExtensions Extensions for HttpRequestMessage . HttpResponseMessageExtensions Extensions for HttpResponseMessage class. NoContentMessage IGraphClient requires type parameters for functionality. This is a marked Type/class to make function calls to IGraphClient indicating we have request/response with no body. The sole purpose of this class's existence is to reduce code duplicacy. Structs GraphProperty Interfaces IGraphClient This class abstracts any communication with different services. This client acts at an object level rather than wire level and thus providing richer experience when working with complex objects. IGraphClientFactory Interface for factory of IGraphClient . IGraphExchange The base of the exchange of a IGraphRequest or IGraphResponse . IGraphExchange The base of the exchange of a IGraphRequest or IGraphResponse . IGraphHttpClient Interface for Http transport client. Gives us a way to work with different instances of GraphClient through Dependency Injection. IGraphProperty The graph property containing request or response data. IGraphProperty IGraphRequest The request object used by the graph sdk. IGraphRequest The request object with content. IGraphResponse The response got in exchange of a IGraphRequest . IGraphResponse The response got in exchange of a IGraphRequest . Enums RequestType Type of request that we want to issue on the transport ResponseStatus Different status of IGraphResponse ." }, - "bot_media/Microsoft.Skype.Bots.Media.VideoQualityType.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoQualityType.html", - "title": "Enum VideoQualityType", - "keywords": "Enum VideoQualityType Type of the video media quality Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum VideoQualityType Fields Name Description ReceiveFreeze Video freeze for the received stream" + "common/Microsoft.Graph.Communications.Common.Transport.GraphResponse.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphResponse.html", + "title": "Class GraphResponse", + "keywords": "Class GraphResponse Inheritance Object GraphResponse < NoContentMessage > GraphResponse Implements IGraphResponse IGraphResponse < NoContentMessage > IGraphExchange < NoContentMessage > IGraphExchange Inherited Members GraphResponse.ToString() GraphResponse.Content GraphResponse.Properties GraphResponse.ReasonPhrase GraphResponse.ErrorContent GraphResponse.Status Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphResponse : GraphResponse, IGraphResponse, IGraphResponse, IGraphExchange, IGraphExchange Constructors GraphResponse(IGraphResponse) Initializes a new instance of the GraphResponse class. This is a copy constructor. Declaration public GraphResponse(IGraphResponse response) Parameters Type Name Description IGraphResponse < NoContentMessage > response The response to be used to create a new instance. GraphResponse(ResponseStatus) Initializes a new instance of the GraphResponse class. Create a new graph response Declaration public GraphResponse(ResponseStatus status) Parameters Type Name Description ResponseStatus status Status indicating success/failure/other for the response. GraphResponse(String, ResponseStatus, String) Initializes a new instance of the GraphResponse class. Declaration public GraphResponse(string errorContent, ResponseStatus status, string reasonPhrase) Parameters Type Name Description String errorContent Content of the error. ResponseStatus status The status. String reasonPhrase The reason phrase. Implements IGraphResponse IGraphResponse IGraphExchange IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphResponseExtensions.ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable)" }, - "calls_media/Microsoft.Graph.Communications.Calls.Media.ILocalMediaSession.html": { - "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.ILocalMediaSession.html", - "title": "Interface ILocalMediaSession", - "keywords": "Interface ILocalMediaSession Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public interface ILocalMediaSession : IMediaSession, IDisposable Properties AudioSocket Gets the audio socket associated with this media session. Declaration IAudioSocket AudioSocket { get; } Property Value Type Description IAudioSocket DataSocket Gets the data socket associated with this media session. Declaration IDataSocket DataSocket { get; } Property Value Type Description IDataSocket VbssSocket Gets the VBSS socket associated with this media session. Declaration IVideoSocket VbssSocket { get; } Property Value Type Description IVideoSocket VideoSocket Gets the video socket associated with this media session. If current media session contains multiple sockets, this will return the first one in the list. Declaration IVideoSocket VideoSocket { get; } Property Value Type Description IVideoSocket VideoSockets Gets the list of video socket associated with this media session. Declaration IReadOnlyList VideoSockets { get; } Property Value Type Description IReadOnlyList < IVideoSocket >" + "common/Microsoft.Graph.Communications.Common.Transport.GraphResponse-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphResponse-1.html", + "title": "Class GraphResponse", + "keywords": "Class GraphResponse The base of the exchange of a IGraphRequest or IGraphResponse . Inheritance Object GraphResponse GraphResponse Implements IGraphResponse IGraphExchange IGraphExchange Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphResponse : IGraphResponse, IGraphExchange, IGraphExchange Type Parameters Name Description T Constructors GraphResponse(T, ResponseStatus) Initializes a new instance of the GraphResponse class. Create a new graph response Declaration public GraphResponse(T content, ResponseStatus status) Parameters Type Name Description T content The serialized content of the response. ResponseStatus status Status indicating success/failure/other for the response. GraphResponse(String, ResponseStatus, String) Initializes a new instance of the GraphResponse class. Declaration public GraphResponse(string errorContent, ResponseStatus status, string reasonPhrase) Parameters Type Name Description String errorContent Content of the error. ResponseStatus status The status. String reasonPhrase The reason phrase. Properties Content Declaration public T Content { get; set; } Property Value Type Description T ErrorContent Declaration public string ErrorContent { get; set; } Property Value Type Description String Properties Gets the properties of the exchange. Declaration public ICollection Properties { get; } Property Value Type Description ICollection < IGraphProperty > ReasonPhrase Declaration public string ReasonPhrase { get; set; } Property Value Type Description String Status Declaration public ResponseStatus Status { get; } Property Value Type Description ResponseStatus Methods ToString() Declaration public override string ToString() Returns Type Description String Overrides Object.ToString() Implements IGraphResponse IGraphExchange IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphResponseExtensions.ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable)" }, - "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCallExtensions.html": { - "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCallExtensions.html", - "title": "Class MediaCallExtensions", - "keywords": "Class MediaCallExtensions Stateful call media extensions Inheritance Object MediaCallExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public static class MediaCallExtensions Methods CreateMediaSession(ICall, AudioSocketSettings, VideoSocketSettings, VideoSocketSettings, DataSocketSettings, Guid) Creates a local media session for the provided call with a given socket configuration. Declaration public static ILocalMediaSession CreateMediaSession(this ICall call, AudioSocketSettings audioSocketSettings, VideoSocketSettings videoSocketSettings, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null, Guid mediaSessionId = default(Guid)) Parameters Type Name Description ICall call The call. AudioSocketSettings audioSocketSettings The audio socket settings. VideoSocketSettings videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Guid mediaSessionId The id for the media session. Returns Type Description ILocalMediaSession A ILocalMediaSession . Exceptions Type Condition ArgumentNullException If the call has not been specified. ArgumentException If the call does not have a valid identifier. CreateMediaSession(ICall, AudioSocketSettings, IEnumerable, VideoSocketSettings, DataSocketSettings, Guid) Creates a local media session for the provided call with a given socket configuration. Declaration public static ILocalMediaSession CreateMediaSession(this ICall call, AudioSocketSettings audioSocketSettings, IEnumerable videoSocketSettings = null, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null, Guid mediaSessionId = default(Guid)) Parameters Type Name Description ICall call The call. AudioSocketSettings audioSocketSettings The audio socket settings. IEnumerable < VideoSocketSettings > videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Guid mediaSessionId The id for the media session. Returns Type Description ILocalMediaSession A ILocalMediaSession . Exceptions Type Condition ArgumentNullException If the call has not been specified. ArgumentException If the call does not have a valid identifier. GetLocalMediaSession(ICall) Gets the local media session for this call object. Declaration public static ILocalMediaSession GetLocalMediaSession(this ICall call) Parameters Type Name Description ICall call The call. Returns Type Description ILocalMediaSession Local media session object Exceptions Type Condition InvalidCastException This call does not have a valid ILocalMediaSession object." + "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventType.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.LogEventType.html", + "title": "Enum LogEventType", + "keywords": "Enum LogEventType Log event type that describes what type of LogEvent this is. Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public enum LogEventType Fields Name Description HttpTrace The event used to track HTTP Calls. Metric The event used to track metrics Trace The event used to track Traces. Extension Methods AdditionalDataExtensions.SetInAdditionalData(String, Object) Extensions.Pin() Extensions.ChangeType(Type) Extensions.ChangeType() Extensions.TryDispose(IGraphLogger) EnumUtils.GetDescription() ReflectionUtils.GetPropertyUsingReflection(String) ReflectionUtils.SetPropertyUsingReflection(String, Object) Validator.IsNull(String, String) Validator.NotNull(String, String) Validator.Equals(LogEventType, String, String) Validator.Equals(LogEventType, String) Validator.NotEquals(LogEventType, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.DataMediaReceivedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.DataMediaReceivedEventArgs.html", - "title": "Class DataMediaReceivedEventArgs", - "keywords": "Class DataMediaReceivedEventArgs Reserved for the internal use. Inheritance Object EventArgs DataMediaReceivedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class DataMediaReceivedEventArgs : EventArgs Constructors DataMediaReceivedEventArgs() Declaration public DataMediaReceivedEventArgs() Properties Buffer Reserved for the internal use. Declaration public DataMediaBuffer Buffer { get; } Property Value Type Description DataMediaBuffer" + "common/Microsoft.Graph.Communications.Common.Exceptions.RoutingException.html": { + "href": "common/Microsoft.Graph.Communications.Common.Exceptions.RoutingException.html", + "title": "Class RoutingException", + "keywords": "Class RoutingException Generic routing exception Inheritance Object Exception RoutingException RoutingBadRequestException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Exceptions Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class RoutingException : Exception, ISerializable, _Exception Constructors RoutingException(String) Initializes a new instance of the RoutingException class. Declaration public RoutingException(string message) Parameters Type Name Description String message message RoutingException(String, Exception) Initializes a new instance of the RoutingException class. Declaration public RoutingException(string message, Exception innerException) Parameters Type Name Description String message message Exception innerException inner exception Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ExceptionUtils.FindInnerException(Exception) ExceptionUtils.FormatException(Exception, Int32) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.LogLevel.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.LogLevel.html", - "title": "Enum LogLevel", - "keywords": "Enum LogLevel Specifies a current logging level for a log line. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum LogLevel Fields Name Description Error Error Log Level Information Information Log Level Verbose Verbose Log Level Warning Warning Log Level" + "client/Microsoft.Graph.Communications.Resources.CollectionEventHandler-2.html": { + "href": "client/Microsoft.Graph.Communications.Resources.CollectionEventHandler-2.html", + "title": "Delegate CollectionEventHandler", + "keywords": "Delegate CollectionEventHandler The call collection event handler delegate. Namespace : Microsoft.Graph.Communications.Resources Assembly : Microsoft.Graph.Communications.Client.dll Syntax public delegate void CollectionEventHandler(TSender sender, CollectionEventArgs e); Parameters Type Name Description TSender sender The sender. CollectionEventArgs e The event arguments. Type Parameters Name Description TSender The type of the sender. TEntity The type of the arguments. Constructors CollectionEventHandler(Object, IntPtr) Declaration public CollectionEventHandler(object object, IntPtr method) Parameters Type Name Description Object object IntPtr method Methods BeginInvoke(TSender, CollectionEventArgs, AsyncCallback, Object) Declaration public virtual IAsyncResult BeginInvoke(TSender sender, CollectionEventArgs e, AsyncCallback callback, object object) Parameters Type Name Description TSender sender CollectionEventArgs e AsyncCallback callback Object object Returns Type Description IAsyncResult EndInvoke(IAsyncResult) Declaration public virtual void EndInvoke(IAsyncResult result) Parameters Type Name Description IAsyncResult result Invoke(TSender, CollectionEventArgs) Declaration public virtual void Invoke(TSender sender, CollectionEventArgs e) Parameters Type Name Description TSender sender CollectionEventArgs e" }, - "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformInstanceSettings.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformInstanceSettings.html", - "title": "Class MediaPlatformInstanceSettings", - "keywords": "Class MediaPlatformInstanceSettings Class that stores the settings of the Azure instance hosting the Bot Media Platform. Inheritance Object MediaPlatformInstanceSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class MediaPlatformInstanceSettings Constructors MediaPlatformInstanceSettings() Declaration public MediaPlatformInstanceSettings() Properties CertificateThumbprint Thumbprint of a local server certificate to support MTLS authentication of the Media Platform with the Microsoft Skype/Teams calling services. Declaration public string CertificateThumbprint { get; set; } Property Value Type Description String InstanceInternalPort Provides Instance InputEndpoint internal port. Declaration public int InstanceInternalPort { get; set; } Property Value Type Description Int32 InstancePublicIPAddress Provides Instance-Level Public IP address. Declaration public IPAddress InstancePublicIPAddress { get; set; } Property Value Type Description IPAddress InstancePublicPort Provides Instance InputEndpoint public port. Declaration public int InstancePublicPort { get; set; } Property Value Type Description Int32 MediaPortRange The media port range to be allocated for bot calls. Specifying media ports is optional. Declaration public PortRange MediaPortRange { get; set; } Property Value Type Description PortRange ServiceFqdn The FQDN of the Azure service hosting the Media Platform. Declaration public string ServiceFqdn { get; set; } Property Value Type Description String" + "bot_media/Microsoft.Skype.Bots.Media.VideoQualityOfExperienceData.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoQualityOfExperienceData.html", + "title": "Class VideoQualityOfExperienceData", + "keywords": "Class VideoQualityOfExperienceData Video quality of experience data Inheritance Object MediaQualityOfExperienceData VideoQualityOfExperienceData Inherited Members MediaQualityOfExperienceData.NetworkMetrics MediaQualityOfExperienceData.TotalMediaDuration Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoQualityOfExperienceData : MediaQualityOfExperienceData Constructors VideoQualityOfExperienceData() VideoQualityOfExperienceData constructor Declaration public VideoQualityOfExperienceData() Properties VideoMetrics Video-specific quality of experience metrics Declaration public VideoMetrics VideoMetrics { get; set; } Property Value Type Description VideoMetrics" }, "bot_media/Microsoft.Skype.Bots.Media.StreamDirection.html": { "href": "bot_media/Microsoft.Skype.Bots.Media.StreamDirection.html", "title": "Enum StreamDirection", "keywords": "Enum StreamDirection Stream directionality, from the point-of-view of the local media endpoint. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum StreamDirection Fields Name Description Inactive Media cannot be sent nor received Recvonly Media can be received but not sent Sendonly Media can be sent but not received Sendrecv Media can be sent and received" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoKeyFrameNeededEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoKeyFrameNeededEventArgs.html", - "title": "Class VideoKeyFrameNeededEventArgs", - "keywords": "Class VideoKeyFrameNeededEventArgs Event arguments of a VideoKeyFrameNeeded event. Inheritance Object EventArgs VideoKeyFrameNeededEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoKeyFrameNeededEventArgs : EventArgs Constructors VideoKeyFrameNeededEventArgs() Declaration public VideoKeyFrameNeededEventArgs() Properties MediaType MediaType of the video buffer. This could be Video or Vbss. Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType SocketId The 0-based ID of the socket that is raising this event. This socket ID can be used in multiview (ie. more than 1 video socket) to determine which video socket is raising this event. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the Microsoft.Skype.Bots.Media.MediaPlatform (or IMediaPlatform) API CreateMediaConfiguration. Eg. If the collection of IVideoSocket objects in the CreateMediaConfiguration API contains { socketA, socketB, socketC }, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Declaration public int SocketId { get; set; } Property Value Type Description Int32 VideoFormats VideoFormats for which keyframe is needed Declaration public VideoFormat[] VideoFormats { get; set; } Property Value Type Description VideoFormat []" + "common/Microsoft.Graph.Communications.Common.Transport.IGraphRequest-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphRequest-1.html", + "title": "Interface IGraphRequest", + "keywords": "Interface IGraphRequest The request object with content. Inherited Members IGraphExchange.Content IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphRequest : IGraphExchange, IGraphExchange Type Parameters Name Description T Type of data to be sent as part of request body. Properties RequestType Gets the type of the request. Declaration RequestType RequestType { get; } Property Value Type Description RequestType The type of the request. Uri Gets the URI location for the request. Declaration Uri Uri { get; } Property Value Type Description Uri The URI. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphRequestExtensions.ToHttpRequestMessage(IGraphRequest, JsonSerializerSettings, IEnumerable) See Also IGraphExchange " }, - "bot_media/Microsoft.Skype.Bots.Media.VideoLowOnFramesEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoLowOnFramesEventArgs.html", - "title": "Class VideoLowOnFramesEventArgs", - "keywords": "Class VideoLowOnFramesEventArgs Video low on frame event args Inheritance Object EventArgs LowOnFramesEventArgs VideoLowOnFramesEventArgs Inherited Members LowOnFramesEventArgs.MediaType LowOnFramesEventArgs.RemainingMediaLengthInMS EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoLowOnFramesEventArgs : LowOnFramesEventArgs Constructors VideoLowOnFramesEventArgs() Declaration public VideoLowOnFramesEventArgs() Properties VideoFormat The video format for the low on frame event Declaration public VideoFormat VideoFormat { get; set; } Property Value Type Description VideoFormat" + "common/Microsoft.Graph.Communications.Common.Transport.IGraphProperty.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphProperty.html", + "title": "Interface IGraphProperty", + "keywords": "Interface IGraphProperty The graph property containing request or response data. Inherited Members IEquatable.Equals(IGraphProperty) Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphProperty : IEquatable Properties Key Gets the key. Declaration string Key { get; } Property Value Type Description String Type Gets the type of the property. Declaration string Type { get; } Property Value Type Description String Value Gets the value. Declaration object Value { get; } Property Value Type Description Object Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphProperty.ConvertProperty(IGraphProperty)" }, - "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaSession.html": { - "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaSession.html", - "title": "Class MediaSession", - "keywords": "Class MediaSession Inheritance Object MediaSession Implements ILocalMediaSession IMediaSession IDisposable Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public class MediaSession : ObjectRootDisposable, ILocalMediaSession, IMediaSession, IDisposable Constructors MediaSession(IGraphLogger, Guid, AudioSocketSettings, VideoSocketSettings, VideoSocketSettings, DataSocketSettings) Initializes a new instance of the MediaSession class. Declaration public MediaSession(IGraphLogger logger, Guid mediaSessionId, AudioSocketSettings audioSocketSettings, VideoSocketSettings videoSocketSettings, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null) Parameters Type Name Description IGraphLogger logger The logger. Guid mediaSessionId The media session id. AudioSocketSettings audioSocketSettings The audio socket settings. VideoSocketSettings videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Exceptions Type Condition ArgumentException When no media session id or no valid socket settings have been specified. MediaSession(IGraphLogger, Guid, AudioSocketSettings, IEnumerable, VideoSocketSettings, DataSocketSettings) Initializes a new instance of the MediaSession class. Declaration public MediaSession(IGraphLogger logger, Guid mediaSessionId, AudioSocketSettings audioSocketSettings, IEnumerable videoSocketSettings = null, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null) Parameters Type Name Description IGraphLogger logger The logger. Guid mediaSessionId The media session id. AudioSocketSettings audioSocketSettings The audio socket settings. IEnumerable < VideoSocketSettings > videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Exceptions Type Condition ArgumentException When no media session id or no valid socket settings have been specified. Properties AudioSocket Gets the audio socket associated with this media session. Declaration public IAudioSocket AudioSocket { get; } Property Value Type Description IAudioSocket DataSocket Gets the data socket associated with this media session. Declaration public IDataSocket DataSocket { get; } Property Value Type Description IDataSocket MediaSessionId Declaration public Guid MediaSessionId { get; } Property Value Type Description Guid Modalities Declaration public Modality[] Modalities { get; } Property Value Type Description Modality [] VbssSocket Gets the VBSS socket associated with this media session. Declaration public IVideoSocket VbssSocket { get; } Property Value Type Description IVideoSocket VideoSocket Gets the video socket associated with this media session. If current media session contains multiple sockets, this will return the first one in the list. Declaration public IVideoSocket VideoSocket { get; } Property Value Type Description IVideoSocket VideoSockets Gets the list of video socket associated with this media session. Declaration public IReadOnlyList VideoSockets { get; } Property Value Type Description IReadOnlyList < IVideoSocket > Methods Dispose(Boolean) Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing GetMediaConfiguration() Declaration public JObject GetMediaConfiguration() Returns Type Description Newtonsoft.Json.Linq.JObject Implements ILocalMediaSession IMediaSession System.IDisposable" + "client/Microsoft.Graph.Communications.Client.Cache.ServiceCache.html": { + "href": "client/Microsoft.Graph.Communications.Client.Cache.ServiceCache.html", + "title": "Class ServiceCache", + "keywords": "Class ServiceCache The cache that restores the data directly from the service. In this case there is no storage of data, as the service acts as the master. Inheritance Object ServiceCache Implements ICache Namespace : Microsoft.Graph.Communications.Client.Cache Assembly : Microsoft.Graph.Communications.Client.dll Syntax public class ServiceCache : ObjectRootDisposable, ICache Constructors ServiceCache(IGraphLogger, IGraphClient, ISerializer, String) Initializes a new instance of the ServiceCache class. Declaration public ServiceCache(IGraphLogger logger, IGraphClient client, ISerializer serializer, string baseUri) Parameters Type Name Description IGraphLogger logger Logger instance. IGraphClient client The client. ISerializer serializer The serializer. String baseUri The base URI. Methods GetDataAsync(IEnumerable, String, CancellationToken) Gets the serialized string of the data at the specified resource path asynchronously. Fetching data only happens in HA/DR scenarios, so could take longer. Declaration public Task GetDataAsync(IEnumerable properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken)) where T : Entity Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < String > The recovered serialized data at the specified resource path. Type Parameters Name Description T The type of Entity to fetch. GetDataCollectionAsync(IEnumerable, String, CancellationToken) Gets the resource paths for the children of the collection with the specified resource path asynchronously. Fetching data only happens in HA/DR scenarios, so could take longer. Declaration public Task> GetDataCollectionAsync(IEnumerable properties, string resourcePath, CancellationToken cancellationToken = default(CancellationToken)) where T : Entity Parameters Type Name Description IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IEnumerable < String >> The recovered collection or child resource paths. Type Parameters Name Description T The type of Entity contained in the collection. SetData(ChangeType, IResource, IEnumerable, String, Lazy) Sets the data under the specified resource path. These should be short running operations, as they block notification callbacks. Declaration public void SetData(ChangeType change, IResource resource, IEnumerable properties, string resourcePath, Lazy serializedData) Parameters Type Name Description ChangeType change The type of change occuring. IResource resource The resource being serialized. IEnumerable < IGraphProperty > properties The properties. String resourcePath The resource path. Lazy < String > serializedData The serialized data lazy string. For performance reasons the string is only serialized when requested. Implements ICache See Also ObjectRootDisposable ICache" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoSettings.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSettings.html", - "title": "Class VideoSettings", - "keywords": "Class VideoSettings Video Frame player settings Inheritance Object VideoSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoSettings Constructors VideoSettings() Declaration public VideoSettings()" + "core/Microsoft.Graph.Communications.Core.Serialization.html": { + "href": "core/Microsoft.Graph.Communications.Core.Serialization.html", + "title": "Namespace Microsoft.Graph.Communications.Core.Serialization", + "keywords": "Namespace Microsoft.Graph.Communications.Core.Serialization Classes CommsSerializer An interface for serializing and deserializing JSON objects. This serializer is used throughout the Communications workload to provide extra functionality. Specifically it supports more robust serialization/deserialization of @odata.type property and deserialization of open type additional data." }, - "bot_media/Microsoft.Skype.Bots.Media.VideoSinkEncodingFormat.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSinkEncodingFormat.html", - "title": "Enum VideoSinkEncodingFormat", - "keywords": "Enum VideoSinkEncodingFormat VideoSinkEncodingFormats Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum VideoSinkEncodingFormat Fields Name Description H264 H264 Yuv Yuv" + "core/Microsoft.Graph.Communications.Core.Serialization.CommsSerializer.html": { + "href": "core/Microsoft.Graph.Communications.Core.Serialization.CommsSerializer.html", + "title": "Class CommsSerializer", + "keywords": "Class CommsSerializer An interface for serializing and deserializing JSON objects. This serializer is used throughout the Communications workload to provide extra functionality. Specifically it supports more robust serialization/deserialization of @odata.type property and deserialization of open type additional data. Inheritance Object CommsSerializer Implements ISerializer Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Serialization Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class CommsSerializer : ISerializer Constructors CommsSerializer(Boolean) Initializes a new instance of the CommsSerializer class. Declaration public CommsSerializer(bool pretty = false) Parameters Type Name Description Boolean pretty If set to true make the formatting pretty. CommsSerializer(Boolean, Assembly[]) Initializes a new instance of the CommsSerializer class. Declaration public CommsSerializer(bool pretty = false, params Assembly[] assemblies) Parameters Type Name Description Boolean pretty If set to true make the formatting pretty. Assembly [] assemblies The assemblies to use for deserialization. The CommsSerializer searches through the specified assemblies in order specified to find the @odata.type in the json payload. Properties CoreAssemblies Gets the list of core Assembly detected. Declaration public Assembly[] CoreAssemblies { get; } Property Value Type Description Assembly [] JsonSerializerSettings Gets the JSON serializer settings. Declaration public JsonSerializerSettings JsonSerializerSettings { get; } Property Value Type Description Newtonsoft.Json.JsonSerializerSettings Methods DeserializeObject(Stream) Declaration public T DeserializeObject(Stream stream) Parameters Type Name Description Stream stream Returns Type Description T Type Parameters Name Description T DeserializeObject(String) Declaration public T DeserializeObject(string inputString) Parameters Type Name Description String inputString Returns Type Description T Type Parameters Name Description T SerializeObject(Object) Declaration public string SerializeObject(object serializeableObject) Parameters Type Name Description Object serializeableObject Returns Type Description String Implements Microsoft.Graph.ISerializer See Also ISerializer" }, - "bot_media/Microsoft.Skype.Bots.Media.DataSocketSettings.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.DataSocketSettings.html", - "title": "Class DataSocketSettings", - "keywords": "Class DataSocketSettings Reserved for the internal use. Inheritance Object DataSocketSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class DataSocketSettings Constructors DataSocketSettings() Reserved for the internal use. Declaration public DataSocketSettings() Properties CallId Reserved for the internal use. Declaration public string CallId { get; set; } Property Value Type Description String ReceiveDataType Reserved for the internal use. Declaration public DataType ReceiveDataType { get; set; } Property Value Type Description DataType SendDataType Reserved for the internal use. Declaration public DataType SendDataType { get; set; } Property Value Type Description DataType StreamDirections Reserved for the internal use. Declaration public StreamDirection StreamDirections { get; set; } Property Value Type Description StreamDirection" + "core/Microsoft.Graph.Communications.Core.Notifications.CollectionNotificationEventArgs.html": { + "href": "core/Microsoft.Graph.Communications.Core.Notifications.CollectionNotificationEventArgs.html", + "title": "Class CollectionNotificationEventArgs", + "keywords": "Class CollectionNotificationEventArgs The collection notification event args. Inheritance Object NotificationEventArgs CollectionNotificationEventArgs Inherited Members NotificationEventArgs.NotificationId NotificationEventArgs.CallbackUri NotificationEventArgs.Notification NotificationEventArgs.TenantId NotificationEventArgs.RequestId NotificationEventArgs.ScenarioId NotificationEventArgs.ChangeType NotificationEventArgs.AdditionalData Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Core.Notifications Assembly : Microsoft.Graph.Communications.Core.dll Syntax public class CollectionNotificationEventArgs : NotificationEventArgs Constructors CollectionNotificationEventArgs(Uri, CommsNotification, ChangeType, IReadOnlyList) Initializes a new instance of the CollectionNotificationEventArgs class. Declaration public CollectionNotificationEventArgs(Uri callbackUri, CommsNotification notification, ChangeType changeType, IReadOnlyList resourceData) Parameters Type Name Description Uri callbackUri The callback URI. CommsNotification notification The notification. ChangeType changeType Type of the change. IReadOnlyList < Object > resourceData The resource data. Properties ResourceData Gets the resource data object list. Declaration public IReadOnlyList ResourceData { get; } Property Value Type Description IReadOnlyList < Object > The resource data object list. See Also NotificationEventArgs" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoMediaReceivedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoMediaReceivedEventArgs.html", - "title": "Class VideoMediaReceivedEventArgs", - "keywords": "Class VideoMediaReceivedEventArgs Event arguments of a VideoMediaReceived event. Inheritance Object EventArgs VideoMediaReceivedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoMediaReceivedEventArgs : EventArgs Constructors VideoMediaReceivedEventArgs() Declaration public VideoMediaReceivedEventArgs() Properties Buffer The received video media buffer. Declaration public VideoMediaBuffer Buffer { get; set; } Property Value Type Description VideoMediaBuffer MediaType MediaType of the video socket. This could be Video or Vbss. The MediaType is set after the socket is passed to the CreateMediaConfiguration API. It may also be set via the VideoSocketSettings during socket creation. Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType SocketId The 0-based ID of the socket that is raising this event. This socket ID can be used in multiview (ie. more than 1 video socket) to determine which video socket is raising this event. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the Microsoft.Skype.Bots.Media.MediaPlatform (or IMediaPlatform) API CreateMediaConfiguration. Eg. If the collection of IVideoSocket objects in the CreateMediaConfiguration API contains { socketA, socketB, socketC }, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Declaration public int SocketId { get; set; } Property Value Type Description Int32" + "common/Microsoft.Graph.Communications.Common.Transport.NoContentMessage.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.NoContentMessage.html", + "title": "Class NoContentMessage", + "keywords": "Class NoContentMessage IGraphClient requires type parameters for functionality. This is a marked Type/class to make function calls to IGraphClient indicating we have request/response with no body. The sole purpose of this class's existence is to reduce code duplicacy. Inheritance Object NoContentMessage Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class NoContentMessage Constructors NoContentMessage() Declaration public NoContentMessage() Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.AudioSettings.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioSettings.html", - "title": "Class AudioSettings", - "keywords": "Class AudioSettings Audio frame player settings Inheritance Object AudioSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioSettings Constructors AudioSettings(UInt32) Default constructor Declaration public AudioSettings(uint buffersizeInMs) Parameters Type Name Description UInt32 buffersizeInMs Properties BufferSizeInMs Audio buffer length in ms Declaration public uint BufferSizeInMs { get; set; } Property Value Type Description UInt32" + "calls/Microsoft.Graph.Communications.Calls.ICall.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.ICall.html", + "title": "Interface ICall", + "keywords": "Interface ICall The stateful call interface. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface ICall : IResource, IResource, IResourceBase, IDisposable Properties CorrelationId Gets the correlation identifier. Declaration [Obsolete(\"Please use ScenarioId instead.\")] Guid CorrelationId { get; } Property Value Type Description Guid MediaSession Gets the media session, if any. This is used only for Local Media Scenarios. Declaration IMediaSession MediaSession { get; } Property Value Type Description IMediaSession Participants Gets the Participants collection for this call. Declaration IParticipantCollection Participants { get; } Property Value Type Description IParticipantCollection Resource Gets the call resource. Declaration Call Resource { get; } Property Value Type Description Call ScenarioId Gets the scenario identifier. Declaration Guid ScenarioId { get; } Property Value Type Description Guid TenantId Gets the tenant identifier. Declaration string TenantId { get; } Property Value Type Description String Methods AnswerAsync(MediaConfig, IEnumerable, String, Guid, CancellationToken) Answer an incoming call asynchronously. Declaration Task AnswerAsync(MediaConfig mediaConfig, IEnumerable acceptedModalities = null, string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description MediaConfig mediaConfig The MediaConfig . IEnumerable < Modality > acceptedModalities The accepted list of Modality . String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated ChangeScreenSharingRoleAsync(ScreenSharingRole, CancellationToken) Changes own sharing role in a vbss session. Declaration Task ChangeScreenSharingRoleAsync(ScreenSharingRole role, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description ScreenSharingRole role The role to change to. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. DeleteAsync(Boolean, CancellationToken) Deletes this call asynchronously. Declaration Task DeleteAsync(bool handleHttpNotFoundInternally = false, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Boolean handleHttpNotFoundInternally If the ICall is already gone, whether to handle the exception gracefully or not. CancellationToken cancellationToken The CancellationToken for the request. Returns Type Description Task The Task that completes after the request has been sent. The completion of this task does not guarantee deletion. Confirmation of deletion comes as a notification and can be subscribed by ICall.OnUpdated and ICallCollection.OnUpdated KeepAliveAsync(CancellationToken) Send heartbeat to keep call alive. Declaration Task KeepAliveAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. MuteAsync(CancellationToken) Mutes the self participant asynchronously. Declaration Task MuteAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The mute notification will come in on IParticipant.OnUpdated PlayPromptAsync(IEnumerable, Action, CancellationToken) Plays the specified media prompts. Declaration Task PlayPromptAsync(IEnumerable prompts, Action promptsQueued = null, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description IEnumerable < MediaPrompt > prompts The list of MediaPrompt to play Action promptsQueued A callback indicating when the prompts have been queued, but have not yet completed playing. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < PlayOperationResult > The PlayOperationResult with information on how the play operation completed. Exceptions Type Condition ServiceException An error has occurred when playing the prompt. RedirectAsync(IEnumerable, Nullable, String, Guid, CancellationToken) Redirects the incoming call asynchronously. Declaration Task RedirectAsync(IEnumerable targets, int? timeout = default(int? ), string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description IEnumerable < InvitationParticipantInfo > targets The targets to whom the call should be redirected to. Nullable < Int32 > timeout The timeout after which the redirect is canceled. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. RejectAsync(Nullable, String, Guid, CancellationToken) Rejects the incoming call asynchronously. Declaration Task RejectAsync(RejectReason? rejectReason = default(RejectReason? ), string callbackUri = null, Guid scenarioId = default(Guid), CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Nullable < RejectReason > rejectReason The reason for call rejection. String callbackUri The optional callback uri. Specifying this will override the default callback uri set when creating the ICommunicationsClient Guid scenarioId The scenario identitifer. This parameter should be used for tracking scenarios across multiple calls. Automatically generated by the SDK if not provided. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. SubscribeToToneAsync(CancellationToken) Subscribe to DTMF (dual-tone multi-frequency signaling). This allows you to be notified when the user presses keys on a \"touchtone\" phone. Declaration Task SubscribeToToneAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The DTMF notifications will come on ICall.OnUpdated TransferAsync(InvitationParticipantInfo, CancellationToken) Transfer a call to a given target. Declaration Task TransferAsync(InvitationParticipantInfo target, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description InvitationParticipantInfo target The target to transfer the call to. CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. This does not guarantee that the call has been answered. Any updates on call will be delivered via notification and can be observed using ICall.OnUpdated UnmuteAsync(CancellationToken) Unmutes the self participant asynchronously. Declaration Task UnmuteAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task The Task that completes after the request has been sent. The unmute notification will come in on IParticipant.OnUpdated Extension Methods CallExtensions.AnswerAsync(ICall, IMediaSession, String, Guid, CancellationToken) CallExtensions.AnswerAsync(ICall, IEnumerable, IEnumerable, String, Guid, CancellationToken) CallExtensions.AnswerAsync(ICall, IEnumerable, String, Guid, CancellationToken)" }, - "bot_media/Microsoft.Skype.Bots.Media.DataSendStatusChangedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.DataSendStatusChangedEventArgs.html", - "title": "Class DataSendStatusChangedEventArgs", - "keywords": "Class DataSendStatusChangedEventArgs Reserved for the internal use. Inheritance Object EventArgs DataSendStatusChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class DataSendStatusChangedEventArgs : EventArgs Constructors DataSendStatusChangedEventArgs() Declaration public DataSendStatusChangedEventArgs() Properties MediaSendStatus Reserved for the internal use. Declaration public MediaSendStatus MediaSendStatus { get; set; } Property Value Type Description MediaSendStatus" + "bot_media/Microsoft.Skype.Bots.Media.VideoSendCapability.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSendCapability.html", + "title": "Class VideoSendCapability", + "keywords": "Class VideoSendCapability The Video Send Capability Inheritance Object VideoSendCapability Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoSendCapability Constructors VideoSendCapability() Declaration public VideoSendCapability() Properties MaxConcurrentSendStreams Maximum number of concurrent streams that can be sent. Declaration public uint MaxConcurrentSendStreams { get; set; } Property Value Type Description UInt32 SupportedSendVideoFormats The list of video formats the VideoSocket supports sending. Declaration public IList SupportedSendVideoFormats { get; set; } Property Value Type Description IList < VideoFormat > Remarks For the main-video modality ( MediaType.Video ), the following ten H264 send video formats are supported: H264_1920x1080_30Fps H264_1280x720_30Fps H264_960x540_30Fps H264_640x360_30Fps H264_640x360_15Fps H264_424x240_15Fps H264_320x180_15Fps H264_320x180_7_5Fps H264_320x180_3_75Fps H264_320x180_1_875Fps (If the SupportedSendVideoFormats list contains other H264 video formats for main-video, they will be ignored and not used.) At least one of the H264_320x180 video formats must be supported. For best video interoperability, the bot should support all the H264_320x180 formats. For the Vbss modality, all of the send formats must be of the same resolution. The resolution should best match the native resolution of the content to be shared. Downscaling the Vbss content to a lower resolution should be avoided (but may be necessary if the native content resolution is larger than 1080p). The bot should support as many different frame rates as possible. The 1.875 fps frame rate must be supported. Methods ToString() String representation of VideoSendCapability Declaration public override string ToString() Returns Type Description String Overrides Object.ToString()" + }, + "common/Microsoft.Graph.Communications.Common.Transport.IGraphClientFactory.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphClientFactory.html", + "title": "Interface IGraphClientFactory", + "keywords": "Interface IGraphClientFactory Interface for factory of IGraphClient . Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphClientFactory Methods Create(IGraphLogger) Creates a new IGraphClient . Declaration IGraphClient Create(IGraphLogger logger = null) Parameters Type Name Description IGraphLogger logger An optional IGraphLogger logger to be used in the new IGraphClient . Returns Type Description IGraphClient The IGraphClient . Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Transport.IGraphClient.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphClient.html", + "title": "Interface IGraphClient", + "keywords": "Interface IGraphClient This class abstracts any communication with different services. This client acts at an object level rather than wire level and thus providing richer experience when working with complex objects. Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphClient Properties DefaultProperties Gets the default properties. Declaration IEnumerable DefaultProperties { get; } Property Value Type Description IEnumerable < IGraphProperty > GraphLogger Gets the graph logger. Declaration IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Methods SendAsync(IGraphRequest, CancellationToken) Send a request as an asynchronous operation. Declaration Task SendAsync(IGraphRequest request, CancellationToken cancellationToken = default(CancellationToken)) where TRequest : class Parameters Type Name Description IGraphRequest request The request message to send. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IGraphResponse > The task object representing the asynchronous operation. Type Parameters Name Description TRequest Type of the content present in the request. SendAsync(IGraphRequest, CancellationToken) Send a request as an asynchronous operation. Declaration Task> SendAsync(IGraphRequest request, CancellationToken cancellationToken = default(CancellationToken)) where TRequest : class where TResponse : class Parameters Type Name Description IGraphRequest request The request message to send. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IGraphResponse > The task object representing the asynchronous operation. Type Parameters Name Description TRequest Type of the content present in the request. TResponse Type of the expected content in response. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.html", + "title": "Namespace Microsoft.Graph.Communications.Common.Telemetry.Obfuscation", + "keywords": "Namespace Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Classes GraphObfuscationAttribute Attribute used for decoration of data objects. This is used for obfuscation for logging. GraphObfuscationContractResolver Newtonsoft JSON resolver that uses Graph Obfuscation attribute to serialize data for logging purposes. HashingObfuscationConfiguration The hashing obfuscation configuration. This configurations is preconfigured to use the HashingObfuscationEngine and provides logic to automatically generate a salt which resets daily. HashingObfuscationEngine Obfuscation engine that hashes PII using salt. ObfuscatedValueProvider Newtonsoft JSONs value provider for obfuscated data. ObfuscationConfiguration Configuration for obfuscation of different parts. ObfuscationSerializer The obfuscation serializer can be used to serialize and de-serialize an obfuscation schema, as well as generate a schema from specified assemblies. Structs ObfuscationMember The obfuscation member. This struct is used to generate an obfuscation schema for any class type or it's members. It can be passed into the GraphObfuscationContractResolver which will cache the schema when resolving object and member obfuscation. Interfaces IObfuscationEngine Obfuscation engine that can obfuscate data. Enums ObfuscationTag Tag used to provide a hint for the type of obfuscation to perform." }, "bot_media/Microsoft.Skype.Bots.Media.IMediaPlatform.html": { "href": "bot_media/Microsoft.Skype.Bots.Media.IMediaPlatform.html", "title": "Interface IMediaPlatform", "keywords": "Interface IMediaPlatform Interface to the MediaPlatform. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IMediaPlatform : IDisposable Properties CurrentHealth The current health status of the media platform. Declaration MediaPlatformHealthStatus CurrentHealth { get; } Property Value Type Description MediaPlatformHealthStatus Methods CreateMediaConfiguration(IAudioSocket) Returns a serialized MediaConfiguration object representing the socket so that the Skype calling cloud can establish an audio/video call to the bot. Declaration JObject CreateMediaConfiguration(IAudioSocket audioSocket) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. Returns Type Description Newtonsoft.Json.Linq.JObject Serialized MediaConfiguration object. Exceptions Type Condition InvalidOperationException MediaPlatform is not initialized. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IDataSocket) Reserved for the internal use. Declaration JObject CreateMediaConfiguration(IAudioSocket audioSocket, IDataSocket dataSocket) Parameters Type Name Description IAudioSocket audioSocket IDataSocket dataSocket Returns Type Description Newtonsoft.Json.Linq.JObject CreateMediaConfiguration(IAudioSocket, IVideoSocket) Returns a serialized MediaConfiguration object representing the sockets so that the Skype calling cloud can establish an audio/video call to the bot. Declaration JObject CreateMediaConfiguration(IAudioSocket audioSocket, IVideoSocket videoSocket) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. IVideoSocket videoSocket Socket that handles video. Returns Type Description Newtonsoft.Json.Linq.JObject Serialized MediaConfiguration object. Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IList) Returns a serialized MediaConfiguration object representing the sockets so that the Skype calling cloud can establish an audio/video call to the bot. Declaration JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. IList < IVideoSocket > videoSockets Ordered list of video sockets. If multiview sockets are provided, only the first one can have a send direction (ie. send only or send receive) and all the sockets should have a receive direction. Returns Type Description Newtonsoft.Json.Linq.JObject Serialized MediaConfiguration object. Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket) Returns a serialized MediaConfiguration object representing the sockets so that the Skype calling cloud can establish an audio/video/video-based screen sharing call to the bot. Declaration JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets, IVideoSocket vbssSocket) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. IList < IVideoSocket > videoSockets Ordered list of video sockets. If multiview sockets are provided, only the first one can have a send direction (ie. send only or send receive) and all the sockets should have a receive direction. IVideoSocket vbssSocket Video socket for the video-based screen sharing (VBSS) modality. Socket must be configured as RecvOnly. Returns Type Description Newtonsoft.Json.Linq.JObject Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized, or a vbssSocket is configured to be sendonly or sendrecv. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket, IDataSocket) Reserved for the internal use. Declaration JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets, IVideoSocket vbssSocket, IDataSocket dataSocket) Parameters Type Name Description IAudioSocket audioSocket IList < IVideoSocket > videoSockets IVideoSocket vbssSocket IDataSocket dataSocket Returns Type Description Newtonsoft.Json.Linq.JObject CreateMediaConfiguration(IVideoSocket) Returns a serialized mediaConfiguration object representing the socket so that the Skype calling cloud can establish a video-based screen sharing call to the bot. Declaration JObject CreateMediaConfiguration(IVideoSocket vbssSocket) Parameters Type Name Description IVideoSocket vbssSocket Video socket for the video-based screen sharing (VBSS) modality. Socket must be configured as RecvOnly. Returns Type Description Newtonsoft.Json.Linq.JObject Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized, or a vbssSocket is configured to be sendonly or sendrecv. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. GetCurrentTimestamp() Get a current timestamp, in 100-ns units. To be used when sourcing media buffers. Declaration long GetCurrentTimestamp() Returns Type Description Int64 Initialize(MediaPlatformSettings) Initializes the Media Platform for Bot. Declaration void Initialize(MediaPlatformSettings settings) Parameters Type Name Description MediaPlatformSettings settings Settings to initialize the Bot Media Platform. Events MediaPlatformHealthChanged Raised when there is a change in the media platform's health status. The event arguments report the current and previous platform health conditions. Declaration event EventHandler MediaPlatformHealthChanged Event Type Type Description EventHandler < MediaPlatformHealthChangedEventArgs > Remarks A bot application which may handle very high call volumes or perform complex real-time media processing should monitor this event for changes in the media platform health status. When the event reports the platform health status has become HeavilyLoaded, the application should avoid starting new bot calls on the machine instance until the health status returns back to Normal." }, - "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformFactory.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformFactory.html", - "title": "Class MediaPlatformFactory", - "keywords": "Class MediaPlatformFactory MediaPlatformFactory that is used to create IMediaPlatform. Inheritance Object MediaPlatformFactory Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public static class MediaPlatformFactory Methods CreateMediaPlatform() Creates the Media Platform for bots. The platform has to be initialized before it is used. Declaration public static IMediaPlatform CreateMediaPlatform() Returns Type Description IMediaPlatform The interface to the Media Platform." + "core/Microsoft.Graph.ContractsConstants.CallProperties.html": { + "href": "core/Microsoft.Graph.ContractsConstants.CallProperties.html", + "title": "Class ContractsConstants.CallProperties", + "keywords": "Class ContractsConstants.CallProperties Call properties constants Inheritance Object ContractsConstants.CallProperties Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph Assembly : Microsoft.Graph.Communications.Core.dll Syntax public static class CallProperties Fields AllowGuestToBypassLobby The lobbyBypass value for group call join. Declaration public const string AllowGuestToBypassLobby = \"allowGuestToBypassLobby\" Field Value Type Description String" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.MetricLogData.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.MetricLogData.html", + "title": "Class MetricLogData", + "keywords": "Class MetricLogData The metric of Geneva Instrumentation Framework (Ifx). Inheritance Object MetricLogData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class MetricLogData Constructors MetricLogData() Declaration public MetricLogData() Properties AddDefaultDimension Gets or sets a value indicating whether the default dimensions are included. Declaration public bool AddDefaultDimension { get; set; } Property Value Type Description Boolean Dimensions Gets or sets the dimensions. Declaration public Dictionary Dimensions { get; set; } Property Value Type Description Dictionary < String , String > Name Gets or sets the name. Declaration public string Name { get; set; } Property Value Type Description String Namespace Gets or sets the namespace. Declaration public string Namespace { get; set; } Property Value Type Description String RawData Gets or sets the raw data. Declaration public long RawData { get; set; } Property Value Type Description Int64 Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.BaseFilter.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.BaseFilter.html", + "title": "Class BaseFilter", + "keywords": "Class BaseFilter Non generic base filter. Inheritance Object BaseFilter BaseFilter Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public abstract class BaseFilter Constructors BaseFilter() Declaration protected BaseFilter() Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" + }, + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.BaseFilter-2.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.BaseFilter-2.html", + "title": "Class BaseFilter", + "keywords": "Class BaseFilter Base filter. Inheritance Object BaseFilter BaseFilter ContentDispositionFilter ContentTypeFilter HeaderFilter UriFilter Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public abstract class BaseFilter : BaseFilter Type Parameters Name Description T1 Type of input for the filter. T2 Return value for the evaluator. Constructors BaseFilter() Declaration protected BaseFilter() Properties MatchableString Gets or sets the string for which this filter is a match. Declaration public T2 MatchableString { get; protected set; } Property Value Type Description T2 MatchEvaluator Gets or sets the match evaluator that converts the input value to target value. Declaration public Func MatchEvaluator { get; protected set; } Property Value Type Description Func Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.PortRange.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.PortRange.html", - "title": "Class PortRange", - "keywords": "Class PortRange The Port range Inheritance Object PortRange Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class PortRange Constructors PortRange(UInt32, UInt32) The PortRange constructor Declaration public PortRange(uint minPort, uint maxPort) Parameters Type Name Description UInt32 minPort The minimum port. UInt32 maxPort The maximum port. Properties MaxPort The maximum port. Declaration public uint MaxPort { get; } Property Value Type Description UInt32 MinPort The minimum port. Declaration public uint MinPort { get; } Property Value Type Description UInt32" + "common/Microsoft.Graph.Communications.Common.Observer-1.html": { + "href": "common/Microsoft.Graph.Communications.Common.Observer-1.html", + "title": "Class Observer", + "keywords": "Class Observer Observer class. Inheritance Object Disposable Observer Implements IDisposable IObserver Inherited Members Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class Observer : Disposable, IDisposable, IObserver Type Parameters Name Description T Type of the value the observer returns. Constructors Observer(IObservable, Action, Action, Action) Initializes a new instance of the Observer class. Declaration public Observer(IObservable observable, Action onNext, Action onError = null, Action onCompleted = null) Parameters Type Name Description IObservable observable Observable object. Action onNext Callback for next. Action < Exception > onError Callback for error. Action onCompleted Callback for completed. Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) Explicit Interface Implementations IObserver.OnCompleted() Callback when observer has no more data. Declaration void IObserver.OnCompleted() IObserver.OnError(Exception) Callback when observer hits an error. Declaration void IObserver.OnError(Exception error) Parameters Type Name Description Exception error Exception info. IObserver.OnNext(T) Callback when data arrives. Declaration void IObserver.OnNext(T value) Parameters Type Name Description T value Observed value. Implements System.IDisposable System.IObserver Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoFormat.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoFormat.html", - "title": "Class VideoFormat", - "keywords": "Class VideoFormat VideoFormat Inheritance Object VideoFormat Implements IEquatable < VideoFormat > Inherited Members Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoFormat : IEquatable Fields H264_1280x720_1_875Fps H264 1280x720 1.875fps video format Declaration public static readonly VideoFormat H264_1280x720_1_875Fps Field Value Type Description VideoFormat H264_1280x720_15Fps H264 1280x720 15fps video format Declaration public static readonly VideoFormat H264_1280x720_15Fps Field Value Type Description VideoFormat H264_1280x720_3_75Fps H264 1280x720 3.75fps video format Declaration public static readonly VideoFormat H264_1280x720_3_75Fps Field Value Type Description VideoFormat H264_1280x720_30Fps H264 1280x720 30fps video format Declaration public static readonly VideoFormat H264_1280x720_30Fps Field Value Type Description VideoFormat H264_1280x720_7_5Fps H264 1280x720 7.5fps video format Declaration public static readonly VideoFormat H264_1280x720_7_5Fps Field Value Type Description VideoFormat H264_1920x1080_1_875Fps H264 1920x1080 1.875fps video format Declaration public static readonly VideoFormat H264_1920x1080_1_875Fps Field Value Type Description VideoFormat H264_1920x1080_15Fps H264 1920x1080 15fps video format Declaration public static readonly VideoFormat H264_1920x1080_15Fps Field Value Type Description VideoFormat H264_1920x1080_3_75Fps H264 1920x1080 3.75fps video format Declaration public static readonly VideoFormat H264_1920x1080_3_75Fps Field Value Type Description VideoFormat H264_1920x1080_30Fps H264 1920x1080 30fps video format Declaration public static readonly VideoFormat H264_1920x1080_30Fps Field Value Type Description VideoFormat H264_1920x1080_7_5Fps H264 1920x1080 7.5fps video format Declaration public static readonly VideoFormat H264_1920x1080_7_5Fps Field Value Type Description VideoFormat H264_320x180_1_875Fps H264 320x180 1.875fps video format Declaration public static readonly VideoFormat H264_320x180_1_875Fps Field Value Type Description VideoFormat H264_320x180_15Fps H264 320x180 15fps video format Declaration public static readonly VideoFormat H264_320x180_15Fps Field Value Type Description VideoFormat H264_320x180_3_75Fps H264 320x180 3.75fps video format Declaration public static readonly VideoFormat H264_320x180_3_75Fps Field Value Type Description VideoFormat H264_320x180_7_5Fps H264 320x180 7.5fps video format Declaration public static readonly VideoFormat H264_320x180_7_5Fps Field Value Type Description VideoFormat H264_424x240_15Fps H264 424x240 15fps video format Declaration public static readonly VideoFormat H264_424x240_15Fps Field Value Type Description VideoFormat H264_640x360_15Fps H264 640x360 15fps video format Declaration public static readonly VideoFormat H264_640x360_15Fps Field Value Type Description VideoFormat H264_640x360_30Fps H264 640x360 30fps video format Declaration public static readonly VideoFormat H264_640x360_30Fps Field Value Type Description VideoFormat H264_960x540_30Fps H264 960x540 30fps video format Declaration public static readonly VideoFormat H264_960x540_30Fps Field Value Type Description VideoFormat NV12_1080x1920_30Fps NV12 1080x1920 30fps video format Declaration public static readonly VideoFormat NV12_1080x1920_30Fps Field Value Type Description VideoFormat NV12_1280x720_1_875Fps NV12 1280x720 1.875fps video format Declaration public static readonly VideoFormat NV12_1280x720_1_875Fps Field Value Type Description VideoFormat NV12_1280x720_15Fps NV12 1280x720 15fps video format Declaration public static readonly VideoFormat NV12_1280x720_15Fps Field Value Type Description VideoFormat NV12_1280x720_3_75Fps NV12 1280x720 3.75fps video format Declaration public static readonly VideoFormat NV12_1280x720_3_75Fps Field Value Type Description VideoFormat NV12_1280x720_30Fps NV12 1280x720 30fps video format Declaration public static readonly VideoFormat NV12_1280x720_30Fps Field Value Type Description VideoFormat NV12_1280x720_7_5Fps NV12 1280x720 7.5fps video format Declaration public static readonly VideoFormat NV12_1280x720_7_5Fps Field Value Type Description VideoFormat NV12_180x320_30Fps NV12 180x320 15fps video format Declaration public static readonly VideoFormat NV12_180x320_30Fps Field Value Type Description VideoFormat NV12_1920x1080_1_875Fps NV12 1920x1080 1.875fps video format Declaration public static readonly VideoFormat NV12_1920x1080_1_875Fps Field Value Type Description VideoFormat NV12_1920x1080_15Fps NV12 1920x1080 15fps video format Declaration public static readonly VideoFormat NV12_1920x1080_15Fps Field Value Type Description VideoFormat NV12_1920x1080_3_75Fps NV12 1920x1080 3.75fps video format Declaration public static readonly VideoFormat NV12_1920x1080_3_75Fps Field Value Type Description VideoFormat NV12_1920x1080_30Fps NV12 1920x1080 30fps video format Declaration public static readonly VideoFormat NV12_1920x1080_30Fps Field Value Type Description VideoFormat NV12_1920x1080_7_5Fps NV12 1920x1080 7.5fps video format Declaration public static readonly VideoFormat NV12_1920x1080_7_5Fps Field Value Type Description VideoFormat NV12_240x424_15Fps NV12 240x424 15fps video format Declaration public static readonly VideoFormat NV12_240x424_15Fps Field Value Type Description VideoFormat NV12_270x480_15Fps NV12 270x480 15fps video format Declaration public static readonly VideoFormat NV12_270x480_15Fps Field Value Type Description VideoFormat NV12_320x180_15Fps NV12 320x180 15fps video format Declaration public static readonly VideoFormat NV12_320x180_15Fps Field Value Type Description VideoFormat NV12_360x640_15Fps NV12 360x640 15fps video format Declaration public static readonly VideoFormat NV12_360x640_15Fps Field Value Type Description VideoFormat NV12_360x640_30Fps NV12 360x640 30fps video format Declaration public static readonly VideoFormat NV12_360x640_30Fps Field Value Type Description VideoFormat NV12_424x240_15Fps NV12 424x240 15fps video format Declaration public static readonly VideoFormat NV12_424x240_15Fps Field Value Type Description VideoFormat NV12_480x270_15Fps NV12 480x270 15fps video format Declaration public static readonly VideoFormat NV12_480x270_15Fps Field Value Type Description VideoFormat NV12_480x848_30Fps NV12 480x848 30fps video format Declaration public static readonly VideoFormat NV12_480x848_30Fps Field Value Type Description VideoFormat NV12_540x960_30Fps NV12 540x960 30fps video format Declaration public static readonly VideoFormat NV12_540x960_30Fps Field Value Type Description VideoFormat NV12_640x360_15Fps NV12 640x360 15fps video format Declaration public static readonly VideoFormat NV12_640x360_15Fps Field Value Type Description VideoFormat NV12_640x360_30Fps NV12 640x360 30fps video format Declaration public static readonly VideoFormat NV12_640x360_30Fps Field Value Type Description VideoFormat NV12_720x1280_30Fps NV12 720x1280 30fps video format Declaration public static readonly VideoFormat NV12_720x1280_30Fps Field Value Type Description VideoFormat NV12_848x480_30Fps NV12 848x480 30fps video format Declaration public static readonly VideoFormat NV12_848x480_30Fps Field Value Type Description VideoFormat NV12_960x540_30Fps NV12 960x540 30fps video format Declaration public static readonly VideoFormat NV12_960x540_30Fps Field Value Type Description VideoFormat Rgb24_1080x1920_30Fps Rgb24 1080x1920 30fps video format Declaration public static readonly VideoFormat Rgb24_1080x1920_30Fps Field Value Type Description VideoFormat Rgb24_1280x720_1_875Fps Rgb24 1280x720 1.875fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_1_875Fps Field Value Type Description VideoFormat Rgb24_1280x720_15Fps Rgb24 1280x720 15fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_15Fps Field Value Type Description VideoFormat Rgb24_1280x720_3_75Fps Rgb24 1280x720 3.75fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_3_75Fps Field Value Type Description VideoFormat Rgb24_1280x720_30Fps Rgb24 1280x720 30fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_30Fps Field Value Type Description VideoFormat Rgb24_1280x720_7_5Fps Rgb24 1280x720 7.5fps video format Declaration public static readonly VideoFormat Rgb24_1280x720_7_5Fps Field Value Type Description VideoFormat Rgb24_180x320_30Fps Rgb24 180x320 15fps video format Declaration public static readonly VideoFormat Rgb24_180x320_30Fps Field Value Type Description VideoFormat Rgb24_1920x1080_1_875Fps Rgb24 1920x1080 1.875fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_1_875Fps Field Value Type Description VideoFormat Rgb24_1920x1080_15Fps Rgb24 1920x1080 15fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_15Fps Field Value Type Description VideoFormat Rgb24_1920x1080_3_75Fps Rgb24 1920x1080 3.75fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_3_75Fps Field Value Type Description VideoFormat Rgb24_1920x1080_30Fps Rgb24 1920x1080 30fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_30Fps Field Value Type Description VideoFormat Rgb24_1920x1080_7_5Fps Rgb24 1920x1080 7.5fps video format Declaration public static readonly VideoFormat Rgb24_1920x1080_7_5Fps Field Value Type Description VideoFormat Rgb24_240x424_15Fps Rgb24 240x424 15fps video format Declaration public static readonly VideoFormat Rgb24_240x424_15Fps Field Value Type Description VideoFormat Rgb24_270x480_15Fps Rgb24 270x480 15fps video format Declaration public static readonly VideoFormat Rgb24_270x480_15Fps Field Value Type Description VideoFormat Rgb24_320x180_15Fps Rgb24 320x180 15fps video format Declaration public static readonly VideoFormat Rgb24_320x180_15Fps Field Value Type Description VideoFormat Rgb24_360x640_15Fps Rgb24 360x640 15fps video format Declaration public static readonly VideoFormat Rgb24_360x640_15Fps Field Value Type Description VideoFormat Rgb24_360x640_30Fps Rgb24 360x640 30fps video format Declaration public static readonly VideoFormat Rgb24_360x640_30Fps Field Value Type Description VideoFormat Rgb24_424x240_15Fps Rgb24 424x240 15fps video format Declaration public static readonly VideoFormat Rgb24_424x240_15Fps Field Value Type Description VideoFormat Rgb24_480x270_15Fps Rgb24 480x270 15fps video format Declaration public static readonly VideoFormat Rgb24_480x270_15Fps Field Value Type Description VideoFormat Rgb24_480x848_30Fps Rgb24 480x848 30fps video format Declaration public static readonly VideoFormat Rgb24_480x848_30Fps Field Value Type Description VideoFormat Rgb24_540x960_30Fps Rgb24 540x960 30fps video format Declaration public static readonly VideoFormat Rgb24_540x960_30Fps Field Value Type Description VideoFormat Rgb24_640x360_15Fps Rgb24 640x360 15fps video format Declaration public static readonly VideoFormat Rgb24_640x360_15Fps Field Value Type Description VideoFormat Rgb24_640x360_30Fps Rgb24 640x360 30fps video format Declaration public static readonly VideoFormat Rgb24_640x360_30Fps Field Value Type Description VideoFormat Rgb24_720x1280_30Fps Rgb24 720x1280 30fps video format Declaration public static readonly VideoFormat Rgb24_720x1280_30Fps Field Value Type Description VideoFormat Rgb24_848x480_30Fps Rgb24 848x480 30fps video format Declaration public static readonly VideoFormat Rgb24_848x480_30Fps Field Value Type Description VideoFormat Rgb24_960x540_30Fps Rgb24 960x540 30fps video format Declaration public static readonly VideoFormat Rgb24_960x540_30Fps Field Value Type Description VideoFormat Yuy2_1080x1920_30Fps YUY2 1080x1920 30fps video format Declaration public static readonly VideoFormat Yuy2_1080x1920_30Fps Field Value Type Description VideoFormat Yuy2_1280x720_1_875Fps YUY2 1280x720 1.875fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_1_875Fps Field Value Type Description VideoFormat Yuy2_1280x720_15Fps YUY2 1280x720 15fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_15Fps Field Value Type Description VideoFormat Yuy2_1280x720_3_75Fps YUY2 1280x720 3.75fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_3_75Fps Field Value Type Description VideoFormat Yuy2_1280x720_30Fps YUY2 1280x720 30fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_30Fps Field Value Type Description VideoFormat Yuy2_1280x720_7_5Fps YUY2 1280x720 7.5fps video format Declaration public static readonly VideoFormat Yuy2_1280x720_7_5Fps Field Value Type Description VideoFormat Yuy2_180x320_30Fps YUY2 180x320 15fps video format Declaration public static readonly VideoFormat Yuy2_180x320_30Fps Field Value Type Description VideoFormat Yuy2_1920x1080_1_875Fps YUY2 1920x1080 1.875fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_1_875Fps Field Value Type Description VideoFormat Yuy2_1920x1080_15Fps YUY2 1920x1080 15fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_15Fps Field Value Type Description VideoFormat Yuy2_1920x1080_3_75Fps YUY2 1920x1080 3.75fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_3_75Fps Field Value Type Description VideoFormat Yuy2_1920x1080_30Fps YUY2 1920x1080 30fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_30Fps Field Value Type Description VideoFormat Yuy2_1920x1080_7_5Fps YUY2 1920x1080 7.5fps video format Declaration public static readonly VideoFormat Yuy2_1920x1080_7_5Fps Field Value Type Description VideoFormat Yuy2_240x424_15Fps YUY2 240x424 15fps video format Declaration public static readonly VideoFormat Yuy2_240x424_15Fps Field Value Type Description VideoFormat Yuy2_270x480_15Fps YUY2 270x480 15fps video format Declaration public static readonly VideoFormat Yuy2_270x480_15Fps Field Value Type Description VideoFormat Yuy2_320x180_15Fps YUY2 320x180 15fps video format Declaration public static readonly VideoFormat Yuy2_320x180_15Fps Field Value Type Description VideoFormat Yuy2_360x640_15Fps YUY2 360x640 15fps video format Declaration public static readonly VideoFormat Yuy2_360x640_15Fps Field Value Type Description VideoFormat Yuy2_360x640_30Fps YUY2 360x640 30fps video format Declaration public static readonly VideoFormat Yuy2_360x640_30Fps Field Value Type Description VideoFormat Yuy2_424x240_15Fps YUY2 424x240 15fps video format Declaration public static readonly VideoFormat Yuy2_424x240_15Fps Field Value Type Description VideoFormat Yuy2_480x270_15Fps YUY2 480x270 15fps video format Declaration public static readonly VideoFormat Yuy2_480x270_15Fps Field Value Type Description VideoFormat Yuy2_480x848_30Fps YUY2 480x848 30fps video format Declaration public static readonly VideoFormat Yuy2_480x848_30Fps Field Value Type Description VideoFormat Yuy2_540x960_30Fps YUY2 540x960 30fps video format Declaration public static readonly VideoFormat Yuy2_540x960_30Fps Field Value Type Description VideoFormat Yuy2_640x360_15Fps YUY2 640x360 15fps video format Declaration public static readonly VideoFormat Yuy2_640x360_15Fps Field Value Type Description VideoFormat Yuy2_640x360_30Fps YUY2 640x360 30fps video format Declaration public static readonly VideoFormat Yuy2_640x360_30Fps Field Value Type Description VideoFormat Yuy2_720x1280_30Fps YUY2 720x1280 30fps video format Declaration public static readonly VideoFormat Yuy2_720x1280_30Fps Field Value Type Description VideoFormat Yuy2_848x480_30Fps YUY2 848x480 30fps video format Declaration public static readonly VideoFormat Yuy2_848x480_30Fps Field Value Type Description VideoFormat Yuy2_960x540_30Fps YUY2 960x540 30fps video format Declaration public static readonly VideoFormat Yuy2_960x540_30Fps Field Value Type Description VideoFormat Properties BitRate Bit rate Declaration public uint BitRate { get; } Property Value Type Description UInt32 FrameRate Frame rate Declaration public float FrameRate { get; } Property Value Type Description Single Height Height Declaration public int Height { get; } Property Value Type Description Int32 VideoColorFormat VideoColorFormat Declaration public VideoColorFormat VideoColorFormat { get; } Property Value Type Description VideoColorFormat Width Width Declaration public int Width { get; } Property Value Type Description Int32 Methods Equals(VideoFormat) Equals to compare videoformat objects Declaration public bool Equals(VideoFormat videoFormat) Parameters Type Name Description VideoFormat videoFormat Returns Type Description Boolean Equals(Object) Overrides base Equals to compare objects Declaration public override bool Equals(object obj) Parameters Type Name Description Object obj Returns Type Description Boolean Overrides Object.Equals(Object) GetHashCode() Custom GetHashCode implementation Declaration public override int GetHashCode() Returns Type Description Int32 Overrides Object.GetHashCode() ToString() Provides video format details by overriding the default ToString(). Declaration public override string ToString() Returns Type Description String Details of VideoFormat. Overrides Object.ToString() Operators Equality(VideoFormat, VideoFormat) Overload == operator to do VideoFormat comparison Declaration public static bool operator ==(VideoFormat a, VideoFormat b) Parameters Type Name Description VideoFormat a VideoFormat b Returns Type Description Boolean Inequality(VideoFormat, VideoFormat) Overload != operator to do VideoFormat comparison Declaration public static bool operator !=(VideoFormat a, VideoFormat b) Parameters Type Name Description VideoFormat a VideoFormat b Returns Type Description Boolean Implements System.IEquatable" + "common/Microsoft.Graph.Communications.Common.CollectionUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.CollectionUtils.html", + "title": "Class CollectionUtils", + "keywords": "Class CollectionUtils Collection Utilities Inheritance Object CollectionUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class CollectionUtils Methods AddRange(ICollection, IEnumerable) Adds the range of source values into target. Declaration public static void AddRange(this ICollection target, IEnumerable source) Parameters Type Name Description ICollection target The target. IEnumerable source The source. Type Parameters Name Description T The type of Collection ForEach(IEnumerable, Action) Analogous to IList.ForEach but for IEnumerable Declaration public static void ForEach(this IEnumerable enumerable, Action action) Parameters Type Name Description IEnumerable enumerable Enumeration Action action Action to invoke on each element Type Parameters Name Description T Element type. ForEachParallel(IEnumerable, Action, IGraphLogger) Analogous to IList.ForEach but for IEnumerable Declaration public static Exception ForEachParallel(this IEnumerable enumerable, Action action, IGraphLogger logger) Parameters Type Name Description IEnumerable enumerable Enumeration Action action Action to invoke on each element IGraphLogger logger Instance of the Logger Returns Type Description Exception Exception if any. Type Parameters Name Description T Element type GetValueOrDefault(IDictionary, TKey) Get Value or default Declaration public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key) Parameters Type Name Description IDictionary dictionary Dictionary instance TKey key Key to lookup Returns Type Description TValue Value from dictionary or default value. Type Parameters Name Description TKey Type of the key TValue Type of the value GetValueOrDefault(IDictionary, TKey, TValue) Get Value or default Declaration public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key, TValue defaultValue) Parameters Type Name Description IDictionary dictionary Dictionary instance TKey key Key to lookup TValue defaultValue The default value to be returned if it doesn't exist. Returns Type Description TValue Value from dictionary or default value. Type Parameters Name Description TKey Type of the key TValue Type of the value ToSortedList(IEnumerable, Func) Converts sequence to a sorted list. Declaration public static SortedList ToSortedList(this IEnumerable sequence, Func keySelector) Parameters Type Name Description IEnumerable sequence The sequence. Func keySelector The function selector which provides a key given the value. Returns Type Description SortedList Sorted list. Type Parameters Name Description TKey The type of the key. TValue The type of the value. TryRemoveAndDispose(ConcurrentDictionary, TKey) Try to remove key from concurrent dictionary and dispose the value. Declaration public static void TryRemoveAndDispose(this ConcurrentDictionary dictionary, TKey key) where TValue : IDisposable Parameters Type Name Description ConcurrentDictionary dictionary Dictionary to clean up TKey key Key to lookup Type Parameters Name Description TKey Key type TValue Value type" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoMediaStreamQualityChangedEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoMediaStreamQualityChangedEventArgs.html", - "title": "Class VideoMediaStreamQualityChangedEventArgs", - "keywords": "Class VideoMediaStreamQualityChangedEventArgs Event arguments of the video media stream quality event. Inheritance Object EventArgs VideoMediaStreamQualityChangedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoMediaStreamQualityChangedEventArgs : EventArgs Constructors VideoMediaStreamQualityChangedEventArgs() Declaration public VideoMediaStreamQualityChangedEventArgs() Properties MediaQualityState Indicates the media quality state of the mediaStream quality changed event Declaration public MediaQualityState MediaQualityState { get; set; } Property Value Type Description MediaQualityState SocketId Socket id associated with the event Declaration public int SocketId { get; set; } Property Value Type Description Int32 VideoQualityType Indicates the media quality type of the media stream quality changed event Declaration public VideoQualityType VideoQualityType { get; set; } Property Value Type Description VideoQualityType" + "client/Microsoft.Graph.Communications.Client.html": { + "href": "client/Microsoft.Graph.Communications.Client.html", + "title": "Namespace Microsoft.Graph.Communications.Client", + "keywords": "Namespace Microsoft.Graph.Communications.Client Classes CommunicationsClientBuilder The class the provides the builder for stateful client. CommunicationsClientExtensions Extensions for Stateful Client. GraphLoggerExtensions The graph logger extensions for the communications client. PagedList An object that contains paginated list of the generic type T. StateManager The state manager implementation. Interfaces ICommunicationsClient The CommunicationsClient interface. This is the entry point of the SDK and a reference to this instance must be held for the duration of the session. ICommunicationsClientBuilder The builder object that builds the ICommunicationsClient . Use this class to setup the SDK's configuration. IPagedList The paged list interface. IStateManager The state manager interface. This object is responsible for storing the resources in memory." }, - "bot_media/Microsoft.Skype.Bots.Media.AudioLowOnFramesEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioLowOnFramesEventArgs.html", - "title": "Class AudioLowOnFramesEventArgs", - "keywords": "Class AudioLowOnFramesEventArgs Audio low on frame event args Inheritance Object EventArgs LowOnFramesEventArgs AudioLowOnFramesEventArgs Inherited Members LowOnFramesEventArgs.MediaType LowOnFramesEventArgs.RemainingMediaLengthInMS EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioLowOnFramesEventArgs : LowOnFramesEventArgs Constructors AudioLowOnFramesEventArgs() Declaration public AudioLowOnFramesEventArgs()" + "bot_media/Microsoft.Skype.Bots.Media.VideoColorFormat.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoColorFormat.html", + "title": "Enum VideoColorFormat", + "keywords": "Enum VideoColorFormat VideoColorFormat Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum VideoColorFormat Fields Name Description H264 H264 NV12 NV12 Rgb24 RGB24 Yuy2 YUY2" }, - "bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayerSettings.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayerSettings.html", - "title": "Class AudioVideoFramePlayerSettings", - "keywords": "Class AudioVideoFramePlayerSettings AudioVideoFramePlayer settings. This will help configure the player settings. Inheritance Object AudioVideoFramePlayerSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioVideoFramePlayerSettings Constructors AudioVideoFramePlayerSettings(AudioSettings, VideoSettings, UInt32) Constructor Declaration public AudioVideoFramePlayerSettings(AudioSettings audioSettings, VideoSettings videoSettings, uint minEnqueuedMediaLengthInMs) Parameters Type Name Description AudioSettings audioSettings BufferSize needs to be set to the size of AudioMediaBuffer to be sent VideoSettings videoSettings UInt32 minEnqueuedMediaLengthInMs Properties AudioSettings Audio settings Declaration public AudioSettings AudioSettings { get; set; } Property Value Type Description AudioSettings MinEnqueuedMediaLengthInMs The minimum length after which the player will raise the LowOnFrames event Declaration public uint MinEnqueuedMediaLengthInMs { get; set; } Property Value Type Description UInt32 VideoSettings Video Settings Declaration public VideoSettings VideoSettings { get; set; } Property Value Type Description VideoSettings" + "bot_media/Microsoft.Skype.Bots.Media.MediaStreamFailureEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaStreamFailureEventArgs.html", + "title": "Class MediaStreamFailureEventArgs", + "keywords": "Class MediaStreamFailureEventArgs Event arguments of the MediaStreamFailure event. Inheritance Object EventArgs MediaStreamFailureEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class MediaStreamFailureEventArgs : EventArgs Constructors MediaStreamFailureEventArgs() Declaration public MediaStreamFailureEventArgs()" }, - "bot_media/Microsoft.Skype.Bots.Media.HostingEnvironmentConfiguration.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.HostingEnvironmentConfiguration.html", - "title": "Enum HostingEnvironmentConfiguration", - "keywords": "Enum HostingEnvironmentConfiguration HostingEnvironmentConfiguration to use for the MediaPlatform. In most cases, the default value is correct. Only in Azure Government clouds do different settings need to be applied. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum HostingEnvironmentConfiguration Fields Name Description AzureGovernment Configuration specifically for hosting the platform in the Azure Government Cloud. AzureGovernmentDoD Configuration specificially for hosting the platform in the Azure Government DoD cloud. Default The default HostingEnvironmentConfiguration for the platform." + "calls/Microsoft.Graph.Communications.Calls.JoinMeetingParameters.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.JoinMeetingParameters.html", + "title": "Class JoinMeetingParameters", + "keywords": "Class JoinMeetingParameters Class to define parameters required for joining a meeting. Inheritance Object JoinMeetingParameters Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public class JoinMeetingParameters Constructors JoinMeetingParameters(ChatInfo, MeetingInfo, IMediaSession) Initializes a new instance of the JoinMeetingParameters class. Use this constructor for app hosted media. Declaration public JoinMeetingParameters(ChatInfo chatInfo, MeetingInfo meetingInfo, IMediaSession mediaSession) Parameters Type Name Description ChatInfo chatInfo The chat information. MeetingInfo meetingInfo The meeting information. IMediaSession mediaSession The media session. JoinMeetingParameters(ChatInfo, MeetingInfo, IEnumerable, IEnumerable) Initializes a new instance of the JoinMeetingParameters class. Use this constructor for service hosted media. Declaration public JoinMeetingParameters(ChatInfo chatInfo, MeetingInfo meetingInfo, IEnumerable requestedModalities, IEnumerable prefetchPrompts = null) Parameters Type Name Description ChatInfo chatInfo The chat information. MeetingInfo meetingInfo The meeting information. IEnumerable < Modality > requestedModalities The list of modalities for the call IEnumerable < MediaInfo > prefetchPrompts The list of media files to prefetch Properties AdditionalData Gets or sets the additional data. Declaration public IDictionary AdditionalData { get; set; } Property Value Type Description IDictionary < String , Object > AllowGuestToBypassLobby Gets or sets a value indicating whether to bypass lobby when joining a group call as guest. Declaration public bool? AllowGuestToBypassLobby { get; set; } Property Value Type Description Nullable < Boolean > ChatInfo Gets the chat information. Declaration public ChatInfo ChatInfo { get; } Property Value Type Description ChatInfo CorrelationId Gets or sets the correlation identifier. Declaration [Obsolete(\"Please use AddAsync(JoinMeetingParameters parameters, Guid scenarioId).\")] public Guid CorrelationId { get; set; } Property Value Type Description Guid GuestIdentity Gets or sets the guest identity. Declaration public Identity GuestIdentity { get; set; } Property Value Type Description Identity MediaSession Gets the media session. Declaration public IMediaSession MediaSession { get; } Property Value Type Description IMediaSession MeetingInfo Gets the meeting information. Declaration public MeetingInfo MeetingInfo { get; } Property Value Type Description MeetingInfo PrefetchPrompts Gets the list of media files to prefetch. Declaration public IEnumerable PrefetchPrompts { get; } Property Value Type Description IEnumerable < MediaInfo > RequestedModalities Gets the list of modalities to join the call with. Declaration public IEnumerable RequestedModalities { get; } Property Value Type Description IEnumerable < Modality > Subject Gets or sets the subject. Declaration public string Subject { get; set; } Property Value Type Description String TenantId Gets or sets the tenant id Declaration public string TenantId { get; set; } Property Value Type Description String" }, - "bot_media/Microsoft.Skype.Bots.Media.LowOnFramesEventArgs.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.LowOnFramesEventArgs.html", - "title": "Class LowOnFramesEventArgs", - "keywords": "Class LowOnFramesEventArgs LowOnFrames event arguments Inheritance Object EventArgs LowOnFramesEventArgs AudioLowOnFramesEventArgs VideoLowOnFramesEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class LowOnFramesEventArgs : EventArgs Constructors LowOnFramesEventArgs() Declaration public LowOnFramesEventArgs() Properties MediaType MediaType of the low on frame event Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType RemainingMediaLengthInMS Remaining enqueued media length in MS Declaration public int RemainingMediaLengthInMS { get; set; } Property Value Type Description Int32" + "bot_media/Microsoft.Skype.Bots.Media.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.html", + "title": "Namespace Microsoft.Skype.Bots.Media", + "keywords": "Namespace Microsoft.Skype.Bots.Media Classes AudioLowOnFramesEventArgs Audio low on frame event args AudioMediaBuffer Represents an unmanaged buffer containing audio media data. AudioMediaReceivedEventArgs Event arguments of an AudioMediaReceived event. AudioMetrics Audio-specific QoE metrics AudioQualityOfExperienceData Audio quality of experience data AudioSendStatusChangedEventArgs Event arguments of an AudioSendStatusChanged event. AudioSettings Audio frame player settings AudioSocket Provides Send and Receive I/O access to an audio stream. AudioSocketSettings The settings to initialize the AudioSocket. AudioVideoFramePlayer AudioVideoFramePlayer is responsible for streaming real time audio and video buffers. This frame player will handle audio and video sync from the audio and video buffer's timestamps AudioVideoFramePlayerSettings AudioVideoFramePlayer settings. This will help configure the player settings. DataMediaBuffer Reserved for the internal use. DataMediaReceivedEventArgs Reserved for the internal use. DataSendStatusChangedEventArgs Reserved for the internal use. DataSocket Reserved for the internal use. DataSocketSettings Reserved for the internal use. DominantSpeakerChangedEventArgs Event arguments of the DominantSpeakerChanged event. LowOnFramesEventArgs LowOnFrames event arguments MediaPlatform This class represents the Skype Bots Media Platform. MediaPlatformFactory MediaPlatformFactory that is used to create IMediaPlatform. MediaPlatformHealthChangedEventArgs Event arguments of the MediaPlatformHealthChangedEvent providing the current and previous health status of the media platform. MediaPlatformInstanceSettings Class that stores the settings of the Azure instance hosting the Bot Media Platform. MediaPlatformSettings Class that stores settings needed to initialize Bot Media Platform. MediaQualityOfExperienceData Media quality of experience (QoE) data MediaStreamFailureEventArgs Event arguments of the MediaStreamFailure event. NetworkMetrics QoE network level metrics PerfCounterConfiguration Perf counter configuration PortRange The Port range SkypeMediaException Root class for the exceptions that are specific to the Skype Media Bots SDK, ie. exceptions other than the standard .NET Framework exceptions. ToneReceivedEventArgs Event arguments of the ToneReceived event. VideoFormat VideoFormat VideoKeyFrameNeededEventArgs Event arguments of a VideoKeyFrameNeeded event. VideoLowOnFramesEventArgs Video low on frame event args VideoMediaBuffer Represents an unmanaged buffer containing video media data. VideoMediaReceivedEventArgs Event arguments of a VideoMediaReceived event. VideoMediaStreamQualityChangedEventArgs Event arguments of the video media stream quality event. VideoMetrics Video-specific quality of experience metrics VideoQualityOfExperienceData Video quality of experience data VideoReceiveStatusChangedEventArgs Event arguments of a VideoReceiveStatusChanged event. VideoSendCapability The Video Send Capability VideoSendStatusChangedEventArgs Event arguments of a VideoSendStatusChanged event. VideoSettings Video Frame player settings VideoSocket Provides Send and Receive I/O access to a video stream. VideoSocketSettings The video socket settings. Structs UnmixedAudioBuffer Represents an unmanaged audio buffer containing unmixed data corresponding to a specific speaker in a conference. This structure contains a pointer to the unmanaged audio buffer, the length of the buffer and the ID of the audio source of the active speaker. Interfaces IAudioSocket Interface to an AudioSocket. IAudioVideoFramePlayer Interface for the AudioVideoFramePlayer responsible for streaming real time audio video IDataSocket Reserved for the internal use. IMediaPlatform Interface to the MediaPlatform. IMediaPlatformLogger Interface for collecting MediaPlatform logs from the Bots.Media library. IVideoSocket Interface to a VideoSocket. Enums AudioFormat The audio format. DataType Reserved for internal use. HostingEnvironmentConfiguration HostingEnvironmentConfiguration to use for the MediaPlatform. In most cases, the default value is correct. Only in Azure Government clouds do different settings need to be applied. LogLevel Specifies a current logging level for a log line. MediaPlatformHealthStatus Health status of the media platform MediaQualityState Indicates the media quality state MediaReceiveStatus Indicates if the VideoSocket is capable of receiving media. MediaSendStatus Indicates whether an AudioSocket or VideoSocket is capable of sending media. MediaType Indicates the media type of the socket. StreamDirection Stream directionality, from the point-of-view of the local media endpoint. ToneId DTMF Tone Id enum. VideoColorFormat VideoColorFormat VideoQualityType Type of the video media quality VideoResolution Video resolution for vbss and video VideoSinkEncodingFormat VideoSinkEncodingFormats" }, - "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformSettings.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformSettings.html", - "title": "Class MediaPlatformSettings", - "keywords": "Class MediaPlatformSettings Class that stores settings needed to initialize Bot Media Platform. Inheritance Object MediaPlatformSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class MediaPlatformSettings Constructors MediaPlatformSettings() Declaration public MediaPlatformSettings() Properties ApplicationId String that uniquely identifies the application that initializes the platform. Declaration public string ApplicationId { get; set; } Property Value Type Description String HostingEnvironmentConfiguration Specifies the HostingEnvironmentConfiguration to use for the MediaPlatform. In most cases, the default value is sufficient. Only in Azure Government clouds do different settings need to be applied. Declaration public HostingEnvironmentConfiguration HostingEnvironmentConfiguration { get; set; } Property Value Type Description HostingEnvironmentConfiguration MediaPlatformInstanceSettings The media platform instance settings. Declaration public MediaPlatformInstanceSettings MediaPlatformInstanceSettings { get; set; } Property Value Type Description MediaPlatformInstanceSettings MediaPlatformLogger Optional logger object to receive MediaPlatform traces. Declaration public IMediaPlatformLogger MediaPlatformLogger { get; set; } Property Value Type Description IMediaPlatformLogger RegionAffinity Reserved for the internal use. Declaration public string RegionAffinity { get; set; } Property Value Type Description String" + "common/Microsoft.Graph.Communications.Common.Telemetry.ClientEtwLogger.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.ClientEtwLogger.html", + "title": "Class ClientEtwLogger", + "keywords": "Class ClientEtwLogger Logger for client that publishes to ETW. Inheritance Object EventSource ClientEtwLogger Implements IDisposable Inherited Members EventSource.IsEnabled() EventSource.IsEnabled(EventLevel, EventKeywords) EventSource.IsEnabled(EventLevel, EventKeywords, EventChannel) EventSource.GetGuid(Type) EventSource.GetName(Type) EventSource.GenerateManifest(Type, String) EventSource.GenerateManifest(Type, String, EventManifestOptions) EventSource.GetSources() EventSource.SendCommand(EventSource, EventCommand, IDictionary) EventSource.SetCurrentThreadActivityId(Guid) EventSource.SetCurrentThreadActivityId(Guid, Guid) EventSource.GetTrait(String) EventSource.ToString() EventSource.OnEventCommand(EventCommandEventArgs) EventSource.WriteEvent(Int32) EventSource.WriteEvent(Int32, Int32) EventSource.WriteEvent(Int32, Int32, Int32) EventSource.WriteEvent(Int32, Int32, Int32, Int32) EventSource.WriteEvent(Int32, Int64) EventSource.WriteEvent(Int32, Int64, Int64) EventSource.WriteEvent(Int32, Int64, Int64, Int64) EventSource.WriteEvent(Int32, String) EventSource.WriteEvent(Int32, String, String) EventSource.WriteEvent(Int32, String, String, String) EventSource.WriteEvent(Int32, String, Int32) EventSource.WriteEvent(Int32, String, Int32, Int32) EventSource.WriteEvent(Int32, String, Int64) EventSource.WriteEvent(Int32, Int64, String) EventSource.WriteEvent(Int32, Int32, String) EventSource.WriteEvent(Int32, Byte[]) EventSource.WriteEvent(Int32, Int64, Byte[]) EventSource.WriteEventCore(Int32, Int32, EventSource.EventData*) EventSource.WriteEventWithRelatedActivityIdCore(Int32, Guid*, Int32, EventSource.EventData*) EventSource.WriteEvent(Int32, Object[]) EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) EventSource.Dispose() EventSource.Dispose(Boolean) EventSource.Write(String) EventSource.Write(String, EventSourceOptions) EventSource.Write(String, T) EventSource.Write(String, EventSourceOptions, T) EventSource.Write(String, EventSourceOptions, T) EventSource.Write(String, EventSourceOptions, Guid, Guid, T) EventSource.Name EventSource.Guid EventSource.Settings EventSource.CurrentThreadActivityId EventSource.ConstructionException EventSource.EventCommandExecuted Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax [EventSource(Name = \"Microsoft-Graph-Telemetry-Client\")] public class ClientEtwLogger : EventSource, IDisposable Constructors ClientEtwLogger(IGraphLogger) Initializes a new instance of the ClientEtwLogger class. Declaration public ClientEtwLogger(IGraphLogger logger) Parameters Type Name Description IGraphLogger logger The logger. Methods HttpTrace(Guid, String, String, String, String, String, String, String, Int32, String, String, String, String, String, String) Trace for client's http calls. Declaration [Event(100, Level = EventLevel.Informational, Message = \"{5}\")] public void HttpTrace(Guid correlationId, string component, string traceLevel, string url, string transactionDirection, string message, string appName, string appId, int mtid, string callingLine, string traceType, string headers, string method, string responseCode, string responseTime) Parameters Type Name Description Guid correlationId The correlation identifier. String component The component. String traceLevel The trace level. String url The URL for the request. String transactionDirection The direction of the request this request/response corresponds to. String message The body for the request/response. String appName Name of the application. String appId The application identifier. Int32 mtid The managed tid. String callingLine The line in which log is produced. String traceType Denote whether this is request/response. String headers The headers. String method The method for the request. String responseCode The response code from response. String responseTime Time taken to process the request. Trace(Guid, String, String, String, String, String, Int32, String) Trace for client's normal trace calls. Declaration [Event(101, Level = EventLevel.Informational, Message = \"{3}\")] public void Trace(Guid correlationId, string component, string traceLevel, string message, string appName, string appId, int mtid, string callingLine) Parameters Type Name Description Guid correlationId The correlation identifier. String component The component. String traceLevel The trace level. String message The message. String appName Name of the application. String appId The application identifier. Int32 mtid The managed tid. String callingLine The line in which log is produced. Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.ToneId.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.ToneId.html", - "title": "Enum ToneId", - "keywords": "Enum ToneId DTMF Tone Id enum. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum ToneId Fields Name Description A Tone A B Tone B C Tone C D Tone D Flash Tone flash Pound Pound tone Star Star tone Tone0 Tone 0 Tone1 Tone 1 Tone2 Tone 2 Tone3 Tone 3 Tone4 Tone 4 Tone5 Tone 5 Tone6 Tone 6 Tone7 Tone 7 Tone8 Tone 8 Tone9 Tone 9" + "bot_media/Microsoft.Skype.Bots.Media.MediaReceiveStatus.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaReceiveStatus.html", + "title": "Enum MediaReceiveStatus", + "keywords": "Enum MediaReceiveStatus Indicates if the VideoSocket is capable of receiving media. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaReceiveStatus Fields Name Description Active Media can be received, video subscription is allowed Inactive Media cannot be received. Video subscription is not allowed" }, - "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCommunicationsClientExtensions.html": { - "href": "calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCommunicationsClientExtensions.html", - "title": "Class MediaCommunicationsClientExtensions", - "keywords": "Class MediaCommunicationsClientExtensions The stateful client extension. Inheritance Object MediaCommunicationsClientExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Calls.Media Assembly : Microsoft.Graph.Communications.Calls.Media.dll Syntax public static class MediaCommunicationsClientExtensions Methods CreateMediaSession(ICommunicationsClient, AudioSocketSettings, VideoSocketSettings, VideoSocketSettings, DataSocketSettings, Guid) Creates a local media session for the provided communications client with a given socket configuration. Declaration public static ILocalMediaSession CreateMediaSession(this ICommunicationsClient statefulClient, AudioSocketSettings audioSocketSettings, VideoSocketSettings videoSocketSettings, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null, Guid mediaSessionId = default(Guid)) Parameters Type Name Description ICommunicationsClient statefulClient The stateful client. AudioSocketSettings audioSocketSettings The audio socket settings. VideoSocketSettings videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Guid mediaSessionId The id for the media session. Returns Type Description ILocalMediaSession A ILocalMediaSession . Exceptions Type Condition ArgumentNullException If the communications client has not been specified. ArgumentException If the client does not have a valid identifier. CreateMediaSession(ICommunicationsClient, AudioSocketSettings, IEnumerable, VideoSocketSettings, DataSocketSettings, Guid) Creates a local media session for the provided communications client with a given socket configuration. Declaration public static ILocalMediaSession CreateMediaSession(this ICommunicationsClient client, AudioSocketSettings audioSocketSettings, IEnumerable videoSocketSettings = null, VideoSocketSettings vbssSocketSettings = null, DataSocketSettings dataSocketSettings = null, Guid mediaSessionId = default(Guid)) Parameters Type Name Description ICommunicationsClient client The communications client. AudioSocketSettings audioSocketSettings The audio socket settings. IEnumerable < VideoSocketSettings > videoSocketSettings The video socket settings. VideoSocketSettings vbssSocketSettings The video based screen sharing socket settings. DataSocketSettings dataSocketSettings The data socket settings. Guid mediaSessionId The id for the media session. Returns Type Description ILocalMediaSession A ILocalMediaSession . Exceptions Type Condition ArgumentNullException If the communications client has not been specified. ArgumentException If the client does not have a valid identifier." + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.UriFilter.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters.UriFilter.html", + "title": "Class UriFilter", + "keywords": "Class UriFilter URI Filter. Any group matches from REGEX are obfuscated. Inheritance Object BaseFilter BaseFilter < Uri , Regex > UriFilter Inherited Members BaseFilter.MatchableString BaseFilter.MatchEvaluator Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.Filters Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class UriFilter : BaseFilter Constructors UriFilter(Regex) Initializes a new instance of the UriFilter class. Declaration public UriFilter(Regex matchableSubtring) Parameters Type Name Description Regex matchableSubtring The matchable REGEX. Use captures for obfuscation. Use obfuscation tag names as group names for specific object Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.UnmixedAudioBuffer.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.UnmixedAudioBuffer.html", - "title": "Struct UnmixedAudioBuffer", - "keywords": "Struct UnmixedAudioBuffer Represents an unmanaged audio buffer containing unmixed data corresponding to a specific speaker in a conference. This structure contains a pointer to the unmanaged audio buffer, the length of the buffer and the ID of the audio source of the active speaker. Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() ValueType.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public struct UnmixedAudioBuffer Properties ActiveSpeakerId The ID of the audio source of the active speaker. Declaration public uint ActiveSpeakerId { get; } Property Value Type Description UInt32 Data Pointer to the unmanaged media buffer. Declaration public IntPtr Data { get; } Property Value Type Description IntPtr Length The length in bytes of the media buffer. Declaration public long Length { get; } Property Value Type Description Int64 OriginalSenderTimestamp Original timestamp of the unmixed audio buffer as it was sourced, in 100-ns units. This property may differ from AudioMediaBuffer.Timestamp, which represents the timestamp of when the media content was received by the bot. Declaration public long OriginalSenderTimestamp { get; } Property Value Type Description Int64 Remarks The OriginalSenderTimestamp can have a value of 0 under various circumstances, eg. in the first 4-5 seconds of the call, or during various media events (media reconnects, sample rate changes, etc)." + "bot_media/Microsoft.Skype.Bots.Media.VideoMediaReceivedEventArgs.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.VideoMediaReceivedEventArgs.html", + "title": "Class VideoMediaReceivedEventArgs", + "keywords": "Class VideoMediaReceivedEventArgs Event arguments of a VideoMediaReceived event. Inheritance Object EventArgs VideoMediaReceivedEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoMediaReceivedEventArgs : EventArgs Constructors VideoMediaReceivedEventArgs() Declaration public VideoMediaReceivedEventArgs() Properties Buffer The received video media buffer. Declaration public VideoMediaBuffer Buffer { get; set; } Property Value Type Description VideoMediaBuffer MediaType MediaType of the video socket. This could be Video or Vbss. The MediaType is set after the socket is passed to the CreateMediaConfiguration API. It may also be set via the VideoSocketSettings during socket creation. Declaration public MediaType MediaType { get; set; } Property Value Type Description MediaType SocketId The 0-based ID of the socket that is raising this event. This socket ID can be used in multiview (ie. more than 1 video socket) to determine which video socket is raising this event. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the Microsoft.Skype.Bots.Media.MediaPlatform (or IMediaPlatform) API CreateMediaConfiguration. Eg. If the collection of IVideoSocket objects in the CreateMediaConfiguration API contains { socketA, socketB, socketC }, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Declaration public int SocketId { get; set; } Property Value Type Description Int32" }, - "bot_media/Microsoft.Skype.Bots.Media.NetworkMetrics.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.NetworkMetrics.html", - "title": "Class NetworkMetrics", - "keywords": "Class NetworkMetrics QoE network level metrics Inheritance Object NetworkMetrics Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class NetworkMetrics Constructors NetworkMetrics() Declaration public NetworkMetrics() Properties AverageInboundPacketLossRateInPercentage Average packet loss rate on the inbound media stream Declaration public double AverageInboundPacketLossRateInPercentage { get; set; } Property Value Type Description Double AverageInboundRoundTripDelay Average round trip delay on the inbound media stream Declaration public TimeSpan AverageInboundRoundTripDelay { get; set; } Property Value Type Description TimeSpan AverageOutboundPacketLossRateInPercentage Average packet loss rate on the outbound media stream Declaration public double AverageOutboundPacketLossRateInPercentage { get; set; } Property Value Type Description Double AverageOutboundRoundTripDelay Average round trip delay on the outbound media stream Declaration public TimeSpan AverageOutboundRoundTripDelay { get; set; } Property Value Type Description TimeSpan MaximumInboundPacketLossRateInPercentage Maximum packet loss rate on the inbound media stream Declaration public double MaximumInboundPacketLossRateInPercentage { get; set; } Property Value Type Description Double MaximumInboundRoundTripDelay Maximum round trip delay on the inbound media stream Declaration public TimeSpan MaximumInboundRoundTripDelay { get; set; } Property Value Type Description TimeSpan MaximumOutboundPacketLossRateInPercentage Maximum packet loss rate on the outbound media stream Declaration public double MaximumOutboundPacketLossRateInPercentage { get; set; } Property Value Type Description Double MaximumOutboundRoundTripDelay Maximum round trip delay on the outbound media stream Declaration public TimeSpan MaximumOutboundRoundTripDelay { get; set; } Property Value Type Description TimeSpan TotalInboundPackets Total number of packets received on the inbound media stream Declaration public uint TotalInboundPackets { get; set; } Property Value Type Description UInt32 TotalOutboundPackets Total number of packets sent on the outbound media stream Declaration public uint TotalOutboundPackets { get; set; } Property Value Type Description UInt32" + "bot_media/Microsoft.Skype.Bots.Media.PortRange.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.PortRange.html", + "title": "Class PortRange", + "keywords": "Class PortRange The Port range Inheritance Object PortRange Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class PortRange Constructors PortRange(UInt32, UInt32) The PortRange constructor Declaration public PortRange(uint minPort, uint maxPort) Parameters Type Name Description UInt32 minPort The minimum port. UInt32 maxPort The maximum port. Properties MaxPort The maximum port. Declaration public uint MaxPort { get; } Property Value Type Description UInt32 MinPort The minimum port. Declaration public uint MinPort { get; } Property Value Type Description UInt32" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoSocket.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSocket.html", - "title": "Class VideoSocket", - "keywords": "Class VideoSocket Provides Send and Receive I/O access to a video stream. Inheritance Object VideoSocket Implements IVideoSocket IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public sealed class VideoSocket : IVideoSocket, IDisposable, IInternalVideoSocket, IInternalSocket Constructors VideoSocket(VideoSocketSettings) Initializes a new VideoSocket object. Declaration public VideoSocket(VideoSocketSettings settings) Parameters Type Name Description VideoSocketSettings settings Configuration settings for the VideoSocket Properties MediaType MediaType of the video socket. This could be Video or Vbss. The MediaType is set after the socket is passed to the CreateMediaConfiguration API. It may also be set via the VideoSocketSettings during socket creation. Declaration public MediaType MediaType { get; } Property Value Type Description MediaType ReceiveColorFormat VideoColorFormat to receive Declaration public VideoColorFormat ReceiveColorFormat { get; } Property Value Type Description VideoColorFormat SocketId The 0-based ID of the socket. This socket ID is useful to identify a socket in a multiview (ie. more than 1 video socket) call. The same ID is used in the event args of the VideoMediaReceived and VideoSendStatusChanged events that this class may raise. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the CreateMediaConfiguration API. Eg., if the collection of IVideoSocket objects in the CreateMediaConfiguration API contains {socketA, socketB, socketC}, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Before the call to CreateMediaConfiguration, the SocketId has a value of -1. Declaration public int SocketId { get; } Property Value Type Description Int32 Methods Dispose() Disposes the object. Declaration public void Dispose() GetQualityOfExperienceData() Get the Quality of Experience (QoE) data for the audio socket. Declaration public VideoQualityOfExperienceData GetQualityOfExperienceData() Returns Type Description VideoQualityOfExperienceData Remarks The bot should fetch the QoE data no more than once every 30 seconds. To get accurate metrics, the bot should let media flow for at least 30 seconds before fetching the QoE data. RequestKeyFrame() Allows the application to request for key frame. Only valid for sockets with the ReceiveColorFormat as H264 Declaration public void RequestKeyFrame() Send(VideoMediaBuffer) Sends a frame of video media. Declaration public void Send(VideoMediaBuffer buffer) Parameters Type Name Description VideoMediaBuffer buffer VideoMediaBuffer containing the frame of video media to send. Remarks The application must create a concrete class which derives from the VideoMediaBuffer abstract class. The buffer object passed to the Send method is still potentially in-use after the method returns to the caller. The application must not free the buffer's data until the the buffer object's Dispose() method is invoked by the Media Platform. The application should be sending up to 30 video frames per second. The VideoSocket must be enabled to send media via the VideoSocketSettings.StreamDirections property. SetReceiveBandwidthLimit(UInt32) Sets the bandwidth limit on the receive stream of the VideoSocket. This is only supported if the socket supports receiving H264 video format. It is recommended to wait for the VideoReceiveStatusChanged event with MediaReceiveStatus Active state during the initial call setup before applying the receive bandwidth limit on the socket. Bandwidth range (in bits per second) for various resolutions and frame rates per media type: Media type: Video 1000000 - 4000000 1080p at 30 fps 550000 - 2500000 720p at 30 fps 375000 - 1500000 540p at 30 fps 200000 - 800000 360p at 30 fps 150000 - 250000 360p at 15 fps 120000 - 220000 240p at 15 fps 60000 - 200000 180p at 15 fps 20000 - 100000 180p at 7.5 fps 10000 - 25000 180p at 3.75 fps 1000 - 12500 180p at 1.875 fps Media type: Vbss Resolution: 1080p 2000000 - 4000000 at 30 fps 600000 - 3000000 at 15 fps 300000 - 700000 at 7.5 fps 150000 - 350000 at 3.75 fps 70000 - 200000 at 1.875 fps Declaration public void SetReceiveBandwidthLimit(uint bitsPerSecond) Parameters Type Name Description UInt32 bitsPerSecond The receive bitrate SetSendBandwidthLimit(UInt32) Sets the bandwidth limit on the send stream of the VideoSocket. This is only supported if the socket supports sending H264 video formats. It is recommended to wait for the VideoSendStatusChanged event with MediaSendStatus Active state during the initial call setup before applying the send bandwidth limit on the socket. Bandwidth range (in bits per second) for various resolutions and frame rates per media type: Media type: Video 1000000 - 4000000 1080p at 30 fps 550000 - 2500000 720p at 30 fps 375000 - 1500000 540p at 30 fps 200000 - 800000 360p at 30 fps 150000 - 250000 360p at 15 fps 120000 - 220000 240p at 15 fps 60000 - 200000 180p at 15 fps 20000 - 100000 180p at 7.5 fps 10000 - 25000 180p at 3.75 fps 1000 - 12500 180p at 1.875 fps Media type: Vbss Resolution: 1080p 2000000 - 4000000 at 30 fps 600000 - 3000000 at 15 fps 300000 - 700000 at 7.5 fps 150000 - 350000 at 3.75 fps 70000 - 200000 at 1.875 fps Declaration public void SetSendBandwidthLimit(uint bitsPerSecond) Parameters Type Name Description UInt32 bitsPerSecond The send bitrate Subscribe(VideoResolution) Request to receive the video of the peer in a 1:1 call. No need to specify a MediaSourceId. The bot cannot subscribe to a video source unless the VideoReceiveStatusChanged event is raised indicating the VideoSocket's MediaReceiveStatus is Active . Declaration public void Subscribe(VideoResolution preferredVideoResolution) Parameters Type Name Description VideoResolution preferredVideoResolution The requested video resolution. The received video frames should have this resolution if the bandwidth constraints and sender capabilities allow, however the bot may receive video frames at a resolution lower than requested. Subscribe(VideoResolution, UInt32) Request to receive the video source of a participant in a meeting or group call. The video source must be identified by its MediaSourceId available from the roster. The bot cannot subscribe to a video source unless the VideoReceiveStatusChanged event is raised indicating the VideoSocket's MediaReceiveStatus is Active . Declaration public void Subscribe(VideoResolution preferredVideoResolution, uint MediaSourceId) Parameters Type Name Description VideoResolution preferredVideoResolution The requested video resolution. The received video frames should have this resolution if the bandwidth constraints and sender capabilities allow, however the bot may receive video frames at a resolution lower than requested. UInt32 MediaSourceId Media source identifier of the video source to be received Exceptions Type Condition ObjectDisposedException Thrown if the VideoSocket is disposed. InvalidOperationException Thrown if the subscription is invalid. SkypeMediaException Thrown if an internal media failure occurs. Unsubscribe() Stops the current video subscription on the VideoSocket. The VideoMediaReceived events will stop raising video buffers. Declaration public void Unsubscribe() UpdateVideoSendCapability(VideoSendCapability) Allows the application to update dynamically the send capability (such as SupportedSendVideoFormats or MaxConcurrentSendStreams) of the video socket. The purpose of this API is to allow the application to communicate changes in VideoSocket's send capability to the platform during the call. Declaration public void UpdateVideoSendCapability(VideoSendCapability capability) Parameters Type Name Description VideoSendCapability capability Events MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration public event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > Remarks Note: this event can be raised even if there is no active video subscription; i.e., the VideoSocket is \"idle\" and not receiving media. MediaStreamQualityChanged The event is raised if a media stream quality change was detected Declaration public event EventHandler MediaStreamQualityChanged Event Type Type Description EventHandler < VideoMediaStreamQualityChangedEventArgs > VideoKeyFrameNeeded If the application has configured the VideoSocket to receive encoded media, this event is raised each time a key frame is needed. Events are serialized, so only one event at a time is raised to the app. Declaration public event EventHandler VideoKeyFrameNeeded Event Type Type Description EventHandler < VideoKeyFrameNeededEventArgs > VideoMediaReceived If the application has configured the VideoSocket to receive media, this event is raised each time a frame of video media is received. Once the application has consumed the buffer, it must call the buffer's Dispose() method. Declaration public event EventHandler VideoMediaReceived Event Type Type Description EventHandler < VideoMediaReceivedEventArgs > Remarks The incoming video frame rate is variable. The frame rate can vary between 1.875 frames per second (fps) up to 30 fps. The application must be able to receive up to 30 video buffers per second. Events are serialized, so only one event at a time is raised to the app. The event handler should return as quickly as possible; any time-consuming per-frame processing should be performed asynchronously from the event handler. VideoReceiveStatusChanged If the application has configured the VideoSocket to receive media, this event is raised to inform the application when it is ready to receive media. When the status is active the application can subscribe to a video source, when inactive video subscription won't be allowed Declaration public event EventHandler VideoReceiveStatusChanged Event Type Type Description EventHandler < VideoReceiveStatusChangedEventArgs > VideoSendStatusChanged If the application has configured the VideoSocket to send media, this event is raised to inform the application when it may begin sending media and when it should stop. The application cannot send media before receiving a VideoMediaSendStatusChanged event indicating the SendStatus is Active, such media will be discarded. Declaration public event EventHandler VideoSendStatusChanged Event Type Type Description EventHandler < VideoSendStatusChangedEventArgs > Implements IVideoSocket System.IDisposable" + "common/Microsoft.Graph.Communications.Common.Transport.IGraphResponse.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.IGraphResponse.html", + "title": "Interface IGraphResponse", + "keywords": "Interface IGraphResponse The response got in exchange of a IGraphRequest . Inherited Members IGraphResponse.Status IGraphResponse.ReasonPhrase IGraphResponse.ErrorContent IGraphExchange.Content IGraphExchange.Properties Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphResponse : IGraphResponse, IGraphExchange, IGraphExchange Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) GraphResponseExtensions.ToHttpResponseMessage(IGraphResponse, JsonSerializerSettings, IEnumerable)" }, - "bot_media/Microsoft.Skype.Bots.Media.IAudioSocket.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.IAudioSocket.html", - "title": "Interface IAudioSocket", - "keywords": "Interface IAudioSocket Interface to an AudioSocket. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IAudioSocket : IDisposable Methods GetQualityOfExperienceData() Get the Quality of Experience (QoE) data for the audio socket. Declaration AudioQualityOfExperienceData GetQualityOfExperienceData() Returns Type Description AudioQualityOfExperienceData Remarks The bot should fetch the QoE data no more than once every 30 seconds. To get accurate metrics, the bot should let media flow for at least 30 seconds before fetching the QoE data. Send(AudioMediaBuffer) Sends a frame of audio media, where a frame contains 20 milliseconds of audio content (PCM samples). Declaration void Send(AudioMediaBuffer buffer) Parameters Type Name Description AudioMediaBuffer buffer AudioMediaBuffer containing the frame of audio media to send. Remarks The application must create a concrete class which derives from the AudioMediaBuffer abstract class. The buffer object passed to the Send method is still potentially in-use after the method returns to the caller. The application must not free the buffer's frame data until the the buffer object's Dispose() method is invoked by the Media Platform. The application should be sending 50 frames of audio media per second with each frame containing 20 milliseconds of audio content. The AudioSocket must be enabled to send media via the AudioSocketSettings.StreamDirections property. SendDtmfTone(ToneId) Sends a DTMF tone. Declaration void SendDtmfTone(ToneId tone) Parameters Type Name Description ToneId tone The DTMF digit. Ranges from 0-16. Remarks Sending DTMF tone is only allowed if the AudioSocket is configured for sending media. SendDtmfTones(IEnumerable, Int32) Sends a sequence of DTMF tones with an optional delay between each tone. Declaration void SendDtmfTones(IEnumerable tones, int delayBetweenTonesInMilliseconds = -1) Parameters Type Name Description IEnumerable < ToneId > tones The list of DTMF digits to be sent. Ranges from 0-16. Int32 delayBetweenTonesInMilliseconds Delay (in milliseconds) between each DTMF tone sent. Remarks By default, the delay is set to -1 which picks a random time between 0 to 500 milliseconds. Events AudioMediaReceived If the application has configured the AudioSocket to receive media, this event is raised each time a frame of audio media is received, where a frame contains 20 milliseconds of audio content (PCM samples). Once the application has consumed the buffer, it must call the buffer's Dispose() method. Declaration event EventHandler AudioMediaReceived Event Type Type Description EventHandler < AudioMediaReceivedEventArgs > Remarks The application must be able to handle at least 50 incoming audio buffers per second. Events are serialized, so only one event at a time is raised to the app. The event handler should return as quickly as possible; any time-consuming per-frame processing should be performed asynchronously from the event handler. AudioSendStatusChanged If the application has configured the AudioSocket to send media, this event is raised to inform the application when it may begin sending media and when it should stop. The application cannot send media before receiving a MediaSendStatusChanged event indicating the SendStatus is Started. Declaration event EventHandler AudioSendStatusChanged Event Type Type Description EventHandler < AudioSendStatusChangedEventArgs > DominantSpeakerChanged This event is raised when there is a change in the dominant speaker in the conference. If there is no dominant speaker in the conference, the CurrentDominantSpeaker argument in the event will have the value None (0xFFFFFFFF). Declaration event EventHandler DominantSpeakerChanged Event Type Type Description EventHandler < DominantSpeakerChangedEventArgs > MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > ToneReceived This event is raised when the DTMF tone is received. ToneId enum in the event arguments indicates the tone value. Declaration event EventHandler ToneReceived Event Type Type Description EventHandler < ToneReceivedEventArgs >" + "common/Microsoft.Graph.Communications.Common.Transport.Http.HttpUtils.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.Http.HttpUtils.html", + "title": "Class HttpUtils", + "keywords": "Class HttpUtils Utilities for Http transport Inheritance Object HttpUtils Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport.Http Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpUtils Methods GetRequestTypeForHttpMethod(String) Gets the type of the request for the given http method. Declaration public static RequestType GetRequestTypeForHttpMethod(string httpMethod) Parameters Type Name Description String httpMethod The HTTP method. Returns Type Description RequestType RequestType corresponding to the httpMethod Exceptions Type Condition InvalidOperationException Thrown if httpMethod has no corresponding RequestType" }, - "bot_media/Microsoft.Skype.Bots.Media.AudioMetrics.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioMetrics.html", - "title": "Class AudioMetrics", - "keywords": "Class AudioMetrics Audio-specific QoE metrics Inheritance Object AudioMetrics Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioMetrics Constructors AudioMetrics() Declaration public AudioMetrics() Properties AverageInboundNetworkJitter Average network jitter on the inbound media stream Declaration public TimeSpan AverageInboundNetworkJitter { get; set; } Property Value Type Description TimeSpan MaximumInboundNetworkJitter Maximum network jitter on the inbound media stream Declaration public TimeSpan MaximumInboundNetworkJitter { get; set; } Property Value Type Description TimeSpan" + "common/Microsoft.Graph.Communications.Common.Transport.HttpResponseMessageExtensions.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.HttpResponseMessageExtensions.html", + "title": "Class HttpResponseMessageExtensions", + "keywords": "Class HttpResponseMessageExtensions Extensions for HttpResponseMessage class. Inheritance Object HttpResponseMessageExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpResponseMessageExtensions Methods GetHttpAndContentHeaders(HttpResponseMessage) Gets headers from the http response and the content. Declaration public static IEnumerable>> GetHttpAndContentHeaders(this HttpResponseMessage message) Parameters Type Name Description HttpResponseMessage message The message. Returns Type Description IEnumerable < KeyValuePair < String , IEnumerable < String >>> The list of http and content headers. GetOutcomeFromResponseOrException(Nullable, Exception) Try extracting outcome outcome from HTTP response status code or exception Declaration public static string GetOutcomeFromResponseOrException(int? statusCode, Exception exception) Parameters Type Name Description Nullable < Int32 > statusCode HTTP response status code Exception exception The exception Returns Type Description String Outcome string ToGraphResponseAsync(HttpResponseMessage) Converts HttpResponseMessage to an instance of IGraphResponse . Declaration public static Task ToGraphResponseAsync(this HttpResponseMessage httpResponse) Parameters Type Name Description HttpResponseMessage httpResponse HTTP response to be converted. Returns Type Description Task < IGraphResponse > IGraphResponse corresponding to httpResponse . ToGraphResponseAsync(HttpResponseMessage, JsonSerializerSettings) Converts HttpResponseMessage to an instance of IGraphResponse . Declaration public static Task> ToGraphResponseAsync(this HttpResponseMessage httpResponse, JsonSerializerSettings serializerSettings = null) where T : class Parameters Type Name Description HttpResponseMessage httpResponse HTTP response to be converted. Newtonsoft.Json.JsonSerializerSettings serializerSettings Add serializer that can serialize the content. Returns Type Description Task < IGraphResponse > IGraphResponse corresponding to httpResponse . Type Parameters Name Description T Type of the expected response." }, - "bot_media/Microsoft.Skype.Bots.Media.AudioSocket.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioSocket.html", - "title": "Class AudioSocket", - "keywords": "Class AudioSocket Provides Send and Receive I/O access to an audio stream. Inheritance Object AudioSocket Implements IAudioSocket IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public sealed class AudioSocket : IAudioSocket, IDisposable, IInternalAudioSocket, IInternalSocket Constructors AudioSocket(AudioSocketSettings) Initializes a new AudioSocket object. Declaration public AudioSocket(AudioSocketSettings settings) Parameters Type Name Description AudioSocketSettings settings Configuration settings for the AudioSocket Methods Dispose() Disposes the object Declaration public void Dispose() GetQualityOfExperienceData() Get the Quality of Experience (QoE) data for the audio socket. Declaration public AudioQualityOfExperienceData GetQualityOfExperienceData() Returns Type Description AudioQualityOfExperienceData Remarks The bot should fetch the QoE data no more than once every 30 seconds. To get accurate metrics, the bot should let media flow for at least 30 seconds before fetching the QoE data. Send(AudioMediaBuffer) Sends a frame of audio media, where a frame contains 20 milliseconds of audio content (PCM samples). Declaration public void Send(AudioMediaBuffer buffer) Parameters Type Name Description AudioMediaBuffer buffer AudioMediaBuffer containing the frame of audio media to send. Remarks The application must create a concrete class which derives from the AudioMediaBuffer abstract class. The buffer object passed to the Send method is still potentially in-use after the method returns to the caller. The application must not free the buffer's frame data until the the buffer object's Dispose() method is invoked by the Media Platform. The application should be sending 50 frames of audio media per second with each frame containing 20 milliseconds of audio content. The AudioSocket must be enabled to send media via the AudioSocketSettings.StreamDirections property. SendDtmfTone(ToneId) Sends a DTMF tone. Declaration public void SendDtmfTone(ToneId tone) Parameters Type Name Description ToneId tone The DTMF digit. Ranges from 0-16. Remarks Sending DTMF tone is only allowed if the AudioSocket is configured for sending media. SendDtmfTones(IEnumerable, Int32) Sends a sequence of DTMF tones with an optional delay between each tone. Declaration public void SendDtmfTones(IEnumerable tones, int delayBetweenTonesInMilliseconds = -1) Parameters Type Name Description IEnumerable < ToneId > tones The list of DTMF digits to be sent. Ranges from 0-16. Int32 delayBetweenTonesInMilliseconds Delay (in milliseconds) between each DTMF digit sent. Remarks By default, the delay is set to -1 which picks a random time between 0 to 500 milliseconds. Events AudioMediaReceived If the application has configured the AudioSocket to receive media, this event is raised each time a frame of audio media is received, where a frame contains 20 milliseconds of audio content (PCM samples). Once the application has consumed the buffer, it must call the buffer's Dispose() method. Declaration public event EventHandler AudioMediaReceived Event Type Type Description EventHandler < AudioMediaReceivedEventArgs > Remarks The application must be able to handle at least 50 incoming audio buffers per second. Events are serialized, so only one event at a time is raised to the app. The event handler should return as quickly as possible; any time-consuming per-frame processing should be performed asynchronously from the event handler. AudioSendStatusChanged If the application has configured the AudioSocket to send media, this event is raised to inform the application when it may begin sending media and when it should stop. The application cannot send media before receiving a MediaSendStatusChanged event indicating the SendStatus is Active, such media will be discarded. Declaration public event EventHandler AudioSendStatusChanged Event Type Type Description EventHandler < AudioSendStatusChangedEventArgs > DominantSpeakerChanged This event is raised when there is a change in the dominant speaker in the conference. If there is no dominant speaker in the conference the CurrentDominantSpeaker argument in the event will have the value None (0xFFFFFFFF). Declaration public event EventHandler DominantSpeakerChanged Event Type Type Description EventHandler < DominantSpeakerChangedEventArgs > MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration public event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > ToneReceived This event is raised when the DTMF tone is received. ToneId enum indicates the tone value. Declaration public event EventHandler ToneReceived Event Type Type Description EventHandler < ToneReceivedEventArgs > Implements IAudioSocket System.IDisposable" + "common/Microsoft.Graph.Communications.Common.Transport.HttpRequestMessageExtensions.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.HttpRequestMessageExtensions.html", + "title": "Class HttpRequestMessageExtensions", + "keywords": "Class HttpRequestMessageExtensions Extensions for HttpRequestMessage . Inheritance Object HttpRequestMessageExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpRequestMessageExtensions Methods Add(HttpHeaders, IGraphProperty) Adds the header. Declaration public static void Add(this HttpHeaders headers, IGraphProperty property) Parameters Type Name Description HttpHeaders headers The headers. IGraphProperty property The property. CloneHttpRequestMessageAsync(HttpRequestMessage) Clones the HTTP request message. Declaration public static Task CloneHttpRequestMessageAsync(this HttpRequestMessage req) Parameters Type Name Description HttpRequestMessage req The req. Returns Type Description Task < HttpRequestMessage > Cloned request message GetHttpAndContentHeaders(HttpRequestMessage) Gets headers from the http request and the content. Declaration public static IEnumerable>> GetHttpAndContentHeaders(this HttpRequestMessage message) Parameters Type Name Description HttpRequestMessage message The message. Returns Type Description IEnumerable < KeyValuePair < String , IEnumerable < String >>> The list of http and content headers. ToGraphRequestAsync(HttpRequestMessage) Converts a HttpRequestMessage into a IGraphRequest . Declaration public static Task ToGraphRequestAsync(this HttpRequestMessage httpRequest) Parameters Type Name Description HttpRequestMessage httpRequest HttpRequestMessage to be converted. Returns Type Description Task < IGraphRequest > IGraphRequest object corresponding to httpRequest ToGraphRequestAsync(HttpRequestMessage, JsonSerializerSettings) Converts a HttpRequestMessage into a IGraphRequest . Declaration public static Task> ToGraphRequestAsync(this HttpRequestMessage httpRequest, JsonSerializerSettings serializerSettings = null) Parameters Type Name Description HttpRequestMessage httpRequest HttpRequestMessage to be converted. Newtonsoft.Json.JsonSerializerSettings serializerSettings Json serializer settings. Returns Type Description Task < IGraphRequest > IGraphRequest object corresponding to httpRequest Type Parameters Name Description T Type of the content present in httpRequest ToRequestType(HttpMethod) Convert HttpMethod to the type of the request. Declaration public static RequestType ToRequestType(this HttpMethod httpMethod) Parameters Type Name Description HttpMethod httpMethod The HTTP method. Returns Type Description RequestType RequestType corresponding to the httpMethod Exceptions Type Condition InvalidOperationException Thrown if httpMethod has no corresponding RequestType" }, - "bot_media/Microsoft.Skype.Bots.Media.AudioFormat.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioFormat.html", - "title": "Enum AudioFormat", - "keywords": "Enum AudioFormat The audio format. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum AudioFormat Fields Name Description Pcm16K PCM 16K Pcm44KStereo PCM 44.1K Stereo" + "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationSerializer.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationSerializer.html", + "title": "Class ObfuscationSerializer", + "keywords": "Class ObfuscationSerializer The obfuscation serializer can be used to serialize and de-serialize an obfuscation schema, as well as generate a schema from specified assemblies. Inheritance Object ObfuscationSerializer Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class ObfuscationSerializer Constructors ObfuscationSerializer() Declaration public ObfuscationSerializer() Properties Members Gets or sets the members belonging to the class. Declaration public ObfuscationMember[] Members { get; set; } Property Value Type Description ObfuscationMember [] Methods ExtractFromAssemblies(Assembly[]) Extracts the obfuscation members from the specified assemblies. Declaration public ObfuscationMember[] ExtractFromAssemblies(params Assembly[] assemblies) Parameters Type Name Description Assembly [] assemblies The assemblies. Returns Type Description ObfuscationMember [] The list of ObfuscationMember stucts extracted from the specified assemblies. GenerateSchema(ObfuscationMember[]) Generates the schema from the specified obfuscation members. Declaration public string GenerateSchema(params ObfuscationMember[] members) Parameters Type Name Description ObfuscationMember [] members The obfuscation classes. Returns Type Description String The schema associated with the specified classes. LoadFromSchema(String) Loads the obfuscations classes from the specified schema. Declaration public ObfuscationMember[] LoadFromSchema(string schema) Parameters Type Name Description String schema The schema. Returns Type Description ObfuscationMember [] The loaded obfuscation classes. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/index.html": { - "href": "bot_media/index.html", - "title": "Graph Communications Bot Media SDK", - "keywords": "Graph Communications Bot Media SDK The Real-time Media Platform enables bots to interact with Microsoft Teams calls and meetings using real-time voice, video and screen sharing. This is an advanced capability which allows the bot to send and receive voice and video content frame by frame. The bot has \"raw\" access to the voice, video and screen sharing media streams. (Bots which process media themselves are called application-hosted media bots, as opposed to simpler service-hosted media bots that rely on the Real-time Media platform for all media processing.) For example, in a 1:1 call with a bot, as the user speaks, the bot will receive 50 audio frames per second, with each frame containing 20 milliseconds (ms) of audio. An application-hosted media bot can perform real-time speech recognition as the audio frames are received, rather than having to wait for a recording after the user has stopped speaking. The bot can also send and receive high-definition-resolution video, including video-based screen sharing content. The platform provides a simple \"socket\"-like API for the bot to send and receive media, and handles the real-time encoding and decoding of audio/video packets, using codecs such as SILK and G.722 for audio and H.264 for video. The platform also handles all media packet encryption/decryption and packet network transmission automatically, so the bot just needs to concern itself with the actual audio/video content. A real-time media bot may participate in 1:1 calls as well as meetings with multiple participants. Microsoft Real-Time Media Platform for Bots API (\"Media Access API\") Accompanying Documentation The Media Access API is offered under the terms of the Microsoft APIs Terms of Use ( https://docs.microsoft.com/en-us/legal/microsoft-apis/terms-of-use ) and this accompanying documentation. \"Media Access API\" means (i) any form of machine accessible application programming interface that Microsoft makes publicly available which provides access to a Microsoft Offering that includes media content (e.g., audio or video), including all associated tools, elements, components and executables therein, (ii) any Microsoft sample code that enables interactions with a Microsoft Offering, and (iii) documentation that Microsoft makes available to help enable your access to the Media Access API. Additional Restriction : You may NOT use the Media Access API to record or otherwise persist media content from calls or meetings that your Application accesses, or data derived from that media content. Select a class on the left to dive into the reference docs" + "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationMember.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationMember.html", + "title": "Struct ObfuscationMember", + "keywords": "Struct ObfuscationMember The obfuscation member. This struct is used to generate an obfuscation schema for any class type or it's members. It can be passed into the GraphObfuscationContractResolver which will cache the schema when resolving object and member obfuscation. Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() ValueType.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : Microsoft.Graph.Communications.Common.Telemetry.Obfuscation Assembly : Microsoft.Graph.Communications.Common.dll Syntax public struct ObfuscationMember Properties Members Gets or sets the members belonging to this member. Declaration public ObfuscationMember[] Members { get; set; } Property Value Type Description ObfuscationMember [] Name Gets or sets the name of the member. For classes this should be type full name, for members this should be the member name. Declaration public string Name { get; set; } Property Value Type Description String Tag Gets or sets the obfuscation tag. Specifies how this member should be obfuscated. Declaration public ObfuscationTag? Tag { get; set; } Property Value Type Description Nullable < ObfuscationTag > Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoSocketSettings.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSocketSettings.html", - "title": "Class VideoSocketSettings", - "keywords": "Class VideoSocketSettings The video socket settings. Inheritance Object VideoSocketSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoSocketSettings Constructors VideoSocketSettings() Initializes a VideoSocketSettings object. Declaration public VideoSocketSettings() Properties CallId An alphanumeric string that uniquely identifies a call. Declaration public string CallId { get; set; } Property Value Type Description String MaxConcurrentSendStreams The maximum number of concurrent (simulcast) streams that can be sent. Declaration public uint MaxConcurrentSendStreams { get; set; } Property Value Type Description UInt32 Remarks This setting applies only if the VideoSocket uses H264 encoded video formats. MediaType Specifies the media type of the VideoSocket. Valid types are: MediaType.Video and MediaType.Vbss Declaration public MediaType? MediaType { get; set; } Property Value Type Description Nullable < MediaType > ReceiveColorFormat What color format should received video be delivered in. Currently only NV12 and H264 are allowed. Declaration public VideoColorFormat ReceiveColorFormat { get; set; } Property Value Type Description VideoColorFormat StreamDirections The directionality of the media stream. This indicates whether it is enabled to both send and receive media, or only send or only receive media. Declaration public StreamDirection StreamDirections { get; set; } Property Value Type Description StreamDirection SupportedSendVideoFormats The list of video formats the VideoSocket supports sending. Declaration public IList SupportedSendVideoFormats { get; set; } Property Value Type Description IList < VideoFormat > Remarks For the main-video modality ( MediaType.Video ), the following ten H264 send video formats are supported: H264_1920x1080_30Fps H264_1280x720_30Fps H264_960x540_30Fps H264_640x360_30Fps H264_640x360_15Fps H264_424x240_15Fps H264_320x180_15Fps H264_320x180_7_5Fps H264_320x180_3_75Fps H264_320x180_1_875Fps (If the SupportedSendVideoFormats list contains other H264 video formats for main-video, they will be ignored and not used.) At least one of the H264_320x180 video formats must be supported. For best video interoperability, the bot should support all the H264_320x180 formats. For the Vbss modality, all of the send formats must be of the same resolution. The resolution should best match the native resolution of the content to be shared. Downscaling the Vbss content to a lower resolution should be avoided (but may be necessary if the native content resolution is larger than 1080p). The bot should support as many different frame rates as possible. The 1.875 fps frame rate must be supported." + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.HttpObfuscationHelpers.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.HttpObfuscationHelpers.html", + "title": "Class HttpObfuscationHelpers", + "keywords": "Class HttpObfuscationHelpers Static class that provides helper functions for HTTP Logging. Inheritance Object HttpObfuscationHelpers Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging Assembly : Microsoft.Graph.Communications.Common.dll Syntax public static class HttpObfuscationHelpers Methods GetUrlText(Uri, Boolean, IEnumerable, IObfuscationEngine) Converts the URL to its representation depending on the filters. Declaration public static string GetUrlText(Uri url, bool obfuscationEnabled, IEnumerable uriFilters = null, IObfuscationEngine engine = null) Parameters Type Name Description Uri url The URL. Boolean obfuscationEnabled if set to true [filter pii]. IEnumerable < UriFilter > uriFilters The URI filters. IObfuscationEngine engine Custom obfuscation engine. If null, use (redacted) Returns Type Description String String representation LogHeaderText(ObfuscationConfiguration, IEnumerable>>) Logs the header text. Declaration public static IEnumerable LogHeaderText(this ObfuscationConfiguration configuration, IEnumerable>> headers) Parameters Type Name Description ObfuscationConfiguration configuration The configuration. IEnumerable < KeyValuePair < String , IEnumerable < String >>> headers The headers. Returns Type Description IEnumerable < String > The obfuscated header and value pairs. LogHeaderText(ObfuscationConfiguration, String, IEnumerable) Logs the header text. Declaration public static string LogHeaderText(this ObfuscationConfiguration configuration, string headerName, IEnumerable headerValues) Parameters Type Name Description ObfuscationConfiguration configuration The configuration. String headerName Name of the header. IEnumerable < String > headerValues The header values. Returns Type Description String The obfuscated header and value pair." }, - "bot_media/Microsoft.Skype.Bots.Media.VideoQualityOfExperienceData.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoQualityOfExperienceData.html", - "title": "Class VideoQualityOfExperienceData", - "keywords": "Class VideoQualityOfExperienceData Video quality of experience data Inheritance Object MediaQualityOfExperienceData VideoQualityOfExperienceData Inherited Members MediaQualityOfExperienceData.NetworkMetrics MediaQualityOfExperienceData.TotalMediaDuration Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoQualityOfExperienceData : MediaQualityOfExperienceData Constructors VideoQualityOfExperienceData() VideoQualityOfExperienceData constructor Declaration public VideoQualityOfExperienceData() Properties VideoMetrics Video-specific quality of experience metrics Declaration public VideoMetrics VideoMetrics { get; set; } Property Value Type Description VideoMetrics" + "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.HttpLogData.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.HttpLogging.HttpLogData.html", + "title": "Class HttpLogData", + "keywords": "Class HttpLogData The log data for http trace. Inheritance Object HttpLogData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry.HttpLogging Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class HttpLogData Constructors HttpLogData() Declaration public HttpLogData() Properties Content Gets or sets the content. Declaration public string Content { get; set; } Property Value Type Description String Headers Gets or sets the headers. Declaration public IEnumerable Headers { get; set; } Property Value Type Description IEnumerable < String > HeadersString Gets the headers string. Declaration public string HeadersString { get; } Property Value Type Description String Method Gets or sets the method. Declaration public string Method { get; set; } Property Value Type Description String ResponseStatusCode Gets or sets the response status code. Declaration public int? ResponseStatusCode { get; set; } Property Value Type Description Nullable < Int32 > ResponseTime Gets or sets the response time in milliseconds. Declaration public long? ResponseTime { get; set; } Property Value Type Description Nullable < Int64 > TraceType Gets or sets the trace type. Declaration public HttpTraceType TraceType { get; set; } Property Value Type Description HttpTraceType TransactionDirection Gets or sets the transaction direction. Declaration public TransactionDirection TransactionDirection { get; set; } Property Value Type Description TransactionDirection Url Gets or sets the url. Declaration public string Url { get; set; } Property Value Type Description String Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoSendCapability.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoSendCapability.html", - "title": "Class VideoSendCapability", - "keywords": "Class VideoSendCapability The Video Send Capability Inheritance Object VideoSendCapability Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoSendCapability Constructors VideoSendCapability() Declaration public VideoSendCapability() Properties MaxConcurrentSendStreams Maximum number of concurrent streams that can be sent. Declaration public uint MaxConcurrentSendStreams { get; set; } Property Value Type Description UInt32 SupportedSendVideoFormats The list of video formats the VideoSocket supports sending. Declaration public IList SupportedSendVideoFormats { get; set; } Property Value Type Description IList < VideoFormat > Remarks For the main-video modality ( MediaType.Video ), the following ten H264 send video formats are supported: H264_1920x1080_30Fps H264_1280x720_30Fps H264_960x540_30Fps H264_640x360_30Fps H264_640x360_15Fps H264_424x240_15Fps H264_320x180_15Fps H264_320x180_7_5Fps H264_320x180_3_75Fps H264_320x180_1_875Fps (If the SupportedSendVideoFormats list contains other H264 video formats for main-video, they will be ignored and not used.) At least one of the H264_320x180 video formats must be supported. For best video interoperability, the bot should support all the H264_320x180 formats. For the Vbss modality, all of the send formats must be of the same resolution. The resolution should best match the native resolution of the content to be shared. Downscaling the Vbss content to a lower resolution should be avoided (but may be necessary if the native content resolution is larger than 1080p). The bot should support as many different frame rates as possible. The 1.875 fps frame rate must be supported. Methods ToString() String representation of VideoSendCapability Declaration public override string ToString() Returns Type Description String Overrides Object.ToString()" + "common/Microsoft.Graph.Communications.Common.OData.ODataJsonConverter.html": { + "href": "common/Microsoft.Graph.Communications.Common.OData.ODataJsonConverter.html", + "title": "Class ODataJsonConverter", + "keywords": "Class ODataJsonConverter Handles resolving interfaces to the correct derived class during serialization/deserialization. Inheritance Object ODataJsonConverter Namespace : Microsoft.Graph.Communications.Common.OData Assembly : Microsoft.Graph.Communications.Common.dll Syntax public sealed class ODataJsonConverter : JsonConverter Constructors ODataJsonConverter(Assembly[]) Initializes a new instance of the ODataJsonConverter class. Declaration public ODataJsonConverter(params Assembly[] typeAssemblies) Parameters Type Name Description Assembly [] typeAssemblies The type assemblies. Properties CanWrite Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Methods CanConvert(Type) Declaration public override bool CanConvert(Type objectType) Parameters Type Name Description Type objectType Returns Type Description Boolean ReadJson(JsonReader, Type, Object, JsonSerializer) Deserializes the object to the correct type. Declaration public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonReader reader The Newtonsoft.Json.JsonReader to read from. Type objectType The interface type. Object existingValue The existing value of the object being read. Newtonsoft.Json.JsonSerializer serializer The Newtonsoft.Json.JsonSerializer for deserialization. Returns Type Description Object The deserialized object WriteJson(JsonWriter, Object, JsonSerializer) Declaration public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) Parameters Type Name Description Newtonsoft.Json.JsonWriter writer Object value Newtonsoft.Json.JsonSerializer serializer Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoMetrics.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoMetrics.html", - "title": "Class VideoMetrics", - "keywords": "Class VideoMetrics Video-specific quality of experience metrics Inheritance Object VideoMetrics Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class VideoMetrics Constructors VideoMetrics() Declaration public VideoMetrics() Properties AverageInboundBitRatePerSecond Average bit rate on the inbound video stream, expressed in bits per second Declaration public uint AverageInboundBitRatePerSecond { get; set; } Property Value Type Description UInt32 AverageInboundFrameRatePerSecond Average frame rate on the inbound video stream, expressed in frames per second Declaration public double AverageInboundFrameRatePerSecond { get; set; } Property Value Type Description Double AverageOutboundBitRatePerSecond Average bit rate on the outbound video stream, expressed in bits per second Declaration public uint AverageOutboundBitRatePerSecond { get; set; } Property Value Type Description UInt32 AverageOutboundFrameRatePerSecond Average frame rate on the outbound video stream, expressed in frames per second Declaration public double AverageOutboundFrameRatePerSecond { get; set; } Property Value Type Description Double" + "common/Microsoft.Graph.Communications.Common.ObjectRootDisposable.html": { + "href": "common/Microsoft.Graph.Communications.Common.ObjectRootDisposable.html", + "title": "Class ObjectRootDisposable", + "keywords": "Class ObjectRootDisposable Base object. Inheritance Object Disposable ObjectRootDisposable TaskQueue Implements IDisposable Inherited Members Disposable.Dispose() Disposable.Dispose(Boolean) Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public abstract class ObjectRootDisposable : Disposable, IDisposable Constructors ObjectRootDisposable(IGraphLogger) Initializes a new instance of the ObjectRootDisposable class. Declaration protected ObjectRootDisposable(IGraphLogger logger) Parameters Type Name Description IGraphLogger logger Logger instance. Properties GraphLogger Gets the logger. Declaration protected IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Implements System.IDisposable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.MediaQualityOfExperienceData.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaQualityOfExperienceData.html", - "title": "Class MediaQualityOfExperienceData", - "keywords": "Class MediaQualityOfExperienceData Media quality of experience (QoE) data Inheritance Object MediaQualityOfExperienceData AudioQualityOfExperienceData VideoQualityOfExperienceData Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public abstract class MediaQualityOfExperienceData Constructors MediaQualityOfExperienceData() MediaQualityOfExperienceData constructor Declaration public MediaQualityOfExperienceData() Properties NetworkMetrics QoE network level metrics Declaration public NetworkMetrics NetworkMetrics { get; set; } Property Value Type Description NetworkMetrics TotalMediaDuration Total duration of the media stream Declaration public TimeSpan TotalMediaDuration { get; set; } Property Value Type Description TimeSpan" + "common/Microsoft.Graph.Communications.Common.ObjectRoot.html": { + "href": "common/Microsoft.Graph.Communications.Common.ObjectRoot.html", + "title": "Class ObjectRoot", + "keywords": "Class ObjectRoot Base object. Inheritance Object ObjectRoot Observable GraphLoggerShim GraphHttpClient GraphHttpClientFactory Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common Assembly : Microsoft.Graph.Communications.Common.dll Syntax public abstract class ObjectRoot Constructors ObjectRoot(IGraphLogger) Initializes a new instance of the ObjectRoot class. Declaration protected ObjectRoot(IGraphLogger logger) Parameters Type Name Description IGraphLogger logger Logger instance. Properties GraphLogger Gets the logger. Declaration protected IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.AudioMediaBuffer.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioMediaBuffer.html", - "title": "Class AudioMediaBuffer", - "keywords": "Class AudioMediaBuffer Represents an unmanaged buffer containing audio media data. Inheritance Object AudioMediaBuffer Implements IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public abstract class AudioMediaBuffer : IDisposable Constructors AudioMediaBuffer() Declaration protected AudioMediaBuffer() Properties ActiveSpeakers Current active speakers in the conference. Declaration public uint[] ActiveSpeakers { get; protected set; } Property Value Type Description UInt32 [] Remarks The value is the IDs (MediaSourceIds) of the audio source of the active speakers in the conference and does not include bot's own MediaSourceId. If there is no active speaker, or there is just silence in the conference, the value is an empty array. AudioFormat The audio format. Declaration public AudioFormat AudioFormat { get; protected set; } Property Value Type Description AudioFormat Data Pointer to the unmanaged media buffer. Declaration public IntPtr Data { get; protected set; } Property Value Type Description IntPtr IsSilence Indicates if the received audio media buffer contains only silence. This property is set automatically for received audio buffers. When sending buffers via the Send method, this property is unused. Declaration public bool IsSilence { get; protected set; } Property Value Type Description Boolean Length The length in bytes of the data in the media buffer. Declaration public long Length { get; protected set; } Property Value Type Description Int64 Timestamp Timestamp of when the media content was received by the bot, or if the bot is sending media, the timestamp of when the media was sourced. It is in 100-ns units. When sourcing media buffers, this property should be set using the value from the MediaPlatform.GetCurrentTimestamp() API. Declaration public long Timestamp { get; protected set; } Property Value Type Description Int64 UnmixedAudioBuffers Contains the list of received unmixed audio buffers (up to four at a time). Declaration public UnmixedAudioBuffer[] UnmixedAudioBuffers { get; protected set; } Property Value Type Description UnmixedAudioBuffer [] Remarks This is useful for advanced meeting scenarios, such as being able to receive separate audio buffers for individual speakers. This value is set only on the receive side when the AudioSocketSetting.ReceiveUnmixedMeetingAudio property is set to true. Creating unmixed audio buffers and sending it on the AudioSocket is not supported. This property is null when unmixed buffers are not requested. Methods Dispose() Disposes the object. Declaration public void Dispose() Dispose(Boolean) Releases unmanaged resources held by the buffer object. Must be implemented in the derived class. Declaration protected abstract void Dispose(bool disposing) Parameters Type Name Description Boolean disposing If true, both managed and unmanaged resources can be disposed. If false, only unmanaged resources can be disposed. Implements System.IDisposable" + "client/Microsoft.Graph.Communications.Resources.html": { + "href": "client/Microsoft.Graph.Communications.Resources.html", + "title": "Namespace Microsoft.Graph.Communications.Resources", + "keywords": "Namespace Microsoft.Graph.Communications.Resources Classes CollectionEventArgs The collection event arguments. ResourceEventArgs The resource event arguments. Interfaces IResource The stateful resource interface. IResource The stateful resource interface. IResourceBase The resource base interface. IResourceCollection The resource collection interface. IResourceCollection The resource collection interface. IResourceCollection The resource collection interface. Delegates CollectionEventHandler The call collection event handler delegate. ResourceEventHandler The resource event handler delegate." }, - "bot_media/Microsoft.Skype.Bots.Media.MediaPlatform.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatform.html", - "title": "Class MediaPlatform", - "keywords": "Class MediaPlatform This class represents the Skype Bots Media Platform. Inheritance Object MediaPlatform Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public static class MediaPlatform Fields DefaultMaxMediaPort The default maximum media port. Declaration public const uint DefaultMaxMediaPort = 65535U Field Value Type Description UInt32 DefaultMinMediaPort The default minimum media port. Declaration public const uint DefaultMinMediaPort = 49152U Field Value Type Description UInt32 MaxNumberOfConcurrentSendVideoSocketsPerPlatform The maximum number of send video/vbss sockets allowed by the media plaform. Declaration public const int MaxNumberOfConcurrentSendVideoSocketsPerPlatform = 1000 Field Value Type Description Int32 MaxNumberOfVideoSocketsPerCall The maximum number of video sockets that can be passed to the CreateMediaConfiguration API. Declaration public const int MaxNumberOfVideoSocketsPerCall = 10 Field Value Type Description Int32 MinNumberOfCoresRequired The minimum number of cores that the Media Platform requires. Declaration public const int MinNumberOfCoresRequired = 2 Field Value Type Description Int32 Name Name of the Bots Media Platform Declaration public const string Name = \"SkypeBotsMediaPlatform\" Field Value Type Description String Properties CurrentHealth The current health status of the media platform. Declaration public static MediaPlatformHealthStatus CurrentHealth { get; } Property Value Type Description MediaPlatformHealthStatus Methods CreateMediaConfiguration(IAudioSocket) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for the audio modality. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. Returns Type Description Newtonsoft.Json.Linq.JObject Serialized MediaConfiguration object. Exceptions Type Condition InvalidOperationException MediaPlatform is not initialized. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IDataSocket) Reserved for the internal use. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IDataSocket dataSocket) Parameters Type Name Description IAudioSocket audioSocket IDataSocket dataSocket Returns Type Description Newtonsoft.Json.Linq.JObject CreateMediaConfiguration(IAudioSocket, IVideoSocket) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IVideoSocket videoSocket) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. IVideoSocket videoSocket Socket that handles video. Returns Type Description Newtonsoft.Json.Linq.JObject Serialized MediaConfiguration object. Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IList) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets) Parameters Type Name Description IAudioSocket audioSocket Socket that handles audio. IList < IVideoSocket > videoSockets Ordered list of video sockets. The order in which the sockets are provided maps to the order of the streams exposed by MediaPaaS (eg. the first video socket in the list will correspond to the first video stream exposed in the list of MediaStreams in MediaPaaS' MediaFlow resource). If multiview sockets are provided, only the first one can have a send direction (ie. send only or send receive) and all the sockets should have a receive direction. Returns Type Description Newtonsoft.Json.Linq.JObject Serialized MediaConfiguration object. Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets, IVideoSocket vbssSocket) Parameters Type Name Description IAudioSocket audioSocket IList < IVideoSocket > videoSockets Ordered list of video sockets. The order in which the sockets are provided maps to the order of the streams exposed by MediaPaaS (eg. the first video socket in the list will correspond to the first video stream exposed in the list of MediaStreams in MediaPaaS' MediaFlow resource). If multiview sockets are provided, only the first one can have a send direction (ie. send only or send receive) and all the sockets should have a receive direction. IVideoSocket vbssSocket Video socket for the video-based screen sharing (VBSS) modality. Socket must be configured as RecvOnly. Returns Type Description Newtonsoft.Json.Linq.JObject Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized, or a vbssSocket is configured to be sendonly or sendrecv. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket, IDataSocket) Reserved for the internal use. Declaration public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets, IVideoSocket vbssSocket, IDataSocket dataSocket) Parameters Type Name Description IAudioSocket audioSocket IList < IVideoSocket > videoSockets IVideoSocket vbssSocket IDataSocket dataSocket Returns Type Description Newtonsoft.Json.Linq.JObject CreateMediaConfiguration(IVideoSocket) Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. Declaration public static JObject CreateMediaConfiguration(IVideoSocket vbssSocket) Parameters Type Name Description IVideoSocket vbssSocket Video socket for the video-based screen sharing (VBSS) modality. Socket must be configured as RecvOnly. Returns Type Description Newtonsoft.Json.Linq.JObject Exceptions Type Condition ArgumentException A VideoSocket is not configured correctly. InvalidOperationException MediaPlatform is not initialized, or a vbssSocket is configured to be sendonly or sendrecv. SkypeMediaException The media platform is currently overloaded and cannot handle new calls. GetCurrentTimestamp() Get a current timestamp, in 100-ns units. To be used when sourcing media buffers. Declaration public static long GetCurrentTimestamp() Returns Type Description Int64 Initialize(MediaPlatformSettings) Initializes the Media Platform for Bot. Declaration public static void Initialize(MediaPlatformSettings settings) Parameters Type Name Description MediaPlatformSettings settings Settings to initialize the Bot Media Platform. Shutdown() Shuts down the Bot Media Platform. Declaration public static void Shutdown() Events MediaPlatformHealthChanged Raised when there is a change in the media platform's health status. The event arguments report the current and previous platform health conditions. Declaration public static event EventHandler MediaPlatformHealthChanged Event Type Type Description EventHandler < MediaPlatformHealthChangedEventArgs > Remarks A bot application which may handle very high call volumes or perform complex real-time media processing should monitor this event for changes in the media platform health status. When the event reports the platform health status has become HeavilyLoaded, the application should avoid starting new bot calls on the machine instance until the health status returns back to Normal." + "client/Microsoft.Graph.Communications.Client.Cache.html": { + "href": "client/Microsoft.Graph.Communications.Client.Cache.html", + "title": "Namespace Microsoft.Graph.Communications.Client.Cache", + "keywords": "Namespace Microsoft.Graph.Communications.Client.Cache Classes ServiceCache The cache that restores the data directly from the service. In this case there is no storage of data, as the service acts as the master. Structs CacheContext The stored cache context Interfaces ICache The cache interface used to store and recover the data used by the SDK." }, - "bot_media/Microsoft.Skype.Bots.Media.IVideoSocket.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.IVideoSocket.html", - "title": "Interface IVideoSocket", - "keywords": "Interface IVideoSocket Interface to a VideoSocket. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public interface IVideoSocket : IDisposable Properties MediaType MediaType of the video socket. This could be Video or Vbss. The MediaType is set after the socket is passed to the CreateMediaConfiguration API Declaration MediaType MediaType { get; } Property Value Type Description MediaType SocketId The 0-based ID of the socket. This socket ID is useful to identify a socket in a multiview (ie. more than 1 video socket) call. The same ID is used in the event args of the VideoMediaReceived and VideoSendStatusChanged events that this class may raise. The socket ID property will be present in both single view and multiview cases. The ID maps to the order in which the video sockets are provided to the CreateMediaConfiguration API. Eg., if the collection of IVideoSocket objects in the CreateMediaConfiguration API contains {socketA, socketB, socketC}, the sockets will have the ID mapping of: 0 for socketA, 1 for socketB and 2 for socketC. Before the call to CreateMediaConfiguration, the SocketId has a value of -1. Declaration int SocketId { get; } Property Value Type Description Int32 Methods GetQualityOfExperienceData() Get the Quality of Experience (QoE) data for the video socket. Declaration VideoQualityOfExperienceData GetQualityOfExperienceData() Returns Type Description VideoQualityOfExperienceData Remarks The bot should fetch the QoE data no more than once every 30 seconds. RequestKeyFrame() Allows the application to request for key frame. Only valid for sockets with the ReceiveColorFormat as H264 Declaration void RequestKeyFrame() Send(VideoMediaBuffer) Sends a frame of video media. Declaration void Send(VideoMediaBuffer buffer) Parameters Type Name Description VideoMediaBuffer buffer VideoMediaBuffer containing the frame of video media to send. Remarks The application must create a concrete class which derives from the VideoMediaBuffer abstract class. The buffer object passed to the Send method is still potentially in-use after the method returns to the caller. The application must not free the buffer's data until the the buffer object's Dispose() method is invoked by the Media Platform. The application should be sending up to 30 video frames per second. The VideoSocket must be enabled to send media via the VideoSocketSettings.StreamDirections property. SetReceiveBandwidthLimit(UInt32) Sets the bandwidth limit on the receive stream of the VideoSocket. This is only supported if the socket supports receiving H264 video format. It is recommended to wait for the VideoReceiveStatusChanged event with MediaReceiveStatus Active state during the initial call setup before applying the receive bandwidth limit on the socket. Bandwidth range (in bits per second) for various resolutions and frame rates per media type: Media type: Video 1000000 - 4000000 1080p at 30 fps 550000 - 2500000 720p at 30 fps 375000 - 1500000 540p at 30 fps 200000 - 800000 360p at 30 fps 150000 - 250000 360p at 15 fps 120000 - 220000 240p at 15 fps 60000 - 200000 180p at 15 fps 20000 - 100000 180p at 7.5 fps 10000 - 25000 180p at 3.75 fps 1000 - 12500 180p at 1.875 fps Media type: Vbss Resolution: 1080p 2000000 - 4000000 at 30 fps 600000 - 3000000 at 15 fps 300000 - 700000 at 7.5 fps 150000 - 350000 at 3.75 fps 70000 - 200000 at 1.875 fps Declaration void SetReceiveBandwidthLimit(uint bitsPerSecond) Parameters Type Name Description UInt32 bitsPerSecond The receive bitrate SetSendBandwidthLimit(UInt32) Sets the bandwidth limit on the send stream of the VideoSocket. This is only supported if the socket supports sending H264 video formats. It is recommended to wait for the VideoSendStatusChanged event with MediaSendStatus Active state during the initial call setup before applying the send bandwidth limit on the socket. Bandwidth range (in bits per second) for various resolutions and frame rates per media type: Media type: Video 1000000 - 4000000 1080p at 30 fps 550000 - 2500000 720p at 30 fps 375000 - 1500000 540p at 30 fps 200000 - 800000 360p at 30 fps 150000 - 250000 360p at 15 fps 120000 - 220000 240p at 15 fps 60000 - 200000 180p at 15 fps 20000 - 100000 180p at 7.5 fps 10000 - 25000 180p at 3.75 fps 1000 - 12500 180p at 1.875 fps Media type: Vbss Resolution: 1080p 2000000 - 4000000 at 30 fps 600000 - 3000000 at 15 fps 300000 - 700000 at 7.5 fps 150000 - 350000 at 3.75 fps 70000 - 200000 at 1.875 fps Declaration void SetSendBandwidthLimit(uint bitsPerSecond) Parameters Type Name Description UInt32 bitsPerSecond The send bitrate Subscribe(VideoResolution) Request to receive the video of the peer in a 1:1 call. No need to specify a MediaSourceId. The bot cannot subscribe to a video source unless the VideoReceiveStatusChanged event is raised indicating the VideoSocket's MediaReceiveStatus is Active . Declaration void Subscribe(VideoResolution preferredVideoResolution) Parameters Type Name Description VideoResolution preferredVideoResolution The requested video resolution. The received video frames should have this resolution if the bandwidth constraints and sender capabilities allow, however the bot may receive video frames at a resolution lower than requested. Subscribe(VideoResolution, UInt32) Request to receive the video source of a participant in a meeting or group call. The video source must be identified by its MediaSourceId available from the roster. The bot cannot subscribe to a video source unless the VideoReceiveStatusChanged event is raised indicating the VideoSocket's MediaReceiveStatus is Active . Declaration void Subscribe(VideoResolution preferredVideoResolution, uint MediaSourceId) Parameters Type Name Description VideoResolution preferredVideoResolution The requested video resolution. The received video frames should have this resolution if the bandwidth constraints and sender capabilities allow, however the bot may receive video frames at a resolution lower than requested. UInt32 MediaSourceId Media source identifier of the video source to be received Exceptions Type Condition ObjectDisposedException Thrown if the VideoSocket is disposed. InvalidOperationException Thrown if the subscription is invalid. SkypeMediaException Thrown if an internal media failure occurs. Unsubscribe() Stops the current video subscription on the VideoSocket. The VideoMediaReceived events will stop raising video buffers. Declaration void Unsubscribe() UpdateVideoSendCapability(VideoSendCapability) Updates the send capabilities (such as SupportedSendVideoFormats or MaxConcurrentSendStreams) of the video socket, allowing the bot to add and remove video formats mid-call. Declaration void UpdateVideoSendCapability(VideoSendCapability capability) Parameters Type Name Description VideoSendCapability capability Events MediaStreamFailure This event is raised if there is a network connection failure with the peer. To recover, the bot will need to start a new call or rejoin the meeting. Declaration event EventHandler MediaStreamFailure Event Type Type Description EventHandler < MediaStreamFailureEventArgs > Remarks Note: this event can be raised even if there is no active video subscription; i.e., the VideoSocket is \"idle\" and not receiving media. MediaStreamQualityChanged The event is raised if a media stream quality change was detected Declaration event EventHandler MediaStreamQualityChanged Event Type Type Description EventHandler < VideoMediaStreamQualityChangedEventArgs > VideoKeyFrameNeeded If the application has configured the VideoSocket to receive encoded media, this event is raised each time a key frame is needed. Events are serialized, so only one event at a time is raised to the app. Declaration event EventHandler VideoKeyFrameNeeded Event Type Type Description EventHandler < VideoKeyFrameNeededEventArgs > VideoMediaReceived If the application has configured the VideoSocket to receive media, this event is raised each time a frame of video media is received. Once the application has consumed the buffer, it must call the buffer's Dispose() method. Declaration event EventHandler VideoMediaReceived Event Type Type Description EventHandler < VideoMediaReceivedEventArgs > Remarks The incoming video frame rate is variable. The frame rate can vary between 1.875 frames per second (fps) up to 30 fps. The application must be able to receive up to 30 video buffers per second. Events are serialized, so only one event at a time is raised to the app. The event handler should return as quickly as possible; any time-consuming per-frame processing should be performed asynchronously from the event handler. VideoReceiveStatusChanged If the application has configured the VideoSocket to receive media, this event is raised to inform the application when it is ready to receive media. When the status is active the application can subscribe to a video source, when inactive video subscription won't be allowed Declaration event EventHandler VideoReceiveStatusChanged Event Type Type Description EventHandler < VideoReceiveStatusChangedEventArgs > VideoSendStatusChanged If the application has configured the VideoSocket to send media, this event is raised to inform the application when it may begin sending media and when it should stop. The application cannot send media before receiving a VideoMediaSendStatusChanged event indicating the SendStatus is Active, such media will be discarded. Declaration event EventHandler VideoSendStatusChanged Event Type Type Description EventHandler < VideoSendStatusChangedEventArgs >" + "calls/Microsoft.Graph.Communications.Calls.IMediaSession.html": { + "href": "calls/Microsoft.Graph.Communications.Calls.IMediaSession.html", + "title": "Interface IMediaSession", + "keywords": "Interface IMediaSession The IMediaSession interface. For local media scenarios, this session object represents the modalities and the media configuration. Inherited Members IDisposable.Dispose() Namespace : Microsoft.Graph.Communications.Calls Assembly : Microsoft.Graph.Communications.Calls.dll Syntax public interface IMediaSession : IDisposable Properties MediaSessionId Gets the id of this media session. Declaration Guid MediaSessionId { get; } Property Value Type Description Guid Modalities Gets the supported modalities Declaration Modality[] Modalities { get; } Property Value Type Description Modality [] Methods GetMediaConfiguration() Get the media configuration Declaration JObject GetMediaConfiguration() Returns Type Description Newtonsoft.Json.Linq.JObject A Newtonsoft.Json.Linq.JObject produced by the Media library." }, - "bot_media/Microsoft.Skype.Bots.Media.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.html", - "title": "Namespace Microsoft.Skype.Bots.Media", - "keywords": "Namespace Microsoft.Skype.Bots.Media Classes AudioLowOnFramesEventArgs Audio low on frame event args AudioMediaBuffer Represents an unmanaged buffer containing audio media data. AudioMediaReceivedEventArgs Event arguments of an AudioMediaReceived event. AudioMetrics Audio-specific QoE metrics AudioQualityOfExperienceData Audio quality of experience data AudioSendStatusChangedEventArgs Event arguments of an AudioSendStatusChanged event. AudioSettings Audio frame player settings AudioSocket Provides Send and Receive I/O access to an audio stream. AudioSocketSettings The settings to initialize the AudioSocket. AudioVideoFramePlayer AudioVideoFramePlayer is responsible for streaming real time audio and video buffers. This frame player will handle audio and video sync from the audio and video buffer's timestamps AudioVideoFramePlayerSettings AudioVideoFramePlayer settings. This will help configure the player settings. DataMediaBuffer Reserved for the internal use. DataMediaReceivedEventArgs Reserved for the internal use. DataSendStatusChangedEventArgs Reserved for the internal use. DataSocket Reserved for the internal use. DataSocketSettings Reserved for the internal use. DominantSpeakerChangedEventArgs Event arguments of the DominantSpeakerChanged event. LowOnFramesEventArgs LowOnFrames event arguments MediaPlatform This class represents the Skype Bots Media Platform. MediaPlatformFactory MediaPlatformFactory that is used to create IMediaPlatform. MediaPlatformHealthChangedEventArgs Event arguments of the MediaPlatformHealthChangedEvent providing the current and previous health status of the media platform. MediaPlatformInstanceSettings Class that stores the settings of the Azure instance hosting the Bot Media Platform. MediaPlatformSettings Class that stores settings needed to initialize Bot Media Platform. MediaQualityOfExperienceData Media quality of experience (QoE) data MediaStreamFailureEventArgs Event arguments of the MediaStreamFailure event. NetworkMetrics QoE network level metrics PerfCounterConfiguration Perf counter configuration PortRange The Port range SkypeMediaException Root class for the exceptions that are specific to the Skype Media Bots SDK, ie. exceptions other than the standard .NET Framework exceptions. ToneReceivedEventArgs Event arguments of the ToneReceived event. VideoFormat VideoFormat VideoKeyFrameNeededEventArgs Event arguments of a VideoKeyFrameNeeded event. VideoLowOnFramesEventArgs Video low on frame event args VideoMediaBuffer Represents an unmanaged buffer containing video media data. VideoMediaReceivedEventArgs Event arguments of a VideoMediaReceived event. VideoMediaStreamQualityChangedEventArgs Event arguments of the video media stream quality event. VideoMetrics Video-specific quality of experience metrics VideoQualityOfExperienceData Video quality of experience data VideoReceiveStatusChangedEventArgs Event arguments of a VideoReceiveStatusChanged event. VideoSendCapability The Video Send Capability VideoSendStatusChangedEventArgs Event arguments of a VideoSendStatusChanged event. VideoSettings Video Frame player settings VideoSocket Provides Send and Receive I/O access to a video stream. VideoSocketSettings The video socket settings. Structs UnmixedAudioBuffer Represents an unmanaged audio buffer containing unmixed data corresponding to a specific speaker in a conference. This structure contains a pointer to the unmanaged audio buffer, the length of the buffer and the ID of the audio source of the active speaker. Interfaces IAudioSocket Interface to an AudioSocket. IAudioVideoFramePlayer Interface for the AudioVideoFramePlayer responsible for streaming real time audio video IDataSocket Reserved for the internal use. IMediaPlatform Interface to the MediaPlatform. IMediaPlatformLogger Interface for collecting MediaPlatform logs from the Bots.Media library. IVideoSocket Interface to a VideoSocket. Enums AudioFormat The audio format. DataType Reserved for internal use. HostingEnvironmentConfiguration HostingEnvironmentConfiguration to use for the MediaPlatform. In most cases, the default value is correct. Only in Azure Government clouds do different settings need to be applied. LogLevel Specifies a current logging level for a log line. MediaPlatformHealthStatus Health status of the media platform MediaQualityState Indicates the media quality state MediaReceiveStatus Indicates if the VideoSocket is capable of receiving media. MediaSendStatus Indicates whether an AudioSocket or VideoSocket is capable of sending media. MediaType Indicates the media type of the socket. StreamDirection Stream directionality, from the point-of-view of the local media endpoint. ToneId DTMF Tone Id enum. VideoColorFormat VideoColorFormat VideoQualityType Type of the video media quality VideoResolution Video resolution for vbss and video VideoSinkEncodingFormat VideoSinkEncodingFormats" + "bot_media/Microsoft.Skype.Bots.Media.PerfCounterConfiguration.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.PerfCounterConfiguration.html", + "title": "Class PerfCounterConfiguration", + "keywords": "Class PerfCounterConfiguration Perf counter configuration Inheritance Object PerfCounterConfiguration Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class PerfCounterConfiguration Constructors PerfCounterConfiguration() Constructor Declaration public PerfCounterConfiguration() Properties UseMPAzureAppHostPerfCounterProvider If set to true, will use MPAzureAppHost's default perf counter provider which uses the registered win32 perf counters Otherwise, will use the in-memory MPPerfCounterProvider that doesn't load win32 perf counters Declaration public bool UseMPAzureAppHostPerfCounterProvider { get; set; } Property Value Type Description Boolean VerifyPerfCounterConfiguration Default is true If set to false, will not verify the perf counter configuration of the bot (MediaPerf.dll and/or MP perf counters) Declaration public bool VerifyPerfCounterConfiguration { get; set; } Property Value Type Description Boolean Methods IsValidConfiguration(PerfCounterConfiguration) Checks if the config is valid Declaration public static bool IsValidConfiguration(PerfCounterConfiguration perfConfig) Parameters Type Name Description PerfCounterConfiguration perfConfig Returns Type Description Boolean ToString() ToString override Declaration public override string ToString() Returns Type Description String Overrides Object.ToString()" }, - "bot_media/Microsoft.Skype.Bots.Media.MediaType.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.MediaType.html", - "title": "Enum MediaType", - "keywords": "Enum MediaType Indicates the media type of the socket. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaType Fields Name Description Audio Audio Data Reserved for internal use. Vbss Video-based screen sharing (VBSS) Video Video" + "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformHealthStatus.html": { + "href": "bot_media/Microsoft.Skype.Bots.Media.MediaPlatformHealthStatus.html", + "title": "Enum MediaPlatformHealthStatus", + "keywords": "Enum MediaPlatformHealthStatus Health status of the media platform Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum MediaPlatformHealthStatus Fields Name Description HeavilyLoaded The media platform is under heavy load and the application should avoid allowing the current call volume to increase Normal The media platform is operating normally Overloaded The media platform is overloaded and new calls may be rejected" }, - "bot_media/Microsoft.Skype.Bots.Media.VideoMediaBuffer.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.VideoMediaBuffer.html", - "title": "Class VideoMediaBuffer", - "keywords": "Class VideoMediaBuffer Represents an unmanaged buffer containing video media data. Inheritance Object VideoMediaBuffer Implements IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public abstract class VideoMediaBuffer : IDisposable Constructors VideoMediaBuffer() Declaration protected VideoMediaBuffer() Properties Data Pointer to the unmanaged media buffer. Declaration public IntPtr Data { get; protected set; } Property Value Type Description IntPtr Remarks For the H264 video format, Data points to the start code of the first NALU of the frame and the whole buffer contains all the NALUs of the frame in sequence separated by their start codes. The frame data is an unencrypted depacketized H.264 elementary stream. B frames and SEI messages are not supported. Supported NALU types are 7 (SPS), 8 (PPS), 5 (IDR), and 1 (non-IDR). NALU start code prefixes can be either 0x000001 (3 bytes) or 0x00000001 (4 bytes). Fragmentation and packetization of NALUs is automatically handled by the platform. When receiving video in the H264 format, the platform ensures the application always receives decodable, full frames. Length The length of data in the media buffer. Declaration public long Length { get; protected set; } Property Value Type Description Int64 MediaSourceId MediaSourceId (MSI) of the video buffer. Within group or conference video calls, the MSI value identifies the video media source. This property is populated by the Real-Time Media Platform for Bots on received video buffers. When sending buffers via the IVideoSocket.Send API, this property is unused. Declaration public uint MediaSourceId { get; protected set; } Property Value Type Description UInt32 OriginalVideoFormat Original VideoFormat of the buffer when it was sourced. It is only used when receiving video buffers via the IVideoSocket.VideoMediaReceived event handler, in which case the VideoMediaBuffer.VideoFormat property may have different Width and Height values than the OriginalVideoFormat property, which represents the original format of the buffer. The reason is that the buffer may have been resized before being transmitted, so the original Width and Height may have been resized. If the Width and Height properties of OriginalVideoFormat differ from the VideoFormat property, the consumer of the VideoMediaBuffer raised in the VideoMediaReceived event should resize the buffer to fit the OriginalVideoFormat size. When sending buffers via the IVideoSocket.Send API, this property should always be null. Declaration public VideoFormat OriginalVideoFormat { get; protected set; } Property Value Type Description VideoFormat Stride Stride of the video buffer. This property is optional when sourcing video buffers that are sent via the IVideoSocket.Send API. Stride (also called pitch) represents the number of bytes it takes to read one row of pixels in memory. It may differ from the width depending on the color format. Declaration public int Stride { get; protected set; } Property Value Type Description Int32 Timestamp Timestamp of when the media content was sourced, in 100-ns units. When sourcing media buffers, this property should be set using the value from the MediaPlatform.GetCurrentTimestamp() API. Declaration public long Timestamp { get; protected set; } Property Value Type Description Int64 VideoFormat VideoFormat of the video media buffer. Declaration public VideoFormat VideoFormat { get; protected set; } Property Value Type Description VideoFormat Methods Dispose() Disposes the object. Declaration public void Dispose() Dispose(Boolean) Releases unmanaged resources held by the buffer object. Must be implemented in the derived class. Declaration protected abstract void Dispose(bool disposing) Parameters Type Name Description Boolean disposing If true, both managed and unmanaged resources can be disposed. If false, only unmanaged resources can be disposed. Implements System.IDisposable" + "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClient.html": { + "href": "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClient.html", + "title": "Class GraphHttpClient", + "keywords": "Class GraphHttpClient Graph client that handles transport over http. Inheritance Object ObjectRoot GraphHttpClient Implements IGraphHttpClient IGraphClient Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Transport Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphHttpClient : ObjectRoot, IGraphHttpClient, IGraphClient Constructors GraphHttpClient(IGraphLogger, JsonSerializerSettings, HttpClient, Int32, String, ProductInfoHeaderValue, IEnumerable, String) Initializes a new instance of the GraphHttpClient class. Declaration public GraphHttpClient(IGraphLogger logger, JsonSerializerSettings jsonSerializerSettings = null, HttpClient httpClient = null, int numberOfRetries = 3, string correlationIdHeader = null, ProductInfoHeaderValue userAgent = null, IEnumerable defaultProperties = null, string metricName = \"PartnerHttpRequests\") Parameters Type Name Description IGraphLogger logger The logger. Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings The json serializer settings. HttpClient httpClient The HTTP client. Int32 numberOfRetries The number of retries. String correlationIdHeader The correlation identifier header. ProductInfoHeaderValue userAgent The user agent. IEnumerable < IGraphProperty > defaultProperties The default properties. String metricName The metric name. Properties CustomRedirectUriGenerator Gets or sets the custom redirect URI generator. This is called in case of a redirect (3XX) response from the request. Clients can use this to read the response and give the new redirect url to call in the next request. Declaration public Func CustomRedirectUriGenerator { get; set; } Property Value Type Description Func < HttpResponseMessage , Uri > The custom redirect URI generator. DefaultProperties Gets the default properties. Declaration public IEnumerable DefaultProperties { get; } Property Value Type Description IEnumerable < IGraphProperty > GraphLogger Gets the graph logger. Declaration public IGraphLogger GraphLogger { get; } Property Value Type Description IGraphLogger SerializerSettings Gets the serializer settings. Declaration public JsonSerializerSettings SerializerSettings { get; } Property Value Type Description Newtonsoft.Json.JsonSerializerSettings Methods Clone(HttpClient) Clones this instance with optional overrides. Declaration public IGraphHttpClient Clone(HttpClient httpClient = null) Parameters Type Name Description HttpClient httpClient The HTTP client to replace the original. Returns Type Description IGraphHttpClient Cloned client with the updated properties. InitializeServicePointSettings() Initializes global service point settings. Declaration public static void InitializeServicePointSettings() LogRequest(TraceLevel, HttpRequestMessage, Object, String, String, Int32) Logs the request message. Declaration protected void LogRequest(TraceLevel level, HttpRequestMessage httpRequest, object content = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description TraceLevel level The level. HttpRequestMessage httpRequest The http request to log. Object content The response time. String memberName Name of the member. String filePath The file path. Int32 lineNumber The line number. LogResponse(TraceLevel, HttpRequestMessage, Int64, HttpResponseMessage, Object, Exception, String, String, Int32) Logs the response message. Declaration protected void LogResponse(TraceLevel level, HttpRequestMessage httpRequest, long responseTime, HttpResponseMessage httpResponse = null, object content = null, Exception exception = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description TraceLevel level The level. HttpRequestMessage httpRequest The http request to log. Int64 responseTime The response time. HttpResponseMessage httpResponse The http response to log. Object content The content to log. Exception exception The exception to log. String memberName Name of the member. String filePath The file path. Int32 lineNumber The line number. SendAsync(IGraphRequest, CancellationToken) Declaration public Task SendAsync(IGraphRequest graphRequest, CancellationToken cancellationToken = default(CancellationToken)) where T : class Parameters Type Name Description IGraphRequest graphRequest CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T SendAsync(IGraphRequest, CancellationToken) Declaration public Task> SendAsync(IGraphRequest graphRequest, CancellationToken cancellationToken = default(CancellationToken)) where T1 : class where T2 : class Parameters Type Name Description IGraphRequest graphRequest CancellationToken cancellationToken Returns Type Description Task < IGraphResponse > Type Parameters Name Description T1 T2 SendHttpRequestAsync(IGraphRequest, CancellationToken) Sends the request asynchronously. We only retry if the Http request fails with an exception. We do not retry in case of error response returned from the request. Declaration protected virtual Task> SendHttpRequestAsync(IGraphRequest graphRequest, CancellationToken cancellationToken) where T1 : class where T2 : class Parameters Type Name Description IGraphRequest graphRequest The request to be sent out. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < IGraphResponse > HttpResponseMessage received for the graphRequest . Type Parameters Name Description T1 Type of the content present in the request. T2 Type of the expected content in response. SendRawHttpRequestAsync(HttpRequestMessage, CancellationToken) Send a Http request as an asynchronous operation. The content sent using this is not parsed or logged. Declaration public Task SendRawHttpRequestAsync(HttpRequestMessage httpRequest, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description HttpRequestMessage httpRequest The http request message to send. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < HttpResponseMessage > The task object representing the asynchronous operation. Implements IGraphHttpClient IGraphClient Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) See Also IGraphHttpClient" }, - "bot_media/Microsoft.Skype.Bots.Media.AudioQualityOfExperienceData.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioQualityOfExperienceData.html", - "title": "Class AudioQualityOfExperienceData", - "keywords": "Class AudioQualityOfExperienceData Audio quality of experience data Inheritance Object MediaQualityOfExperienceData AudioQualityOfExperienceData Inherited Members MediaQualityOfExperienceData.NetworkMetrics MediaQualityOfExperienceData.TotalMediaDuration Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioQualityOfExperienceData : MediaQualityOfExperienceData Constructors AudioQualityOfExperienceData() AudioQualityOfExperienceData constructor Declaration public AudioQualityOfExperienceData() Properties AudioMetrics Audio-specific QoE metrics Declaration public AudioMetrics AudioMetrics { get; set; } Property Value Type Description AudioMetrics" + "common/Microsoft.Graph.Communications.Common.Telemetry.ILogEventFormatter.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.ILogEventFormatter.html", + "title": "Interface ILogEventFormatter", + "keywords": "Interface ILogEventFormatter Interface to format log event. Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface ILogEventFormatter Methods Format(LogEvent) Format the log event. Declaration string Format(LogEvent logEvent) Parameters Type Name Description LogEvent logEvent The log event Returns Type Description String The formatted text. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String)" }, - "bot_media/Microsoft.Skype.Bots.Media.AudioSocketSettings.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.AudioSocketSettings.html", - "title": "Class AudioSocketSettings", - "keywords": "Class AudioSocketSettings The settings to initialize the AudioSocket. Inheritance Object AudioSocketSettings Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public class AudioSocketSettings Constructors AudioSocketSettings() Initializes an AudioSocketSettings object. Declaration public AudioSocketSettings() Properties CallId An alphanumeric string that uniquely identifies a call Declaration public string CallId { get; set; } Property Value Type Description String ReceiveUnmixedMeetingAudio Allows the bot to receive separate unmixed audio buffers for individual speakers in a meeting. When set to true, up to four audio buffers, each corresponding to the top four active speakers, will be received at a time. In UnmixedMeetingAudio mode, the bot will receive only unmixed audio and not both unmixed and mixed. Declaration public bool ReceiveUnmixedMeetingAudio { get; set; } Property Value Type Description Boolean Remarks Unmixed audio is optimized for machine cognition (e.g., speech recognition) rather than for human perception (such as call recording and playback). Certain error concealment treatment (e.g., to mitigate packet loss) is not applied to the received audio stream in unmixed mode. In order to receive both mixed and unmixed audio simultaneously, the bot must establish two separate calls into the meeting. StreamDirections The directionality of the media stream. This indicates whether it is enabled to both send and receive media, or only send or only receive media. Declaration public StreamDirection StreamDirections { get; set; } Property Value Type Description StreamDirection SupportedAudioFormat The supported send/receive audio format. Declaration public AudioFormat SupportedAudioFormat { get; set; } Property Value Type Description AudioFormat" + "common/Microsoft.Graph.Communications.Common.Telemetry.IGraphLogger.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.IGraphLogger.html", + "title": "Interface IGraphLogger", + "keywords": "Interface IGraphLogger The logger interface used by Graph Services. This logger emits logs that can be observed by different observers. Inherited Members IObservable.Subscribe(IObserver) Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public interface IGraphLogger : IObservable Properties CorrelationId Gets or sets the correlation identifier. This is used to track correlation between multiple requests for one scenario. Declaration Guid CorrelationId { get; set; } Property Value Type Description Guid DiagnosticLevel Gets or sets the diagnostic level for the logger. Declaration TraceLevel DiagnosticLevel { get; set; } Property Value Type Description TraceLevel LogicalThreadId Gets or sets the logical thread identifier. This id is used for tracking the flow of one request throughout the lifetime until it ends. Declaration uint LogicalThreadId { get; set; } Property Value Type Description UInt32 ObfuscationConfiguration Gets the obfuscation configuration. This is used to obfuscate PII and other data. Declaration ObfuscationConfiguration ObfuscationConfiguration { get; } Property Value Type Description ObfuscationConfiguration Properties Gets the properties of the logger. Declaration IReadOnlyDictionary Properties { get; } Property Value Type Description IReadOnlyDictionary < Type , Object > Methods Log(TraceLevel, String, String, Guid, Guid, LogEventType, IEnumerable, String, String, Int32) Log messages classified as the provided trace level. Declaration LogEvent Log(TraceLevel level, string message, string component = null, Guid correlationId = default(Guid), Guid requestId = default(Guid), LogEventType eventType = LogEventType.Trace, IEnumerable properties = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description TraceLevel level The trace level. String message A composite format string that includes one or more format items. String component The component in which log is created Guid correlationId The correlation identifier. Guid requestId The request identifier. LogEventType eventType Log event type IEnumerable < Object > properties Extra properties for the log event String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.CreateObserver(IObservable, Action, Action, Action) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) LoggingExtensions.Log(IGraphLogger, TraceLevel, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Info(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Verbose(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.LogHttpMessage(IGraphLogger, TraceLevel, TransactionDirection, HttpTraceType, String, String, String, IEnumerable>>, Int32, String, Nullable, Guid, Guid, String, String, Int32) LoggingExtensions.Metric(IGraphLogger, String, String, Int64, Dictionary, Boolean, String, Guid, String, String, Int32) LoggingExtensions.SerializeAndObfuscate(IGraphLogger, Object, Formatting) LoggingExtensions.Obfuscate(IGraphLogger, Object, ObfuscationTag) LoggingExtensions.GetHeaderText(IGraphLogger, IEnumerable>>) LoggingExtensions.CreateShim(IGraphLogger, String, Nullable, IEnumerable, ObfuscationConfiguration) LoggingExtensions.CreateILogger(IGraphLogger, String, Guid, LogEventType, IEnumerable) LoggingExtensions.EnterMethod(IGraphLogger, Guid, String, String, Int32) LoggingExtensions.LeaveMethod(IGraphLogger, Guid, String, String, Int32)" }, - "bot_media/Microsoft.Skype.Bots.Media.DataType.html": { - "href": "bot_media/Microsoft.Skype.Bots.Media.DataType.html", - "title": "Enum DataType", - "keywords": "Enum DataType Reserved for internal use. Namespace : Microsoft.Skype.Bots.Media Assembly : Microsoft.Skype.Bots.Media.dll Syntax public enum DataType Fields Name Description MultichannelAudio Reserved for internal use. Transcript Reserved for internal use." + "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLogger.html": { + "href": "common/Microsoft.Graph.Communications.Common.Telemetry.GraphLogger.html", + "title": "Class GraphLogger", + "keywords": "Class GraphLogger Logging portion of graph. Inheritance Object Disposable GraphLogger Implements IDisposable IGraphLogger IObservable < LogEvent > Inherited Members Disposable.Dispose() Disposable.IsDisposed Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Microsoft.Graph.Communications.Common.Telemetry Assembly : Microsoft.Graph.Communications.Common.dll Syntax public class GraphLogger : Disposable, IDisposable, IGraphLogger, IObservable Constructors GraphLogger(String, IEnumerable, Boolean, ObfuscationConfiguration) Initializes a new instance of the GraphLogger class. Declaration public GraphLogger(string component = null, IEnumerable properties = null, bool redirectToTrace = false, ObfuscationConfiguration obfuscationConfiguration = null) Parameters Type Name Description String component The component in which log is createdThe component in which this logger is created. IEnumerable < Object > properties Common properties to be set on each event Boolean redirectToTrace if set to true [redirect to trace]. ObfuscationConfiguration obfuscationConfiguration The obfuscation configuration Fields StartupLoggerNameSuffix The startup logger name prefix Declaration public const string StartupLoggerNameSuffix = \"_Startup\" Field Value Type Description String Properties Component Gets or the component of logger. Declaration public string Component { get; } Property Value Type Description String CorrelationId Gets or sets the correlation identifier. This is used to track correlation between multiple requests for one scenario. Declaration public Guid CorrelationId { get; set; } Property Value Type Description Guid DiagnosticLevel Gets or sets the diagnostic level for the logger. Declaration public TraceLevel DiagnosticLevel { get; set; } Property Value Type Description TraceLevel LogicalThreadId Gets or sets the logical thread identifier. This id is used for tracking the flow of one request throughout the lifetime until it ends. Declaration public uint LogicalThreadId { get; set; } Property Value Type Description UInt32 ObfuscationConfiguration Gets the obfuscation configuration. Declaration public ObfuscationConfiguration ObfuscationConfiguration { get; } Property Value Type Description ObfuscationConfiguration Properties Gets the common properties for each event. Declaration public IReadOnlyDictionary Properties { get; } Property Value Type Description IReadOnlyDictionary < Type , Object > Methods Dispose(Boolean) Protected implementation of dispose. This will be triggered only once regardless if manually disposed or garbage collected. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Disposable.Dispose(Boolean) Log(TraceLevel, String, String, Guid, Guid, LogEventType, IEnumerable, String, String, Int32) Log messages classified as the provided trace level. Declaration public LogEvent Log(TraceLevel level, string message, string component = null, Guid correlationId = default(Guid), Guid requestId = default(Guid), LogEventType eventType = LogEventType.Trace, IEnumerable properties = null, string memberName = null, string filePath = null, int lineNumber = 0) Parameters Type Name Description TraceLevel level The trace level. String message A composite format string that includes one or more format items. String component The component in which log is created Guid correlationId The correlation identifier. Guid requestId The request identifier. LogEventType eventType Log event type IEnumerable < Object > properties Extra properties for the log event String memberName Calling function. String filePath File name where code is located. Int32 lineNumber Line number where code is located. Returns Type Description LogEvent Log Event object. Subscribe(IObserver) Create a subscription for logging events. Declaration public IDisposable Subscribe(IObserver observer) Parameters Type Name Description IObserver < LogEvent > observer The object that is to receive notifications. Returns Type Description IDisposable A reference to an interface that allows observers to stop receiving notifications before the provider has finished sending them. Implements System.IDisposable IGraphLogger System.IObservable Extension Methods AdditionalDataExtensions.SetInAdditionalData(Object, String, Object) Extensions.Pin(Object) Extensions.ChangeType(Object, Type) Extensions.ChangeType(Object) Extensions.CreateObserver(IObservable, Action, Action, Action) Extensions.TryDispose(Object, IGraphLogger) ReflectionUtils.GetPropertyUsingReflection(Object, String) ReflectionUtils.SetPropertyUsingReflection(Object, String, Object) Validator.IsNull(Object, String, String) Validator.NotNull(T, String, String) Validator.Equals(T, T, String, String) Validator.Equals(T, T, String) Validator.NotEquals(T, T, String, String) LoggingExtensions.Log(IGraphLogger, TraceLevel, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Error(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Info(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, Exception, String, String, Guid, String, String, Int32) LoggingExtensions.Warn(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.Verbose(IGraphLogger, String, String, Guid, String, String, Int32) LoggingExtensions.LogHttpMessage(IGraphLogger, TraceLevel, TransactionDirection, HttpTraceType, String, String, String, IEnumerable>>, Int32, String, Nullable, Guid, Guid, String, String, Int32) LoggingExtensions.Metric(IGraphLogger, String, String, Int64, Dictionary, Boolean, String, Guid, String, String, Int32) LoggingExtensions.SerializeAndObfuscate(IGraphLogger, Object, Formatting) LoggingExtensions.Obfuscate(IGraphLogger, Object, ObfuscationTag) LoggingExtensions.GetHeaderText(IGraphLogger, IEnumerable>>) LoggingExtensions.CreateShim(IGraphLogger, String, Nullable, IEnumerable, ObfuscationConfiguration) LoggingExtensions.CreateILogger(IGraphLogger, String, Guid, LogEventType, IEnumerable) LoggingExtensions.BindToILoggerFactory(GraphLogger, ILoggerFactory, ILogEventFormatter) LoggingExtensions.EnterMethod(IGraphLogger, Guid, String, String, Int32) LoggingExtensions.LeaveMethod(IGraphLogger, Guid, String, String, Int32)" } } \ No newline at end of file diff --git a/docs/manifest.json b/docs/manifest.json index cd7e95bb..cfe57e73 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -1398,7 +1398,7 @@ "output": { ".html": { "relative_path": "client/Microsoft.Graph.Communications.Client.Cache.CacheContext-1.html", - "hash": "z7H/ls2Z3sJm30F6Cha2tA==" + "hash": "LTgJFu6LpaZTAS8O5Ea4Bw==" } }, "is_incremental": false, @@ -1410,7 +1410,7 @@ "output": { ".html": { "relative_path": "client/Microsoft.Graph.Communications.Client.Cache.ICache.html", - "hash": "QdXfdKaNPuCWS+ZWin8Sxg==" + "hash": "yKxAT/1DAyPn8TShwgRZrA==" } }, "is_incremental": false, @@ -1422,7 +1422,7 @@ "output": { ".html": { "relative_path": "client/Microsoft.Graph.Communications.Client.Cache.ServiceCache.html", - "hash": "ouFHDQMwiBE3mCIPk14V/A==" + "hash": "rTGrF7ALgB7/NAXooTcORg==" } }, "is_incremental": false, @@ -1578,7 +1578,7 @@ "output": { ".html": { "relative_path": "client/Microsoft.Graph.Communications.Client.Transport.GraphAuthClient.html", - "hash": "GeoQi66nwjd1M1mKIdk7SA==" + "hash": "tfmELFZRdOGdJmwX9nb1JQ==" } }, "is_incremental": false, @@ -1614,7 +1614,7 @@ "output": { ".html": { "relative_path": "client/Microsoft.Graph.Communications.Client.Transport.GraphClientWrapper.html", - "hash": "Vx56/3vnmOlYl5/wpAl3MQ==" + "hash": "xfUqkQs8l9YS5vLkUlAvZQ==" } }, "is_incremental": false, @@ -1806,7 +1806,7 @@ "output": { ".html": { "relative_path": "client/Microsoft.Graph.Communications.Resources.ResourceEventArgs-1.html", - "hash": "gqbL7W8L9x2SjNS+hOjIwg==" + "hash": "vQ+roPVVt+bBtOaCUSR9OQ==" } }, "is_incremental": false, @@ -1818,7 +1818,7 @@ "output": { ".html": { "relative_path": "client/Microsoft.Graph.Communications.Resources.ResourceEventHandler-2.html", - "hash": "r8DNFHQlE4lDQOZz3nlTDQ==" + "hash": "inH3EIvH1rchcjPY6ifGPA==" } }, "is_incremental": false, @@ -1902,7 +1902,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.CollectionUtils.html", - "hash": "p634wrr8DYafCNVykRDRug==" + "hash": "PsTh4A7tnxZSK5I99cqyXA==" } }, "is_incremental": false, @@ -1926,7 +1926,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.EnumUtils.html", - "hash": "3jqkWfcZs0F1QC3HgNOoBg==" + "hash": "qeqpxNSHgRz0RRoBTVNpuw==" } }, "is_incremental": false, @@ -2310,7 +2310,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.StateMachine-1.html", - "hash": "lSdsilzBUyuhGG2Eg01D/A==" + "hash": "mMIL4G6H2R7dOLcDIQJVGA==" } }, "is_incremental": false, @@ -2694,7 +2694,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.Telemetry.LoggingExtensions.html", - "hash": "S762hrF+odPDYnijg0dSyQ==" + "hash": "XXKnBk6fFQz9sbZTOFz8FA==" } }, "is_incremental": false, @@ -2874,7 +2874,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClient.html", - "hash": "6x6KX/WoyiOML/l5Fwil+Q==" + "hash": "3imL6Oag8pFNjS6MYtOqaQ==" } }, "is_incremental": false, @@ -3054,7 +3054,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.Transport.HttpResponseMessageExtensions.html", - "hash": "T2KV/Fh4mxAJquWp2+9aWQ==" + "hash": "7PhdLWPj0+fVAlisqSODkQ==" } }, "is_incremental": false, @@ -3066,7 +3066,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.Transport.IGraphClient.html", - "hash": "HDZxdEYX9xRDIJJ9M7HXzw==" + "hash": "nx9Bdss0bAFz0MdLvkipQg==" } }, "is_incremental": false, @@ -3246,7 +3246,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.Utilities.html", - "hash": "P7bijYjfezowjaZOS70hQQ==" + "hash": "9xADBJir0eFQ+m3keou1uw==" } }, "is_incremental": false, @@ -3258,7 +3258,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.Validator.html", - "hash": "UwGeSDD4yH1NidjwhJQAVQ==" + "hash": "hkvghL/P4CKxWUwc33jf7Q==" } }, "is_incremental": false, @@ -3270,7 +3270,7 @@ "output": { ".html": { "relative_path": "common/Microsoft.Graph.Communications.Common.WeakKey-1.html", - "hash": "/9blAPw0+9/hw0R8aAq0Gg==" + "hash": "H+Pplh2DCP90yRaJy8fwMw==" } }, "is_incremental": false, @@ -3871,26 +3871,27 @@ "incremental_info": [ { "status": { - "can_incremental": true, + "can_incremental": false, + "details": "Cannot build incrementally because last build info is missing.", "incrementalPhase": "build" }, "processors": { - "TocDocumentProcessor": { + "ResourceDocumentProcessor": { "can_incremental": false, - "details": "Processor TocDocumentProcessor cannot support incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.", + "details": "Processor ResourceDocumentProcessor cannot support incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.", "incrementalPhase": "build" }, - "ResourceDocumentProcessor": { + "TocDocumentProcessor": { "can_incremental": false, - "details": "Processor ResourceDocumentProcessor cannot support incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.", + "details": "Processor TocDocumentProcessor cannot support incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.", "incrementalPhase": "build" }, "ConceptualDocumentProcessor": { - "can_incremental": true, + "can_incremental": false, "incrementalPhase": "build" }, "ManagedReferenceDocumentProcessor": { - "can_incremental": true, + "can_incremental": false, "incrementalPhase": "build" } }