08-04-2021 01:49 AM
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
08-04-2021 10:19 AM
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..?
08-04-2021 10:42 AM
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?
08-06-2021 01:27 PM
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...
08-06-2021 02:20 PM
@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!
08-06-2021 09:10 AM
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.
08-06-2021 12:50 PM
@dstaudt Please share your opinion
08-09-2021 08:47 AM
@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.
08-09-2021 12:19 PM - edited 08-09-2021 12:32 PM
What does this exception means? When I get the event the call state is 33.
Sorry, call state is 83 at this moment.
08-11-2021 04:30 AM
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?
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide