Finding the Carrier of a Cell Phone Number in PHP
By: George Huger
June 20, 2011
Often web apps need to send SMS messages to their users (for example: balance alerts, reminders, notifications). To send these text messages from within your app, you basically have 2 options:
1) Pay Twilio and Tropo for the use of their APIs, for roughly a penny per message.
2) Send an email directly to their carrier’s mail-to-SMS gateway – a free service most carriers provide, which will translate your email into an SMS sent to their subscribers’ phone
Twilio and Tropo are about as easy as it gets to integrate (REST-like APIs that return JSON/POX), but you pay for every single message and that can add up quickly. So #2 (mail-to-SMS gateways) starts to look pretty good.
But there’s some problems with mail-to-SMS gateways:
1) Each carrier has their own format. For example, T-Mobile’s gateway is number@tmomail.net (for the US), AT&T’s is number@txt.att.net (for most of their customers), and Verizon is number@vtext.net (unless you used to be with Alltel – then its number@message.alltel.com). A big list of mail-to-SMS-gateways is available on Wikipedia.
Bonus:some carriers want the international code prepended (the 1 in front of the number, for the US), some carriers don’t. (e.g., T-Mobile does, AT&T doesn’t)
2) Some carriers require authentication (Sprint) or don’t have a mail-to-SMS gateway at all (Google Voice).
3) If the user ports their number to a different carrier you’ll have to detect it and react accordingly.
So you’ll have to figure out what carrier they’re using in order to direct the email and meet whatever requirements – which usually means asking the user to choose their carrier from a list.
There is a better way! What if we could detect the carrier automatically?
It turns out you can. The lovely folks at CloudVox made an API that does exactly that – you give it a phone number, and it tells you the carrier and if its a cell-phone or landline. Its 100% free, with no API keys/credentials required.
Its hosted at digits.cloudvox.com, along with example calls/responses (full docs are here). It speaks JSON over HTTP.
This gives us a much better user experience:
1) User inputs their number, no carrier dropdown needed
2) We use CloudVox’s API to determine their carrier
3) Try to send them an SMS, and have them confirm ownership in the normal way (i.e., enter a confirmation code)
This will cover most people, and is free outside of the development time. If there was an error (i.e., we couldn’t find the number with CloudVox’s API, or we did but the carrier doesn’t support mail-to-SMS), we can fall back to Twilio or Tropo. We’re still paying a few cents here and there, but the default case is free.
Here’s some example code in PHP, for querying CloudVox’s API:
Source : http://illuminatikarate.com/blog/finding-the-carrier-of-a-cell-phone-number-in-php/
Comments
Post a Comment
Silahkan isi komentar atau iklan baris Anda, Jangan lupa visit social media kami di FB/Twitter/Instagram @alamatclick