Hi,
I am using this sample by meetings-events to try and get my bot application to react to meeting started, meeting ended, and participant join/leave events.
Here is my manifest:
{
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.19/MicrosoftTeams.schema.json",
"manifestVersion": "1.19",
"version": "1.2.11",
"id": "{bot_id}",
"developer": {
"name": "Test App",
"websiteUrl": "https://{my_domain}.com",
"privacyUrl": "https://{my_domain}/privacy",
"termsOfUseUrl": "https://{my_domain}/termsofuse"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Test App",
"full": "Test App Full Name"
},
"description": {
"short": "Test App Description",
"full": "Test App Full Description"
},
"accentColor": "#FFFFFF",
"bots": [
{
"botId": "{bot_id}",
"scopes": [
"personal",
"team",
"groupChat"
],
"needsChannelSelector": false,
"isNotificationOnly": false,
"supportsFiles": false,
"commandLists": [
{
"scopes": [
"personal",
"groupChat",
"team"
],
"commands": [
{
"title": "SendNotification",
"description": "Sends targeted meeting notification to selected members."
}
]
}
]
}
],
"configurableTabs": [
{
"configurationUrl": "{my_domain}/tab",
"canUpdateConfiguration": true,
"scopes": [
"team",
"groupChat"
],
"context": [
"meetingSidePanel",
"meetingStage"
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"{my_domain}"
],
"meetingExtensionDefinition": {
"supportsStreaming": true,
"supportsAnonymousGuestUsers": true
},
"webApplicationInfo": {
"id": "{bot_id}",
"resource": "api://{my_domain}/botid-{bot_id}"
},
"authorization": {
"permissions": {
"resourceSpecific": [
{
"name": "OnlineMeetingNotification.Send.Chat",
"type": "Application"
},
{
"name": "OnlineMeeting.ReadBasic.Chat",
"type": "Application"
},
{
"name": "ChannelMeeting.ReadBasic.Group",
"type": "Application"
},
{
"name": "OnlineMeetingParticipant.Read.Chat",
"type": "Application"
},
{
"name": "ChannelMeetingParticipant.Read.Group",
"type": "Application"
}
]
}
}
}
async onTeamsMeetingStart(context){
// console.log(context)
console.log('meeting started')
}
async onTeamsMeetingEnd(context){
console.log('meeting ended')
}
async onTeamsMeetingParticipantsJoin(context){
console.log('participant joined')
}
async onTeamsMeetingParticipantsLeave(context){
console.log('participant left')
}
this.onTeamsMeetingParticipantsJoin(async (context, next) =>{
console.log('participant joined')
await next();
});
this.onTeamsMeetingParticipantsJoinEvent(async (context, next) =>{
console.log('participant joined2')
await next();
});
this.onTeamsMeetingParticipantsLeave(async (context, next) =>{
console.log('participant joined')
await next();
});
this.onTeamsMeetingParticipantsLeaveEvent(async (context, next) =>{
console.log('participant joined2')
await next();
});
- I uploaded my manifest.json through the Teams Admin Center.
- I added my Bot Application to a chat of a meeting I scheduled with myself.
- I successfully receive events like Meeting Start and Meeting End.
- I noticed in the README.md file of the sample that it says:
"You need to my bot to subscribe to real-time meeting events such as participant join/leave through the "Developer Portal", and I need to manually tick some check boxes and press save, along with having "OnlineMeetingParticipant.ReadChat" RSC permission."
I am facing few issues:
- I couldn't find my bot application inside the developer portal, not under "Apps" or "Tools" -> "Bot Management"
- I tried pressing "Import an app" thinking it would synchronize the developer portal, but "Tools" -> "Bot Management" doesn't contain my bot application, so I can't turn on the "real-time meeting events"
- I tried creating an application using the developer portal, and when I turn on real-time meeting events for "Participant join" and "Participant leave", I get an error
"Failed to update meeting event subscriptions", the status code is 500, the response from that request is completely empty.
- I tried looking for an alternative way to receive "Participant join/leave" events but it seems like the only way is to do it manually through the developer portal?
what is the difference between Meeting Started/Ended and participant join/leave events? if I receive meeting started/ended in real-time why can't I receive participant join/leave in the same manner?
why do I have to go through extra manual steps (that don't work for me) to turn on these two extra events?
do I have to enter each organization's developer portal and turn on this "real-time meeting events"? even if I'm deployed on hundreds of organizations?
is there an alternative method to receiving those events straight to my bot application which does not require me to interact with the developer portal? the developer portal seems very flakey considering I can't get my bot application to appear in the "Bot Management" section...
I'd love your help on this issue, thank you very much in advance!