CSB wrote:
Can you elaborate a little on "proper call
accounting" as I am battling with
this currently. An example:
SER sends INVITE to Asterisk. Depending on the circumstances we might want
to record a voicemail message, hit an IVR or queue, or pass the call on to
the PSTN.
Since OpenSER only manages the SIP sessions, OpenSER does not
specifically know if any particular call is active or not. If you were
only relying OpenSER's accounting a crafty voip user could simply never
send you a BYE message, thus effectively never hanging up any calls.
This is why mediaproxy has a call accounting process. I believe RTP
Proxy has also been updated or is scheduled to be updated with an
accounting process.
In my opinion, the only truly viable way to do call accounting is along
with the media stream (RTP), then you will know if the call is still in
session and have the ability to specifically terminate the call for any
given reason (by stopping the RTP from flowing.)
Since Asterisk can't deal with OpenSER's
authentication limitations we can
only have one effective SIP peer (based on the IP of OpenSER) and therefore
one context for accounting purposes. This makes even routing the call a
challenge (how do you make sure that only certain users can get out to the
PSTN whereas others stay internal to Asterisk). How do you get usable
accounting records? If there are 5 calls from different users being passed
to Asterisk they will all be accounted in the same way and it is not
possible to bill them separately. If anyone has any advice on what I'm
missing or how to get useful accounting records in Asterisk I would
appreciate it.
One option might be to send custom SIP header(s) to Asterisk. I wrote
my own CDR module for Asterisk, to deal with my own particular environment.
Jeremy McNamara