This is a common mistake on VoIP calls. It happens when the RTP protocol is not sent to the public IP of the phone. As you can see in the image there is a private IP in the invite of the stream, it will communicate with the private IP but the phone is behind NAT so it is not possible for it:
Because of this the RTP is sent to the private IP as you can see:
This is caused because you do not have a NAT Traversal service configured.
Solution: if you configure any NAT Traversal service like STUN, contact on the INVITE packet will seem like this, so RTP will be sent to the public IP:
The problem is caused because of the contact on the INVITE packet. Contact contains private IP so BYE packet is sent to the private IP provided, this can not be possible so BYE packet never arrives to the phone:
Solution: check if any NAT Traversal service is activated, if not, do it. When you finish the NAT Traversal Configuration INVITE packet may content the public IP so BYE packet will arrive to the agent:
This is caused result of the IP sent on the INVITE packet is the private IP of the agent as you can see in the picture:
Solution: Maybe this problem is inflicted because of the NAT Traversal is not configured yet. It is simple, the only thing you need to do is to configure a NAT Traversal service as STUN is. As you can see, when you configure it, the agent will send his public IP on the INVITE packet: