# Copyright(c) 2010 Mike Telis # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. # Click "View raw file" in the lower right for the best copy/paste view AREA_CODE = '717' # my area code GV_USER = 'username@gmail.com' # my GV e-mail address (user@gmail.com) GV_PASS = 'GV password' # my GV password CB_NUMBER = '1aaaxxxyyyy' # my 11-digit SIP number (only one) SPEED_DIAL = { # my speed dial numbers '1' => '19879879876', # Mom '123' => '12345678901', # Work '45' => '17479876543', # Gizmo BFF '411' => '8004664411', # Google 411 '266' => '4153767253@podlinez.com', # CNN Headlines } begin sys.Log "** Call from #{req.Header.From} to #{req.URI.User} **" if sys.Out # if outbound call num = req.URI.User.to_s # Get a string copy of the number to dial num = SPEED_DIAL[num] || num # Substitute with speed dial entry, if any case num when /@/ then sys.Dial num # URI dialing when /^[2-9]\d{6}$/ # Local call, 7-digit number num = '1'+ AREA_CODE + num # prefix it with country and area code when /^[01]?([2-9]\d{9})/ # US number with or without country code num = '1' + $1 # add country code and truncate number to 10-digit when /^(011|00|\+)(\d{9,})/ # international number num = '+' + $2 # GoogleVoiceCall works with '+' prefix only else sys.Respond 603, 'Wrong number, check & dial again' end sys.Log "Calling #{num} via Google Voice" sys.GoogleVoiceCall GV_USER, GV_PASS, CB_NUMBER, num, '.*', CB_NUMBER =~ /^1747/ ? 7 : 1, 30 else # sys.Out sys.Dial "#{sys.Username}@local" end rescue sys.Log("** Error: " + $!) unless $!.to_s =~ /Thread was being aborted./ end