One of the key components to enable word-of-mouth spreading of a good service, is the ability for one user to share the experience with their friend. Duh.
In mobile, how can you enable that? SMS your friend, Email your friend, Twitter, maybe others. Facebook connect has been anticipated for ages on mobile web, but they seem to like only iphone apps, for now.
Trying not to force a behavior change or forcing someone to type in a full email address on their phone, I was looking for a simple, and free way for users to "tell their friends" over SMS.
If you have a service that uses SMS, then you're working with an SMS aggregation, and, for the most part, they need to know the carrier as well as the phone number you're sending the SMS to. But, what if you don't know the carrier?? I mean, the user of the service may know the phone number of their friend, but is it realistic to expect them to know the carrier? No, it's not.
So, you turn to the aggregation and ask them about reverse carrier lookup.
News flash: On top of the $.03 the resulting SMS will cost, the lookup will be additional $.02-$.03 and some 2-3 digit monthly minimum. Right, the US carriers are starving and need to make more money.
Alright, Google search takes you into this terrific FREE White pages feature. You can reverse lookup mobile carriers by phone numbers, and, from my experiments, they have it right!
Next step: sign up for their API. But: the API returns completely different, incorrect results!
I asked their API people for their thoughts on this, and here's what I got back:
"The carrier information available through our free, developer API is the same information we display in our search results on WhitePages. So, in terms of search results for a reverse phone query, the information is the same. However, on WhitePages, we offer an exclusive “Mobile Carrier Lookup” feature. We do not plan on including the mobile carrier information available through the “Mobile Carrier Lookup” feature on WhitePages via the free, developer API."
I'm speechless. This is really valuable information that's available one place and not in the API. Easily fixable, but they don't seem to see the value. ugh.
Showing posts with label geeky stuff. Show all posts
Showing posts with label geeky stuff. Show all posts
Thursday, December 3, 2009
Wednesday, May 6, 2009
Reporting content downloads: geeks area
Hi everyone,
here's a little contribution to the world from yours truly. This time, highly geeky (beware!).
I had a problem where I needed to report content downloads by mobile phones. Most mobile browsers I know do not allow download and redirect, or vice versa, which would have been nice, as I'd report on the download into the database before or after the actual download happens.
Then I turned to the generic reporting service that my hosting provider has. They have two services they use for reporting. One's a fancy service (smartstats), but in my host environment, their API wasn't installed.
The second option was to go to the raw log files. Easy peasy. Well, not that easy:
- The log files live in a hidden system folder
- The logs are zipped, and host (which is shared) doesn't have an unzipping solution installed in their GAC. You need a 3rd party (ideally free) unzipping utility (I'm using .Net) that can live in the bin folder.
Locating the unzip utility was easy, and I found a great one (kudos!) here. I didn't deal with the documentation and went right for the 'reduced' dll version since I figured if I'm only unzipping a file, that would be sufficient. looks like it worked.
The next piece was to grab the zip files somehow. That was a pain and a waste of time. I tried to go for FTP, but counldn't figure it out. Eventually I found this 3-line piece which did the trick.
Here's a snippet of the relevant pieces of the code for your convenience (below). It's missing one important thing: clean up the files once you're done.
Enjoy! (Hope this will save you some time if you're having similar challenges)
public static processZipFile()
{
string zipFileName = "ex"+ t.AddDays(-1).ToString("yyMMdd"),
// temporary folder the zip file has been saved at
tempPath = AppDomain.CurrentDomain.BaseDirectory + "templog\\";
try
{
// get the zip file from the hidden folder on the server
copyOver(zipFileName);
// open the file for unzipping
Ionic.Zip.ZipFile zip = ZipFile.Read(tempPath + zipFileName + ".zip");
foreach (ZipEntry e in zip)
{
// unzip the file
e.Extract(tempPath, true);
// do what you need to do with the file
}
...
}
// get the zip file from the remote server and copy it to a temporary folder
public static void copyOver(string fileName)
{
WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential("username", "password");
wc.DownloadFile("ftp://ftp.sample.com/httplog/"+fileName+".zip", AppDomain.CurrentDomain.BaseDirectory + "templog/"+fileName+".zip");
}
Subscribe to:
Posts (Atom)