Proposed setup for SohoVoice


What you'll find here is simply a proposal or rough draft (depending if your a corporate person, or an english major ;). The best way to get things done right the first time is to present the ideas to anyone interested, and see what they have to say. Well, here it is. Read through, see what you like/dislike, and if you're interested, i'm trying to gather a couple developers to work on this (it will be not a lot of work)

If you want/need to contact me, i'm at scottf@unr.edu
 

Why?

"Linux Journal" and several other mag's have been printing stories focused on the SOHO (Small-office/Home-office) user, who needs a system that can do books, scheduling, or any other sort of business-related procedures.

Admittedly, I'm a voice mail geek. I have gone through demo/trial versions of Talkworks, Bitware, and other voice mail system finding that they all have a somewhat complicated setup, but most importantly run only on Windows.

So, I found vgetty, and several available scripts (mvm is a great set of scripts). Also, I looked at kvoice (another great program). The only thing though is that they probably weren't suited for a novice linux user to setup and maintain a voice-mail system, which seems to be essential today to sound "professional" over the phone.

And so I hatched the idea of a basic voice-mail system using 1 vgetty script and a simple graphical front-end, but then saw that the ability to expan and incorporate the voice-mail system over the network was something that could be EXTREMELY useful. Remote-access to your voice-mail over a network using audio streaming, along with the ability to run it as a simple answering machine.

Potential Features (non-technical)

First off, the non-technical side of potential features:

        - Ability to handle voice/fax/data calls on a single line
        - Unlimited mailboxes
        - Extremely flexible and easy mailbox setup
        - Graphical front-end for message/fax retrieval
        - Ability to access voice/fax messages over the network (remote retrieval) with the possiblity of audio streaming for fast playback.
        - Faxback
        - E-mail/pager notification if a message is received
        - Email-to-voice synthesis to send voice messages from e-mail to a voice mail system (local or remote)
        - and whatever else may come up in the process...

Technical End

The project will probably have 3 main parts:

        1) script that interacts with vgetty for parsing the mailbox config file, and
           handles the calls (DTMF tones, playback/recording, etc...)

        2) Client GUI (GTK+ preferably) for message retrieval/playback, and
           message handling (delete, move, etc...)

        3) Server (this could probably use the FTP server. add an account to the system
           with their ftp root as the message directory.)

Other possiblities:
        * Web interface
        * Fax-back / document retrieval (not too hard to do)

Questions:
* it looks like vgetty needs each DTMF signal to be in the form of * + Numbers + #
   is there a way for single key-presses so they just need to enter the "Numbers" instead?

--------------------------------------------------------------------------
Duties of the vgetty script:
        * parse mailbox config file
        * play main greeting
        * if a branch exists, wait for DTMF for 5 seconds, then if
          nothing, replay greeting.
        * if no branch exists, send BEEP, record message, and save as
          "MonthDayYear-Hour:Minute-Owner.voice" (standard sound
          filetype? au? wav? realaudio for streaming over network? >:)
        * if a fax call is received, save fax as
          "MonthDayYear-Hour:Minute-Owner.fax"
          (convert to 1 ps file by combining separate pages using gs)

        * Interpret global commands:
           At any time, the caller can press the following:
              * "0" will take them up one mailbox level to where they
                came from.
              * the mailbox "Number" to access a mailbox directly.

        -----------------------------------------------------------
        mailbox config file
 

        -general setup-
                modem=/dev/tty**
                        modem device
                        (default = /dev/modem)
                autoanswer=yes/no
                        automatically answer each incoming call?
                        (default = yes)
                rings=#
                        number of rings for pick-up
                        (default = 4)
                Number    Name    Owner    Greeting    Branches
                Number    Name    Owner    Greeting    Branches
                ...

    Where: (* denotes a necessary field)
        *Number:        number of mailbox in the system. should be
                        at least 3 digits so it doesn't conflict
                        with branch numbers.

        *Name:          the name of the mailbox. every system needs
                        a "root" mailbox because that is the
                        first mailbox the person will encounter.

        *Owner:         local user name of the owner of the mailbox.

        *Greeting:      the greeting played when they enter that mailbox.

        Branches:       Mailbox "Name"s that users can access from the
                        current mailbox. the order the names determines
                        whether they press "1", "2", etc. to get
                        to those mailboxes. it starts at "1".

        Example config file:
        -- start ------------------------------------------
        modem=/dev/ttyS0
        autoanswer=yes
        rings=6
        000     root            root            welcome.au      s

cott,vince,business
        001     business        scottf          business.au
        069     scottf          scottf          scottmess.au
        666     vince           vb              vincemess.au
        -- end --------------------------------------------
        
        so, modem (/dev/ttyS0) automaticaly picks up (autoanswer=yes)
        after 6 rings (rings=6).

        the root mailbox (#000) is owned by root, will play welcome.au,
        and then the user can move to mailbox scott (press 1), vince
        (press 2), or business (press 3).

        mailbox business (#001) is owned by scottf, and will play business.au
        when the user enters.
        mailbox scott (#069) is owned by scottf also, and will play scottmess.au
        when the user enters.
        finally, mailbox vince (#666) is owned by vb, and will play scottmess.au
        when the user enters.
        since mailboxes business, scott, and vince are "dead-ends"
        (no branches), they are places where voice-messages can be
        left (for the owner of the mailbox)

        run-through:
                1) caller rings in and the voice-mail picks up.

                2) the "welcome.au" file is played because it's the
                   greeting for the "root" mailbox.

                   *  caller can press "1" to leave a message for scott,
                      "2" for vince, and "3" to leave a message for
                      business -or- press the 3-digit mailbox # to move
                      directly to another mailbox.

                3) if they pressed "3", then they move to the business
                   mailbox and "business.au" is played.

                   *  caller can leave a message for the business
                      -or- they can press "0" to move back up a menu and
                      go back to the "main" mailbox
                      -or- then can press the 3-digit mailbox # of another
                      mailbox to go there.

Duties of the gui app
--------------------------------------------------------------------------

        * Locate messages for the currently logged-in user
          (parse message filenames and look at the owner field)
        * Play/Stop/Rewind
        * Delete
        * Memo (leave voice memo message in mailbox)
        * Sending Faxes
                * Phone Number
                * Receipient Name
                * Receipient Address/Location
                * Subject
                        "Attention", "Confidential", etc...
                * Note
        * Receiving Faxes (manually, only if local and root)
                * Destination Directory
                * Answer now