[Asterisk-Dev] Resource: RVM Server
Tilghman Lesher
tilghman at mail.jeffandtilghman.com
Tue Sep 16 14:33:04 MST 2003
I'm currently developing a new resource for Asterisk, which I am calling
RVM (remote voice mail). It will consist of three components, a server
for receiving, a queue, and a client for sending. The problem that I'm
attempting to solve is that we have 3 Asterisk servers, in
geographically diverse locations. The links between these servers are
not particularly reliable, as we are using Internet routing between them
(as opposed to a dedicated pipe).
We need to be able to transfer messages received on one server to a
voicemail box located on another server. No, NFS will not work, as
the links are not reliable. No, rsync won't work either, as voicemail
messages must be consecutively numbered. Yeah, we could write
a complex set of scripts around rsync, but by the time we do that, we
could have just written the functionality below. And finally, no, we
can't put all of our voicemail on one server (Try explaining to a
salesman why, when his connection is down, his clients can't record
and he can't listen to voicemail).
An RVM server will listen on a particular TCP port and accept
connections. Once it receives a connection, the voicemail message
will be transferred, along with the corresponding msgXXXX.txt attribute
file. The filenames will be assigned by the remote host, once the files
are received. Once the client confirms the server has fully received
the message, the client will delete that voicemail from the local
machine. Queues will be used to make sure that if a backlog ever
occurs, no message will be stranded longer than others. I'm also
going to use a monitor thread that will kill server connections if the
number of connections is at the max and no data has been received
for 300 seconds on a particular thread.
I'm going to use SSL to encrypt the connection. I'll also be using MIME
headers to encode the message. I've also already decided for a maximum
of 5 concurrent server connections and 1 client connection per Asterisk
server (for bandwidth reasons). These numbers aren't set in stone.
My reasons for making this post are twofold: first, I don't want two
competing solutions for the same problem, so I want everybody to know
that I'm doing this. Second, I haven't resolved all of the details,
such as whether servers can define which clients may forward voicemail
and how. I'm considering using the voicemail.conf options field to add
remote=1234 at 12.34.56.78 to specify the remote mailbox/server.
Suggestions that this functionality is not needed will be routed to
/dev/null (I don't really see a better way, and yes, I do need this
functionality). Other suggestions on additional features or behavior
that you think should be changed are welcome.
-Tilghman
More information about the asterisk-dev
mailing list