The CallWeaver Realtime Architecture ---------------------------------- The CallWeaver Realtime Architecture is a new set of drivers and functions implemented in CallWeaver 1.1dev (and the following v1.2 stable). The benefits of this architecture are many, both from a code management standpoint and from an installation perspective. Additional information on the configuration of Realtime with CallWeaver can be found in README.extconfig The ARA is designed to be independent of storage. Currently, most drivers are based on SQL, but the architecture should be able to handle other storage methods in the future, like LDAP. The main benefit comes in the database support. In CallWeaver v1.0 some functions supported MySQL database, some PostgreSQL and other ODBC. With the ARA, we have a unified database interface internally in CallWeaver, so if one function supports database integration, all databases that has a realtime driver will be supported in that function. Currently there are three realtime database drivers: * ODBC: Support for UnixODBC, integrated into CallWeaver The UnixODBC subsystem supports many different databases, please check www.unixodbc.org for more information. * MySQL: Found in the callweaver-addons cvs archive on cvs.digium.com * Res_perl: Found in the callweaver-addons cvs archive on cvs.digium.com * Two modes: Static and Realtime -------------------------------- The ARA realtime mode is used to dynamically load and update objects. This mode is used in the SIP and IAX2 channels, as well as in the voicemail system. For SIP and IAX2 this is similar to the v1.0 MYSQL_FRIENDS functionality. With the ARA, we now support many more databases for dynamic configuration of phones. The ARA static mode is used to load configuration files. For the CallWeaver modules that read configurations, there's no difference between a static file in the file system, like extensions.conf, and a configuration loaded from a database. * Realtime SIP friends ---------------------- The SIP realtime objects are users and peers that are loaded in memory when needed, then deleted. This means that CallWeaver currently can't handle voicemail notification and NAT keepalives for these peers. Other than that, most of the functionality works the same way for realtime friends as for the ones in static configuration. With caching, the device stays in memory for a specified time. More information about this is to be found in the sip.conf sample file. * New function in the dial plan: The Realtime Switch ---------------------------------------------------- The realtime switch is more than a port of functionality in v1.0 to the new architecture, this is a new feature of CallWeaver based on the ARA. The realtime switch let's your CallWeaver server do database lookups of extensions in realtime from your dial plan. You can have many CallWeaver servers sharing a dynamically updated dial plan in real time with this solution. * So what can you do? --------------------- The realtime Architecture lets you store all of your configuration in databases and reload it whenever you want. You can force a reload over the AMI, CallWeaver Manager Interface or by calling CallWeaver from a shell script with callweaver -rx "reload" You may also dynamically add SIP and IAX devices and extensions and making them available without a reload, by using the realtime objects and the realtime switch. * Configuration in extconfig.conf --------------------------------- You configure the ARA in extconfig.conf (yes, it's a strange name, but is was defined in the early days of the realtime architecture and kind of stuck). Please see README.extconfig for database schemas. The part of CallWeaver that connects to the ARA use a well defined family name to find the proper database driver. The syntax is easy: <family> => <realtime driver>,<db name>[,<table>] The options following the realtime driver identified depends on the driver. Defined well-known family names are: * sippeers, sipusers SIP peers and users * iaxpeers, iaxusers IAX2 peers * voicemail Voicemail accounts * queues Queues * queue_members Queue members * extensions Realtime extensions (switch) There is documentation of the SQL database in the file README.extconfig in your CallWeaver source code tree, the /doc directory. For voicemail storage with the support of ODBC, there is a README.odbcstorage documentation file.