Archive

Archive for the ‘General’ Category

First Fishing Trip

December 23rd, 2009 Aaron Baer No comments

Out with Poppop Kirk for Lavi’s first fishing trip. First time on a boat and first time with a pole in the water. Such a fun time!

Categories: General, Self, World Tags: , , ,

Keep it simple

December 6th, 2009 Aaron Baer No comments

Sometimes making things more complicated than they need to be because it sounds awesome is really fun. However, when it really comes down to it simplifying things is the way to go.

Categories: General Tags: , , ,

Finding voice with Asterisk, Gizmo, and Google Voice

November 6th, 2009 Aaron Baer 1 comment

After my monthly billing for my Internet and Phone service rose $25 dollars in one month, sending my fees for Internet and phone from $75 to $98,  I decided that it was time to buckle down and work on something that I had been thinking about for a long time. Zero dollar per year phone service including long distance. The goal was building a highly functioning personal VOIP environment to entirely replace my traditional land line phone service and include complete integration with Google Voice. My monthly fees were pulled back down to a more manageable $60 dollars for Internet and a purely basic local only phone line with no frills because the bundled package was still cheaper than just Internet. More for less go figure. My phone feature frills are handled elsewhere now.

What I’ve ended up with is Asterisk configured as my PBX, all extensions are currently SIP VOIP users, with registered trunks to Gizmo5 for each Google Voice account I want to integrate. Google Voice dialing can be done straight from the client/phone which means there is no need to initiate the call manually from the Google Voice webpage. I just assign a unique extension per account and within the dial plan  call the script  gvoice  provided by pygooglevoice using System() to complete the call. More details on that later.

Inspired by an article I read here there was enough detail to get things started. There are many limitations to the details described in that article but I’ve been able to work through most of them over the past week and I think I’ve made some excellent improvements. Two things that I was able to improve on are your outgoing calls do not depend on Gizmo’s 3 minutes free/outgoing minutes charges and dialing directly from the web is no longer high jacked by a potentially non-existent parked line on incoming calls from your Google account.

I will make the assumption here that you already have Asterisk installed, you’ve configured pygooglevoice to be usable on the asterisk server and that you have a Google Voice account. There are many other posts out there on the Internet that cover getting asterisk up and running. When I began to install my asterisk environment I tried to use FreePBX but really felt as though it was in my way. I could never get things working using it. I’m sure that it has it’s place and works well, most other posts about configuring asterisk and out of the box Linux PBX distributions use it, but it was not working for me. Not understanding yet what it took to make asterisk work probably was the main issue with not being able to use it. Instead I just wrote the config files for asterisk manually. The two most important configuration files in this discussion are extensions.conf (where the dial plans and dirty stuff goes on) and sip.conf (user accounts, SIP registrations and sip configuration).

My Goals

  • Make calls between extensions
  • Have calls from multiple Google Voice phone numbers ring to desired extensions
  • Dial regular phone numbers from phones to provide unlimited call out support (no fees)

Basic Asterisk Configuration

There are two important configurations to get asterisk off the ground. User accounts for SIP users and Dial plans defined for system extensions. The first is created in the file sip.conf and the later in extensions.conf.  Things to keep in mind here that come in handy later are setting useful context and defining your user sections [phone1], [GizmoUser1] etc..

Let’s set up the basics. Two sip accounts and extensions to allow them to be dialed.

sip.conf

[1111]
type=friend
context=from-internal
host=dynamic
secret=URPASSWORD
callerid=User1 <1111>
canreinvite=yes
dtmfmode=auto
disallow=all
allow=ulaw
;allow=ilbc
callingpres=allowed_passed_screen

[2222]
type=friend
context=from-internal
nat=yes
host=dynamic
secret=URPASSWORD
callerid=User2 <2222>
canreinvite=yes
dtmfmode=auto
disallow=all
allow=ulaw
;allow=ilbc
callingpres=allowed_passed_screen

[1111]
type=friend
context=from-internal
host=dynamic
secret=URPASSWORD
callerid=User1 <1111>
canreinvite=yes
dtmfmode=auto
disallow=all
allow=ulaw
;allow=ilbc
callingpres=allowed_passed_screen
[2222]
type=friend
context=from-internal
nat=yes
host=dynamic
secret=URPASSWORD
callerid=User2 <2222>
canreinvite=yes
dtmfmode=auto
disallow=all
allow=ulaw
;allow=ilbc
callingpres=allowed_passed_screen

extension.conf – notice that above we defined these accounts within the context=from-internal so extensions must be associated with that context.

[from-internal]

exten => 1111,1,Dial(SIP/1111,120,t)
exten => 1111,n,Macro(fastbusy)

exten => 2222,1,Dial(SIP/2222,120,t)
exten => 2222,n,Macro(fastbusy)

Hooking up to Gizmo

Next we define how we’re are going to go about communicating with Gizmo5 (sipphone.com). This happens in sip.conf in two places.

First we register with the network. The key here is that if you have multiple accounts that you are registering make sure to define their context with /CONTEXT at the end of the register entry. This allows you to uniquely identify incoming calls from the separate accounts later in extensions.conf.

register => 1747XXXXXXX:PASSWORD@proxy01.sipphone.com/GizmoAct1
register => 1747XXXXXXX:PASSWORD@proxy01.sipphone.com/GizmoAct2

Next we define a sip user for each account. Again notice here the context is set as from-google this is important for all incoming calls coming from these accounts when we configure the dial plans.

It would make sense here to name them in a way that tie to the register entries. i.e. GizmoUser1 <-> GizmoAct1

[GizmoUser1]
type=friend
context=from-google
disallow=all
allow=ulaw
;allow=ilbc
dtmfmode=rfc2833
host=proxy01.sipphone.com
fromdomain=proxy01.sipphone.com
insecure=port,invite
;qualify=yes
fromuser=1747XXXXXXX
authuser=1747XXXXXXX
username=1747XXXXXXX
secret=PASSWORD
canreinvite=yes

[GizmoUser2]
type=friend
context=from-google
disallow=all
allow=ulaw
;allow=ilbc
dtmfmode=rfc2833
host=proxy01.sipphone.com
fromdomain=proxy01.sipphone.com
insecure=port,invite
;qualify=yes
fromuser=1747XXXXXXX
authuser=1747XXXXXXX
username=1747XXXXXXX
secret=PASSWORD
canreinvite=yes

Dial Plans for Google Voice fancy pants

Alright back to extensions.conf,  here are the good bits in my opinion.

Set some global variables for the various accounts, some bits and pieces regarding where you’re going to park calls while the gvoice script goes and does it’s thing, account information so it’s easily reused and anything else that seems exciting.

[globals]

; LOCAL CONFIGURATION

MYGOO-ACCTNAME=mygoogle@gmail.com
MYGOO-ACCTPASS=PASSWORD
MYGOO-GVNUM=
MYGOO-RINGBACK=1747XXXXXXX     ; Gizmo DID
MYGOO-ISPARK=0
MYGOO-CALLPARK=705

OTHERGOO-ACCTNAME=othergoogle@gmail.com
OTHERGOO-ACCTPASS=PASSWORD
OTHERGOO-GVNUM=
OTHERGOO-RINGBACK=1747XXXXXXX
OTHERGOO-ISPARK=0
OTHERGOO-CALLPARK=706

Create a unique dial extension for your accounts so that the outgoing is associated with the right Google Voice account.

[GizmoAct1-google-out]
exten => _8.,1,Dial(local/${EXTEN:1}@GizmoAct1-google-voice,300)

[GizmoAct2-google-out]
exten => _9.,1,Dial(local/${EXTEN:1}@GizmoAct2-google-voice,300)

Define what happens when the call is made.  Here we initiate the call to @GizmoAct1-google-voice, play back a message, poke Google Voice using the gvoice script to us call back and park the call.  I set a global variable here, ISPARK, to indicate that this call was generated from my SIP client and parked. This helps fix an issue with the other dial plan examples that I found where the ability to initiate calls from the web would break and treat every incoming call from Google Voice the same and try to attach it to an existing parked call even if that parked call did not exist. You see later that I check for the ISPARK flag.

[GizmoAct1-google-voice]
exten => _X.,1,Wait(5)
exten => _X.,n,Playback(wait-moment)
exten => _X.,n,System(gvoice -e ${MYGOO-ACCTNAME} -p ${MYGOO-ACCTPASS} call ${EXTEN} ${MYGOO-RINGBACK})
exten => _X.,n,Set(GLOBAL(MYGOO-ISPARK)=1)
exten => _X.,n,Set(PARKINGEXTEN=${MYGOO-CALLPARK})
exten => _X.,n,Park()
exten => _X.,n,Hangup
[GizmoAct2-google-voice]
exten => _X.,1,Wait(5)
exten => _X.,n,Playback(wait-moment)
exten => _X.,n,System(gvoice -e ${OTHERGOO-ACCTNAME} -p ${OTHERGOO-ACCTPASS} call ${EXTEN} ${OTHERGOO-RINGBACK})
exten => _X.,n,Set(GLOBAL(OTHERGOO-ISPARK)=1)
exten => _X.,n,Set(PARKINGEXTEN=${OTHERGOO-CALLPARK})
exten => _X.,n,Park()
exten => _X.,n,Hangup

Once that happens and your original call is parked you should hear the wonderful hold music you configured for your asterisk environment. gvoice has fired, logs into Google Voice and has initiated the call back to your Gizmo DID which immediately comes back into your own PBX. Otherwise, someone has called your Google Voice number and you are receiving the incoming call or you’ve started a call from the web. So we have to figure out what to do with the incoming call. These calls come in via the from-google context.

[from-google]
include => from-internal

exten => GizmoAct1,1,Wait(1)
exten => GizmoAct1,n,Set(GVNUM=${MYGOO-GVNUM})
exten => GizmoAct1,n,NoOp(**CALLERID: ${CALLERID(number)})
; does the call come from our Google voice caller id and is there a parked call 

*** line breaks here for blog readability ***
exten => GizmoAct1,n,
GotoIf($[$["${CALLERID(number)}"="${MYGOO-GVNUM}"]
& $["${MYGOO-ISPARK}" = "1"]]?gopark:direct)
*** line breaks here for blog readability ***

exten => GizmoAct1,n(gopark),Set(GLOBAL(MYGOO-ISPARK)=0)
exten => GizmoAct1,n(gopark),ParkedCall(${MYGOO-CALLPARK})
; otherwise it's a direct call.
exten => GizmoAct1,n(direct),Dial(SIP/2222,120,t)
exten => GizmoAct1,n(direct),Goto(GizmoAct1-next-${DIALSTATUS},1)
 ; first line is unavailable try the next extension
exten => GizmoAct1-next-CHANUNAVAIL,1,Dial(SIP/2222,120,t)
exten => GizmoAct1-next-.,n,NoOp

exten => GizmoAct2,1,Wait(1)
exten => GizmoAct2,n,Set(GVNUM=${OTHERGOO-GVNUM})
exten => GizmoAct2,n,NoOp(**CALLERID: ${CALLERID(number)})

*** line breaks here for blog readability ***
exten => GizmoAct2,n,
GotoIf($[$["${CALLERID(number)}"="${OTHERGOO-GVNUM}"]
& $["${OTHERGOO-ISPARK}" = "1"]]?gopark:direct)
*** line breaks here for blog readability ***

exten => GizmoAct2,n(gopark),Set(GLOBAL(OTHERGOO-ISPARK)=0)
exten => GizmoAct2,n(gopark),ParkedCall(${OTHERGOO-CALLPARK})
exten => GizmoAct2,n(direct),Dial(SIP/1111,120,t)

And there you have it.

Here are full examples of sip.conf and extensions.conf which should pull it all together.

You’ll notice there is a dial plan and extension in there called GizmoAct1-land-google-callback which is an example of dialing a phone number from a SIP extension that rings back to an existing land line outside of your asterisk network. This allows for an existing phone line to be included  into your  PBX without having to configure it as a zap device. When you read the configuration it should make sense and it works well, dial from SIP line and walk away, rings back to land line which you answer and the call connects, SIP line hangs itself up.

rinse, repeat, serve hot with a double shot of espresso.

Facebook Chat Scam

August 19th, 2009 Aaron Baer No comments

Today there was a post on Facebook Security ’s Notes page titled Inside a Hacker Chat which is something that actually happened to me one night back in June.  Fortunately I was also able to determine right away that the person at the other keyboard pretending to be my friend Rick was not in fact Rick but some poor spelling wad of goof trying to scam me out of my hard earned money.  I thought I would share the transcript here for everyone’s enjoyment and as another example of how these things work in case it ever happens to you. It’s applicable not only in Facebook chat but honestly in any conversation you might be having online.

My advice:

If it seems strange right off the bat it probably is.

There are often very simple ways to determine if the other person is who they say they are. Think of a few and casually use them.  Identify something that both parties would have no problem acknowledging within moments of posing the question.  Find another method of communication they should obviously have access to and have them contact you that way, eg. private email outside of Facebook or a phone call.

As you can see from the transcript below it was pretty easy for me to tell this guys was a dolt and definitely not Rick. Interestingly, both myself and the person in the example on Facebook’s post attempted to make direct voice contact with the person. Makes sense.. right???

And report the abuse.. I emailed Rick immediately including the chat logs and called him first thing in the morning. He, of course, was not in London and was unaware that anyone had gained access to his account. He reported it to Facebook who according to Rick were very helpful and followed through right away.

This doesn’t include the last 10 or 20 minutes of our entertaining chat unfortunately because I really did have fun with the person. I was amazed at how long they kept it up. They kept it up for almost an hour.  Some parts that they almost got right.. When I asked what public library they were chatting from they gave me the name of a real library. Where they failed.. after a quick web search I was able to find the phone number, a map of the surrounding area and operating hours of the place then after determining the difference between my time zone and London’s…. the library wasn’t even open.. Comments like ” seriously,  I’m sure they’ll let you use the phone..” “I’m ringing the desk now..” “I would love to send you the money…” and other very helpful words in which I was obviously calling them out on their game they still kept it up..

That was until my final comment (which makes me wish I could actually  access chat logs from Facebook chat (come on Facebook!) … which was along the lines of “I find this very entertaining.. I could keep this up all night.” .. after that comment the chat went dead.

The following happened in June of 2009

11:37pm Rick
Hey Aaron

11:37pm Aaron
heya!
how’s it going?

11:39pm Rick
Not too good
Am in a deep shit right now
Am in a deep shit right now

11:39pm Aaron
how come?

11:39pm Rick
I Was mugged at gun point in london lastnight
Those muggers took everything on me

11:39pm Aaron
what?? that’s just terrible.

11:39pm Rick
My wallet bank card and cellphone

11:40pm Aaron
crap. that sucks. you’re alright though?
no physical injuries?

11:40pm Rick
Not at all

11:40pm Aaron
good.
are you there on business?

11:40pm Rick
Am stuck here at the moment and i need help with flying back home

11:42pm Rick
I Need your help

11:42pm Aaron
what sort of help can I be?

11:42pm Rick
I Want you to help me with my flight ticket back home

11:44pm Rick
i have a flight that leaves in two hours later in the day
I Need $850 to complete my flight ticket back home
Loan me the money i would refund it back to you as soon as am back home

11:45pm Aaron
seems like a strange request there rick. why don’t i stop by your house tomorrow and see what I can do.

11:46pm Rick
i have a flight to catch up with in three hours time

11:46pm Aaron
by the way. do you remember the person I served on the board of directors with? I just can’t remember his name.

11:47pm Rick
Why are you being paranoid Aaron
i know you are teasing me right now

11:48pm Aaron
you’d answer the question pretty straight forwardly.

11:50pm Rick
but you know am freaked out right now
am stunned at you man

11:51pm Aaron
so stunned you really don’t sound like rick at all.
especially asking for money. and not able to answer a quick simple question over the internet.
so .. like.. rick.. i have love for.. this.. seems very strange to be rick.
so i’m skeptical.

11:52pm Rick
All i care about is leaving this place right now

11:52pm Aaron
i’m sure.

11:52pm Rick
Aaron hold on
Let me explain somethings to you
If you eventually wire money to me you know you would do that to my name
if am not rick ****** you have to know that no other person can pick money up on my identity
Its not possible
Cos i have to pick the money up with my own international passport
My identity
So i would be pretty sure if you are ready to help me with my explanation to you right now
are you there

11:58pm Aaron
rick knows how to spell pretty well.

11:58pm Rick
am freaked out here man
am in a public library

11:59pm Aaron
you said that. you also are not rick. send me an email from your private email address since you obviously have an internet connection.
Today

12:00am Rick
i said if am not rick i won’t be able to pick money up if you wire it to me
without rick identity

12:01am Aaron
so you should just log out now and leave this account alone. I have alerted those who should now be able to trace your network connection. i’ll send the london police. i’m sure they’ll help you track down some help.

12:02am Aaron
I’ll call you in the morning Rick.

Categories: General, World Tags: , , ,

Dinosaurs rock the Birthday

August 17th, 2009 Aaron Baer No comments

Fun was had by one and all at Holden’s 4th Brithday Party this weekend. Thanks to Brian and Andrea for hosting a prehistoric party!



Categories: General, Self Tags:

Re-Brooklyn

August 12th, 2009 Aaron Baer No comments

My favorite part of this site is to look at the difference in the size of the trees. So much starkness of the original shots are replaced by trees sometimes taking up the entire shot.

Posted via web from Aaron Baer

Categories: General Tags:

rolling from the blackberry

July 7th, 2009 Aaron Baer No comments

Ok so there is a new wordpress blackberry application for that integrates with your wordpress blog. That’s what i’m using to post this as a test. Nice features simple to use and it will be interesting to see what the result is. I’ve added a wicked cool picture for some true blogging from you phone excitement.

I think they’ve also just put out a iPhone/Touch app too that i’m looking forward to testing.

Hope everyone is finding themselves well as we make our way into the summer. We’re doing well here. Weekend at the coast coming up. Can’t wait!

Categories: General Tags: ,

Dude Knows how to Dance

May 8th, 2009 Aaron Baer No comments

Categories: General Tags: , ,

Lavi’s First Dentist Visit

February 24th, 2009 Aaron Baer No comments

Lavi had his first Dentist visit this morning. The report was "He did awesome! He let them do everything! No cavities!" 

Which is awesome. I can't wait to talk to him about it tonight.

Posted via email from slyness’s posterous

Categories: General Tags:

Happy New Year!

December 31st, 2008 Aaron Baer No comments

I just wanted to take a  moment to wish everyone a Happy New Year! All the best to everyone who might read this and everyone else that I know who won’t. I wish each and every one of you luck and good life in the coming year. It’s destinted to be a doosy but hopfully the world around us will benifit from what’s coming around the corner.

 

Aaron at Manzanita Beach 2008

Aaron at Manzanita Beach 2008

For me there will be another member of our family this year, the first one will start school, work will be more consistantly busy than previous years, which I hope that will prove enough not to have it just disappear all of a sudden, and I’m sure there will be my share of unknown surprises. Here’s to riding my bike more often, working on more personal technological projects to make myself smarter, and having a blast adventuring with my family. Here is a toast to you in what the new year brings to your plate. And here’s a toast to the World, good luck with that one, you’ve got your work cut out for you.

 

Eden and Lavi Newport 2008

Eden and Lavi Newport 2008

Happy New Year to You! Here comes 2009!

Categories: General, Self, World, pdx Tags: , ,