Is there a way to Monitor IVR events in real time

Right now, we use the subscription/notifications service to monitor all users in Genesys. We get an event as soon as the system is dialing a user, all the way up through termination. And these events come with participants, one of which is the IVR. When subscribing users to the channel, we use:
"https://api.usw2.pure.cloud/api/v2/notifications/channels/" + channelId + "/subscriptions"
and the payload contains a list of ids, formatted like this: id = $"v2.users.{userId}?conversations&activity"

This works fine, but we are also looking to monitor the calls that are 100% handled in the IVR itself, never going to a user. Genesys calls our API and we log the API calls. So, we're looking to try and monitor for the IVR events themselves, particularly, the IVR Terminated event that occurs right before the call is transferred to a user.

Is there a way to "subscribe" to ivr events, like we're subscribing to users?

Hi Jason,

Out of the box, I think you should take a look Flow Milestones. Flow milestones allow you to decorate your flows, including your IVR flow, with metrics to determine where users are in your IVR. Once you have decorated your IVR you can then subscribe to the v2.analytics.flow.{id}.metrics event to capture the metrics coming in on that flow.

The purpose of the flow milestones is to capture much more user-specific, fine-grained metrics.

I hope that helps.

Thanks,
John Carnell
Manager, Developer Engagement

Thanks for the idea John. I did stumble across milestones last night. But, unless I misunderstood how these would work - we'd have to put code in every one of our flows to trigger the milestone. And I'm trying to avoid having to remember to code something in the flows to cause these events to be triggered.

I was hoping there was some kind of global events available, like "call terminated" that we'd be able to have call our API - or if there was a way to just listen to the right event on a channel to get the call events:
https://developer.genesys.cloud/notificationsalerts/notifications/available-topics

Hi Jason,

Ahhhh..... We do have an event that might work, but it is only published on AWS Event Bridge integration:

v2.analytics.flow.{id}.metrics - This captures metrics about a particular flow and provides information about the disconnects. You might want to take a look at that and see if that will give you what you are looking for.

Thanks,
John Carnell
Manager, Developer Engagement

As John mentioned it, such events (that can be triggered while the call is at the IVR level) are only available through the Amazon EventBridge integration or using the future Automation triggers.
You can check events starting with: v2.detail.events.conversation.{id}.xxxxxx
I think v2.detail.events.conversation.{id}.customer.start will be triggered when the call/email/chat/... reaches the Genesys Cloud platform (I haven't tried it recently...) and v2.detail.events.conversation.{id}.customer.end when the conversation ends.
You also have v2.detail.events.conversation.{id}.flow.start and v2.detail.events.conversation.{id}.flow.end specific to flow activities.

There is this good blog article on event options, which was written some time ago by... John :slight_smile:

This sounds promising. The process on my side would likely be:

  1. Query Genesys to get all flows
  2. Set up a new channel for monitoring events
  3. Subscribe each flow to the channel using [v2.analytics.flow.{id}.metrics]
  4. Listen to that channel for call connect and disconnect events.

Right?

Thanks for the reply Jerome, but I can't do anything with processes that require the conversation id (v2.detail.events.conversation.{id}), because I don't have it for 90% of our calls (that live and die in the ivr without ever going to a user). That's what I'm trying to solve - is to get a call disconnect for a call that never goes to an agent.

When it goes to an agent, I get the events by monitoring the users/agents. And that works well. But, I want to monitor connect/disconnect at the IVR level too...when I have no knowledge that it even exists.

Hello,

With EventBridge, you don't need to specify a specific {id}.
It will send events/notifications to EventBridge for all conversations.

See here on Resource Center
Note : Topics do not include parameters, and deliver information for the entire org. Choosing to receive v2.users.{id}.presence events does not require specifying a user ID, such as it does with the Notifications API. You receive all presence notifications for your org. Be careful about the number of notification topics that you select. For each selected topic, all matching events for your entire org are sent to AWS EventBridge to be routed to the target of your choice. Also, if you do not select any notification topics, then no events are sent.

Regards,

It sounds like I'd just be able to subscribe to something like: "v2.detail.events" - and it would send me everything. And i could do that for any/all of the event types on this page: https://developer.genesys.cloud/notificationsalerts/notifications/available-topics.

So, the event monitor is using a "starts with" to determine what events to send... Right?

I am not following.
You would subscribe to: v2.detail.events.conversation.{id}.customer.start, v2.detail.events.conversation.{id}.customer.end, v2.detail.events.conversation.{id}.flow.start, ...
I mean the ones you need.
What you don't need to do - unlike WebSocket notifications - is to subscribe on a specific conversationId.

Regards,

Just to be clear then - It sounds like you are stating that I don't need to replace "{id}" with an actual ID in these topics - and that I can just leave the id as a placeholder in what I subscribe to - and that tells Genesys that I want to monitor all events of that type for my org. Correct?

What I mean is that with EventBridge integration, you configure the topics you are interested in at the integration level (Admin - Integrations - Integration).
The topics which can be configured there are "v2.detail.events.conversation.{id}.customer.start", "v2.detail.events.conversation.{id}.customer.end", ...

When configuring/enabling one of these topics at the integration level, they will allow you to receive events on all conversationId or userIds or ... (depending on the topic).

These topics are not available/supported via WebSocket - only with EventBridge integration.

I will take a look at this information and follow up with any further questions.

Thank you for your time and suggestions!

I'm still looking and reviewing options with the information above, but what I think I'd like to do is request that we be able to subscribe to IVR events just like we do for USERS.

So, I'd like to be able to:

  1. Set up a new channel
  2. Query Genesys for all IVRs
  3. Subscribe those IVRs to that channel using a topic like: v2.ivrs.{id}.activity
  4. Listen to the events and watch for "call connected", "call transferred", etc.

How can I request this feature be added to Genesys?

Hello,

You can request new features and share your use case at https://genesyscloud.ideas.aha.io/

Regards,

Will do, thank you!