Zoomtopia is here. Unlock the transformative power of generative AI, helping you connect, collaborate, and Work Happy with AI Companion.
Register nowEmpowering you to increase productivity, improve team effectiveness, and enhance skills.
Learn moreKeep your Zoom app up to date to access the latest features.
Download Center Download the Zoom appDownload hi-res images and animations to elevate your next Zoom meeting.
Browse Backgrounds Zoom Virtual BackgroundsEmpowering you to increase productivity, improve team effectiveness, and enhance skills.
Zoom AI CompanionUser groups are unique spaces where community members can collaborate, network, and exchange knowledge on similar interests and expertise.
Help & Resources is your place to discover helpful Zoom support resources, browse Zoom Community how-to documentation, and stay updated on community announcements.
The Events page is your destination for upcoming webinars, platform training sessions, targeted user events, and more. Stay updated on opportunities to enhance your skills and connect with fellow Zoom users.
2025-03-06 03:12 PM
Hello Community. I recently added (to both my voice flow and a messaging/webchat flow) a branch that consumers could select to follow, that simply provides them with a website address they can visit, to receive instructions on how to install our software. This branch does not end in a queue, but rather in a "SendMedia" with url to a website. Why did we add this? One of our top call drivers is an ask for install instructions. We're hoping to minimize the count of these unnecessary engagements to the queue.
Now that I've added these branches to the flows, I want to be able to see how many people are visiting them.
I do not see a way to do so in the existing Reporting, and Zoom Support says it's not possible.
Do you, as a community, have any ideas on how this can be accomplished? I'm open out-of-the-ordinary ideas. Maybe there's something I can add to the flow that creates a flag of some variety, and then I can get a count of flags created during a time period?
Also, in the Flow reporting/analytics, what does "Contained" mean? I'm assuming my new branches are getting reported as such, but I do not know if there are other scenarios that result in a "Contained" flow result. Is there a way for me to see a report of how many flows ended in "Contained" in January and compare that to February?
Thoughts? Thank you!
2025-03-07 04:45 PM
I think I may have found a solution. I added a custom variable at the beginning of the branch I want to track. Hoping to track counts of this specific variable. Time will tell if it helps. I'd still love to know what "Contained" means when it comes to flow analytics. If anyone else has any ideas, I'm all ears!
2025-03-14 03:57 PM
I like the idea of the variable but have you considered using the built-in JavaScript capabilities by using the ZCC Widget "Script"?
I was playing with MS CoPilot and I got a small script that maybe you can use; it will require some more work that what I am proposing here, but you could automatically update/change the Engagement Disposition and then you could simply run a report of all the Engagements with that disposition you created: i.e. "Self-Service_URL"
Here the instructions (I got to be tested, of course):
For OAuth 2.0 authorization, you will need to obtain an access token. Here’s an updated example script using OAuth 2.0:
This is the JavaScript code:
const axios = require('axios');
async function getAccessToken(clientId, clientSecret) {
const response = await axios.post('https://zoom.us/oauth/token', null, {
params: {
grant_type: 'client_credentials'
},
headers: {
'Authorization': 'Basic ' + Buffer.from(clientId + ':' + clientSecret).toString('base64'),
'Content-Type': 'application/x-www-form-urlencoded'
}
});
return response.data.access_token;
}
async function setDisposition(engagementId, dispositionId, accessToken) {
const response = await axios.post('https://api.zoom.us/v2/contact_center/engagements/' + engagementId + '/dispositions', {
disposition_id: dispositionId
}, {
headers: {
'Authorization': 'Bearer ' + accessToken
}
});
return response.data;
}
// Replace with your actual client ID and client secret
const clientId = 'YOUR_CLIENT_ID';
const clientSecret = 'YOUR_CLIENT_SECRET';
(async () => {
const accessToken = await getAccessToken(clientId, clientSecret);
await setDisposition('ENGAGEMENT_ID', 'DISPOSITION_ID', accessToken);
})();
This script first obtains an access token using the OAuth 2.0 client credentials grant type and then uses this token to set the disposition for the engagement.
I hope you have the time to test this and see it it works.
Vinnie.