microsoftgraph / microsoftgraph/microsoft-graph-comms-samples

EchoVoiceBot: bot never connects to call, with no error

Open
#776 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
253
Forks
275
Avg merge
1d 5h
Merged PRs (30d)
1

Description

We trying to run (locally) the EchoBot example (GitHub: microsoftgraph/microsoft-graph-comms-samples/Samples/PublicSamples/EchoBot/).
Our prerequisites:
- Windows 10;
- Visual Studio 2022 Community;
- .NET version 4.7.1.
- Ngrok free version

  1. When we run them bot from Visual Studio (as administrator) it sucessfully initialazing a bot and than runs it. There is only one fail:
fail: EchoBot.Services.Http.BotMediaLogger[0]
      [SkypeBotsMediaPlatform][AppId:xxxxxxxxxxxxxxxxxxx] MediaPerf is not registered: no key found at SYSTEM\CurrentControlSet\Services\MediaPerf\Performance

But as i saw in issues its a kind of warning and it will be depreciated soon.
2. After setting up a bot we create a Post call to join call in Microsoft Teams in Postman.

localhost:9442/JoinCall
  1. Than we receiving these logs
info: EchoBot.Services.ServiceSetup.AppHost[0]
      Listening on: http://+:9442/
info: EchoBot.Services.ServiceSetup.AppHost[0]
      EchoBot: running
info: EchoBot.Services.Http.Controllers.JoinCallController[0]
      JOIN CALL
info: EchoBot.Services.Bot.BotService[0]
      AuthenticationProvider: Generating OAuth token.
info: EchoBot.Services.Bot.BotService[0]
      AuthenticationProvider: Generated OAuth token. Expires in 59,9828372716667 minutes.
info: EchoBot.Services.Bot.BotService[0]
      Call creation complete: xxxxxxxxxxxxxxxxxxxxxxx

Finally program reaches this Task:

private async Task StartAudioVideoFramePlayerAsync() 

(line 162 in BotMediaStream.cs)
where gets method finally {} and stops, without any logs which can point on any issue
4. Important Note: I've checked whether tcp works. And according to my tests in wireshark all tcp calls work correctly. But despite that fact im not receiving notitfication calls and any logs from microsoft graph.
5. Ports that im using:

  • "BotCallingInternalPort": "9442"
  • "BotInternalPort": "9441"
  • "MediaInternalPort": "8445"
  • "MediaInstanceExternalPort" choosen automatically by ngrok
  1. My configuration of ngrok (MediaInstanceExternalPort) differs from given in tutorial.I don't use remote_host property in ngrok, as it is a paid feature, i set up a redirect on a remote host with my domain, using following configuration of nginx:
server {
        listen 12152;
        proxy_pass 0.tcp.ngrok.io:12152;
    }

Where 12152 is my mediaInstanceExternalPort from ngrok tcp.
This setup successfully redirects tcp requests back to service, which can be checked from Wireshark.

And thats it, what can possibly be wrong and who have faced similar problems?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the EchoBot JoinCall endpoint and BotMediaStream.cs at StartAudioVideoFramePlayerAsync, then compare the BotCallingInternalPort, BotInternalPort, MediaInternalPort, and MediaInstanceExternalPort settings with the nginx TCP proxy configuration. Reproduce the call and inspect the existing logs and network traffic; done means the bot connects to the Teams call and receives notification or media activity without silently stopping.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, nginx, postman
Domain
audio-video-rtc, backend, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.