SMS Alternative

Discussion in 'iPhone' started by ViViDboarder, Jan 12, 2009.

  1. macrumors 68040

    ViViDboarder

    Joined:
    Jun 25, 2008
    Location:
    USA
    #1
    I've been using my Ymail account to get push emails to my phone and emailing the appropriate SMS gateways for each carrier. This works fine for me, but there is one big problem. I have to ask everyone their carrier and then look up the gateway and then add it to my Address Book.

    NOT ANYMORE!

    I wrote an AppleScript to check all selected Address Book entries and automatically look them up and add them if a gateway is found. :D

    This is my first AppleScript and I didn't know it was object oriented, so I know the code is long and ugly, but it works.

    If anyone has a Mac and wants to SMSify their Address Book, copy this code and paste it into Script Editor. From there select any or all your Address Book cards and click run!

    PS: I just change the gateways to the MMS gateways found on http://en.wikipedia.org/wiki/SMS_gateways to have those too, although I can't send MMS with Yahoo, only Gmail for some reason. :p

    EDIT: Newer modified version by ephramz has been posted over on http://www.macosxhints.com/article.php?story=2009070922403951 Thanks for keeping it alive and giving me credit too!

    Code:
    -- RUNS ON SELECTED ENTRIES
    -- this script adds email addresses for selected AddressBook cards
    -- for the SMS gateways associated with the cellphone number provided on the card
    -- This script checks for and does not act on duplicates
    -- May not work 100% if number was brought from another carrier
    
    
    -- beginning of bash script command
    set command to "curl \"http://www.whitepages.com/carrier_lookup?carrier=att&name_0=&number_0="
    -- used for parsing the webpage
    set astid to AppleScript's text item delimiters
    set justBefore to "<td id=\"status_column\" valign=\"middle\""
    
    tell application "Address Book"
    	-- makes a list of all selected entries
    	set mylist to selection
    	-- iterates for each person
    	repeat with this_person in mylist
    		-- makes list of each phone number for this_person
    		set phonesList to every phone of this_person
    		-- iterates for each phone number
    		repeat with phonenumber in phonesList
    			-- if the phonenumber is a mobile number extract the number
    			if label of phonenumber is "mobile" then
    				-- gets the mobile number
    				set theNumber to value of phonenumber
    				-- makes mobile number URI compatable
    				--set theNumber to do shell script "perl -e 'use URI::Escape; print uri_escape(\"" & theNumber & "\")';"
    				-- removes spaces - and () and . from phone number
    				set illegalCharacters to {" ", "-", "(", ")", "."} -- Whatever you want to eliminate.
    				set replaceWith to ""
    				repeat with thisChar in illegalCharacters
    					set AppleScript's text item delimiters to {thisChar}
    					set theNumber to text items of theNumber
    					set AppleScript's text item delimiters to {replaceWith}
    					set theNumber to theNumber as Unicode text
    				end repeat
    				theNumber
    				-- adds the number and ending " to the command
    				set theCommand to command & theNumber & "\""
    				-- quotes the command to ensure & is executed fine
    				set quotedCommand to quoted form of theCommand
    				-- switches to bash and gets the source of the page as T
    				set T to (do shell script "/bin/bash -c " & quotedCommand)
    				-- begin parsing
    				set AppleScript's text item delimiters to justBefore
    				set lastPart to text item 2 of T
    				set AppleScript's text item delimiters to "<td>"
    				set X to text item 2 of lastPart
    				set AppleScript's text item delimiters to "</td>"
    				set carrier to text item 1 of X
    				
    				-- reset the delimiter
    				set AppleScript's text item delimiters to astid
    				-- creates the email address for the phone number
    				set theEmail to ""
    				if carrier is "Verizon" then
    					set theEmail to theNumber & "@vtext.com"
    				end if
    				if carrier is "AT&T/Cingular" then
    					set theEmail to theNumber & "@txt.att.net"
    				end if
    				if carrier is "T-Mobile" then
    					set theEmail to theNumber & "@tmomail.net"
    				end if
    				if carrier is "Cellular One" then
    					set theEmail to theNumber & "@mobile.celloneusa.com"
    				end if
    				if carrier is "Alltel Wireless" then
    					set theEmail to theNumber & "@message.alltel.com"
    				end if
    				if carrier is "Sprint PCS" then
    					set theEmail to theNumber & "@messaging.sprintpcs.com"
    				end if
    				
    				-- is there a dupe or no email found?
    				set dupe to false
    				
    				-- if no email address found
    				if theEmail is "" then
    					set dupe to true
    				end if
    				
    				-- checks all email addresses of the person for duplicates
    				set emailList to every email of this_person
    				repeat with existingMail in emailList
    					if value of existingMail is equal to theEmail then
    						set dupe to true
    					end if
    				end repeat
    				-- if there are no duplicates, add the new email address
    				if dupe is false then
    					make new email at end of emails of this_person with properties {label:"mobile", value:theEmail}
    				end if
    				
    				
    			end if
    		end repeat
    	end repeat
    	
    	save addressbook
    	
    end tell
     
  2. macrumors 65816

    Joined:
    Aug 20, 2008
    #2
    I'll try this out in a bit. Looks good.

    Glad to see that somebody other than me use those free gateways instead of paying the carriers. :D

    I'm amazed you've managed to put up with YMail though .... ;)
     
  3. thread starter macrumors 68040

    ViViDboarder

    Joined:
    Jun 25, 2008
    Location:
    USA
    #3
    Yea, well it's the only one with Push service for my phone. It's pretty unreliable though. I get some of my messages hours later! How is that Push? When/if we get push Gmail, I'll switch that baby over. Also, like I mentioned, no MMS with Ymail, only with Gmail.

    BEGGING for Push Gmail!!!
     
  4. macrumors newbie

    Joined:
    May 9, 2009
    #4
    Awesome!!!

    great work! i can't believe that someone conceived this, let alone figured it out. with mobile data on phones nowadays, why pay for SMS ever again???
     
  5. macrumors 6502

    geekmommy4

    Joined:
    Feb 10, 2008
    Location:
    Texas
    #5
    Once again, I wish that I had a Mac! Looks like a very clever solution!
     
  6. macrumors 65816

    Joined:
    Aug 7, 2006
    #6
    I am a complete noob. How do I execute/run this script?
     
  7. macrumors G3

    TuffLuffJimmy

    Joined:
    Apr 6, 2007
    Location:
    Portland, OR
    #7
    Put it into the Applescript editor. I'm a little confused on how it works though...

    Care to explain, OP? Does it all just go through your email address?
     
  8. macrumors newbie

    Joined:
    May 9, 2009
    #8
    Just did this to all of my contacts in my address book. Works like a charm!! Thanks!
     
  9. thread starter macrumors 68040

    ViViDboarder

    Joined:
    Jun 25, 2008
    Location:
    USA
    #9
    Wow. After months people are interested, haha.

    Yea, you just pasted in the Applescript Editor and hit run.

    What it does:
    I found a website that lets you look up carriers of cellphone numbers. Actually, I found several, but the one that I use has the number search term in the address so I could put it into my code.

    Basically, it goes through all phone numbers in your address book, navigates to that website, finds the carrier name, and then it uses the email gateway to send SMS messages. I just put that in manually for each carrier that I could find the addresses for.

    I basically wanted to come up with something to save me a ton of time and decided I'd share it. I'd be glad to take any suggestions if you have anything.
     
  10. macrumors 6502

    Joined:
    Jul 24, 2008
    #10
    So what can you do with this? It just uses your email to let you receive texts for free?
     
  11. macrumors 65816

    Joined:
    Aug 20, 2008
    #11
    Vice versa.
     
  12. macrumors demi-god

    fishkorp

    Joined:
    Apr 10, 2006
    Location:
    Ellicott City, MD
    #12
    I'm sure many people will find this useful and thanks to the OP for that, but the logic in figuring out the provider is far from 100% accurate now. All the sites/tools used to determine that were based on certain providers having certain prefixes. With number porting now, that becomes an issue. For example, in Northeast Pennsylvania any of those services will determine that a 570-604-xxxx phone number belongs to T-Mobile. However, I have family with that prefix on AT&T, Verizon, and T-Mobile. So just a warning that this will not work 100% of the time now thanks to number porting. In most cases it'll still work, but if anyone's switched carriers in the last 5 or so years, you'll probably get undeliverable SMS emails.
     
  13. thread starter macrumors 68040

    ViViDboarder

    Joined:
    Jun 25, 2008
    Location:
    USA
    #13
    Yea, I realize that. It works pretty well and if you get a returned message then you know you have to fix that one. If it were fool proof there'd be no reason for anyone to get SMS.
     
  14. macrumors newbie

    Joined:
    May 9, 2009
    #14
    error: can't get text item 2 of ""

    i'm getting an error at this line:

    set lastPart to text item 2 of T

    is anybody else getting this error? any suggestions?
     
  15. macrumors G5

    Joined:
    Jun 22, 2009
    #15
    question.

    using the email gateways is free outgoing. But you still need a text plan to receive a reply.

    a) it will reduce the # of txt message you use stretching out your plan (i.e. 200 msgs will last longer since you're only getting, not sending

    b) if the person emails you back (not texts) than it's moot anyway since email to email is free with unlimited data.

    So it's a "send free" solution - not something to replace a plan...
     
  16. thread starter macrumors 68040

    ViViDboarder

    Joined:
    Jun 25, 2008
    Location:
    USA
    #16
    Sorry, I don't really know what that's all about. It worked with me.

    Yea, it's send free. They go from emails to emails. The other person would have to pay for their incoming though.
     
  17. thread starter macrumors 68040

    ViViDboarder

    Joined:
    Jun 25, 2008
    Location:
    USA
    #17
    Update

    A user took my script and posted it over at macosxhints.com (they gave me credit of course :D).

    There have been a few changes made by other users and updated versions can be found there.

    http://www.macosxhints.com/article.php?story=2009070922403951

    Also someone has converted it to an address book plugin. :D
     
  18. macrumors newbie

    Joined:
    Jul 27, 2010
    #18
    Number Portability

    Data24-7 offers an inexpensive service where you can look-up the carriers for your phone numbers. It is number-portability-aware; if somebody changes carriers, their new carrier will be updated in their service within a few hours.

    The website is: http://www.data24-7.com

    Pricing is $12 per month, and $0.006 per phone number.
     
  19. thread starter macrumors 68040

    ViViDboarder

    Joined:
    Jun 25, 2008
    Location:
    USA
    #19
    Well at least that spam is somewhat relevant...
     

Share This Page