I am using @google-apps/meet in my node.js app in order to get real ending time of a meeting.
I tried different methods from Meet API and always get same behaviour.
Maybe I should use Reports API to get real ending time of google meeting? If so, please help me to use this api with Admin SDK, because I don’t have Google Admin Console
Here is my code. In response I’m getting this (sencetive data changed) if I am a creator of meeting (I see my user and other active attendees):
<code>{ name: 'conferenceRecords/c00fb000-0000-40c9-9b0b-4b1bf1cd5c00/participants/000000000000000000000', earliestStartTime: { seconds: '1722932647', nanos: 766303000 }, latestEndTime: { seconds: '1722932745', nanos: 88111000 }, signedinUser: { user: 'users/000000000000000000000', displayName: 'User Name' }, user: 'signedinUser' }
<code>{ name: 'conferenceRecords/c00fb000-0000-40c9-9b0b-4b1bf1cd5c00/participants/000000000000000000000', earliestStartTime: { seconds: '1722932647', nanos: 766303000 }, latestEndTime: { seconds: '1722932745', nanos: 88111000 }, signedinUser: { user: 'users/000000000000000000000', displayName: 'User Name' }, user: 'signedinUser' }
</code>
{ name: 'conferenceRecords/c00fb000-0000-40c9-9b0b-4b1bf1cd5c00/participants/000000000000000000000', earliestStartTime: { seconds: '1722932647', nanos: 766303000 }, latestEndTime: { seconds: '1722932745', nanos: 88111000 }, signedinUser: { user: 'users/000000000000000000000', displayName: 'User Name' }, user: 'signedinUser' }
If I am not a creator, just a participant I don’t get any data about this meeting. How can I get similar response for those meetings, where I am just a participant?
Here is my code
<code>const { SpacesServiceClient, ConferenceRecordsServiceClient } = require("@google-apps/meet").v2; const { sendNotification } = require("../services/notification.service"); const db = require("../models"); const Meeting = db.meetings;
const processEvents = async (authClient) => { // GET Meet API space name by conferenceId from Calendar API const spacesClient = new SpacesServiceClient({ authClient }); const meetingClient = new ConferenceRecordsServiceClient({ authClient }); for (const event of events) { if (event.conferenceData?.conferenceId) { const conferenceId = event.conferenceData.conferenceId; // console.log(conferenceId); const spacesRequest = { name: spaces/${conferenceId} }; try { const sessions = meetingClient.listConferenceRecordsAsync({ parent: conferenceId, }); for await (let session of sessions) { // console.log("SESSIONS ==> ", session); //set plan end time for meeting in db //if session.endTime is null, set meetingEnded to false //if session.endTime is not null, set meetingEnded to true, send notification const partisipants = await meetingClient.listParticipants({ parent: session.name }); for await (let partisipant of partisipants) { console.log("PARTISIPANT ==> ", partisipant); } }; const spaces = await spacesClient.getSpace(spacesRequest); // console.log("SPACE ==> ", spaces); console.log( "spaces[0]?.activeConference =====", spaces[0]?.activeConference ); } } catch (error) { console.error( Error processing event for conferenceId ${conferenceId}:, error ); } } } };
module.exports = { processEvents, };
<code>const { SpacesServiceClient, ConferenceRecordsServiceClient } = require("@google-apps/meet").v2; const { sendNotification } = require("../services/notification.service"); const db = require("../models"); const Meeting = db.meetings;
const processEvents = async (authClient) => { // GET Meet API space name by conferenceId from Calendar API const spacesClient = new SpacesServiceClient({ authClient }); const meetingClient = new ConferenceRecordsServiceClient({ authClient }); for (const event of events) { if (event.conferenceData?.conferenceId) { const conferenceId = event.conferenceData.conferenceId; // console.log(conferenceId); const spacesRequest = { name: spaces/${conferenceId} }; try { const sessions = meetingClient.listConferenceRecordsAsync({ parent: conferenceId, }); for await (let session of sessions) { // console.log("SESSIONS ==> ", session); //set plan end time for meeting in db //if session.endTime is null, set meetingEnded to false //if session.endTime is not null, set meetingEnded to true, send notification const partisipants = await meetingClient.listParticipants({ parent: session.name }); for await (let partisipant of partisipants) { console.log("PARTISIPANT ==> ", partisipant); } }; const spaces = await spacesClient.getSpace(spacesRequest); // console.log("SPACE ==> ", spaces); console.log( "spaces[0]?.activeConference =====", spaces[0]?.activeConference ); } } catch (error) { console.error( Error processing event for conferenceId ${conferenceId}:, error ); } } } };
module.exports = { processEvents, };
</code>
const { SpacesServiceClient, ConferenceRecordsServiceClient } = require("@google-apps/meet").v2; const { sendNotification } = require("../services/notification.service"); const db = require("../models"); const Meeting = db.meetings;
const processEvents = async (authClient) => { // GET Meet API space name by conferenceId from Calendar API const spacesClient = new SpacesServiceClient({ authClient }); const meetingClient = new ConferenceRecordsServiceClient({ authClient }); for (const event of events) { if (event.conferenceData?.conferenceId) { const conferenceId = event.conferenceData.conferenceId; // console.log(conferenceId); const spacesRequest = { name: spaces/${conferenceId} }; try { const sessions = meetingClient.listConferenceRecordsAsync({ parent: conferenceId, }); for await (let session of sessions) { // console.log("SESSIONS ==> ", session); //set plan end time for meeting in db //if session.endTime is null, set meetingEnded to false //if session.endTime is not null, set meetingEnded to true, send notification const partisipants = await meetingClient.listParticipants({ parent: session.name }); for await (let partisipant of partisipants) { console.log("PARTISIPANT ==> ", partisipant); } }; const spaces = await spacesClient.getSpace(spacesRequest); // console.log("SPACE ==> ", spaces); console.log( "spaces[0]?.activeConference =====", spaces[0]?.activeConference ); } } catch (error) { console.error( Error processing event for conferenceId ${conferenceId}:, error ); } } } };
module.exports = { processEvents, };