Townhall Graph API : Presenter is always added as in-tenant even as communicationsGuestIdentity

Émeric Trang 25 Reputation points
2025-07-10T13:39:01.1233333+00:00

Hi,

I am implementing the Townhall api.

I am having an issue while adding presenters to a townhall.

I want to an add out-of-tenant presenter.

I am calling the following endpoint : /beta/solutions/virtualEvents/townhalls/$townhallId/presenters

with the following parameters :

                "identity" => [
                    "@odata.type" => "#microsoft.graph.communicationsGuestIdentity",
                    "displayName" => $firstname . ' ' . $lastname,
                    "email" => $email,
                ],

I am having an expected result :

{"@odata.context":"https://graph.microsoft.com/beta/$metadata#solutions/virtualEvents/townhalls('xxxxxxxxxxxxxxx')/presenters/$entity","id":"xxxxxxxxxxxx","email":"******@xxxxx.com","presenterDetails":null,"identity":{"@odata.type":"#microsoft.graph.communicationsGuestIdentity","id":"xxxxxxxxx","displayName":"xxx xxxxx","email":"******@xxxxxx.com"}}

But When I am logging in to teams, the presenters is always in the "Presenters from your org"

Is there anything else to do, or any conditions to make this works ?

Thanks

Emeric

Microsoft Security | Microsoft Graph
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. atsmin 0 Reputation points
    2025-07-11T22:17:50.08+00:00

    Hi, Émeric Trang,

    Based on your description, I understand you're using /beta endpoint. I created external presenter using v1.0 endpoint, but I got the same behavior. When I get the presenter via Graph API, the response shows the presenter is correctly created as communicationsGuestIdentity and probably it's Teams client display issue. If you have to resolve this issue faster, it's better to create an enterprise support ticket.

    # Create an external presenter
    $Uri = "v1.0/solutions/virtualEvents/townhalls/f5e8ada2-d1da-4191-828e-0d12c353a693@ac2852a6-88d6-4ddc-9a63-93391e191144/presenters"
    $Body = @{
      identity = @{
    '@odata.type' = "#microsoft.graph.communicationsGuestIdentity"
    displayName = "Guest Speaker"
    email = "******@fabrikam.com"
    }
    Invoke-MgGraphRequest -Method Post -Uri  $Uri -OutputType PSObject -Body $Body
    
    # Get the added presenter information
    $response = Invoke-MgGraphRequest -Method GET -Uri "v1.0/solutions/virtualEvents/townhalls/f5e8ada2-d1da-4191-828e-0d12c353a693@ac2852a6-88d6-4ddc-9a63-93391e191144/presenters/8b559824-20f0-4010-9e07-5d1679df4afa" -OutputType PSObject
    $response
    #@odata.context   : #https://graph.microsoft.com/v1.0/$metadata#solutions/virtualEvents/townhalls('f5e8ada2-d1da-4191-828
    #                  e-0d12c353a693%40ac2852a6-88d6-4ddc-9a63-93391e191144')/presenters/$entity
    #id               : 8b559824-20f0-4010-9e07-5d1679df4afa
    #email            : ******@fabrikam.com
    #presenterDetails :
    #identity         : @{@odata.type=#microsoft.graph.communicationsGuestIdentity; #id=8b559824-20f0-4010-9e07-5d1679df4afa;
    #                    displayName=Guest Speaker; email=******@fabrikam.com}
    

    User's image

    https://learn.microsoft.com/en-us/graph/api/virtualevent-post-presenters?view=graph-rest-1.0&tabs=http


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.