[asterisk-users] USB Cordless

Anselm Martin Hoffmeister
Tue, 17 Jul 2007 08:50:18 -0000

Am Montag, den 16.07.2007, 09:44 -0500 schrieb Jeremy
Mann:
> Does anyone know if X-Ten or SJPhone support multiple cordless
> handsets for multiple lines?  I have an office with multiple roaming
> users(nurses) that are in and out.  I?d like to provide them
> telephones, and my idea is to have a PC sitting in a corner somewhere
> running a softphone client.  When a nurse comes in she just picks up
> any available handset(anywhere from 2-5 per office) and starts
> calling.  Each handset would be labeled with their extension so that
> if any inbound calls came to them they?d be able to let the
> receptionist know their extension.
>
>
>
> Any ideas?

I personally would prefer giving them "real phones", be that a
combination DECT/ATA or WLAN phones. If you shop around, DECT/ATA will
probably be the less steep pricing. In the long run this would probably
be easier to keep running. If you talk 4 phones, you might calculate 2
ATAs of 2 ports each, plus 4 DECT thingies, summing up about 2*75? +
4*25?, which means the rather cheap devices, which expectedly will
nevertheless look better than the wireless USB things. And then, get a
PC and 4 wireless sound devices for 250 bucks...

But I do not want to lack answering your question: I know for sure that
some softphones allow to select a certain sound channel / sound
controller. Take the Linux softphone ekiga as example. If you run
several of those with different configuration files and on different
port numbers (this will most probably be possible, although it might
turn out a nightmare to configure), that might get the job done.

I do not know wether there is a softphone that uses different sound
channels for different "lines", but I doubt it - it would be rather
counterintuitive to have a single "phone" software, but several
handsets; rather several instances would fulfill the "multiple phone on
one desk" computer screen analogy.

You might also have some trouble with the keys on your wireless phones
in a multiple-softphone scenario - depending on how the OS handles
those, they might be handed to the window in focus. I have plainly no
idea how this could possibly work with a phone hardware <-> softphone
mapping without royally screwing up.

> Also, is it possible to transfer a call directly to someone?s VM(if
> they are out of the office) bypassing their extension?  If so, could
> someone post the asterisk logic behind the extension setup?  I don?t
> want anything too complex(like setting the DND or phone to busy).

I want to describe a scenario, and you can decide wether that is too
complex ;-)

Let us assume your asterisk has two internal number plan ranges
available for the project, being 23XX and 4XXX. Let us further assume
that all the ATAs live in the 23XX range and will be called out of the
context [internal], like

[internal]
exten => 2300,1,Dial(SIP/device2300,60)
exten => 2300,2,Hangup()
exten => 2301,1,Dial(SIP/device2301,60)
...

(or, if your devices are named reasonably in sip.conf, you might get
away with)
exten => _23XX,1,Dial(SIP/device${EXTEN},60)
exten => _23XX,2,Hangup()

So those numbers end up calling a specific DECT phone, but you would not
know which nurse to reach on which phone, unless she told you beforehand
that she "just picked up phone 56" resulting in phone number 2356.

To get around that, every nurse gets assigned a personal number from the
4XXX range that will "follow her" or go to voicemail. You could make
use
of the Asterisk Database, like this:

[internal]
exten => _4XXX,1,Set(CURRENTPHONE=${DB(nurse/${EXTEN})})
exten => _4XXX,2,GotoIf($["${CURRENTPHONE:1}" = ""]?4)
exten => _4XXX,3,Dial(SIP/device${CURRENTPHONE},60)
exten => _4XXX,4,VoiceMail(${EXTEN})
exten => _4XXX,5,Hangup

So if the nurse is not "logged in" the call will go to voicemail
immediately.

Instead of calling the receptionist "Hi Linda, I'm on phone 56
today"
she would keep her "4113" for "all times".

The reason I chose two-digit DECT phone numbers and three-digit nurse
numbers is that there are usually more nurses than phones.... :-) Anyway
a somehow competent receptionist would be able to deal with a static
personell number list better than dynamic phone numbers changing twice
every day.

Of course the nurse would need to tell the phone system where she
currently is, like by picking a phone and dialling her own code number,
plus *1 (provided CALLERID is working correctly) - or her own number
plus *0 to log off. Mind, you could also have an IVR available (on 777
or whatever internal number suits you) that greets the caller, asks for
the nurse's number and her PIN and wether she is coming or going.

[internal]
exten => _4XXX*1,1,GotoIf($["${CALLERID(num):0:2}" =
"23"]?2:100)
exten => _4XXX*1,2,Set(DB(nurse/${EXTEN:0:4})=${CALLERID(num)})
exten => _4XXX*1,3,Playback(nurse-registered-thank-you)
exten => _4XXX*1,4,Hangup
exten => _4XXX*1,100,Playback(not-possible-from-this-phone)
exten => _4XXX*1,101,Hangup

exten => _4XXX*0,1,Set(DB(nurse/${EXTEN:0:4})=0)
exten => _4XXX*0,2,Playback(thanks-have-a-nice-time-we-will-miss-you)
exten => _4XXX*0,3,Hangup

With some more dialplan logic you could password protect this (for
example, using the voicemail PIN). Having the MWI (blinking light or
stutter dialtone) assigned to the right phone will be more difficult if
possible, but they could probably do without: You could still adapt the
_4XXX*1 routine to Playback(you-have-messages-please-check) before the
thank-you, if that is the case, or instantiate a once-per-hour call on
nurse phones if messages are waiting.

You could also change the callerid from phone-id to nurse-id when nurses
call other people (so that they can callback her, not the phone, even if
she switches phones or left for the day)... which needs a reverse
database entry phone->nurse additional to nurse->phone. At that point
the situtation of several nurses sharing a phone would probably break
(which would work OK with the small setup lined out above), but then,
the device number would be completely unnecessary except for providing
the original CALLERID such that the _4XXX*1 logic works.

By the way, you could even restrict outgoing calls from those phones to
not work at all if no nurse is logged in, and charge long distance calls
to her personal account, if you want. Please mind to use PIN
authentification then ;-)

All this is written right out of my head, so beware. Might contain
errors, typos and hell knows what.

BTW please get rid of that privacy statement in your mail. One function
of this list is to allow others to lookup solutions and answers, and
such statements somehow leave the idea you did not want this mail to be
publicly archived. This is a public list after all, so the privacy has
been blown the moment you clicked the "send" button...

HTH, BR
Anselm