Git Product home page Git Product logo

microsoft-graph-comms-samples's Introduction

Microsoft Graph Communications API and Samples

The Microsoft Graph Communications API allows developers to programmatically interact with Microsoft's Communications Platform, which also powers Microsoft Teams, to create amazing experiences and products. Check out our samples in this repo to understand the capabilities of these APIs.

Get started

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

microsoft-graph-comms-samples's People

Contributors

alexisconia avatar ashleyf avatar bcage29 avatar chrisbardon avatar dependabot[bot] avatar hachandw avatar hank-tnguyen avatar hanknguyen-msft avatar identifier avatar jackry avatar japnolt avatar jasonthedeveloper avatar kanchm avatar ksikorsk avatar mathowar avatar microsoftopensource avatar msftgits avatar nikulk avatar poiriersimon avatar robroseknows avatar rongqi-msft avatar samarthasthana avatar sangling avatar satyakonmsft avatar satyakonmsft-zz avatar vinaychandra avatar zihzhan-msft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

microsoft-graph-comms-samples's Issues

Incident Bot deployed on Azure: getting forbidden error on raising incident

Hi,

I am trying to make a call using Incident Bot sample and have deployed it on Azure at:

https://msgcsvspincbot1.azurewebsites.net/

I got API permissions granted by Admin, but when I try to raise incident there is a forbidden error, logs for this can be found at:

https://msgcsvspincbot1.azurewebsites.net/logs

The Azure tenant that I am trying this with has been granted the following API permissions by Azure Admin:

  1. Microsoft.Graph.Calls.AccessMedia.All
  2. Microsoft.Graph.Calls.Initiate.All
  3. Microsoft.Graph.Calls.InitiateGroupCall.All
  4. Microsoft.Graph.Calls.JoinGroupCall.All
  5. Microsoft.Graph.Calls.JoinGroupCallAsGuest.All

Here is the JSON payload for POST request to raise incident:

{
"name": "TestIn9",
"time": "Thursday, May 28, 2019 10:10 AM",
"tenantId": "97009a52-97e9-4290-8f2c-a8ac8925d978",
"objectId1": "ea1e52f3-9b41-4610-bbe7-8533adf2be76",
"objectId2": "66d29a15-1617-4971-9611-440fc13bb927",
"joinURL": "https://teams.microsoft.com/_#/l/meetup-join/19:[email protected]/1559064739458?context=%7B%22Tid%22:%22dad97a0c-c63c-4d47-820c-0e24b682426c%22,%22Oid%22:%22ea1e52f3-9b41-4610-bbe7-8533adf2be76%22%7D&anon=true&deeplinkId=95183f13-d1da-421e-fb5a-007588ece438",
"removeFromDefaultRoutingGroup": true,
"allowConversationWithoutHost": true
}

I have created an online meeting in Teams and am able to join using the two teams users whose objectID is used (minor modification to the sample for using objectIDs instead of array). Logs for the error seen in bot are attached, could you please check and see why this call is being forbidden?
WSForbiddenError-5-28-19.txt

Unable to successfully make calls from Huebot on Azure

I have been trying to get this sample hue bot up and working but without success. Initially I created a service fabric cluster manually from the Azure console and I published the app from VS. It worked to an extent. I was able to get the app running and respond to apis. I was able to fire the join api but the call was stuck in the establishing state. When I looked into the event logs it appeared to me that the app was not receiving any callbacks from the service. The call creation succeeded with 201 but it never received further updates. I wasn't sure what could have gone wrong there.
AppId - 6731d14c-dece-469e-a6d3-bde23ca712c9

Following are the calls I that tried
391a0b00-9b7a-4997-be10-d6480624ab1c
331a0b00-d22c-4d60-8054-2a6b86852820
391a0b00-9b7a-4997-be10-d6480624ab1c

Not received roster update when trying to subscribe to participant

When trying the huebot sample, able to establish a call(call state changing to established) and then it terminates, when the code recieve onCallUpdated event and trying to subscribe to participant, the participant count is at 0 , where as there is already two people in the call.

Any help would be highly appreciated

Attaching the log snippet

2019-01-30T08:53:20.1382929Z: Info: [341a0f00-2f2e-4a8c-b7c1-557408c3e29a] Subscribing to: 4294967295
2019-01-30T08:53:20.1322914Z: Info: Call NotificationEventArgs received for
Deleted: /app/calls/341a0f00-2f2e-4a8c-b7c1-557408c3e29a {"AadApplicationIdentity":{"AppId":"45eb182c-5959-4b40-81ee-07de06ae7b3b","AppName":"HueBot"}}
2019-01-30T08:53:20.1302924Z: Info: {"AadApplicationIdentity":{"AppId":"45eb182c-5959-4b40-81ee-07de06ae7b3b","AppName":"HueBot"},"HttpLogData":{"TransactionDirection":0,"TraceType":1,"Url":"masked","Method":"POST","Headers":"client-request-id: 663bf8cd-dfd8-4fbb-a8fe-ab91461ade1b\r\nscenario-id: e3557a85-6474-48fe-9219-7005deae5229\r\n","ResponseStatusCode":202,"ResponseTime":3}}
2019-01-30T08:53:20.1292929Z: Info: {
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "deleted",
"resource": "/app/calls/341a0f00-2f2e-4a8c-b7c1-557408c3e29a",
"callbackUri": "masked",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "terminated",
"chatInfo": {
"@odata.type": "#microsoft.graph.chatInfo",
"threadId": "19:meeting_ZWUwN2JmOGMtZWMxMy00OTQxLTlhNTItMWUyYzM1ZmFlYTJl@thread.skype",
"messageId": "0"
},
"meetingInfo": {
"@odata.type": "#microsoft.graph.organizerMeetingInfo",
"organizer": {
"@odata.type": "#microsoft.graph.identitySet",
"user": {
"@odata.type": "#microsoft.graph.identity",
"id": "ea63260f-18ae-462f-b7a2-093c42b51cc3",
"tenantId": "(Generic: lMFWFCkC)",
"identityProvider": null
}
}
},
"meetingCapability": {
"@odata.type": "#microsoft.graph.meetingCapability",
"allowAnonymousUsersToDialOut": false,
"autoAdmittedUsers": "everyone",
"allowAnonymousUsersToStartMeeting": true
},
"id": "341a0f00-2f2e-4a8c-b7c1-557408c3e29a"
}
}
]
} {"AadApplicationIdentity":{"AppId":"45eb182c-5959-4b40-81ee-07de06ae7b3b","AppName":"HueBot"},"HttpLogData":{"TransactionDirection":0,"TraceType":0,"Url":"masked","Method":"POST","Headers":"Accept: application/json\r\nAuthorization: (redacted)\r\nHost:masked\r\nUser-Agent: Microsoft-Skype/3.0,(Calling/1.0)\r\nX-Microsoft-Skype-Chain-ID: e3557a85-6474-48fe-9219-7005deae5229\r\nX-Microsoft-Skype-Message-ID: 663bf8cd-dfd8-4fbb-a8fe-ab91461ade1b\r\nX-Forwarded-Proto: (redacted)\r\nX-Forwarded-For: (redacted)\r\n"}}
2019-01-30T08:53:20.1272933Z: Info: Correlation ID extracted from X-Microsoft-Skype-Chain-ID is: e3557a85-6474-48fe-9219-7005deae5229 {"AadApplicationIdentity":{"AppId":"45eb182c-5959-4b40-81ee-07de06ae7b3b","AppName":"HueBot"}}
2019-01-30T08:53:20.1272933Z: Info: Request ID extracted from X-Microsoft-Skype-Message-ID is: 663bf8cd-dfd8-4fbb-a8fe-ab91461ade1b {"AadApplicationIdentity":{"AppId":"45eb182c-5959-4b40-81ee-07de06ae7b3b","AppName":"HueBot"}}
2019-01-30T08:53:20.1262928Z: Info: Received HTTP POST, Microsoft.AspNetCore.Mvc.Routing.UrlHelper
2019-01-30T08:53:08.1588993Z: Info: [341a0f00-2f2e-4a8c-b7c1-557408c3e29a] Could not find valid participant using MSI 4294967295
2019-01-30T08:53:08.1588993Z: Warning: [341a0f00-2f2e-4a8c-b7c1-557408c3e29a] Did not receive rosterupdate notification yet
2019-01-30T08:53:08.1548998Z: Info: [341a0f00-2f2e-4a8c-b7c1-557408c3e29a] Received subscribe request for Msi 4294967295
2019-01-30T08:53:08.1548998Z: Info: {"AadApplicationIdentity":{"AppId":"45eb182c-5959-4b40-81ee-07de06ae7b3b","AppName":"HueBot"},"HttpLogData":{"TransactionDirection":0,"TraceType":1,"Url":"masked","Method":"POST","Headers":"client-request-id: 168d489f-d7b9-4f29-89c9-0e94a431bbc6\r\nscenario-id: e3557a85-6474-48fe-9219-7005deae5229\r\n","ResponseStatusCode":202,"ResponseTime":2}}
2019-01-30T08:53:08.1548998Z: Info: [341a0f00-2f2e-4a8c-b7c1-557408c3e29a] Subscribing to: 4294967295
2019-01-30T08:53:08.1548998Z: Info: {
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resource": "/app/calls/341a0f00-2f2e-4a8c-b7c1-557408c3e29a",
"callbackUri": "masked",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "established",
"direction": "outgoing",
"meetingInfo": {
"@odata.type": "#microsoft.graph.organizerMeetingInfo",
"organizer": {
"@odata.type": "#microsoft.graph.identitySet",
"user": {
"@odata.type": "#microsoft.graph.identity",
"id": "ea63260f-18ae-462f-b7a2-093c42b51cc3",
"tenantId": "(Generic: lMFWFCkC)",
"identityProvider": null
}
}
},
"tenantId": "a08eb4d2-f663-41d8-8e7d-7dc7cacd8bbf",
"id": "341a0f00-2f2e-4a8c-b7c1-557408c3e29a"
}
}
]
}

Unable to create call

I am trying to make a call using the Graph API.
if i use a target as follow : calls to a tenant user is working perfect

{
      "identity": {
        "user": {
          "id": "550fae72-d251-43ec-868c-3737xxxxx",
          "tenantId": "72f988bf-86f1-41af-91ab-xxxxx",
          "displayName": "Sample NAme"
        }
      }
    }

but once i try to use a Phone number as target i am having the follwing message
"403: request authorization tenant mismatch "

body sent :

{
      "identity": {
        "phone": {
          "displayName": "+1234xxxxx",
          "id": "+1234xxxxx"
        }
      } 
}

Graph SDK (beta):

Thanks in advance !
Mefteh.

Media Platform failed to initialise ECS Timeout

I get the following error when trying to start the hue bot locally(Using Azure Fabric Service and Ngrok)

"Media platform failed to initialize"
Inner Exception :- InvalidOperationException: Failed to initialize platform configuration (ECS timeout).

Microsoft.Skype.ECS.Client Warning: 0 : 1_https://s2s.config.skype.com_https://use.config.skype.com : Request failed : request=[/config/v1/AzureService/1.0.0.0?DeploymentName=bebd7c91-9822-4990-abe3-a2d83df784cb&agents=SmartAgents]; retryCount=[1]; exception=[System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at Microsoft.Skype.Seatbelt.Core.Helpers.DefaultClassifier.d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at Microsoft.Skype.Seatbelt.Core.Blocks.HedgedResourcePool.LineWithFallback2.<PostAsync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at Microsoft.Skype.Seatbelt.Core.Blocks.HedgedResourcePool.ParallelRequestsExecutor2.<PostAsync>d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at Microsoft.Skype.Seatbelt.Core.Blocks.HedgedResourcePool.HedgedResourcePoolBlock2.<PostCallAsync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at Microsoft.Skype.Seatbelt.Core.Blocks.HedgedResourcePool.HedgedResourcePoolBlock2.<PostAsync>d__7.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at Microsoft.Skype.Seatbelt.Core.Blocks.Retry.RetryBlock`2.d__7.MoveNext()]
The thread 0x219c has exited with code 0 (0x0).
Microsoft.Skype.ECS.Client Error: 0 : Microsoft.Skype.ECS.Client.ECSClientConfigLoader : Exception of type 'Microsoft.Skype.Seatbelt.Core.Blocks.TimeLimit.TimeLimitException' was thrown.
The thread 0x10c has exited with code 0 (0x0).

Outgoing call fails

I modified the code to create an outgoing call to my Teams client. After getting the "Establishing" state notification, there is no more activity for about a minute. After that, I receive the Terminated state notification and a missed call notification in the client.
This is the code I used:

internal async Task StartTestCallAsync()
{
    var callInfo = new Call {
        Subject = "A subject for this call",
        Targets = new List<ParticipantInfo> { new InvitationParticipantInfo { Identity = new IdentitySet { User = new Identity { Id = "..." }, }, }, },
        TenantId = "..."
    };


    var call = await this.Client.Calls().AddAsync(callInfo, this.CreateLocalMediaSession(Guid.NewGuid())).ConfigureAwait(false);
}

The application works fine for incoming calls.

Could you please let me know if this functionality is supported and how can I investigate further the issue?

Thank you,
Bogdan

HueBot - Media Platform Configuration

Hi,
I'm trying to start HueBot Sample on my dev host with ngrok. I configured all the settings but when i start a call, i got the message "Sorry, we couldn't connect you" in Teams. A message is also available in the logs "Notification queue app/calls/2e1a0f00-3370-45e2-bc20-2a73ba570aed is stopped".

After some investigations if i change the servicefqdn attribute (with the notification url) on media platform configuration, it's working.

By default, my configuration is:
Notification URL : botdev.domain.com
Media URL for TCP : 1.bot.domain.com (CNAME of 1.tcp.eu.ngrok.io)
so servicefqdn=1.bot.domain.com

The configuration that is working:
Notification URL : botdev.domain.com
Media URL for TCP : 1.bot.domain.com (CNAME of 1.tcp.eu.ngrok.io)
servicefqdn=botdev.domain.com

According to this documentation https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/calls-and-meetings/debugging-local-testing-calling-meeting-bots, the "standard" configuration is the first one.
Can you help me?
Thanks

Unable to make call to AudioVideoPlaybackBot on Teams

Downloaded the AudioVideoPlaybackBot sample and hosted it as CloudService , Registered the Bot .
The Bot is yet to be consented for Graph Api permissions by the AAD admin [Request is in submitted state].
I am unable to make call to this Bot -> It says "You can't talk to the bot yet".

I am assuming its because the Graph permissions are yet to be consented .

I am also trying to attach a remote debugger , but its not hitting breakpoint on any of the controllers .
Anything missing here .

Also, what are the scenarios we can playaround with this bot.

What is the full cluter name for local deployment of Huebot?

Hi, I'm having some trouble understanding the documentation on HueBot. In the appsettings.json it asks for a "BotBaseUrl". In the documentation it says to replace the URL with your full cluster name. I'm confused however as to what the full cluster name is for a local run of HueBot. Is it necessary to fill out that field? Should I set it to the ngrok URL?

Resource in notification not recognized

Describe the issue
When /callback/calling is called in my application, it returns an exception when ProcessNotificationAsync method is called.
This exception came after updating to version 1.1.0-prerelease.452. In the previous update this exception wasn't raised.

Exception Snippet

 Microsoft.Graph.Communications.Core.Exceptions.ServiceException
  HResult=0x80131500
  Message=Code: invalidRequest
Message: Resource in notification is not recognized.

  Source=Microsoft.Graph.Communications.Core
  StackTrace:
   at Microsoft.Graph.Communications.Core.Notifications.NotificationProcessorExtensions.ExtractResouceData(CommsNotification notification) 

Graph SDK:
Framework: .NET Core 2.1

  • Microsoft.Graph.Communications.Calls 1.1.0-prerelease.452
  • Microsoft.Graph.Communications.Client 1.1.0-prerelease.452
  • Microsoft.Graph.Communications.Core.Calls 1.1.0-prerelease.452

OnlineMeeting - GetOnlineMeeting Error

Hello,

When i try to get a meeting, i always get an error: 400 Bad Request.
The message is "Invalid Meeting Id".

I'm generated the meeting this the method CreateOnlineMeetingAsync.

Thanks

Could not load file or assembly MediaPerf / Microsoft.Rtc.Internal.Media.DLL

One step closer after setting IIS Express to 64bit . I'm now seeing:

Could not load file or assembly 'Microsoft.Rtc.Internal.Media.DLL' or one of its dependencies. The specified module could not be found.

If I set to break on all .net exceptions I'm actually seeing:

System.BadImageFormatException: 'Could not load file or assembly 'MediaPerf' or one of its dependencies. The module was expected to contain an assembly manifest.'

In bin there is the MediaPerf dll, .h and .ini

Graph API recording duration limitation

I would record a call on teams using Graph API.
As mentionned in documentation .

I make a request

POST https://graph.microsoft.com/beta/app/calls/{id}/record
Content-Type: application/json
Content-Length: 394

{
  "bargeInAllowed": true,
  "clientContext": "d45324c1-fcb5-430a-902c-f20af696537c",
  "prompts": [
    {
      "@odata.type": "#microsoft.graph.mediaPrompt",
      "mediaInfo": {
        "uri": "https://cdn.contoso.com/beep.wav",
        "resourceId": "1D6DE2D4-CD51-4309-8DAA-70768651088E"
      },
      "loop": 5
    }
  ],
  "maxRecordDurationInSeconds": 1800,
  "initialSilenceTimeoutInSeconds": 10,
  "maxSilenceTimeoutInSeconds": 2,
  "recordingFormat": "wav",
  "playBeep": true,
  "streamWhileRecording": true,
  "stopTones": [ "#", "11", "*" ]
}

I get the response with file locatop,

{
 [
    {
      "changeType": "deleted",
      "resource": "/app/calls/57DAB8B1894C409AB240BD8BEAE78896/operations/0FE0623FD62842EDB4BD8AC290072CC5",
      "resourceData": {
        "@odata.type": "#microsoft.graph.recordOperation",
        "@odata.id": "/app/calls/57DAB8B1894C409AB240BD8BEAE78896/operations/0FE0623FD62842EDB4BD8AC290072CC5",
        "@odata.etag": "W/\"54451\"",
        "clientContext": "d45324c1-fcb5-430a-902c-f20af696537c",
        "status": "completed",
        "recordResourceLocation": "https://file.location/17e3b46c-f61d-4f4d-9635-c626ef18e6ad",
        "recordResourceAccessToken": "<access-token>",
        "completionReason": "stopToneDetected"
      }
    }
  ]
}

Actual problem

When I request the location url and get the file , the maximum duration of the audio file is 300s

Expected behaviour

Be able to extend the recording time to longer than 300 s ( 5min ) ?

Thanks

cannot call the bot

Hello,

I configured and registered the AudioVideoPlayback bot as described in the documentation but I cannot call it from teams - the icon for calling is not available and the bot cannot be added to a meeting.
I used the tenant consent link to approve all call permissions but when I hover over the bot icon none of the calling capabilities are displayed.
I am using the developer preview mode for Teams.

Thank you,
Bogdan

Is The Graph API for Creating Calls Outdated?

NOTE: Moving this issue over from the general Microsoft Graph API issues list.

After having every request for creating a new call fail with a 400 - Bad Request error, I finally just copied and pasted the entire payload from microsoft-graph-docs/api-reference/beta/api/application_post_calls.md into my code...and it also fails with a 400 - Bad Request error. Is this really working somewhere? Seems more likely the documentation is outdated, in which case, how can we get it updated?

@ksikorsk responded to this initial issue with this:
Hi, thanks for reaching out. We can certainly help you with your issue. First if you don’t mind I’d like to get some more information.

Are you using any of our SDKs, or are you using the REST API directly?
Are you able to attach the full http response (including headers)?

Once I can track down your request in our logs, I can troubleshoot why you are getting the 400 response.


Here's the headers that I get back in response when I just do a straight copy and paste from the documentation:

{Transfer-Encoding: chunked
request-id: b5d05f2c-0971-499e-a723-1600eb8d2b5e
client-request-id: b5d05f2c-0971-499e-a723-1600eb8d2b5e
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"West US","Slice":"SliceC","Ring":"5","ScaleUnit":"003","Host":"AGSFE_IN_12","ADSiteName":"WUS"}}
Duration: 28.2203
Strict-Transport-Security: max-age=31536000
Cache-Control: private
Date: Wed, 07 Nov 2018 01:14:52 GMT
}

Here's the headers I get back in response when I use the JSON I've configured to try and create an outgoing call:

{Transfer-Encoding: chunked
request-id: a0324852-fafd-4805-8cb6-b7f921b0bcf3
client-request-id: a0324852-fafd-4805-8cb6-b7f921b0bcf3
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"West US","Slice":"SliceC","Ring":"5","ScaleUnit":"003","Host":"AGSFE_IN_27","ADSiteName":"WUS"}}
Duration: 27.2388
Strict-Transport-Security: max-age=31536000
Cache-Control: private
Date: Wed, 07 Nov 2018 01:16:40 GMT
}

I've also attached two JSON files so you can see what my payload looks like if you want to see that.

sdk.json.txt
steve.json.txt

Inviting bot to meeting

Hi,
I am trying to invite a calling bot to a meeting. Is it possible to invite a bot to the meeting when scheduling it? Does it receive a callback? Or is it only possible to invite him through a REST-call like in the samples?

Thanks in advance for answering this question.

Documentation: link to testing guide is broken

Describe the issue
In the following README, the link to the Local Testing Guide returns a 404 not found.

Code Snippet
To run your bot locally you will need to configure a local proxy. [ngrok](https://ngrok.com/) is a great service that allows local proxy of both http (signalling) and tcp (media) traffic. For more information please reference our [Local Testing Guide](https://microsoftgraph.github.io/microsoft-graph-comms-samples/docs/articles/testing.html)

Expected behavior
The link needs to be adjusted to point to "Testing.html" with uppercase T. This fixes the 404 not found.
To run your bot locally you will need to configure a local proxy. [ngrok](https://ngrok.com/) is a great service that allows local proxy of both http (signalling) and tcp (media) traffic. For more information please reference our [Local Testing Guide](https://microsoftgraph.github.io/microsoft-graph-comms-samples/docs/articles/Testing.html)

Microsoft.Graph namespace conflict

Describe the issue
Latest Microsoft.Graph package (1.12.0) cannot be added to a project with latest graph communications packages (1.0.0-prerelease.494) because of namespace conflicts.

For example:
'Microsoft.Graph.Identity', 'Microsoft.Graph.IdentitySet', exist in both 'Microsoft.Graph.Communications.Core' and 'Microsoft.Graph' packages.

'Microsoft.Graph.EnumConverter' exists in both 'Microsoft.Graph.Communications.Core' and 'Microsoft.Graph.Core' packages.

Expected behavior
No conflicts.

Graph SDK (please complete the following information):

  • Version 1.0.0-prerelease.494

Audio file doesn't play on playPrompt

Describe the issue
I have a bot in a conference call. Here is the request I send:
2019-05-03 01:03:40.840050188 [PLAY_AUDIO]: POST to https://graph.microsoft.com/beta/app/calls/311a0400-0d44-4333-b509-ae8a4c330e54/playPrompt:

{
  "clientContext": "6b157a75-4d68-d252-25e2-8b8819af72d5",
  "prompts": [
    {
      "@odata.type": "#microsoft.graph.mediaPrompt",
      "mediaInfo": {
        "uri": "http://www.externalharddrive.com/waves/computer/hello.wav",
        "resourceId": "011f4ee4-c13f-5616-9a9a-fa8db6326712"
      },
      "loop": 3
    }
  ]
}

Here is the response I get:
{
	"@odata.type": "#microsoft.graph.commsNotifications",
	"value": [
		{
			"@odata.type": "#microsoft.graph.commsNotification",
			"changeType": "deleted",
			"resource": "/app/calls/311a0400-0d44-4333-b509-ae8a4c330e54/operations/2276ed78-9adc-46ce-9a2e-a79cf70c5cc2",
			"resourceData": {
				"@odata.type": "#microsoft.graph.playPromptOperation",
				"prompts": [
					{
						"@odata.type": "#microsoft.graph.mediaPrompt",
						"mediaInfo": {
							"@odata.type": "#microsoft.graph.mediaInfo",
							"uri": "http://www.externalharddrive.com/waves/computer/hello.wav",
							"resourceId": "011f4ee4-c13f-5616-9a9a-fa8db6326712"
						},
						"loop": 3
					}
				],
				"completionReason": "unknown",
				"status": "completed",
				"createdDateTime": "2019-05-03T01:03:40.8860558+00:00",
				"lastActionDateTime": "2019-05-03T01:03:41.1694188+00:00",
				"clientContext": "6b157a75-4d68-d252-25e2-8b8819af72d5",
				"id": "2276ed78-9adc-46ce-9a2e-a79cf70c5cc2"
			}
		}
	]
}

But I don't hear the audio playing. Please let me know what I am missing.

Not receiving a changeType deleted notification when a meeting ends

Describe the issue
We have a bot which joins a Microsoft Teams meeting via the meeting URL. On a one on one call if the organizer hangs up, we get a notification of changeType 'deleted'. However, if this is an online meeting and the organizer ends the call, we only get a changeType 'updated' notification with a list of participants. We do get a changeType 'deleted' notification if the bot is removed from the call ( via remove participant )

Expected behavior
We should get a changeType 'deleted' notification when the online meeting ends.

Graph SDK (please complete the following information):
beta

Call ID
call id: 451f0a00-ea04-4c8f-90d8-cddf1ac603d5
call terminated: 2019-06-04 17:37:46 UTC

Logs
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resource": "/app/calls/451f0a00-ea04-4c8f-90d8-cddf1ac603d5/participants",
"resourceData": [
{
"@odata.type": "#microsoft.graph.participant",
"info": {
"@odata.type": "#microsoft.graph.participantInfo",
"identity": {
"@odata.type": "#microsoft.graph.identitySet",
"application": {
"@odata.type": "#microsoft.graph.identity",
"id": "xxxx",
"tenantId": null,
"identityProvider": "AAD"
}
}
},
"mediaStreams": [
{
"@odata.type": "#microsoft.graph.mediaStream",
"mediaType": "audio",
"sourceId": "19",
"direction": "sendReceive",
"serverMuted": false
}
],
"isMuted": false,
"isInLobby": false,
"id": "ca727bd4-cfa9-4db5-a296-c0fe1251512c"
}
]
}
]
}
Additional context
Add any other context about the problem here.

Help me with graph communication calls api

Could someone help with an example on how to call a team contact through api rest? I have seen the documentation of Graph Communication Calls but I do not understand how to do it.

Teams :Cannot read file .wav

Describe the issue
Hello,
Trying to play a prompt after answering a call (call established).
The API Call is not retrurning any answer no error...

I am using the Graph Javascript SDK for the API calls.

Expected behavior
receive a http code
and audio file is expected to be played on the call ( prompt).

Graph SDK Javascript SDK:

  • Version beta

Call ID
2d1a0300-d7da-4e0a-8899-9799773ab01e

"status": "Completed",
"createdDateTime": "2018-11-07T17:14:53.3464657+00:00",
"lastActionDateTime": "2018-11-07T17:14:54.6236122+00:00",

By the way the /subscribeToTone is working but same i am not receiving any rest code...

Mefteh.

Unable to raise an Incident with IncidentBot from RemoteMediaSamples

Describe the issue
Hi,

I've been following this article Getting Started with the Remote Media Graph Calling Bot Samples and unable to get the bot to raise an incident.

When I make a post request from Postman Desktop is returns an error.
If I'm using the website publish to Azure I get '502 - Web server received an invalid response while acting as a gateway or proxy server.'

If I'm using IIS Express and Ngrok and can debug my code and get this exception "Code: UnknownError\r\nMessage: {"message":"Not Found"}\r\n\r\nInner error\r\n".

I'm sending the below JSON as a post request and the last line it attempts before throwing the expect is from the OnlineMeetingHelper.cs Line 57 (var meeting = await meetingRequest.GetAsync().ConfigureAwait(false);). It does seems to matter if the meeting is in the future, happening now or in the past.

Can anyone give me tell me what I'm doing wrong

Code Snippet
{
"name": "ABC",
"time": "2018-10-19T14:54:23Z",
"tenantId": "TenantGuid",
"objectIds": [
"MyUserGuid",
"TestUserGuid"
],
"meetingId": "82562484#",
"joinURL": "https://teams.microsoft.com/l/meetup-join/[email protected]/_MessageId_?context={'Tid':'_TenantGuid_','Oid':'_MyUserGuid_'}",
"removeFromDefaultRoutingGroup": true,
"allowConversationWithoutHost": true
}

Graph SDK (please complete the following information):

  • Version beta

Forward a call to a teams calling bot

Hi,

In some scenario, we need that a user forward a call to a calling bot. is this scenario supported ?
if not is iit planned ?

Thanks in advance !

InviteAsync does not work from inbound call

I am trying to escalate an inbound peer-to-peer call to a multiparty call
Acording to https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/calls-api-overview, “Your bot can initiate escalation by inviting others, provided your bot has the initiate-group-call permission”.
I do a call.Participants.InviteAsync to another user in my tenant.
When I Invite the agent, after about 1 second then the call is reported removed. The InviteAsync task is still running another 25 seconds before it throws a TimeoutException.
No error other than the Exception.
Is this the way you should do when escalating an inbound call to a multiparty or do you have to manage a meeting/conference by yourself in this situation?
How do you delete/hangup an individual participant from the SDK?

Bot doesn't receive chat notifications in a call

Describe the issue
When the bot is part of the call and someone types something in the common chat or shares a file, the bot doesn't get a notification

Expected behavior
The Bot should get a notification

This could just be a feature which is not implemented yet. I am trying to find out if this is possible or not.

IOnlineMeetingRequest CreateAsync fails with Code: BadRequest Code: BadRequest Message: Invalid request.

I'm trying to use IOnlineMeetingRequest to create an online meeting. I'm building up the OnlineMeeting object and passing it to CreateAsync. However, its coming back with BadRequest Code: BadRequest Message: Invalid request.

var from = turnContext.Activity.From.AadObjectId;
var cBuilder = new  OnlineMeetingRequestBuilder("https://graph.microsoft.com/beta", bc);
IOnlineMeetingRequest r = cBuilder.Request();

var m = new OnlineMeeting();
m.MeetingType = MeetingType.MeetNow;
m.Participants = new MeetingParticipants();

var part1 = new MeetingParticipantInfo() {
    Identity = new IdentitySet() {
         User = new Identity() {
                Id = from } } };

m.Participants.Organizer = part1;
m.Subject = turnContext.Activity.Text;
var mr = await r.CreateAsync(m);

However, using fiddler I've taken the body and the auth headers and used them directly in postman, which creates the meeting without a problem.

The json in the body is as follows, I cant see anything wrong with it.

{ "@odata.type": "#microsoft.graph.onlineMeeting",
"subject": "help me",
"participants": {
"@odata.type": "#microsoft.graph.meetingParticipants",
"organizer": {
"@odata.type": "#microsoft.graph.meetingParticipantInfo",
"identity": {
"@odata.type": "#microsoft.graph.identitySet",
"user": {
"@odata.type": "#microsoft.graph.identity",
"id": "[MY USER GUID]"
}
}
}
},
"meetingType": "meetNow"
}

The returned data when using this in postman is

"@odata.context": "https://graph.microsoft.com/beta/$metadata#app/onlineMeetings/$entity",

Just to note, I have also updated the template Auth providers to use:
"https://login.microsoftonline.com/{tenant}";
as the authority template instead of
"https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token";
so that it works with the ADAL v4 libraries.

Error while trying to publish the audio video bot sample

I am trying to publish the AudioVideo sample as described here: https://github.com/microsoftgraph/microsoft-graph-comms-samples/tree/master/Samples/V1.0Samples/LocalMediaSamples/AudioVideoPlaybackBot

I am on Deploy, Step 4 but I get the following error:
Error CS0234 The type or namespace name 'Common' does not exist in the namespace 'Sample' (are you missing an assembly reference?) FrontEnd C:\Users\admin\source\repos\microsoft-graph-comms-samples\Samples\V1.0Samples\LocalMediaSamples\AudioVideoPlaybackBot\FrontEnd\Bot\Bot.cs 23 Active

I don't have a background in c# development and I don't know how to troubleshoot this. Please help.

H264 Loop back fails

I tweaked the Huebot sample code to receive H264 frames instead of the NV12 frames from the video socket and I tried to send back the frame over the video socket. However, I haven't been able to successfully get the media to loopback to the teams meeting.

I changed the following in the Huebot

  1. Changed the CreateLocalMediaSession (in Bot.cs) to set the ReceiveColorFormat to VideoColorFormat.H264 instead of VideoColorFormat.NV12. And also changed the SupportedSendVideoFormats to include the supported H264 formats instead of the VN12 formats.
  2. Change the GetSendVideoFormat (in Utilities.cs) to return the appropriate H264 format for a given width.
  3. Changed OnVideoMediaReceived to copy the incoming H264 buffer ti another buffer and send it to the remote. The Bot does not change the hue or take snapshots.
    Following is the changed code I made to create a copy of the H264 buffer
    // Use the real length of the data (Media may send us a larger buffer)
    VideoFormat sendVideoFormat = e.Buffer.VideoFormat.GetSendVideoFormat();
    int size = (int)e.Buffer.Length;
    IntPtr ptr = Marshal.AllocHGlobal(size);
    CopyMemory(ptr, e.Buffer.Data, size);
    var videoSendBuffer = new VideoSendBuffer(ptr, size, sendVideoFormat);
    this.Call.GetLocalMediaSession().VideoSocket.Send(videoSendBuffer);

The looped back video is not seen in the teams meeting.
The send on the first few frames does not throw any exception however, subsequent ones continuously throws the following exception

{
"Timestamp": "2018-11-08T10:01:09.4860889-06:00",
"ProviderName": "Sample.HueBot",
"Id": 1,
"Message": "Sample.HueBot(CallHandler.cs:317 OnVideoMediaReceived) 2018-11-08T16:01:13.6035038Z: [301a0400-326b-4d67-bc79-3aa784ce0f21] Exception in VideoMediaReceived
exception: Exception of type 'Microsoft.Skype.Bots.Media.SkypeMediaException' was thrown.
Deliver video source media buffer
StackTrace: at Microsoft.Rtc.Internal.Media.MediaApi.VideoSourceConsumer.DeliverBuffer(MediaBuffer A_0)
at Microsoft.Skype.Bots.Media.SourceConsumerWrapper.DeliverBuffer(MediaBuffer buffer, BufferDisposeDelegate bufferDisposeDelegate)
, Properties: null",
"ProcessId": 8776,
"Level": "Informational",
"Keywords": "0x0000F00000000000",
"EventName": "Message",
"ActivityID": "0000518f-0001-0000-4822-0000ffdcd7b5",
"RelatedActivityID": null,
"Payload": {
"message": "Sample.HueBot(CallHandler.cs:317 OnVideoMediaReceived) 2018-11-08T16:01:13.6035038Z: [301a0400-326b-4d67-bc79-3aa784ce0f21] Exception in VideoMediaReceived
exception: Exception of type 'Microsoft.Skype.Bots.Media.SkypeMediaException' was thrown.
Deliver video source media buffer
StackTrace: at Microsoft.Rtc.Internal.Media.MediaApi.VideoSourceConsumer.DeliverBuffer(MediaBuffer A_0)
at Microsoft.Skype.Bots.Media.SourceConsumerWrapper.DeliverBuffer(MediaBuffer buffer, BufferDisposeDelegate bufferDisposeDelegate)
, Properties: null"
}
}

If someone could throw light on what could be going wrong here would be great.

MS Teams API don't send statusCode when answering to a call

I have a bot which should answer to calls, here's the documentation

Actually I can Answer a call (MS Team unhook the call ) but I get no response status code or error. In documentation it mentioned that I should get a 202 accepted status code Microsoft Graph SDK ( api method right after initialisation):

client
    .api('/users/me/sendMail')
    .post({message: mail}, (err, res) => {
        console.log(res)
    })

I think that the post request is working because my bot is answering to call, but res is undefined

I have tried to check res.statusCode but I get no content.
How can I get response from MS Teams API ?

Can I develop app as Kiosk application using Graph calling API?

I have WPF program as a Kiosk application using Lync sdk to make 2-way video call. I want to make similar application but using Microsoft team. The step is as below:

  • kiosk app calls recipient -> recipient accepts call and sees video streaming from a person standing in front of kiosk app.
  • kiosk also gets video streaming sent back from recipient and shows that on app interface.
  • users at kiosk side will only see custom interface we develop, not Lync/Microsoft Teams UI.

As far as I understand for Teams, native app (kiosk) needs to call bot api and bot will call MS Graph via REST and Graph will create a call to recipient. I don't quite understand how to proceed after that:

  1. How caller (kiosk) can receive video streaming from recipient?

  2. How caller (kiosk) side turn on camera programmatically?
    - In Lync, we will install Lync libraries and Lync client on application side, then Lync will handle this itself, so the app using Lync will create a call directly to callee.
    - In Teams, it's different as the app needs to call Graph to create a call. So I am really confused how to do this.

I am getting forbidden error when I make http post request from postman

To run this sample code, I registered a bot, added Teams Channel to the bot, and gave permissions to the bot to make calls based on instructions given in the below url:

https://microsoftgraph.github.io/microsoft-graph-comms-samples/docs/articles/calls/register-calling-bot.html

I deployed a bot in Microsoft Teams but no option for calling on my bot.

I scheduled a meeting at Microsoft Teams, and made http request to join in the meeting using Postman based on instructions given in the below url:

https://github.com/microsoftgraph/microsoft-graph-comms-samples/blob/master/Samples/BetaSamples/RemoteMediaSamples/Getting%20Started%20with%20the%20Remote%20Media%20Samples.md

Http Url: https://3ce.ngrok.io/incidents/raise

But I got below exception:
{"Code: generalException\r\nMessage: Unexpected exception returned from the service.\r\nStatus Code: Forbidden\r\nScenario Id: 2b72668b-55da-430b-bd16-5fb7753820ce\r\n"}

Error line:
var statefulCall = await this.client.Calls().AddAsync(joinParam, scenarioId).ConfigurationAwait(false);

ICommunicationsClient ProcessNotificationAsync returns invalidRequest: Unexpected empty message

When I call:

Client.ProcessNotificationAsync(requestMessage)
where Client is ICommunicationsClient I#m getting a response of:

microsoft.graph.communications.core.exceptions.error
invalidRequest: Unexpected empty message

"{"@odata.type":"#microsoft.graph.communications.core.exceptions.serviceException","error":{"@odata.type":"#microsoft.graph.communications.core.exceptions.error","code":"invalidRequest","message":"Unexpected empty message content"},"statusCode":400,"message":"Code: invalidRequest\r\nMessage: Unexpected empty message content\r\n","data":{},"targetSite":{"Name":"ExtractNotifications","AssemblyName":"Microsoft.Graph.Communications.Core, Version=1.0.0.1296, Culture=neutral, PublicKeyToken=31bf3856ad364e35","ClassName":"Microsoft.Graph.Communications.Core.Notifications.NotificationProcessor","Signature":"Microsoft.Graph.CommsNotifications ExtractNotifications(System.String, Newtonsoft.Json.JsonSerializerSettings)","Signature2":"Microsoft.Graph.CommsNotifications ExtractNotifications(System.String, Newtonsoft.Json.JsonSerializerSettings)","MemberType":8,"GenericArguments":null},"stackTrace":" at Microsoft.Graph.Communications.Core.Notifications.NotificationProcessor.ExtractNotifications(String content, JsonSerializerSettings serializerSettings)\r\n at Microsoft.Graph.CommunicationsClientExtensions.d__1.MoveNext()","source":"Microsoft.Graph.Communications.Core","hResult":-2146233088}"

I though this call should in affect start the process of to fire the events that are registered:
this.Client = builder.Build();
this.Client.Calls().OnIncoming += this.CallsOnIncoming;
this.Client.Calls().OnUpdated += this.CallsOnUpdated;

I'm just trying to find a bit more clarity over whats going on around this stage, I've got the notification from teams that a call is comming in, to /callback/calling on my app, from here im calling Client.ProcessNotificationAsync, with a url of callback/notification set in the builder. At this stage i though it was going to call off to MS graph and respond back on callback/notification? which then fires the OnIncoming / OnUpdated on the client object?

Is the graph comms SDK open source? I couldn't find it anywhere, as I wan'ted to see exactly what goes on in ProcessNotificationAsync on implementations of ICommunicationsClient

Thanks

Open source the sdk

After mentioning it a few times on other issues, and i’d like to put forward a request for getting the sdk open sourced, thanks, Ross

Graph media TCP endpoint spec

After getting local media working with the sdk, I want to understand more on what the sdk is doing to take the raw tcp stream in and converting to buffered events. As the sdk isn’t open source yet, is their a spec avalaible for the graph media tcp endpoint?

403 When creating group call with service hosted media

When attempting to create a group call with service hosted media, I receive a 403: Request authorization tenant mismatch.
Creating a regular call works fine.
Running a POST to the following URL:
https://graph.microsoft.com/beta/app/calls
I've essentially given all app permissions available to my test tenant to rule that out.
JWT Perms:
"roles": [
"Chat.UpdatePolicyViolation.All",
"Calls.JoinGroupCall.All",
"OnlineMeetings.Read.All",
"OnlineMeetings.ReadWrite.All",
"User.ReadWrite.All",
"Application.ReadWrite.OwnedBy",
"People.Read.All",
"Application.ReadWrite.All",
"Calls.InitiateGroupCall.All",
"Group.Read.All",
"Calls.JoinGroupCallAsGuest.All",
"Sites.Read.All",
"Sites.ReadWrite.All",
"Group.ReadWrite.All",
"Sites.Manage.All",
"User.Invite.All",
"User.Read.All",
"Chat.Read.All",
"ChannelMessage.Read.All",
"User.Export.All",
"Chat.ReadWrite.All",
"ChannelMessage.UpdatePolicyViolation.All",
"Member.Read.Hidden",
"Calls.AccessMedia.All",
"Sites.FullControl.All",
"Calls.Initiate.All"
],

Body:

{
     "subject": "Test Call123",
     "callbackUri": "https://url.ngrok.io/callback/calling",
     "source": {
     "identity": {
         "application": {
         "id": "appID"
         }
       }
     },  
     "targets": [
     {
         "identity": {
         "user": {
             "id": "userID",
             "displayName": "test name"
         }
       }
       },
       {
       "identity": {
         "user": {
             "id": "userID2",
             "displayName": "test name2"
         }
         }
     }   
     ],
     "requestedModalities": [ "audio" ],
     "mediaConfig": {
       "@odata.type": "#microsoft.graph.serviceHostedMediaConfig",
       "preFetchMedia": [
         {
           "uri": "https://cdn.contoso.com/beep.wav",
           "resourceId": "1D6DE2D4-CD51-4309-8DAA-70768651088E"
         },
         {
           "uri": "https://cdn.contoso.com/cool.wav",
           "resourceId": "1D6DE2D4-CD51-4309-8DAA-70768651088F"
         }
       ]
     },
     "chatInfo": {
       "threadId": "19:[email protected]",
       "messageId": "0",
       "replyChainMessageId": null
     }
   
   }

StreamWilerecording on audio recording

The scenario i want to acheve is the following:
record a long conversation and transcript the voice to be able to implement a conversational bot. when i set streamwhilerecording to true, i got the ressource immediately once i start recording but the audio content is not streamed before the record ends.
is it possible to invoke audio streaming few seconds (5 ) after the record starts ?

Call toast

Hi,
I was trying to customize the toast infos when a teams bot calls a teams user.
The context is when a user A calls a bot, the bot solves some of the user A request and then adds a human (user b).
We need the call toast when bot invites user b to show custom info (basically ‘user A’)
We tried with ’displayname’ parameter but it dosesn’t change anything.
Is it entended for this usage ?
Thank you very much in advance !

Calling and Online meeting examples

We are trying Calling and online meetings examples, In that examples we are trying Incident Bot and online meeting bot.

Incident Bot:
We are able to run, use the postman to send request incident/raise method as per documentation. It is working fine but we are not getting audio prompt.

Online Meeting Bot:

We are able to build the solution and provided all the values as per documentation but we are unable to find the meeting id value from teams meeting request.

image

Could you please let us know what should be value for meeting id?

What's a valid meeting Id?

When using the join meeting and providing the data below in the post body, whats the valid meeting id? I've tried various combinations from the join meeting URL, but no joy.

{
"name": "",
"time": "",
"tenantId": "{TenantId}",
"objectIds": [
"{UserObjectId-1}",
"{UserObjectId-2}"
],
"meetingId": "{MeetingId}",
"joinURL": "https://teams.microsoft.com/l/meetup-join/...",
"removeFromDefaultRoutingGroup": true,
"allowConversationWithoutHost": true
}

Exception when start AudioVideoPlaybackBot in Azure Cloud Service

Describe the issue
I cloned the repo today and followed the steps from the Getting Started with the Local Media Samples to deploy the sample bot to an Azure Cloud Service. I did not modify any code. I only ran the configure_cloud.ps1 script and then published. When the cloud service starts, it throws this exception:

Unhandled Exception: Could not load file or assembly 'System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Microsoft.Graph.GraphClientFactory.Create(IEnumerable'1 handlers, String version, String nationalCloud, IWebProxy proxy, HttpMessageHandler finalHandler) at Microsoft.Graph.HttpProvider..ctor(HttpMessageHandler httpMessageHandler, Boolean disposeHandler, ISerializer serializer) at Microsoft.Graph.Communications.Calls.CommunicationsClientExtensions.<>c__DisplayClass0_0.b__0() at Microsoft.Graph.Communications.Client.CommunicationsClient.GetOrAddResourceCollection[T](Boolean maintainState, Func'1 valueFactory) at Sample.AudioVideoPlaybackBot.FrontEnd.Bot.Bot.Initialize(Service service, IGraphLogger logger) in \microsoft-graph-comms-samples\Samples\V1.0Samples\LocalMediaSamples\AudioVideoPlaybackBot\FrontEnd\Bot\Bot.cs:line 173 at Sample.AudioVideoPlaybackBot.FrontEnd.Service.Start() in \microsoft-graph-comms-samples\Samples\V1.0Samples\LocalMediaSamples\AudioVideoPlaybackBot\FrontEnd\Service.cs:line 83 at Sample.AudioVideoPlaybackBot.WorkerRole.WorkerRole.OnStart() in \microsoft-graph-comms-samples\Samples\V1.0Samples\LocalMediaSamples\AudioVideoPlaybackBot\WorkerRole\WorkerRole.cs:line 92 at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(RoleType roleTypeEnum) at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__0() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() ' [2019-05-24T15:08:48Z] Last exit time: [2019/05/24, 15:08:57.863]. Last exit code: 0.

Unable to change call / onlineMeeting subject

Hi,

We're currently able to create a group call by doing the following:
Create an Online Meeting
Post to app/calls with the meeting info,

When doing this, we're not able to set the meeting subject shown below:
image

When creating the original onlinemeeting, I'm passing through a subject body:


{
          "meetingType": "meetNow",
          "participants": {
              "organizer": {
              "identity": {
                  "user": {
                  "id": "ab"
                  }
              }
              }
          },
          "subject": "subject Update" 
      }

Do you know if it's possible to update this, or if I should be updating it elsewhere?

Thanks

Question re HA / Load Balancing

For load balancing and HA (once I run through the local media examples I assume will become more obvious) but do you run the signal and tcp endpoints on all nodes, with a calls signal and endpoint staying on the same node, or do you have a clusters of separate signal and tcp media endpoints?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.