Remove places that say if no language is specified it will default to english......
[asterisk/asterisk.git] / doc / tex / realtime.tex
1 \subsubsection{Introduction}
2
3 The Asterisk Realtime Architecture is a new set of drivers and 
4 functions implemented in Asterisk.
5
6 The benefits of this architecture are many, both from a code management
7 standpoint and from an installation perspective. 
8
9 The ARA is designed to be independent of storage. Currently, most
10 drivers are based on SQL, but the architecture should be able to handle
11 other storage methods in the future, like LDAP.
12
13 The main benefit comes in the database support. In Asterisk v1.0 some 
14 functions supported MySQL database, some PostgreSQL and other ODBC.
15 With the ARA, we have a unified database interface internally in Asterisk,
16 so if one function supports database integration, all databases that has a 
17 realtime driver will be supported in that function.
18
19 Currently there are three realtime database drivers:
20
21 \begin{itemize}
22   \item ODBC: Support for UnixODBC, integrated into Asterisk
23         The UnixODBC subsystem supports many different databases,
24         please check \url{www.unixodbc.org} for more information.
25   \item MySQL: Found in the asterisk-addons subversion repository on svn.digium.com
26   \item PostgreSQL: Native support for Postgres, integrated into Asterisk
27 \end{itemize}
28
29 \subsubsection{Two modes: Static and Realtime}
30
31 The ARA realtime mode is used to dynamically load and update objects.
32 This mode is used in the SIP and IAX2 channels, as well as in the voicemail
33 system. For SIP and IAX2 this is similar to the v1.0 MYSQL\_FRIENDS 
34 functionality. With the ARA, we now support many more databases for
35 dynamic configuration of phones.
36
37 The ARA static mode is used to load configuration files. For the Asterisk
38 modules that read configurations, there's no difference between a static
39 file in the file system, like extensions.conf, and a configuration loaded
40 from a database.
41
42 \subsubsection{Realtime SIP friends}
43
44 The SIP realtime objects are users and peers that are loaded in memory 
45 when needed, then deleted. This means that Asterisk currently can't handle
46 voicemail notification and NAT keepalives for these peers. Other than that,
47 most of the functionality works the same way for realtime friends as for
48 the ones in static configuration.
49
50 With caching, the device stays in memory for a specified time. More 
51 information about this is to be found in the sip.conf sample file.
52
53 \subsubsection{Realtime H.323 friends}
54
55 Like SIP realtime friends, H.323 friends also can be configured using
56 dynamic realtime objects.
57
58 \subsubsection{New function in the dial plan: The Realtime Switch}
59
60 The realtime switch is more than a port of functionality in v1.0 to the
61 new architecture, this is a new feature of Asterisk based on the 
62 ARA. The realtime switch lets your Asterisk server do database lookups
63 of extensions in realtime from your dial plan. You can have many Asterisk
64 servers sharing a dynamically updated dial plan in real time with this
65 solution.
66
67 Note that this switch does NOT support Caller ID matching, only
68 extension name or pattern matching.
69
70 \subsubsection{Capabilities}
71
72 The realtime Architecture lets you store all of your configuration in
73 databases and reload it whenever you want. You can force a reload over
74 the AMI, Asterisk Manager Interface or by calling Asterisk from a 
75 shell script with 
76
77   asterisk -rx "reload"
78
79 You may also dynamically add SIP and IAX devices and extensions 
80 and making them available without a reload, by using the realtime
81 objects and the realtime switch.
82
83 \subsubsection{Configuration in extconfig.conf}
84
85 You configure the ARA in extconfig.conf (yes, it's a strange name, but
86 is was defined in the early days of the realtime architecture and kind
87 of stuck).
88
89 The part of Asterisk that connects to the ARA use a well defined family
90 name to find the proper database driver. The syntax is easy:
91
92 \begin{verbatim}
93     <family> => <realtime driver>,<db name>[,<table>]
94 \end{verbatim}
95
96 The options following the realtime driver identified depends on the
97 driver.
98
99 Defined well-known family names are:
100
101 \begin{itemize}
102   \item sippeers, sipusers - SIP peers and users
103   \item iaxpeers, iaxusers - IAX2 peers and users
104   \item voicemail - Voicemail accounts 
105   \item queues - Queues
106   \item queue\_members - Queue members
107   \item extensions - Realtime extensions (switch)
108 \end{itemize}
109
110 Voicemail storage with the support of ODBC described in file 
111 docs/odbcstorage.tex (\ref{odbcstorage}).
112
113 \subsubsection{Limitations}
114
115 Currently, realtime extensions do not support realtime hints.  There is
116 a workaround available by using func\_odbc.  See the sample func\_odbc.conf
117 for more information.
118
119 \subsubsection{FreeTDS supported with connection pooling}
120
121 In order to use a FreeTDS-based database with realtime, you need to turn
122 connection pooling on in res\_odbc.conf.  This is due to a limitation within
123 the FreeTDS protocol itself.  Please note that this includes databases such
124 as MS SQL Server and Sybase.  This support is new in the current release.