Alerting Yourself
Problem
I’d like to receive email alerts when my app is serving up 200ND (No Data) or 404 (Not Found) errors.
Solution
Since you can make calls from any server to Facebook through the
Client, you can schedule a cron
job
on your server to use something like curl
to request a page that runs the
following code:
<?php $hoursAhead = 3; $appId = 12345; $appName = 'My App name goes here'; $myEmail = 'me@mydomain.com'; $yesterday = mktime($hoursAhead,0,0,date("m"),date("d")-1,date("Y")); $query = 'SELECT canvas_page_views_http_code_200ND, canvas_page_views _http_code_404 from metrics WHERE end_time = ' . $yesterday . ' AND period = 86400;'; $metrics = $facebook->api_client->fql_query($query); if($metrics && ($metrics[0]['canvas_page_views_http_code_200ND'] > 0 || $metrics[0]['canvas_page_views_http_code_404'] > 0) ){ $headers = 'From: do-not-reply@mydomain.com' . "\r\n" . 'X-Priority: 1'; $message = $appName . ' had ' . $metrics[0]['canvas_page_views _http_code_200ND'] . ' 200ND errors'; $message .= ' and ' . $metrics[0]['canvas_page_views_http_code_404'] . ' 404 errors'; $message .= ' on ' . date('F dS, Y', $yesterday) . '.'; $message .= ' View more info at http://www.facebook.com/business/ insights/app.php?id=' . $appId . '&tab=httpreq'; $success = mail($myEmail, '[Facebook Errors]: ' . $appName, $message, $headers); } ?>
The little bit of configuration at the top will customize this for your app.
Discussion
Note that this code requires you to have an SMTP server running locally ...
Get Facebook Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.