### Start ngrok with Configuration Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/articles/Testing.html Start the ngrok executable with the '-all' flag and specify the path to your ngrok configuration file. ```bash ngrok.exe start -all -config ``` -------------------------------- ### Start Ngrok with Configuration Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/PublicSamples/PsiBot/Readme.md Start ngrok using the specified configuration file. This command may require administrator privileges. ```bash ngrok start --all --config ngrok.yml ``` -------------------------------- ### Starting ngrok with Configuration Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/HueBot/README.md Start ngrok using the specified configuration file. Ensure you replace the placeholder with the actual path to your ngrok.yml file. ```bash ngrok.exe start -all -config %replace_with_path_to_your_ngrok.yml% ``` -------------------------------- ### Example Tenant Admin Consent URL Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/setup/bot.md An example of a fully formed tenant admin consent URL, demonstrating the expected format with placeholder GUIDs for tenant and bot IDs, and a sample redirect URI. ```text https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/adminconsent?client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&state=0&redirect_uri=https://mybot.requestcatcher.com/ ``` -------------------------------- ### Example of Copying Audio Files Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/deploy/aks.md An example demonstrating how to copy a specific audio zip file from a pod named 'teams-recording-bot-1' to a local file named 'audio.zip'. ```powershell kubectl cp -n teams-recording-bot teams-recording-bot-1:/Users/ContainerAdministrator/AppData/Local/Temp/teams-recording-bot/archive/3c608c13-e57d-4aa1-bb6f-f153a12e0a05/c133ccdf-0abb-41ca-9134-0203f5c6c797.zip ./audio.zip ``` -------------------------------- ### Example AKS Pod Log Output Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/deploy/aks.md Sample log output from an AKS pod indicating the successful setup and booting of the Recording Bot. This output confirms the bot is running and ready to process calls. ```cmd Setup: Starting VC_redist Setup: Converting certificate Setup: Installing certificate Certificate "avbotaks.msftdevtest.com" added to store. CertUtil: -importPFX command completed successfully. Setup: Deleting bindings Setup: Adding bindings Setup: Done --------------------- RecordingBot: booting RecordingBot: running Skipped publishing IncomingHTTPPOST events to Event Grid topic recordingbotevents - No topic key specified Skipped publishing NotificationHTTPPOST events to Event Grid topic recordingbotevents - No topic key specified Skipped publishing CallEstablishing events to Event Grid topic recordingbotevents - No topic key specified Skipped publishing NotificationHTTPPOST events to Event Grid topic recordingbotevents - No topic key specified Skipped publishing CallEstablishing events to Event Grid topic recordingbotevents - No topic key specified Skipped publishing NotificationHTTPPOST events to Event Grid topic recordingbotevents - No topic key specified Skipped publishing CallEstablished events to Event Grid topic recordingbotevents - No topic key specified Skipped publishing CallRecordingFlip events to Event Grid topic recordingbotevents - No topic key specified ``` -------------------------------- ### Example AKS Pod Status Output Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/deploy/aks.md Example output from 'kubectl get pods' command, showing the status of pods in the 'teams-recording-bot' namespace. It indicates the number of ready containers and the running status. ```cmd NAME READY STATUS RESTARTS AGE teams-recording-bot-0 1/1 Running 0 13h teams-recording-bot-1 1/1 Running 0 13h teams-recording-bot-2 1/1 Running 0 13h ``` -------------------------------- ### Run Deployment Script - Initial Setup Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/AudioVideoPlaybackBot/README.md Executes the deployment script for initial setup. Replace '' and 'centralus' with your specific organization name and desired Azure region. ```powershell .\deploy.ps1 -orgName -Location centralus ``` ```powershell .\deploy.ps1 -orgName DNA -Location centralus ``` -------------------------------- ### ngrok Output Example Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/StatelessSamples/VoiceRecorderAndPlaybackBot/README.md Example output from the ngrok command, showing the session status, account details, and forwarding URLs. Use the 'Forwarding' URL as your BotBaseUrl. ```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 ``` -------------------------------- ### Install Ngrok on Linux (Ubuntu/WSL) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/setup/ngrok.md Commands to install Ngrok on Linux or WSL. This involves downloading the zip file, unzipping it, and moving it to a directory in your PATH. ```bash cd ~ sudo apt-get unzip sudo wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip unzip ngrok-stable-linux-amd64.zip ``` -------------------------------- ### Ngrok Output Example (Free Account) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/AudioVideoPlaybackBot/README.md Example output from Ngrok when running with a free account. It shows the dynamically generated forwarding URLs for TCP and HTTP traffic. ```text Forwarding tcp://0.tcp.ngrok.io:15448 -> localhost:8445 Forwarding http://32f6055e17b3.ngrok.io -> https://localhost:9441 Forwarding https://32f6055e17b3.ngrok.io -> https://localhost:9441 ``` -------------------------------- ### Ngrok Output Example (Pro Account) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/AudioVideoPlaybackBot/README.md Example output from Ngrok when running with a pro account. It displays the forwarding URLs, including the custom subdomain and reserved TCP address. ```text Forwarding tcp://1.tcp.ngrok.io:12332 -> localhost:8445 Forwarding http://contoso.ngrok.io -> localhost:9441 Forwarding https://contoso.ngrok.io -> localhost:9441 ``` -------------------------------- ### Run Deployment Script - Re-execute Setup Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/AudioVideoPlaybackBot/README.md Re-executes the setup process for the deployment script. Use this option if you need to re-run the setup steps. Replace placeholders as needed. ```powershell .\deploy.ps1 -orgName -Location centralus -RunSetup ``` ```powershell .\deploy.ps1 -orgName DNA -Location centralus -RunSetup ``` -------------------------------- ### Ngrok Configuration: Full Example (Free Version) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/AudioVideoPlaybackBot/README.md A complete ngrok.yml configuration for the free version, including authentication, signaling, and media tunnels. ```yaml authtoken: 43ksdfjlsielsdf_siwoeirwXXXX tunnels: signaling: addr: "https://localhost:9441" proto: http host-header: localhost media: addr: 8445 proto: tcp ``` -------------------------------- ### Test Ngrok Installation on Windows Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/setup/ngrok.md Verify Ngrok installation by running this command in a new command prompt or PowerShell window. Ensure Ngrok is in your PATH. ```powershell ngrok version ``` -------------------------------- ### Ngrok Configuration: Full Example (Pro Version) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/AudioVideoPlaybackBot/README.md A complete ngrok.yml configuration for the pro version, including authentication, a custom subdomain for signaling, and a remote address for media. ```yaml authtoken: 43ksdfjlsielsdf_siwoeirwXXXX tunnels: signaling: addr: "https://localhost:9441" proto: http subdomain: contoso host-header: localhost media: addr: 8445 proto: tcp remote_addr: "1.tcp.ngrok.io:12332" ``` -------------------------------- ### Test OpenSSL Installation Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/setup/openssl.md Verify that OpenSSL is accessible from the command line by running this command in an arbitrary directory. ```cmd openssl version ``` -------------------------------- ### Start ngrok Tunnel Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/StatelessSamples/ReminderBot/README.md Start ngrok with the specified address and host header. The output will provide a bot base URI that needs to be recorded for further configuration. ```bash ngrok http https://localhost:44379 -host-header=localhost ``` -------------------------------- ### Run Deployment Script - Command Line Deployment Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/AudioVideoPlaybackBot/README.md Deploys the infrastructure directly from the command line after setup. Replace placeholders as needed. ```powershell .\deploy.ps1 -orgName -Location centralus -RunDeployment ``` ```powershell .\deploy.ps1 -orgName DNA -Location centralus -RunDeployment ``` -------------------------------- ### Install Ngrok on Windows using Chocolatey Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/setup/ngrok.md Use this command to install Ngrok via the Chocolatey package manager on Windows. This adds Ngrok to your system's PATH. ```powershell choco install ngrok.portable ``` -------------------------------- ### Run Infrastructure Deployment Locally Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/PublicSamples/EchoBot/README.md If you have already run the setup script, you can trigger the infrastructure deployment locally using the '-RunDeployment' flag with the deploy script. ```powershell .\deploy.ps1 -OrgName TEB -RunDeployment ``` -------------------------------- ### EnsureNotEmpty(Guid) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.GuidUtils.html Ensures a GUID is not empty. If the input GUID is empty, a new random GUID is generated and returned. ```APIDOC ## EnsureNotEmpty(Guid) ### Description Ensures Guid is not empty by generating a random guid if it is empty. ### Method Signature `public static Guid EnsureNotEmpty(this Guid guid)` ### Parameters * **guid** ([Guid](https://docs.microsoft.com/dotnet/api/system.guid)) - The input GUID to check. ### Returns * [Guid](https://docs.microsoft.com/dotnet/api/system.guid) - A GUID that is guaranteed not to be empty. ``` -------------------------------- ### Initialize Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.IMediaPlatform.html Initializes the Media Platform for Bot usage with the provided settings. ```APIDOC ## Initialize(MediaPlatformSettings) ### Description Initializes the Media Platform for Bot. ### Method Signature void Initialize(MediaPlatformSettings settings) ### Parameters - **settings** (MediaPlatformSettings) - Settings to initialize the Bot Media Platform. ``` -------------------------------- ### EnsureNotEmpty(Nullable) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.GuidUtils.html Ensures a nullable GUID is not empty. If the input GUID is null or empty, a new random GUID is generated and returned. ```APIDOC ## EnsureNotEmpty(Nullable) ### Description Ensures Guid is not empty by generating a random guid if it is empty. ### Method Signature `public static Guid EnsureNotEmpty(this Guid? guid)` ### Parameters * **guid** ([Nullable](https://docs.microsoft.com/dotnet/api/system.nullable-1)<[Guid](https://docs.microsoft.com/dotnet/api/system.guid)>) - The input nullable GUID to check. ### Returns * [Guid](https://docs.microsoft.com/dotnet/api/system.guid) - A GUID that is guaranteed not to be empty. ``` -------------------------------- ### ParseOrNew(String) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.GuidUtils.html Attempts to parse a string into a GUID. If the string is a valid GUID representation, it is returned. Otherwise, a new random GUID is generated and returned. ```APIDOC ## ParseOrNew(String) ### Description Parse and return the guid if valid else return new guid. ### Method Signature `public static Guid ParseOrNew(string input)` ### Parameters * **input** ([String](https://docs.microsoft.com/dotnet/api/system.string)) - The string to parse into a GUID. ### Returns * [Guid](https://docs.microsoft.com/dotnet/api/system.guid) - The parsed GUID if the input was valid, or a new GUID otherwise. ``` -------------------------------- ### Install Azure Az PowerShell Module Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/RemoteMediaSamples/IncidentBot/README.md Installs the Azure Az PowerShell module for current user. Ensure you have PowerShell 7.0+ and administrative privileges if installing for all users. ```powershell Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force ``` -------------------------------- ### Initialize Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.MediaPlatform.html Initializes the Media Platform for Bot usage. This must be called before any other media platform operations. ```APIDOC ## Initialize(MediaPlatformSettings) ### Description Initializes the Media Platform for Bot. ### Method Signature public static void Initialize(MediaPlatformSettings settings) ### Parameters * **settings** (MediaPlatformSettings) - Required - Settings to initialize the Bot Media Platform. ``` -------------------------------- ### Create Application Instance with PowerShell Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0DeltaRosterSample/LocalMediaSamples/PolicyRecordingBot/README.md Use these PowerShell commands to create a new application instance for your bot. Ensure you are logged in as a tenant admin. ```powershell Import-Module SkypeOnlineConnector $Session=New-CsOnlineSession Import-PSSession $Session New-CsOnlineApplicationInstance -UserPrincipalName -DisplayName -ApplicationId Sync-CsOnlineApplicationInstance -ObjectId ``` -------------------------------- ### MediaPlatformSettings Constructor Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.MediaPlatformSettings.html Initializes a new instance of the MediaPlatformSettings class. ```APIDOC ## MediaPlatformSettings() ### Description Initializes a new instance of the MediaPlatformSettings class. ### Syntax ```csharp public MediaPlatformSettings() ``` ``` -------------------------------- ### OAuth Token Example for Authentication Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/articles/calls/calling-notifications.html An example of an OAuth token payload received with a notification. The 'aud' and 'iss' fields are crucial for validation. ```json { "aud": "0efc74f7-41c3-47a4-8775-7259bfef4241", "iss": "https://api.botframework.com", "iat": 1466741440, "nbf": 1466741440, "exp": 1466745340, "tid": "1fdd12d0-4620-44ed-baec-459b611f84b2" } ``` -------------------------------- ### Create Application Instance using PowerShell Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/PolicyRecordingBot/README.md Use these PowerShell commands to create a new online application instance for the bot. Ensure you are logged in as a tenant admin. ```powershell Import-Module MicrosoftTeams Connect-MicrosoftTeams New-CsOnlineApplicationInstance -UserPrincipalName -DisplayName -ApplicationId Sync-CsOnlineApplicationInstance -ObjectId ``` -------------------------------- ### Run Host Script Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/setup/certificate.md Execute the host script to initiate Ngrok, set up SSL, and save certificates. Ensure your Ngrok domain is reserved and configuration files are updated. ```bash ./host.sh ``` -------------------------------- ### Create ngrok Configuration File Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/articles/Testing.html Create an ngrok configuration file named 'ngrok.yml' with your authentication token. ```yaml authtoken: ``` -------------------------------- ### VideoSettings Constructor Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.VideoSettings.html Initializes a new instance of the VideoSettings class. ```APIDOC ## VideoSettings() ### Description Initializes a new instance of the VideoSettings class. ### Syntax ```csharp public VideoSettings() ``` ``` -------------------------------- ### AudioVideoFramePlayerSettings Constructor Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayerSettings.html Initializes a new instance of the AudioVideoFramePlayerSettings class with specified audio, video, and minimum enqueued media length settings. ```APIDOC ## AudioVideoFramePlayerSettings(AudioSettings, VideoSettings, UInt32) ### Description Constructor for AudioVideoFramePlayerSettings. ### Parameters #### Parameters - **audioSettings** (AudioSettings) - Required - BufferSize needs to be set to the size of AudioMediaBuffer to be sent - **videoSettings** (VideoSettings) - Required - - **minEnqueuedMediaLengthInMs** (UInt32) - Required - ``` -------------------------------- ### CommunicationsClientBuilder.Id Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/client/Microsoft.Graph.Communications.Client.CommunicationsClientBuilder.html Gets the client ID. ```APIDOC ## Id ### Description Gets the client id. ### Property Value - **Id** (Guid) - The client identifier. ``` -------------------------------- ### GetDirectoryParticipantPrefix Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/core/Microsoft.Graph.IdentitySetExtensions.html Gets a user prefix for a given CloudNamespace. ```APIDOC ## GetDirectoryParticipantPrefix(CloudNamespace) ### Description Gets a user prefix for the provided [CloudNamespace](Microsoft.Graph.Routing.CloudNamespace.html). This prefix is used in constructing the participant's MRI. ### Method `public static string GetDirectoryParticipantPrefix(CloudNamespace cloudNamespace)` ### Parameters #### Path Parameters * **cloudNamespace** ([CloudNamespace](Microsoft.Graph.Routing.CloudNamespace.html)) - Required - The cloud where the user belongs. #### Returns * [String](https://docs.microsoft.com/dotnet/api/system.string) - The prefix to be used to construct the MRI. ``` -------------------------------- ### CreateMediaConfiguration (VBSS) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.IMediaPlatform.html Creates a serialized media configuration object for establishing a video-based screen sharing (VBSS) call to the bot. ```APIDOC ## CreateMediaConfiguration(IVideoSocket) ### Description 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. ### Method Signature JObject CreateMediaConfiguration(IVideoSocket vbssSocket) ### Parameters - **vbssSocket** (IVideoSocket) - Video socket for the video-based screen sharing (VBSS) modality. Socket must be configured as RecvOnly. ### Returns - **JObject** - A serialized media configuration object. ### Exceptions - **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. ``` -------------------------------- ### Transition.Targets Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.StateMachine-1.Transition.html Gets the target states of the transition. ```APIDOC ## Targets ### Description Gets the target states. ### Property Value - **Targets** (TStateEnum[]) - The targets. ``` -------------------------------- ### Transition.Source Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.StateMachine-1.Transition.html Gets the source state of the transition. ```APIDOC ## Source ### Description Gets the source state. ### Property Value - **Source** (TStateEnum) - The source state. ``` -------------------------------- ### ConfigMap TCP Services Mapping Example Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/deploy/aks.md This example shows a typical entry within a ConfigMap that maps an external TCP port to a specific bot pod's internal service and media port. This is crucial for routing media traffic when deploying Ingress-Nginx. ```yaml 28550: teams-recording-bot/teams-recording-bot-0:8445 ``` -------------------------------- ### CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.MediaPlatform.html Returns a serialized mediaConfiguration object, including configurations for audio, video, and video-based screen sharing (VBSS). ```APIDOC ## CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket) ### Description Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for audio, video, and video-based screen sharing (VBSS) modalities. ### Method Signature public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets, IVideoSocket vbssSocket) ### Parameters #### Path Parameters - **audioSocket** (IAudioSocket) - Socket that handles audio. - **videoSockets** (IList) - Ordered list of video sockets. The order in which the sockets are provided maps to the order of the streams exposed by MediaPaaS. 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. - **vbssSocket** (IVideoSocket) - Video socket for the video-based screen sharing (VBSS) modality. Socket must be configured as RecvOnly. ### Returns - **JObject** - Serialized MediaConfiguration object. ### Exceptions - **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 (Audio, Video, VBSS) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.IMediaPlatform.html Creates a media configuration object for establishing a call with audio, video, and video-based screen sharing (VBSS) sockets. ```APIDOC ## CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket) ### Description Creates a media configuration object for establishing a call with audio, video, and video-based screen sharing (VBSS) sockets. ### Method Signature JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets, IVideoSocket vbssSocket) ### Parameters - **audioSocket** (IAudioSocket) - Socket that handles audio. - **videoSockets** (IList) - 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. - **vbssSocket** (IVideoSocket) - Video socket for the video-based screen sharing (VBSS) modality. Socket must be configured as RecvOnly. ### Returns - **JObject** - A serialized media configuration object. ### Exceptions - **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. ``` -------------------------------- ### GetAppParticipantPrefix Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/core/Microsoft.Graph.IdentitySetExtensions.html Gets the app participant prefix for a given CloudNamespace. ```APIDOC ## GetAppParticipantPrefix(CloudNamespace) ### Description Gets the app participant prefix for the provided [CloudNamespace](Microsoft.Graph.Routing.CloudNamespace.html). This prefix is used in constructing the participant's MRI. ### Method `public static string GetAppParticipantPrefix(CloudNamespace cloudNamespace)` ### Parameters #### Path Parameters * **cloudNamespace** ([CloudNamespace](Microsoft.Graph.Routing.CloudNamespace.html)) - Required - The cloud where the app participant belongs. #### Returns * [String](https://docs.microsoft.com/dotnet/api/system.string) - The prefix to be used to construct the MRI. ``` -------------------------------- ### CreateMediaConfiguration(IAudioSocket, IVideoSocket) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.MediaPlatform.html Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. ```APIDOC ## CreateMediaConfiguration(IAudioSocket, IVideoSocket) ### Description Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for each modality. ### Method `public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IVideoSocket videoSocket)` ### Parameters - **audioSocket** ([IAudioSocket](Microsoft.Skype.Bots.Media.IAudioSocket.html)) - **videoSocket** ([IVideoSocket](Microsoft.Skype.Bots.Media.IVideoSocket.html)) ``` -------------------------------- ### ObfuscationSerializer.Members Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.ObfuscationSerializer.html Gets or sets the members belonging to the class. ```APIDOC ## ObfuscationSerializer.Members ### Description Gets or sets the members belonging to the class. ### Property Value - **Type**: ObfuscationMember[] - **Description**: The members of the class. ``` -------------------------------- ### GetDirectoryAppParticipantPrefix Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/core/Microsoft.Graph.IdentitySetExtensions.html Gets the directory app participant prefix for a given CloudNamespace. ```APIDOC ## GetDirectoryAppParticipantPrefix(CloudNamespace) ### Description Gets the directory app participant prefix for the provided [CloudNamespace](Microsoft.Graph.Routing.CloudNamespace.html). This prefix is used in constructing the participant's MRI. ### Method `public static string GetDirectoryAppParticipantPrefix(CloudNamespace cloudNamespace)` ### Parameters #### Path Parameters * **cloudNamespace** ([CloudNamespace](Microsoft.Graph.Routing.CloudNamespace.html)) - Required - The cloud where the directory app participant belongs. #### Returns * [String](https://docs.microsoft.com/dotnet/api/system.string) - The prefix to be used to construct the MRI. ``` -------------------------------- ### Resolving 'Media platform failed to initialize' Exception Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/docs/Environment Setup errors.md This C# exception occurs during the initialization of the bot service. Ensure the SDK is correctly configured and that all dependencies are met before calling '_botService.Initialize();'. ```csharp _botService.Initialize(); ``` -------------------------------- ### FirstObject Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.Validator.html Gets the first object in an enumerable that matches a specified predicate. ```APIDOC ## FirstObject(IEnumerable, Func) ### Description Gets the first object in the enumerable that matches the specified predicate. ### Declaration ```csharp public static object FirstObject(this IEnumerable source, Func predicate) ``` ### Parameters #### Parameters - **source** ([IEnumerable](https://docs.microsoft.com/dotnet/api/system.collections.ienumerable)) - The [IEnumerable](https://docs.microsoft.com/dotnet/api/system.collections.ienumerable) to check for object. - **predicate** ([Func](https://docs.microsoft.com/dotnet/api/system.func-2)) - The [Func](https://docs.microsoft.com/dotnet/api/system.func-2) used to match the object. ### Returns - **Object** ([Object](https://docs.microsoft.com/dotnet/api/system.object)) - langword_csharp_object if the source sequence contains the matching element; otherwise, null. ``` -------------------------------- ### Configure Cloud Deployment with PowerShell Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/LocalMediaSamples/AudioVideoPlaybackBot/README.md Use this PowerShell script to configure cloud service deployment for the AudioVideoPlaybackBot. Ensure you have the correct path, DNS, certificate thumbprint, bot name, app ID, and secret. ```powershell .\configure_cloud.ps1 -p .\V1.0Samples\LocalMediaSamples\AudioVideoPlaybackBot\ -dns bot.contoso.com -cn bot.contoso.com -thumb ABC0000000000000000000000000000000000CBA -bid bot -aid 3853f935-2c6f-43d7-859d-6e8f83b519ae -as 123456!@#$%^ ``` -------------------------------- ### ObjectRootDisposable.GraphLogger Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.ObjectRootDisposable.html Gets the logger instance associated with this ObjectRootDisposable object. ```APIDOC ## GraphLogger Property ### Description Gets the logger. ### Property Value - **IGraphLogger** - The logger instance. ``` -------------------------------- ### CreateMediaPlatform Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.MediaPlatformFactory.html Creates the Media Platform for bots. The platform must be initialized before it can be used. ```APIDOC ## CreateMediaPlatform() ### Description Creates the Media Platform for bots. The platform has to be initialized before it is used. ### Method `public static IMediaPlatform CreateMediaPlatform()` ### Returns - **IMediaPlatform**: The interface to the Media Platform. ``` -------------------------------- ### ObjectRoot.GraphLogger Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.ObjectRoot.html Gets the logger instance associated with this ObjectRoot instance. ```APIDOC ## GraphLogger Property ### Description Gets the logger. ### Declaration ```csharp protected IGraphLogger GraphLogger { get; } ``` ### Property Value * **IGraphLogger** ([IGraphLogger](Microsoft.Graph.Communications.Common.Telemetry.IGraphLogger.html)) - The logger instance. ``` -------------------------------- ### AudioSocketSettings Constructor Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.AudioSocketSettings.html Initializes a new instance of the AudioSocketSettings class. ```APIDOC ## AudioSocketSettings() ### Description Initializes an AudioSocketSettings object. ### Syntax ```csharp public AudioSocketSettings() ``` ``` -------------------------------- ### Item Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/client/Microsoft.Graph.Communications.Client.IStateManager-1.html Gets the IResource with the specified identifier from the state manager. ```APIDOC ## Properties ### Item[String] Gets the IResource with the specified identifier. #### Declaration ```csharp TResource this[string id] { get; } ``` #### Parameters * **id** (String) - Required - The identifier. #### Property Value * **TResource** - The IResource. ``` -------------------------------- ### BufferSizeInMs Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.AudioSettings.html Gets or sets the audio buffer length in milliseconds. ```APIDOC ## BufferSizeInMs ### Description Audio buffer length in ms. ### Property Value - **BufferSizeInMs** (UInt32) - Description: Audio buffer length in ms. ``` -------------------------------- ### CreateMediaConfiguration(IAudioSocket, IList) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.MediaPlatform.html Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for audio and video modalities. ```APIDOC ## CreateMediaConfiguration(IAudioSocket, IList) ### Description Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for audio and video modalities. ### Method Signature public static JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets) ### Parameters #### Path Parameters - **audioSocket** (IAudioSocket) - Socket that handles audio. - **videoSockets** (IList) - Ordered list of video sockets. The order in which the sockets are provided maps to the order of the streams exposed by MediaPaaS. 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 - **JObject** - Serialized MediaConfiguration object. ### Exceptions - **ArgumentException** - A VideoSocket is not configured correctly. - **InvalidOperationException** - MediaPlatform is not initialized. - **SkypeMediaException** - The media platform is currently overloaded and cannot handle new calls. ``` -------------------------------- ### DefaultGraphHttpClient Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.Transport.GraphHttpClientContainer.html Gets the default graph HTTP client associated with this container. ```APIDOC ## DefaultGraphHttpClient ### Description Gets the default graph HTTP client. ### Property Value - **IGraphHttpClient** - The default graph HTTP client. ``` -------------------------------- ### AudioVideoFramePlayer Constructor Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.AudioVideoFramePlayer.html Initializes a new instance of the AudioVideoFramePlayer class with specified audio, video sockets, and settings. ```APIDOC ## AudioVideoFramePlayer Constructor ### Description Constructor for the audio video frame player. ### Parameters - **audioSocket** (AudioSocket) - Description - **videoSocket** (VideoSocket) - Description - **audioVideoFramePlayerSettings** (AudioVideoFramePlayerSettings) - Description ``` -------------------------------- ### HashingObfuscationEngine Constructor Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.HashingObfuscationEngine.html Initializes a new instance of the HashingObfuscationEngine class with a salt provider function. ```APIDOC ## HashingObfuscationEngine(Func) Constructor ### Description Initializes a new instance of the [HashingObfuscationEngine](Microsoft.Graph.Communications.Common.Telemetry.Obfuscation.HashingObfuscationEngine.html) class. ### Parameters - **saltProvider** (Func) - Required - The salt provider. ``` -------------------------------- ### TypedPropertiesConverter.CanRead Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.Telemetry.JsonConverters.TypedPropertiesConverter.html Gets a value indicating whether this converter can read JSON. ```APIDOC ## CanRead Property ### Description Gets a value indicating whether this converter can read JSON. ### Property Value - **Boolean**: Returns `true` if the converter can read JSON, `false` otherwise. ### Syntax ```csharp public override bool CanRead { get; } ``` ``` -------------------------------- ### CamelCaseStringEnumConverter.CanWrite Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.OData.CamelCaseStringEnumConverter.html Gets a value indicating whether this converter can write a value. ```APIDOC ## CanWrite Property ### Description Gets a value indicating whether this converter can write a value. ### Property Value - **Type**: Boolean - **Description**: True if this converter can write JSON, false otherwise. ### Declaration ```csharp public override bool CanWrite { get; } ``` ``` -------------------------------- ### CreateMediaConfiguration(IAudioSocket) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.MediaPlatform.html Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for the audio modality. ```APIDOC ## CreateMediaConfiguration(IAudioSocket) ### Description Returns a serialized mediaConfiguration object, containing MP URI and render/source contexts for the audio modality. ### Method `public static JObject CreateMediaConfiguration(IAudioSocket audioSocket)` ### Parameters - **audioSocket** ([IAudioSocket](Microsoft.Skype.Bots.Media.IAudioSocket.html)) - Socket that handles audio. ### Returns - **Type**: Newtonsoft.Json.Linq.JObject - **Description**: Serialized MediaConfiguration object. ### Exceptions - **InvalidOperationException**: MediaPlatform is not initialized. - **SkypeMediaException**: The media platform is currently overloaded and cannot handle new calls. ``` -------------------------------- ### CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket) Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.IMediaPlatform.html Creates a serialized MediaConfiguration object for establishing an audio, video, and screen sharing call. This overload supports combined audio, video, and screen sharing streams. ```APIDOC ## CreateMediaConfiguration(IAudioSocket, IList, IVideoSocket) ### Description 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. ### Method ```csharp JObject CreateMediaConfiguration(IAudioSocket audioSocket, IList videoSockets, IVideoSocket screenSharingSocket) ``` ### Parameters #### Path Parameters - **audioSocket** ([IAudioSocket](Microsoft.Skype.Bots.Media.IAudioSocket.html)) - Required - **videoSockets** ([IList](https://docs.microsoft.com/dotnet/api/system.collections.generic.ilist-1)<[IVideoSocket](Microsoft.Skype.Bots.Media.IVideoSocket.html)">) - Required - **screenSharingSocket** ([IVideoSocket](Microsoft.Skype.Bots.Media.IVideoSocket.html)) - Required ``` -------------------------------- ### AutoClean.Data Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.AutoClean-1.html Gets the custom data associated with the AutoClean instance. ```APIDOC ## Data { get; } ### Description Gets the custom data. ### Property Value - **T** - Description: The custom data. ``` -------------------------------- ### EventSource.GetGuid and GetName Methods Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.Telemetry.ClientEtwLogger.html Methods to retrieve the GUID and name associated with an EventSource type. ```APIDOC ## GetGuid(Type) ### Description Retrieves the GUID for the specified EventSource type. ### Method GET ### Endpoint N/A (Method call) ## GetName(Type) ### Description Retrieves the name for the specified EventSource type. ### Method GET ### Endpoint N/A (Method call) ``` -------------------------------- ### VideoSocket Constructors Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/bot_media/Microsoft.Skype.Bots.Media.VideoSocket.html Initializes a new VideoSocket object with specified configuration settings. ```APIDOC ## VideoSocket(VideoSocketSettings) ### Description Initializes a new VideoSocket object. ### Parameters - **settings** (VideoSocketSettings) - Configuration settings for the VideoSocket ``` -------------------------------- ### Bot Console Output Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/README.md This is the expected output in the console when the Recording Bot starts successfully. ```cmd RecordingBot: booting RecordingBot: running ``` -------------------------------- ### Join Call Response Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/README.md This is an example of a successful response received after the bot joins a call. ```json { "callId": "e51f2c00-0420-44af-a977-88dc307d2346", "scenarioId": "bda643f2-4a8e-4dbb-beff-94bef8534279", "call": "bot.ngrok.io/calls/e51f2c00-0420-44af-a977-88dc307d2346" } ``` -------------------------------- ### SetMediaPlatformSettings Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/calls_media/Microsoft.Graph.Communications.Calls.Media.MediaCommunicationsClientBuilderExtensions.html Sets the local media platform settings and initializes the media platform for a stateful client builder. ```APIDOC ## SetMediaPlatformSettings ### Description Sets the local media platform settings. This function also initializes the local media platform. ### Method `public static ICommunicationsClientBuilder SetMediaPlatformSettings(this ICommunicationsClientBuilder statefulClientBuilder, MediaPlatformSettings mediaSettings)` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **statefulClientBuilder** (ICommunicationsClientBuilder) - Required - The stateful client builder. - **mediaSettings** (MediaPlatformSettings) - Required - The media settings. ### Returns - **ICommunicationsClientBuilder** - The [ICommunicationsClientBuilder](../client/Microsoft.Graph.Communications.Client.ICommunicationsClientBuilder.html). ### Exceptions - **ClientException** - When something fails while initializing the media platform. ``` -------------------------------- ### Build Docker Image Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/V1.0Samples/AksSamples(Deprecated)/teams-recording-bot/README.md Command to build the Docker image for the Teams Recording Bot. Replace placeholders with your specific values. ```powershell docker build \ --build-arg CallSignalingPort= \ --build-arg CallSignalingPort2= \ --build-arg InstanceInternalPort= \ -f ./build/Dockerfile . \ -t [TAG] ``` -------------------------------- ### CollectionNotificationEventArgs.ResourceData Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/core/Microsoft.Graph.Communications.Core.Notifications.CollectionNotificationEventArgs.html Gets the resource data object list associated with the collection notification. ```APIDOC ## ResourceData Property ### Description Gets the resource data object list. ### Declaration ```csharp public IReadOnlyList ResourceData { get; } ``` ### Property Value - **Type**: [IReadOnlyList](https://docs.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist-1)<[Object](https://docs.microsoft.com/dotnet/api/system.object)"> - **Description**: The resource data object list. ``` -------------------------------- ### ODataTimeSpanConverter.CanWrite Property Source: https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/docs/common/Microsoft.Graph.Communications.Common.OData.ODataTimeSpanConverter.html Gets a value indicating whether this converter can write a value in the specified format. ```APIDOC ## CanWrite ### Description Gets a value indicating whether this converter can write a value in the specified format. ### Method Property ### Declaration ```csharp public override bool CanWrite { get; } ``` ### Returns - **Boolean**: True if the converter can write; otherwise, false. ```