Posted by Scott Laird
Wed, 20 Oct 2004 17:21:32 GMT
I’ve been looking for a Bluetooth plugin for Asterisk for a while, so my home Asterisk server can pick up incoming calls to my cell phone and route them onto my home phone network. I’m certainly not alone in this–it comes up monthly on the Asterisk-users mailing list.
It looks like the wait is nearly over–Theo Zourzouvillys announced a bluetooth driver for Asterisk this morning. It’s apparently still rough around the edges, and it’s only been tested with a single model of phone, but it works for him now, and the Asterisk community is pretty good at picking up things like this and enhancing them.
I’m going to play with this this weekend and see if I can get it to work with my T616; if so, it’d be a nice addition to my home phone system.
Posted in Asterisk | Tags asterisk, bluetooth, voip | 4 comments
Posted by Scott Laird
Wed, 22 Sep 2004 22:59:14 GMT
Since all of the big Photokina camera announcements seem to be out (Canon 1Ds, Nikon D2X, Fuji S3, and a couple thousand point-and-shoots), I figure it’s time for me to post my list of what I’d like to see the camera industry provide. I’ve been thinking about most of these for years. In that time, I’ve seen new cameras come and go, but I haven’t seen a whole lot of real innovation, particularly in the DSLR space, where all of the manufacturer’s effort has been focused on image size and speed.
None of these ideas are mind-bogglingly fantastic; some of them are admittedly a bit marginal. Some of them may well be bad ideas–I’d be amazed if at least some of these haven’t been tried out in the labs and found wanting. I haven’t seen any of these discussed widely online, though, so I figured I should probably share them.
Read more...
Posted in Photography | Tags bluetooth, flash, photography, predictions | no comments
Posted by Scott Laird
Thu, 13 May 2004 18:24:31 GMT
TheFeature.com has an interesting article on Intel’s new ”Jabberwockey” research project. In short, it’s a bluetooth-driven system for recognizing “familiar strangers” via their phones. It runs on your phone and keeps track of other bluetooth devices that it sees, so it can recognize when those devices show up in other contexts.
Personally, I find this kind of fascinating. I don’t see the present incarnation as being particularly useful, but I love the concept. If you had a bit longer range then Bluetooth (30 feet is kind of short, 100-150 feet would be just about right, IMHO), and some reasonably standard way of mapping device IDs to people (think FOAF or something Technorati- or Google-driven, where people opt-in by posting their own IDs), and we could have a really fascinating way of building communities. There are certainly a ton of privacy issues, but those could be mostly mitigated by the opt-in nature of the device ID→identity mapping and by turning off Bluetooth discovery on your phone.
Posted in Phones, Computer Software | Tags bluetooth, phone | no comments
Posted by Scott Laird
Fri, 09 Apr 2004 08:23:06 GMT
I am a happy man. I have, after four years of trying, achieved nerdvana. I am down to one single address book, accessible everywhere. It’s shared between my computer, my cell phone, my palm, my wife’s Mac, her phone, and finally, as of yesterday, our home phone. I can add new contacts anywhere, and they show up everywhere automatically.
It’s actually even more pervasive then that; the same address book entries re-write incoming caller ID and control our home phone’s ringer, so we can tell the difference between friends and telemarketers without even looking at the caller ID display. The best part is that it all just works. Setting it up in the first place took a bit of work, but once it’s running, all I have to do is drag cards around inside of the OS X Address Book, and everything else follows along on its own.
The first part of this whole operation was to get data out of the OS X Address Book and into a form that I could work with on one of my servers at home. Towards that end, I wrote ab2vcard, a simple tool that extracts vCards for every address book entry and stores them in a directory. If you set up Subversion and use the right flags on ab2vcard, then all of your vCards will be checked into Subversion and automatically replicated onto the Subversion server. I run ab2vcard from cron, so every two hours, all of my addresses are automatically sent to my server at home.
Next, I wrote asterisk-vcard-cid so I could use the names in my Address Book for Caller ID instead of the nasty stuff that Verizon sends me. If you copy the ‘vcardcid-cron.sh’ file that comes with it onto your Asterisk server and run it every couple hours, then it’ll do all of the hard work of checking changes out of Subversion and shoving them into Asterisk. The way I have it set up, I have 5 groups in my Address Book:
- Home CallerID
- Home Ring 1
- Home Ring 2
- Home Ring 3
- Home Ring 4
Any contacts in the ‘Home CallerID’ group will automatically be added to the caller ID DB in Asterisk. Anyone in one of the ‘Home Ring’ groups will have ‘distinctive ring’ turned on when they call. That was really easy with Asterisk. All I had to do was add a macro like this:
[macro-setalertinfo]
exten => s,1,DBGet(ALERT_INFO=distinctivering/${CALLERIDNUM})
Then, I make sure that all incoming calls use this macro. Here’s my complete outside line macro:
[macro-outsideline]
exten => s,1,SetCDRUserField(Outside (${CHANNEL}))
exten => s,2,LookupCIDName
exten => s,3,SetMusicOnHold(random)
exten => s,4,Macro(setalertinfo)
exten => s,5,LookupBlacklist
exten => s,6,Dial(${PHONES},13,Ttmr)
exten => s,7,Answer
exten => s,8,Goto(outside-ivr,s,1)
exten => s,106,Wait(3600)
exten => s,107,Hangup
This handles caller-ID rewriting, blacklisting, distinctive rings, adds extra logging, and sends unanswered calls to voicemail.
One little note on distinctive ring: the way I’m using it, it probably only works right with Cisco SIP phones, although other SIP phones that support distinctive ring will work with a few changes to the vcardcid-cron script.
Finally, I’ve added a mechanism for tying the same set of vCards into the speed dial directory on Cisco SIP phones. I’m using the 7940, but the 7905, 7912, 7920, 7960, and 7970 should all work. Each of these phones has the ability to download XML programming objects over HTTP. There aren’t a lot of great references out there, but this one is fairly complete and seems accurate so far.
The directory tool that I wrote, cisco-phone-directory, runs as a CGI on a web server. If you set up the Cisco phone right, every time you select ‘external directory’ from the directory menu, you’ll be prompted with a search screen. Enter a few letters from the name that you’re looking for, and you should get a nice, short list of names to choose from. At this point, it works with almost no fuss, and almost no user training.
Er, except for one little problem. All of the numbers in my address book look like (206)-555-1212. Once you strip the punctuation, you’re left with 10 digits. The problem is that I need to dial a ‘1’ before I call long distance numbers, and it’s not really obvious which numbers are long distance and which aren’t. I can dial most numbers in the 206 area code for free, and about half of the numbers in 425, but there’s no simple way to tell which numbers are which. Since I’m cheap, I want to send toll-free calls out over a real phone line, because it doesn’t cost me anything, while I send toll calls to NuFone over the Internet, because they cost about half as much per minute.
In order to do that, I need to know which numbers are local, given my phone’s area code and exchange. So, enter yet another tool: asterisk-lca-map. If your home number was (425)-488-1212, then you’d run it from the command line like this:
$ asterisk-lca-map.rb 425 488 1212 'Macro(dialanalog)'
and it’ll produce a dial plan that sends all local calls out ‘Macro(dialanalog)’, like this:
exten => _206200XXXX,1,Macro(dialanalog)
exten => _206202XXXX,1,Macro(dialanalog)
exten => _206203XXXX,1,Macro(dialanalog)
exten => _206204XXXX,1,Macro(dialanalog)
exten => _206205XXXX,1,Macro(dialanalog)
exten => _206208XXXX,1,Macro(dialanalog)
exten => _206210XXXX,1,Macro(dialanalog)
exten => _206213XXXX,1,Macro(dialanalog)
exten => _206214XXXX,1,Macro(dialanalog)
exten => _206215XXXX,1,Macro(dialanalog)
You can then add a couple extra rules at the bottom to handle 800 numbers and toll calls:
exten => _888NXXXXXX,1,Macro(dialanalog1)
exten => _1888NXXXXXX,1,Macro(dialanalog)
; continue on with 877, 866, 855, and 800
exten => _NXXNXXXXXX,1,Macro(dialnufone1)
exten => _1NXXNXXXXXX,1,Macro(dialnufone)
The ‘dialanalog1’ and ‘dialnufone1’ macros prepend a ‘1’ to the number that they’re calling. When all of this is done, dialing ‘2062001111’ goes out the POTS line as-is, while dialing ‘2125551212’ goes out NuFone as ‘12125551212’. Everything Just Works, and users don’t have to know when to dial a 1 and when not to. They never actually need to dial the 1 at all, although if they do, it’ll still work. And that’s what I’m aiming for–the back end is complex, because it has to interact with complex parts of the real world. The front end is dead simple, though, because I can handle all of the hard bits without bothering the user. They can just dial the phone number, and I’ll route it out the cheapest connection automatically.
Posted in Phones, Mac stuff, Asterisk, Handheld and PDA | Tags addressbook, asterisk, bluetooth, macosx, sync, syncing, voip | 13 comments
Posted by Scott Laird
Fri, 26 Mar 2004 07:13:24 GMT
So, my Asterisk-based home phone service is moving along nicely. I’m still waiting for my Cisco 7940 phone to ship (ebay has things going for it; speed isn’t one of them); I can’t finish all of the UI features that I want until I have the phone in hand. So, my mind’s been wandering, looking for other things to do.
I have a Sony-Ericsson T616 cell phone that I’m kind of ambivalent about. It’s a decent phone, but it’s really too small to talk on for any extended period of time, and the ringer on it is too quiet to hear in a noisy room. I’m prone to missing calls. Fortunately, it has bluetooth. I’ve been using it to sync address book entries with my Mac, but there’s no technical reason I couldn’t use it to tie the phone right into Asterisk, so incoming calls to the cell phone ring straight into our regular home phones whenever the phone’s in bluetooth range.
The opposite side of things–using the cell phone as a cordless phone for receiving calls made to our home phone–isn’t possible with any shipping phone. The phone would need to support the bluetooth “Cordless Telephony Profile,” which no phones currently support.
Grabbing cell calls and stuffing them into Asterisk, on the other hand, should be possible. The bluetooth Handsfree Profile includes all of the abilities needed, including audio, caller ID, call progress, and the ability to dial out. There’s even an open source bluetooth handsfree plugin for KDE. So, making it work with Asterisk would really just be a matter of writting a channel driver that ties Linux’s bluetooth code into Asterisk. Not trivial, but it’s not unexplored territory, either.
Posted in Asterisk | Tags asterisk, bluetooth, cellphone, cisco7940, voip | 5 comments