Only allow inbound call from canada

hi all,

at first I thought my question was very simple. but I can’t find an easy answer…

I keep getting call/spam at anytime during the day for air-canada or free ipad, free trip… you know those right…
and they all come from US area code.

best I would like to route inbound call from US area code to a IVR to filter out robots (like dial 4346 is you are human)
and let Canadian area code through…

or, simply blacklist all US area code

or, only allow Canadian area code.

im pretty open to ideas…

BTW, I run trixbox. im open to change it if another system can do the work while trixbox can’t.
only reason I run trixbox is because it serve me well.

thanks