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).
The Graph SDK uses a custom logger named @Microsoft.Graph.Communications.Common.Telemetry.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 @Microsoft.Graph.Communications.Common.Telemetry.LogEvent class).
private class LogObserver : IObserver<LogEvent>
{
private readonly LogEventFormatter formatter = new LogEventFormatter();
diff --git a/docs/articles/Testing.html b/docs/articles/Testing.html
index f721d5d9..9a77f226 100644
--- a/docs/articles/Testing.html
+++ b/docs/articles/Testing.html
@@ -133,7 +133,7 @@ Update Signaling
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.
+Update your @Microsoft.Skype.Bots.Media.MediaPlatformSettings to the following.
var mediaPlatform = new MediaPlatformSettings
{
ApplicationId = <Your application id>
diff --git a/docs/articles/calls/appHostedMediaCalls.html b/docs/articles/calls/appHostedMediaCalls.html
index b71dbb6c..9c395879 100644
--- a/docs/articles/calls/appHostedMediaCalls.html
+++ b/docs/articles/calls/appHostedMediaCalls.html
@@ -82,12 +82,12 @@ 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.
+- Create the an instance of the @Microsoft.Graph.Communications.Client.ICommunicationsClientBuilder.
+- Create an instance of @Microsoft.Skype.Bots.Media.MediaPlatformSettings and use MediaCommunicationsClientBuilderExtensions.SetMediaPlatformSettings method to pass the @Microsoft.Skype.Bots.Media.MediaPlatformSettings to build the @Microsoft.Graph.Communications.Client.ICommunicationsClient
+- Once the builder builds the @Microsoft.Graph.Communications.Client.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
+Important
When creating a new call that uses application hosted media, an instance of @Microsoft.Graph.Communications.Calls.IMediaSession needs to be passed into CallCollectionExtensions.AddAsync
diff --git a/docs/articles/index.html b/docs/articles/index.html
index 1bb88168..9b0aa53c 100644
--- a/docs/articles/index.html
+++ b/docs/articles/index.html
@@ -84,7 +84,7 @@ Graph Core and Communication
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.
+The @Microsoft.Graph.Communications.Client.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 @Microsoft.Graph.Communications.Client.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.
@@ -95,7 +95,7 @@ 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:
+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**",
@@ -120,8 +120,8 @@ Making an Outbound Call
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:
+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 @Microsoft.Graph.Communications.Calls.JoinMeetingParameters as input.
+The bot needs to create the @Microsoft.Graph.Communications.Calls.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**",
@@ -158,7 +158,7 @@ Example Incoming Calls
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
.
+
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<ICall> collectionEventArgs)
{
IMediaSession mediaSession = this.Client.CreateMediaSession(
diff --git a/docs/index.html b/docs/index.html
index 0d7445d4..a32a6225 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -94,7 +94,7 @@ Concepts and Examples
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.
+The Stateful SDK is exposed using a single class @Microsoft.Graph.Communications.Client.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.