About the "NotificationAPI" specification

The following "NotificationAPI" API is used to subscribe to event information on the specified topic.

≪Related URL≫
https://developer.genesys.cloud/notificationsalerts/notifications/notifications-apis#post-api-v2-notifications-channels--channelId --subscriptions
Documentation:GMS:API:NotificationAPI:8.5.2 - Genesys Documentation

The above does not describe under what conditions each topic is published and in what response format the data is returned.
Although the response data can be received by executing the API, there is no way to check the specifications of the data content.

If anyone knows how to check the NotificationAPI specifications, please let us know.

Hello,

The Documentation:GMS:API:NotificationAPI:8.5.2 - Genesys Documentation relates to a different platform (Genesys Engage).

This forum is about Genesys Cloud CX.
You can find information about the Genesys Cloud CX Notification API here
Available topics are listed here.
If you click on a specific topic, you can find its event schema (data content).

Regards,

Thank you for your response.
We will check the link you provided.

I have checked the links you provided, and although the return value of each topic is listed, there is no description of its contents (elements).
For example, there is a topic "v2.users.{id}.conversations.calls".

≪Reference URL.≫

I can confirm that the return value is listed in the "Event Schema" column and the following values can be obtained.
id
name
participants.[].id
participants.[].name
participants.[].address
etc.

Is there a way to check the detailed specifications for each of the above items?

Hello,

If by detailed specification, you mean a definition/explanation of each of these attributes, then no. There is no detailed definition of each attribute of the Notification Events.

But as you can see, under the Topic Information section of each event, you can see to what API these type of evens relate. In your case -> /api/v2/conversations/calls
If you take a look at the "API Responses" - "200 - successful operation" of the GET /api/v2/conversations/calls, you will find a definition/text for each attribute.

Regards,

Thank you for your response.
We have checked the link you provided.

If the call is terminated, the operator will be in a state to start post-processing, but please let me confirm how to determine this.
I believe that the following conditions can be used to determine this.

≪Conditions for judgment≫
Judging by the value of "conversations/calls
Judged by the last element of "entities.participants.[]".
entities.participants.[].state = 'disconnected'"
entities.participants.[].wrapupRequired = 'true
entities.participants.[].wrapup = null

Are the above decision conditions correct for the decision to start post-processing?

When the call is terminated, the session at the agent's participant level (who was talking to the customer) will transtion to disconnected or terminated state.
If it is necessary to set a wrap-up code, wrapupRequired will be equal to true.

Regards,

Under the assumption that a wrap-up code needs to be set, is it correct to assume that the following is the correct condition for determining the start of wrap-up?

≪Conditions for judgment ≫
・Judgment is made based on the value of "conversations/calls".
・Judging by the last element of "entities.participants.
・participants.[].state = 'disconnected'"
・entities.participants.[].wrapupRequired = 'true
・entities.participants.[].wrapup = null

Hello,

I thought I had answered already:
"When the call is terminated, the session at the agent's participant level (who was talking to the customer) will transtion to disconnected or terminated state.
If it is necessary to set a wrap-up code, wrapupRequired will be equal to true.
"

Regards,

The purpose is to clarify the conditions for determining the start of wrap-up from the following return value.

(Related: "Execute Request" -> "API Responses" -> "200 - successful operation")

"When the call is terminated, the session at the agent's participant level (who was talking to the customer) will transtion to the disconnected or > "When the call is terminated, the session at the agent's participant level (who was talking to the customer) will transtion to disconnected or terminated state.
"If it is necessary to set a wrap-up code, wrapupRequired will be equal to true."

I received the above response, but could you please tell me the conditional expression to determine this by the return value?
This is currently determined as follows, and I would appreciate an answer with the same conditional expression.
Also, I recognize that the last condition (wrapup = null) is necessary to distinguish it from the end of wrapup.

≪Condition for decision here ≫.
Judging by the value of "conversations/calls
Judging by the last element of "entities.participants.
participants.[].state = 'disconnected'"
entities.participants.[].wrapupRequired = 'true
entities.participants.[].wrapup = null

If you have no problem with the above decision conditions, we would appreciate an answer that there is no problem.

Hi Jerome,

Could there be a possibility of getting multiple customer participants in an event? (As I've recently seen that with our integration we're getting multiple participants whose purpose is "customer").

If yes then how do we select the current customer.
Any idea about the scenarios in which this is possible.

  1. The event you mentioned in your previous post is "v2.users.{id}.conversations.calls"
    There is no "entities" attribute in this topic event schema

  2. An event with state='disconnected" will be generated, followed by one with state='terminated'. It might be better to rely on the final state ('terminated').

  3. No, it is not always/automatically the last participant in the participants array
    As an example, the agent (that you are monitoring through "v2.users.{id}.conversations.calls") could initiate a consultation call and disconnect this consultation call. And can then terminate the call. In this case, the participant corresponding to the agent is not the last of the participants array.

You need to search for the latest participant in the array:

  • with purpose='agent',
  • and with user.id (there is a user attribute in such participant - which value is an object containing id attribute) equal to the id of the agent/user you are monitoring,
  • and with state='terminated',
  • and with wrapupRequired = true (boolean)
  • and with no existing wrapup attribute

It is not always the last participant in the participants array as I mentioned in my point above.

You'll need to adapt what I jut wrote above to the conditions you are trying to implement in your system.

Regards,

I would follow what Tim already recommended to you here

Thank you for your response.
I understand now that there is a problem with the way the participants array is referenced.

and with user.id (there is a user attribute in such participant - which value is an object containing id attribute) equal to the id of the agent/user you are monitoring,.

I think that the above judgment condition, when judged by the return value of "v2.users.{id}.conversations.calls", would look like the following, is this understanding correct?

participants.user.id = id ({id} in "v2.users.{id}.conversations.calls")

and with state='terminated',.

As far as we have verified above, "state='disconnected'", we will verify and confirm again.

You also need to check wrapupRequired = true and no wrapup attribute.

An agent is subject to appear multiple times in a conversation (with different participant ids).

As an example, if the call is distributed to Agent1 (from an Architect Inbound Flow, via an ACD Queue).
Agent1 interacts with the customer and then needs to transfer the call to another agent (Agent2).
Later, the call is transferred back from Agent2 to Agent1.
And finally Agent1 initiates a consult call to Agent3.
Agent1 terminates the consultation call to Agent3.
Agent1 or Customer hang up.

-> Agent1 will appear twice in the participants array.

-> Participants should like this:
[0] - purpose=customer
[1] - purpose=ivr
[2] - purpose=queue
[3] - purpose=agent, (user.id = Agent1's userId)
[4] - purpose=agent, (user.id = Agent2's userId)
[5] - purpose=agent, (user.id = Agent1's userId)
[6] - purpose=agent, (user.id = Agent3's userId)

(3) is the first time Agent1 receives the call. Wrapup should have been set (if wrapupRequired is true)
(5) is the second time Agent1 receives the call - the one. That's the one you need to set wrapup on.

Regards,

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.