Genereer meldingen van uw webapp met de Pushover API

Wat je gaat creëren

Pushover is de afgelopen jaren een van mijn favoriete diensten; het maakt het gemakkelijk en goedkoop voor ontwikkelaars om pushmeldingen naar iOS- en Android-apparaten te verzenden zonder hun eigen applicatie te hoeven ontwikkelen. 

Het heeft onlangs ook meldingen voor desktopbrowser toegevoegd. De service is grotendeels gratis voor gebruik op een laag niveau en de apps vereisen slechts een vergoeding van $ 4,99 na een gratis proefperiode van vijf dagen; er is geen maandelijkse vergoeding. Werken met zijn API is eenvoudig en er zijn bibliotheken beschikbaar voor een handvol verschillende talen.

Hoewel een aantal front-end app-ontwikkelaars integreren met Pushover, b. IT, ik vind het het meest nuttig als ontwikkelaar voor het ontvangen van meldingen met betrekking tot mijn eigen applicaties en webservers. Ik heb bijvoorbeeld Pushover geïntegreerd in mijn Simple Monitoring-applicatie om mij te waarschuwen voor website-fouten en om tweemaal per dag hartslagmeldingen te sturen als er niets aan de hand is. Als MySQL faalt of mijn DNS uitvalt, ontvang ik een snel alarm voor mijn iPhone. 

Op dezelfde manier heb ik Pushover geïntegreerd in SimplifyEmail om meldingen te verzenden wanneer e-mails met specifieke zoekwoorden aankomen, zoals "urgent" of van specifieke afzenders zoals "Tom McFarlin" (de coderedacteur van Envato).

Hier ziet u hoe Pushover-meldingen er op uw telefoon uitzien:

Pushover biedt een verscheidenheid aan geluiden om meldingen aan te passen en het ondersteunt ook door de gebruiker instelbare stille uren, zodat u niet midden in de nacht hoeft te worden gewekt, tenzij u:

Onthoud gewoon dat echte SysAdmins niet slapen!

Aan de slag met Pushover

Ga om aan de slag te gaan met Pushover naar de website en meld u aan:

Installeer vervolgens de mobiele applicatie of de ondersteuning voor de ondersteuning van de desktopbrowser. Elke biedt vijf dagen gratis gebruik voordat je deze voor $ 4,99 moet kopen. Voor de iOS- en Android-apps kunt u ze gewoon downloaden van de app-winkels.

Wanneer u de mobiele app installeert, wordt u gevraagd u aan te melden en een apparaatnaam op te geven van uw keuze, bijvoorbeeld iPhone.

Het instellen van de bureaubladbrowser-gebaseerde meldingen is een beetje anders. Ga naar de Pushover for Desktop-pagina en kies een eenvoudige naam voor uw pushover-browsermeldingen:

Instrueer uw browser om meldingen toe te staan:

Dan zul je de Push-over desktop-browser-app zien:

Uiteindelijk zien desktopmeldingen van Pushover er als volgt uit:

Zodra u Pushover op uw apparaat en webbrowser hebt geïnstalleerd, kunt u beginnen met het verzenden van testmeldingen van de Pushover-website:

Maar het plezier begint net - laten we aan de slag gaan met de Pushover API.

Ontwikkelen met de Pushover API

Pushover vereist dat u elke applicatie registreert. Ga naar je apps-pagina:

 En registreer een nieuwe applicatie:

U krijgt een API-token te gebruiken om meldingen van uw toepassing te verzenden:

De thuispagina van Pushover biedt enkele eenvoudige voorbeelden van het verzenden van meldingen met Krul:

curl_setopt_array ($ ch = curl_init (), array (CURLOPT_URL => "https://api.pushover.net/1/messages.json", CURLOPT_POSTFIELDS => array ("token" => "uw-api-token", "gebruiker" => "uw-gebruiker-id", "bericht" => "hallo wereld",), CURLOPT_SAFE_UPLOAD => waar,)); curl_exec ($ ch); curl_close ($ ch);

Maar voor Simple Monitor en E-mail vereenvoudigen, gebruik ik de PHP Pushover-bibliotheek van Chris Schalenborgh. In SimpleMonitor gebruik ik bijvoorbeeld een achtergrond CronController die alle tests uitvoert die de eindgebruiker configureert via de webgebruikersinterface: 

klasse CronController breidt Controller uit public function actionIndex () $ result = Content :: model () -> testAll (); $ this-> render ('index', array ('result' => $ result,));  

Hier is een voorbeeld van de lijst met eenvoudige controles van mijn controles die verschillende pushover-meldingsgeluiden activeren:

Mijn testall methode, aangeroepen door cron, verwerkt elk van de door de gebruiker geconfigureerde tests. Als er een fout optreedt, meldt dit elk geregistreerd apparaat. Als er geen fout is, bepaalt deze of het tijd is om een ​​heartbeat-melding opnieuw te verzenden, zodat ik weet dat de monitor nog steeds actief is:

public function testAll () $ str = "; $ errors = false; // monitor alle inhoudsitems $ checks = Content :: model () -> findAll (); foreach ($ controleert als $ item) // voer de test $ str. = '

Controle '. $ Item [' name '].' ... '; $ result = Content :: model () -> test ($ item ['id']); // als er een foutmelding naar het apparaat wordt verzonden als (! $ resultaat-> status) if ($ item ['type'] == self :: TYPE_CHANGES) $ temp_result_string = 'Pagina gewijzigd'; else $ temp_result_string = 'Mislukt'; $ Str. = $ Temp_result_string.'
'; $ str. = 'Controleer dit'. $ item ['url']. '
'; if ($ item ['device_id'] == 0) // verzend naar alle apparaten $ devices = Device :: model () -> findAll (); foreach ($ devices as $ device) Content :: model () -> notify ($ device, $ item ['name']. ". $ temp_result_string, 'Please check in ...', $ item ['url'], 'deze pagina', 1, $ item ['sound']); $ str. = 'Notifying'. $ device ['name']. '
'; else $ device = Device :: model () -> findByPk ($ item ['device_id']); Inhoud :: model () -> verwittigen ($ device, $ item ['name']. ". $ Temp_result_string, 'Please check in ...', $ item ['url'], 'this page', 1, $ item ['sound']); $ str. = 'Notifying'. $ device ['name']. '
'; $ str. = '

'; $ errors = true; else $ str. = 'succes

'; // controleer voor het verzenden van heartbeart als (! $ fouten) // mij alleen met hartslag elke heartbeat_interval uren / noot meldt: opmerking: cron moet elke tien minuten worden uitgevoerd of 10 hieronder wijzigen om aan te passen aan uw interval // het punt van de datum ( 'ik')<10 is to send heartbeat only in first part of any hour $setting = Setting::model()->getSettings (); if ((datum ('G')% $ instelling ['pushover_heartbeat_interval']) == 0 en datum ('i')<10) $this->sendHeartbeat (); $ Str. ='

Heartbeat verzonden.

'; else $ str. = '

Overgeslagen hartslag voor nu.

'; return $ str;

Mijn Notify-methode is wat de Pushover PHP-bibliotheek daadwerkelijk belt om de meldingen te verzenden. Dit is wat je zou kunnen gebruiken in je eigen applicatie:

 // verzend notificatie naar admin mobiel apparaat via pushover public function notify ($ device, $ title = ", $ message =", $ url = ", $ urlTitle =", $ priority = 1, $ sound = 'gamelan', $ debug = false) if ($ device ['send_email'] <> Device :: SEND_EMAIL) // laad-push-over van Instellingen $ setting = Instelling :: model () -> getSettings (); $ po = nieuwe Pushover (); $ PO> setToken ($ instelling [ 'pushover_app_api_token']); $ PO> setUser ($ apparaat [ 'pushover_user_key']); $ PO> setDevice ($ apparaat [ 'pushover_device']); $ PO> setSound ($ geluid); $ PO> setTitle ($ title); $ PO> setMessage ($ message); if ($ url <> ") $ po-> setUrl ($ url); if ($ urlTitle <>") $ po-> setUrlTitle ($ urlTitle);  $ po-> setPriority ($ prioriteit); $ PO> setTimestamp (time ()); $ PO> setDebug (true); $ go = $ po-> send (); if ($ debug) echo '
'; print_r ($ go); echo '
';

Als ontwikkelaar heb ik ontdekt dat Pushover enorm nuttig is voor het leveren van meldingen in afwezigheid van een speciale mobiele applicatie. Voor mij is de mobiele app van Pushover als een SysAdmin-dashboard dat ik niet hoefde te bouwen. Maar het is ook geweldig voor het verzenden van meldingen voor belangrijke e-mails of andere serverevenementen. Het is ook leuk om je vrienden voor de gek te houden als je hun gebruikertokens en apparaatnamen kunt bemachtigen; maar dat zou ik nooit doen.

Conclusie

Ik hoop dat je het leuk vindt om Pushover zoveel te gebruiken als ik. Als je alternatieve diensten voor Pushover wilt verkennen, bekijk dan Boxcar en Panacea. Ik zou graag je gedachten horen. 

Plaats hieronder eventuele opmerkingen, correcties of aanvullende ideeën. Je kunt bladeren door mijn andere Tuts + tutorials op mijn auteurspagina of me volgen op Twitter @reifman.