Closed kosniaz closed 1 year ago
This may be a scripting issue combined with a poor error handling in the call_center module.
In script, your CC trigger has no incoming retransmission protection. Try placing a t_newtran()
before invoking CC.
Thank you for the answer! I was about to post that we managed to solved our issue, exactly as you mentioned!
Turns out that when the proxy was dealing with heavy load, the invites from genesys were re-sent, as opensips didn't send 100 Trying
until 1-2 seconds had passed. So we fixed it by creating the transaction before running cc_handle_call
, which made the next invite to be dropped. We had already found that we had to use t_check_trans()
but most time the transaction hadn't been created because it was no use.
Before the fix
After the fix :)
Can you share the corrected oepnsips.cfg file?
TL;DR In Opensips 3.1.16, we have implemented a call center that works well after the first few thousand calls. Then calls start disappearing and agents get locked in state "incall". We suspect it has something to do with some hash overflow. We would have liked to at least be able to release the locked agents. Only way to fix this is to restart every 24 hours.
OpenSIPS version you are running
Describe the bug
We have set up Opensips to receive calls on a specific number bridge them to one of our 100 SIP agents. We use the call center module, and it works well if traffic is relatively low (about 25 incoming calls per minute). However, after enough number of calls, especially when traffic is higher, i.e. up to 60 incoming calls per minute, we see calls getting rejected because of
cc_handle_call()
failing with error message:Unfortunately, every time this happens, an agent's status gets stuck to "incall" forever, even though no cc_calls row includes him. So that agent is lost. Gradually, we lose a lot of agents and the call center is not responsive anymore.
We are running in UDP mode, using 6 UDP workers. I’m attaching the configuration file.
To Reproduce
Setup the opensips DB with opensips-cli. Create tables cc_flows and cc_agents tables and populate them. Start the opensips server and wait for calls to emerge. After about 10000 SIP calls and in high traffic periods (~60 incoming per minute) the error starts emerging.
Expected behavior
Incoming calls should be bridged with free agents. In case of error in the
call center
orb2b logic
modules, the selected agent should be released.Relevant System Logs
OS/environment information
Additional context
opensips.cfg file
Dockerfile
Makefile