I recently got handed a new project to work on that includes integration with Asterisk. Basically, to sum it up real quick; A user can sign up into the service and can then buy whatever amount of DID numbers from us and can make inbound/outbound calls with them.
What I am trying to figure out is which approach I should take regarding the user being able to create outbound calls. For outbound calls to occur, the mobile app is required to have a dialer built-in to it. This means that the app will be directly communicating with the Asterisk server.
I am taking into consideration that for the meantime there will be around <=1000 users and what I want to know now, should I create a SIP account for each individual that signs up? Will asterisk be able to handle that many users? If so, is it a good idea to hook Asterisk with a real-time database (pgsql) to use instead of sip.conf regarding the registration process?
Each user will need to have some sort of credentials. If you’re doing a decent number of users; you may want to look in to hooking all of this into a real-time database and have your sign-up process write to the database. You will additionally need to script some things so you can send caller ID information, unless you’re handling that downstream.
If you’re doing this in the US; you will have to register as a VoIP provider as well as comply with STIR/SHAKEN. That’s a much larger hurdle.
So using a real-time database for a decent number of users should not be something to worry about regarding performance or anything related to it, right?
Have a look at OpenSips and Kamailio. I would set either one of them up in a HA enviroment. The possibilities are endless. I personally would use as little dial plan as possible and things in a mix of ari, agi and a db system (psql, mysql etc.). This gives you the most flexibility. There are many videos form years past at Astricon and cluecon to give you inspiration on what path to take.