microsoftgraph / microsoftgraph/microsoft-graph-comms-samples

If I connect the call with the recording participant with another call, notification about participants of the resulting group call is missing

Open
#599 0 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

Describe the issue
I have a problem with this scenario:

Two peer-to-peer calls are connected to the bot application (Call1:PSTN<->Bot, Call2:Bot<->TeamsParticipant) and I want to join them in one group call using the method Call.Participants.InviteAsync (where "replacesCallId" is set to Call1 Id)
If TeamsParticipant is recorded participant (has a Teams recording policy set), calls connected as expected, but there is no notification about the new GroupCall with participants (Bot, TeamsParticipant1, TeamsParticipant2), the bot application only receives information about the completion of the invite operation.

{
    "@odata.type": "#microsoft.graph.commsNotifications",
    "value": [
        {
            "@odata.type": "#microsoft.graph.commsNotification",
            "changeType": "deleted",
            "resource": "/app/calls/431f5d00-e8ac-43da-b555-3b51a6a4577b/operations/e5b00028-ccfb-42dd-9c38-1044302094f3",
            "resourceUrl": "/communications/calls/431f5d00-e8ac-43da-b555-3b51a6a4577b/operations/e5b00028-ccfb-42dd-9c38-1044302094f3",
            "resourceData": {
                "@odata.type": "#microsoft.graph.inviteParticipantsOperation",
                "participants": [
                    {
                        "@odata.type": "#microsoft.graph.invitationParticipantInfo",
                        "identity": {
                            "@odata.type": "#microsoft.graph.identitySet",
                            "phone": {
                                "@odata.type": "#microsoft.graph.identity",
                                "id": "+420(reducted)",
                                "displayName": "+420(reducted)"
                            }
                        },
                        "replacesCallId": "651f5f00-a103-48ea-b889-481455da8beb",
                        "participantId": "67312e5d-2d79-4607-bc3a-80a11f49368a"
                    }
                ],
                "status": "completed",
                "clientContext": "c76773cc-0c21-435a-90f1-a1ae6d61e2db",
                "id": "e5b00028-ccfb-42dd-9c38-1044302094f3"
            }
        }
    ]
}

If I check the state of the Call2, the call appears as the original peer-to-peer call between Bot<->TeamsParticipant.
Call state information does not match the real call state and the bot application does not receive notifications about connected/removed participants, etc... and it is not possible correctly to end the call through the bot application (PSTN participant is still in the connected state and it is necessary to end the call using the phone manually)

Expected behaviour
Example of notifications if the TeamsParticipant is not recorded:

{
    "@odata.type": "#microsoft.graph.commsNotifications",
    "value": [
        {
            "@odata.type": "#microsoft.graph.commsNotification",
            "changeType": "updated",
            "resource": "/app/calls/401f5d00-10e5-40f1-b6b5-83ac2b74c79f/participants",
            "resourceUrl": "/communications/calls/401f5d00-10e5-40f1-b6b5-83ac2b74c79f/participants",
            "resourceData": [
                {
                    "@odata.type": "#microsoft.graph.participant",
                    "info": {
                        "@odata.type": "#microsoft.graph.participantInfo",
                        "identity": {
                            "@odata.type": "#microsoft.graph.identitySet",
                            "applicationInstance": {
                                "@odata.type": "#microsoft.graph.identity",
                                "id": "5099f57d-2e7d-4dbe-9049-763ce40ed634",
                                "displayName": "(reducted)",
                                "tenantId": "(reducted)",
                                "identityProvider": "AAD"
                            }
                        },
                        "endpointType": "default",
                        "endpointId": "7c9e15ac-b8fa-4444-94ec-4911bdb4835d",
                        "clientVersion": "AtltelCallingBot (appid:d291dac4-1395-4384-8519-d991473a9e8a)",
                        "participantId": "6cfe2424-4886-46ce-bd63-181e0a36244e",
                        "replacementLink": "https://cc-ukso-05.cc.skype.com/cc/v1/callParticipant/0548470f-d852-4d3a-8b12-d9c992e49d0b/13/k3/111/replacement?rt=6cfe2424488646cebd63181e0a36244e&rc=eyJydGlkIjoiMjg6b3JnaWQ6NTA5OWY1N2QtMmU3ZC00ZGJlLTkwNDktNzYzY2U0MGVkNjM0In0%253d&i=75&e=638010357711187046"
                    },
                    "mediaStreams": [
                        {
                            "@odata.type": "#microsoft.graph.mediaStream",
                            "mediaType": "audio",
                            "label": "main-audio",
                            "sourceId": "1",
                            "direction": "sendReceive",
                            "serverMuted": false
                        }
                    ],
                    "isMuted": false,
                    "isInLobby": false,
                    "publishedStates": [],
                    "meetingRole": "none",
                    "replacementLink": "https://cc-ukso-05.cc.skype.com/cc/v1/callParticipant/0548470f-d852-4d3a-8b12-d9c992e49d0b/13/k3/111/replacement?rt=6cfe2424488646cebd63181e0a36244e&rc=eyJydGlkIjoiMjg6b3JnaWQ6NTA5OWY1N2QtMmU3ZC00ZGJlLTkwNDktNzYzY2U0MGVkNjM0In0%253d&i=75&e=638010357711187046",
                    "isIdentityAnonymized": false,
                    "id": "6cfe2424-4886-46ce-bd63-181e0a36244e"
                },
                {
                    "@odata.type": "#microsoft.graph.participant",
                    "info": {
                        "@odata.type": "#microsoft.graph.participantInfo",
                        "identity": {
                            "@odata.type": "#microsoft.graph.identitySet",
                            "user": {
                                "@odata.type": "#microsoft.graph.identity",
                                "id": "d3a9747d-013b-4ff0-b19c-ce2f4abd5fb1",
                                "displayName": "(Reducted)",
                                "tenantId": "(reducted)",
                                "identityProvider": "AAD"
                            }
                        },
                        "endpointType": "default",
                        "endpointId": "56c091a0-2374-466f-8ff7-5b6576bade8f",
                        "languageId": "en-US",
                        "clientVersion": "SkypeSpaces/1415/1.0.0.2022092126/os=windows; osVer=10; deviceType=computer; browser=chrome; browserVer=105.0/TsCallingVersion=2022.35.01.1/Ovb=6a9b21e1b3b69f752a08d70282466315610cff50",
                        "participantId": "106202c0-f36c-4f9b-a202-f98ec8a449c5",
                        "replacementLink": "https://cc-ukso-05.cc.skype.com/cc/v1/callParticipant/0548470f-d852-4d3a-8b12-d9c992e49d0b/27/k2/137/replacement?rt=106202c0f36c4f9ba202f98ec8a449c5&rc=eyJydGlkIjoiODpvcmdpZDpkM2E5NzQ3ZC0wMTNiLTRmZjAtYjE5Yy1jZTJmNGFiZDVmYjEiLCJydGxpIjoiZW4tVVMiLCJydHJzIjoiRW50ZXJwcmlzZVByb3h5In0%253d&i=75&e=638010357711187046"
                    },
                    "mediaStreams": [
                        {
                            "@odata.type": "#microsoft.graph.mediaStream",
                            "mediaType": "audio",
                            "label": "main-audio",
                            "sourceId": "14",
                            "direction": "sendReceive",
                            "serverMuted": false
                        },
                        {
                            "@odata.type": "#microsoft.graph.mediaStream",
                            "mediaType": "video",
                            "label": "main-video",
                            "sourceId": "15",
                            "direction": "receiveOnly",
                            "serverMuted": false
                        },
                        {
                            "@odata.type": "#microsoft.graph.mediaStream",
                            "mediaType": "videoBasedScreenSharing",
                            "label": "applicationsharing-video",
                            "sourceId": "25",
                            "direction": "receiveOnly",
                            "serverMuted": false
                        },
                        {
                            "@odata.type": "#microsoft.graph.mediaStream",
                            "mediaType": "data",
                            "label": "data",
                            "sourceId": "26",
                            "direction": "sendReceive",
                            "serverMuted": false
                        }
                    ],
                    "isMuted": false,
                    "isInLobby": false,
                    "publishedStates": [],
                    "meetingRole": "none",
                    "replacementLink": "https://cc-ukso-05.cc.skype.com/cc/v1/callParticipant/0548470f-d852-4d3a-8b12-d9c992e49d0b/27/k2/137/replacement?rt=106202c0f36c4f9ba202f98ec8a449c5&rc=eyJydGlkIjoiODpvcmdpZDpkM2E5NzQ3ZC0wMTNiLTRmZjAtYjE5Yy1jZTJmNGFiZDVmYjEiLCJydGxpIjoiZW4tVVMiLCJydHJzIjoiRW50ZXJwcmlzZVByb3h5In0%253d&i=75&e=638010357711187046",
                    "isIdentityAnonymized": false,
                    "id": "106202c0-f36c-4f9b-a202-f98ec8a449c5"
                },
                {
                    "@odata.type": "#microsoft.graph.participant",
                    "info": {
                        "@odata.type": "#microsoft.graph.participantInfo",
                        "identity": {
                            "@odata.type": "#microsoft.graph.identitySet",
                            "phone": {
                                "@odata.type": "#microsoft.graph.identity",
                                "id": "+420(reducted)",
                                "displayName": "+420(reducted)",
                                "identityProvider": "None"
                            }
                        },
                        "endpointType": "default",
                        "endpointId": "3d817b4c-bcb1-4188-9f45-b38d45310b81",
                        "participantId": "82767ead-6e8a-4553-975f-4e55d22b4b6b",
                        "replacementLink": "https://cc-ukso-05.cc.skype.com/cc/v1/callParticipant/0548470f-d852-4d3a-8b12-d9c992e49d0b/1930/k2/2319/replacement?rt=82767ead6e8a4553975f4e55d22b4b6b&rc=eyJydGxicmMiOnsiaXBkaXRjIjpmYWxzZSwicHN0IjoiQ2FsbGluZ1BsYW5zIn0sInJ0aWQiOiI0Ois0MjA3MjUyMTAzNDQifQ%253d%253d&i=75&e=638010357711187046"
                    },
                    "mediaStreams": [
                        {
                            "@odata.type": "#microsoft.graph.mediaStream",
                            "mediaType": "audio",
                            "label": "main-audio",
                            "sourceId": "27",
                            "direction": "sendReceive",
                            "serverMuted": false
                        }
                    ],
                    "isMuted": false,
                    "isInLobby": false,
                    "publishedStates": [],
                    "meetingRole": "none",
                    "replacementLink": "https://cc-ukso-05.cc.skype.com/cc/v1/callParticipant/0548470f-d852-4d3a-8b12-d9c992e49d0b/1930/k2/2319/replacement?rt=82767ead6e8a4553975f4e55d22b4b6b&rc=eyJydGxicmMiOnsiaXBkaXRjIjpmYWxzZSwicHN0IjoiQ2FsbGluZ1BsYW5zIn0sInJ0aWQiOiI0Ois0MjA3MjUyMTAzNDQifQ%253d%253d&i=75&e=638010357711187046",
                    "isIdentityAnonymized": false,
                    "id": "82767ead-6e8a-4553-975f-4e55d22b4b6b"
                }
            ]
        }
    ]
}

{
    "@odata.type": "#microsoft.graph.commsNotifications",
    "value": [
        {
            "@odata.type": "#microsoft.graph.commsNotification",
            "changeType": "deleted",
            "resource": "/app/calls/401f5d00-10e5-40f1-b6b5-83ac2b74c79f/operations/c0b3aeee-8b14-4524-820a-16d2da4a4a8a",
            "resourceUrl": "/communications/calls/401f5d00-10e5-40f1-b6b5-83ac2b74c79f/operations/c0b3aeee-8b14-4524-820a-16d2da4a4a8a",
            "resourceData": {
                "@odata.type": "#microsoft.graph.inviteParticipantsOperation",
                "participants": [
                    {
                        "@odata.type": "#microsoft.graph.invitationParticipantInfo",
                        "identity": {
                            "@odata.type": "#microsoft.graph.identitySet",
                            "phone": {
                                "@odata.type": "#microsoft.graph.identity",
                                "id": "+420(reducted)",
                                "displayName": "+420(reducted)"
                            }
                        },
                        "replacesCallId": "581f5e00-5ed5-484e-94d1-360687247e57",
                        "participantId": "cf1f606b-992e-42a7-83ce-07e7096b1cf1"
                    }
                ],
                "status": "completed",
                "clientContext": "7bbdf6c8-ecfc-46a2-8e5a-253629a1ccd5",
                "id": "c0b3aeee-8b14-4524-820a-16d2da4a4a8a"
            }
        }
    ]
}

Graph SDK:

  • MS Graph SDK 4.43.0
  • Microsoft.Graph.Communications.Calls 1.2.0.5304

Call ID
CallId: 431f5d00-e8ac-43da-b555-3b51a6a4577b
Aprox. 10/11/2022 11:35 AM UTC

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 by reproducing the two-call scenario with Call.Participants.InviteAsync and replacesCallId set to Call1. Compare the operation-completion notification with the expected participant notifications and verify Call2 state and participant removal; done means the resulting group call and its participant changes are reported consistently and can be ended through the bot.

Written by the indexing model from the issue text.

Assessment

Domain
api, backend
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.