Hi all, I have a small system with kamailio as proxy and SEMS as SBC. Calls come into kamailio which sends them to SEMS, which in turn makes a call out through kamailio again. The use of SEMS is currently only for topology hiding.I use sbc app with a simple profile that enables rtp_relay. Everything works great.
Since the rtp streams come and go through sems anyway I decided to give it a shot and implement call recording but by not using conference module or DSM, for the purpose of getting to know the sems core implementation details. First try: I tried to use a custom AmSessionAudioConnector version in AmB2ABSession , by replacing the 2 AmAudioDelay classes with AmAudioQueues (which wrap the AmAudioDelays along with a common AmAudioFile to record). It didnt work for the simple reason that I didnt notice that those classes (AmB2ABxxxx) seem to be abandoned by the SBC app. In 1.5 version, the AmB2BSession is always used, no matter if relaying is done. Second try: I tried to patch AudioStreamData that is used by AmB2BMedia: I instanciated an AmAudioFile and passed it to the two AudioStreamData instances. Then , I went on to patch AudioStreamData::writeStream to write to the file. When I was trying that I saw that although code always reached AudioStreamData::writeStream , this function is "useless" in the sense that if I replace its whole body with just "return 0", the system works normally , i.e. the calls still work with relaying and no audio is lost in any leg. So I have two questions: 1. Why AudioStreamData::writeStream has this behaviour like it is not needed for audio relaying.? And when I comment out the code in the function, how are the streams written? 2. With the restriction of not using DSM or other module except sbc, where in the code should I look into implementing call recording. I am desperately searching for the correct place to instantiate an AmAudioFile, and call its put method to write both legs' incoming audio. Any insights or guidance? Thanks a lot, Bill. P.S. I am surprised that this isnt already a feature in SEMS. I would expect that it is simple to implement by someone who knows the code well, and more importantly I would assume that it is something that a fair amount of people would need. Am I wrong?
_______________________________________________ Sems mailing list [email protected] http://lists.iptel.org/mailman/listinfo/sems
