cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
3500
Views
5
Helpful
9
Replies

Client notification with JTAPI 12.5

NicolayDm
Level 1
Level 1

Dear colleagues,

 

I have the next task: i need to play notification for client when the client is calling to an agent. This is notification from audio file (I am planning to use some java RTP library for this).

We have:

1. CUCM 12.5, JTAPI 12.5

2. 4001 DN(client), 4003 DN(agent), 7000 (Cti route point).

 

What I have for the moment:

when 4001 is calling to 4003 I can see many call and terminal events (I have added observers to 4003). When I got the CallCtlConnOfferedEv I execute:

 

CallControlConnection callControlConnection = (CallControlConnection) ((CallCtlConnOfferedEv) callEv).getConnection();
callControlConnection.accept();

Next I got the TermConnRingingEv and make answer():

((TermConnRingingEv) callEv).getTerminalConnection().answer();

At this moment client and agent are in the call (call state is 33(IDLE)).

 

Please advise what should I do next?

 

According to my logic I should:

1. put agent 4003 on hold

2. make a call to Cti route point 7000

3. create conference

4. play media resource (my audio file) to this conference

5. unhold agent 4003

 

Am I correct? May I kindly ask you to help me with this task? May be there is more better scheme for my target?

 

Many thanks

 

9 Replies 9

dstaudt
Cisco Employee
Cisco Employee

The Agent Greeting feature seems like it could be a good match for your use-case: https://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cucm/jtapi_dev/12_5_1/cucm_b_cisco-unified-jtapi-developers-guide-1251/cucm_b_cisco-unified-jtapi-developers-guide-1251_chapter_010.html#CUCM_TP_A683FCC8_00

 

Otherwise your general ad hoc conference plan is pretty spot on.  Depending on the exact behaviour desired, you may or may not want to hold/resume the agent as this just adds extra complexity and possible audio cutoffs/confusion as the connections are made/re-made.

 

This set of samples covers a basic conference scenario and may be helpful: https://github.com/CiscoDevNet/jtapi-samples

 

I'd be curious to know which Java RTP library you will be using..?

Hello dstaudt. Thanks for your answer.

I think I missed important thing: we have recording system (Verint) and we want Verint to save notification in recording call (so in the recording file at the beginning there will be notification message like "this is call is recording").


The Agent Greeting feature seems like it could be a good match for your use-case:

 

In this case will the greeting be saved by Verint?

 

This set of samples covers a basic conference scenario and may be helpful: https://github.com/CiscoDevNet/jtapi-samples


Thanks, I will investigate these examples.

 

I'd be curious to know which Java RTP library you will be using..?


May be it is not a good idea but I will planing to use Java Media Framework. May be you could advise please some alternative library?

 

 

 

Not 100% sure, but I think the Agent Greeting feature should be mostly/completely transparent as far as the main conf call is concerned.  IIRC, the use-cases for the feature were more or less precisely what you're trying to do, where presence of the greeting audio in the recording is important for legal reasons.  You may find that the agents audio is not muted during the time of the greeting, however - the doc doesn't really make this clear - so similar boat to the conference-based scenario.

If the recording target is the agent line, then it makes sense to stop recording when the agent is on hold, but I'm not sure that's something that's forced by JTAPI/UCM - there may be (or could be?) an option in Verint to keep recording the conference call even if the agent holds?  In any case, there are no APIs for muting the agent phone audio...


@dstaudt wrote:

Not 100% sure, but I think the Agent Greeting feature should be mostly/completely transparent as far as the main conf call is concerned.  IIRC, the use-cases for the feature were more or less precisely what you're trying to do, where presence of the greeting audio in the recording is important for legal reasons.  You may find that the agents audio is not muted during the time of the greeting, however - the doc doesn't really make this clear - so similar boat to the conference-based scenario.

If the recording target is the agent line, then it makes sense to stop recording when the agent is on hold, but I'm not sure that's something that's forced by JTAPI/UCM - there may be (or could be?) an option in Verint to keep recording the conference call even if the agent holds?  In any case, there are no APIs for muting the agent phone audio...


Thanks a lot!

NicolayDm
Level 1
Level 1

Hello colleagues.

As I said earlier we need notification to be saved in recording call between client and agent. In my scenario:

1. put agent 4003 on hold

2. make a call to Cti route point 7000

3. create conference

4. play media resource (my audio file) to this conference

5. unhold agent 4003

 

 


notification message doesn`t get into recording. As I understand it is because of being agent on hold status while notification is playing. I have made some test. And if I don't put agent on hold the notification is in recording (Verint record agents terminal). So according to conference to be made by human(not api) it is logical: all participants online. But according to my task it is better to stop output stream from agent while notification.

So what is the best way to solve this question? Is it possible to put agent not on hold but on mute? Are the any api methods for this?\

 

Thanks.

 

NicolayDm
Level 1
Level 1

@dstaudt Please share your opinion  

NicolayDm
Level 1
Level 1

@dstaudt Hello, can you please help with such exception..I don`t understand...

When I get CallCtlConnOfferedEv I make accept:

            if (callEv instanceof CallCtlConnOfferedEv) {
                try {
                    CallControlConnection callControlConnection = (CallControlConnection) ((CallCtlConnOfferedEv) callEv).getConnection();
                    callControlConnection.accept();
                } catch (InvalidStateException | MethodNotSupportedException | PrivilegeViolationException | ResourceUnavailableException ex) {
                    LOGGER.error("Error accepting incoming call on media terminal", ex);
                }
            }

But I got the exception:

com.cisco.jtapi.InvalidStateExceptionImpl: Did not meet pre-conditions.
	at com.cisco.jtapi.ConnectionImpl.accept(CTQF) ~[jtapi.jar:12.5(1.10000)-1 Release]
	at ru.cti.iss.cisco.notificator.observer.OperatorCallObserver.callChangedEvent(OperatorCallObserver.java:135) ~[classes/:na]
	at com.cisco.jtapi.ObserverProxy.Z(CTQF) [jtapi.jar:12.5(1.10000)-1 Release]
	at com.cisco.jtapi.ObserverThread.messageReceived(CTQF) [jtapi.jar:12.5(1.10000)-1 Release]
	at com.cisco.cti.util.MessageThread.append(CTQF) [jtapi.jar:12.5(1.10000)-1 Release]
	at com.cisco.cti.util.MessageThread.CTQF(CTQF) [jtapi.jar:12.5(1.10000)-1 Release]
	at com.cisco.cti.util.MessageThread.run(CTQF) [jtapi.jar:12.5(1.10000)-1 Release]

What does this exception means? When I get the event the call state is 33.

 

 

 


What does this exception means? When I get the event the call state is 33.

 


Sorry, call state is 83 at this moment.

 

NicolayDm
Level 1
Level 1

Some results:

1. when I started the conference and put the agent on hold Verint system configured for recording agent extension record the silence while notification message is playing - it is not OK for me, because according to the legal reasons we need to save conversation with notification message.

2. when I do not put agent on hold Verint system record all audio data from agent terminal - it is OK for me but it bothers me that during the notification there may be extraneous sounds from the agent's side.

 

Is it really system limitation (I mean no way to mute the agent)? Or there are some other ways to 'muffle' agent exist?