VoIP applications and the Cloud - Where gen_fsm really shines
Aptela provides hosted communications services for small business. Our - entirely cloud based - platform includes complex call routing, messaging, web-portals, mobile apps, PSTN/SIP access, and a coffee-grinder attachment. At peak, we handle dozens of calls (and an infinity of HTTP requests) per second
These complex calling services work thanks to the magic of gen_fsm, a behavior which is frequently overlooked at best, and ignored at worst. In the first part of the talk, I'll describe our architecture, with gen_fsm's critical role in it as the focus. The second part will delve into the specifics of how this behavior can help build out complex calling services, with examples culled from some of Aptela's cooler (or crazier?) features
16. FSMs can be Useful – See?
Mahesh Paolini-Subramanya
CTO, Vocalocity
Notas del editor
Three types of PBXs – Named Box, High Level App Server, and Granular App ServerNamed Box – point at a box, and say “Yup, that’s my server”High Level App Server – Broadsoft and/or FS/Asterisk using dialplans.
Point features are really easy to do. They are atomic, and don’t interact with each otherWhen you start talking about multiple entities interacting, users xferring amongst each other, state across a distributed environment, life gets a lot more difficult
Explain supervisor trees - restart processes - dynamically move them around - location invariance - resilience
We use event_handlers to get information to endpointsGUI – anytime something interesting ahppens, we ship events off to the GUI (ringing, answered, presenceApplication – The State servers (where processes live) ship events back and forth so that processes can keep up to dateTelephony – Call servers use events to know what to do next (based on the FSMs). Pick up the call, play an error message, etc.
We use event_handlers to get information to endpointsGUI – anytime something interesting ahppens, we ship events off to the GUI (ringing, answered, presenceApplication – The State servers (where processes live) ship events back and forth so that processes can keep up to dateTelephony – Call servers use events to know what to do next (based on the FSMs). Pick up the call, play an error message, etc.
We have our own BGP ASWe have DIDs from multiple providers ( limits exposure)
We use Finite State Machines – gen_fsm – to deal with anything and everything involving callsauto_attendant, bridge, check_voicemail, conference, default_phone, fml, dial_out, and havent even gotten to the voicemails and faxes
We use Finite State Machines – gen_fsm – to deal with anything and everything involving callsauto_attendant, bridge, check_voicemail, conference, default_phone, fml, dial_out, and havent even gotten to the voicemails and faxes
We use Finite State Machines – gen_fsm – to deal with anything and everything involving callsauto_attendant, bridge, check_voicemail, conference, default_phone, fml, dial_out, and havent even gotten to the voicemails and faxes