Today I’d like to share our experience in debugging Agent Greeting feature on Cisco UCCE.
This is a popular feature, but if something is not working correctly, it can be hard to find relevant information on troubleshooting.
It began quite simply: agent’s greeting wasn’t working, though the script has been tested and used before in other working environments.
Let’s discuss several issues I’ve faced while debugging this feature.
The first problem with auto agent greeting feature was caused by the lack of RTP stream (actually it was one-sided). In order for an agent’s phone (physical device, Jabber, IP Communicator) to play a greeting, an RTP stream should be created between VVB (voice browser) and the agent’s phone. After RTP connection is established, a subscriber can hear a greeting played by VVB through the agent’s phone.
In our case, VVB was playing a greeting, but neither subscriber nor agent could hear it.
It was obvious that there’s a problem with RTP, so I started looking for it. I decided to collect a dump of network traffic from VVB to see if there is an RTP stream. I used Putty to connect to VVB CLI and executed the following commands:
utils network capture-rotate file <name> size ALL sizePerFile 100 maxFiles 25 – activate network traffic capturing and wait for a call to an agent that has a problem with greeting.
After the agent has answered the call, you can click Ctrl+C to stop capturing.
file get activelog platform/cli/*.cap* recurs compress reltime hours 1 – this command collects the previously captured traffic for the last hour (change “1 hours” parameter as needed – minutes/hours)
To delete unneeded capture files from VVB, so they don’t occupy its space, execute the following command:
file delete activelog platform/cli/*.cap*
You can also collect Engine logs from VVB to see if the voice browser has received from CVP a command to play a greeting and if it has started playing it.
I use Wireshark to analyze the network traffic. You can find your call in Telephony > VoIP Calls menu. Check “Time of Day” to simplify the search.
Below you can see two diagrams, one of them showing a normal call in with a greeting, and the other showing a problematic call in which no greeting has been played.
SIP diagram of a call with a greeting:
You can see an established RTP stream between VVB and a phone. As a result, agent’s greeting has been played to the subscriber.
SIP diagram of a call in which a greeting has not been played:
There’s no RTP stream, and the subscriber can’t hear the greeting.
The problem turned out to be in our customer’s firewall rules. RTP ports were open from VVB subnet to phones’ subnet, but there was no rule in the reverse direction. After the ports were opened from the phones’ subnet to VVB, the subscribers became able to hear the greeting.
This happened when I deployed agent greeting on our customer’s second contact center. Considering the previous experience, I though it’s the same problem once again, but it wasn’t the case. In VVB logs I saw that it didn’t get a request for greeting playback from CVP.
To analyze this problem, I went through the call flow of the agent greeting from the very beginning:
- Agent PIM sends Route request to DN "PlayAgentGreeting"
- Router replies with VRU label for CUCM
- AgentPIM requests phone to addMediaStream
- Call is initiated from the phone BIB to the DN specified in the addMediaStream request
- CVP sends Request Instruction message to RTR
- Router replies with RunExtScript PM, -a
- CVP creates wav file name and instructs VVB to play it
You will need the following logs: rtr, jgw, agent pim, CVP, VVB capture, ccm and sdl logs from CUCM.
You can see "PlayAgentGreeting" route request to DN in agent pim log. If everything works correctly, you will find the event that is shown on the screenshot below:
In our case, agent pim didn’t send a route request to DN, so I knew there's a mistake in the script. I checked the script and saw that a block with Call.AgentGreetingType variable is missing. This variable is responsible for the selection of agent's greeting. Without this variable, greeting hasn’t been selected, and route request has never been sent. After the variable was added, the greeting began working correctly.
I hope that my experience will be useful.
Thank you for your attention.