Generer varsler fra webappen din med Pushover API

Hva du skal skape

Pushover er en av mine favoritt tjenester de siste årene; det gjør det enkelt og rimelig for utviklere å sende pushvarsler til iOS- og Android-enheter uten å måtte utvikle sin egen applikasjon. 

Det har også nylig lagt til notisbøker på skrivebordet også. Tjenesten er stort sett gratis for lavt nivåbruk, og apps krever bare en $ 4,99 avgift etter en fem-dagers gratis prøveversjon; Det er ingen månedlig avgift. Arbeide med sin API er grei, og det finnes biblioteker tilgjengelig for en håndfull forskjellige språk.

Mens en rekke front-end-apputviklere integrerer med Pushover, f.eks. IT, jeg synes det er mest nyttig som utvikler for å motta varsler relatert til mine egne applikasjoner og webservere. For eksempel har jeg integrert Pushover i min Simple Monitoring-applikasjon for å varsle meg om nettsidefeil, samt å sende to ganger daglig hjerteslagmeldinger når ingenting er galt. Hvis MySQL mislykkes eller min DNS går ned, mottar jeg en rask varsling til min iPhone. 

Tilsvarende integrerte jeg Pushover i SimplifyEmail for å sende varsler når e-post med bestemte søkeord ankommer som "presserende" eller fra bestemte avsendere som "Tom McFarlin" (Envato's Code editor).

Slik ser du på Pushover-varsler på telefonen din:

Pushover tilbyr en rekke lyder for å tilpasse varsler, og den støtter også brukerkonfigurerbare stille timer, slik at du ikke trenger å bli våknet midt om natten med mindre du vil være:

Bare husk, ekte SysAdmins sover ikke!

Komme i gang med Pushover

For å komme i gang med Pushover, besøk nettstedet og registrer deg:

Deretter skal du installere enten mobil applikasjon eller stasjonær nettleservisningsstøtte. Hver tilbyr fem dager gratis bruk før du blir bedt om å kjøpe hver for $ 4,99. For iOS- og Android-appene kan du bare laste dem ned fra app-butikkene.

Når du installerer mobilappen, vil den be deg om å logge på og angi et enhedsnavn du velger, f.eks. iPhone.

Det er litt annerledes å sette opp de nettleserbaserte varslene på skrivebordet. Gå til Pushover for Desktop-siden og velg et enkelt navn for din Pushover-nettleservarsel:

Oppgi nettleseren din for å tillate varsler:

Deretter ser du Pushover-skrivebordet i nettleser-appen:

I siste instans vil skrivebordsbeskjeder fra Pushover se slik ut:

Når du har installert Pushover på enheten og nettleserne, kan du begynne å sende testvarsler fra Pushover-nettstedet:

Men moroa er bare begynnelsen - la oss begynne å bruke Pushover API.

Utvikle med Pushover API

Pushover krever at du registrerer hvert program. Bare besøk appsiden din:

 Og registrer en ny søknad:

Du får en API-token som skal brukes til å sende varsler fra din søknad:

Pushover-hjemmesiden inneholder noen enkle eksempler på å sende meldinger med curl:

curl_setopt_array ($ ch = curl_init (), array (CURLOPT_URL => "https://api.pushover.net/1/messages.json", CURLOPT_POSTFIELDS => array ("token" => "din api-token" "user" => "brukernavn", "melding" => "hallo verden"), CURLOPT_SAFE_UPLOAD => true,)); curl_exec ($ ch); curl_close ($ ch);

Men, for enkel skjerm og forenkle e-post, bruker jeg Chris Schalenborghs PHP Pushover-bibliotek. I SimpleMonitor bruker jeg for eksempel en bakgrunns CronController som kjører alle tester sluttbrukeren konfigurerer gjennom nettbrukergrensesnittet: 

klasse CronController utvider Controller public function actionIndex () $ result = Innhold :: modell () -> testAll (); $ this-> render ('index', array ('result' => $ resultat,));  

Her er et eksempel på Simple Monitors liste over mine sjekker som utløser forskjellige Pushover notisjonslyder:

Min TestAll metode, kalt av cron, behandler hver av de brukerdefinerte testene. Hvis det oppstår en feil, underretter den hver registrert enhet. Hvis det ikke er feil, bestemmer det om det er på tide å sende en hjerteslagsmelding, og la meg få beskjed om at skjermen fortsatt er oppe:

offentlig funksjon testAll () $ str = "; $ feil = false; // overvåke alle innholdsobjekter $ sjekker = Innhold :: modell () -> findAll (); foreach ($ sjekker som $ element) // utfør test $ str. = '

Kontrollerer '. $ Element [' navn '].' '' '; $ result = Innhold :: modell () -> test ($ item ['id']); // hvis det oppstår en feil, send varsel til enheten hvis (! $ result-> status) if ($ item ['type'] == selv :: TYPE_CHANGES) $ temp_result_string = 'Side endret'; ellers $ temp_result_string = 'Mislyktes'; $ Str. = $ Temp_result_string.
'; $ str. = 'Vennligst sjekk'. $ item ['url']. '
'; hvis ($ item ['device_id'] == 0) // send til alle enheter $ devices = Device :: model () -> findAll (); foreach ($ enheter som $ enhet) Innhold :: modell () -> varsle ($ enhet, $ item ['name']. ". $ temp_result_string, 'Vennligst sjekk inn ...', $ item ['url'] 'denne siden', 1, $ item ['sound']); $ str. = 'Notifying'. $ enhet ['navn']. '
'; ellers $ device = Enhet :: modell () -> findByPk ($ item ['device_id']); Innhold :: modell () -> varsle ($ enhet, $ item ['name']. ". $ Temp_result_string, 'Vennligst sjekk inn ...', $ item ['url'], 'denne siden', 1, $ element ['sound']); $ str. = 'Notifying'. $ enhet ['navn']. '
'; $ str. = '

'; $ feil = sant; ellers $ str. = 'suksess

'; // sjekk for å sende hjerteslag hvis (! $ feil) // bare gi meg beskjed med hjerteslag hver hjerteslag_intervalltid // notat: cron må løpe hvert 10. minutt eller endre 10 nedenfor for å passe intervallet // tidspunktet for dato ( 'Jeg')<10 is to send heartbeat only in first part of any hour $setting = Setting::model()->getSettings (); hvis ((dato ('G')% $ innstilling ['pushover_heartbeat_interval']) == 0 og dato ('jeg')<10) $this->sendHeartbeat (); $ Str. ='

Hjerteslag sendt.

'; ellers $ str. = '

Hoppet hjerteslag for nå.

'; returnere $ str;

Min varslingsmetode er det som faktisk kaller Pushover PHP-biblioteket for å sende meldingene. Dette er hva du kan bruke i din egen applikasjon:

 // send melding til admin mobilenhet via pushover offentlig funksjon varsle ($ enhet, $ title = ", $ message =", $ url = ", $ urlTitle =", $ prioritet = 1, $ lyd = 'gamelan', $ debug = false) if ($ device ['send_email'] <> Enhet :: SEND_EMAIL) // last pushover-tasten fra Innstillinger $ setting = Innstilling :: modell () -> getSettings (); $ po = ny Pushover (); $ Po-> setToken (innstilling $ [ 'pushover_app_api_token']); $ Po-> setUser ($ anordningen [ 'pushover_user_key']); $ Po-> setDevice ($ anordningen [ 'pushover_device']); $ Po-> setSound ($ lyd); $ Po-> setTitle ($ tittel); $ Po-> setMessage ($ melding); hvis ($ url <> ") $ po-> setUrl ($ url); hvis ($ urlTitle <>") $ po-> setUrlTitle ($ urlTitle);  $ po-> setPriority ($ prioritet); $ Po-> setTimestamp (tid ()); $ Po-> setDebug (true); $ go = $ po-> send (); hvis ($ debug) echo '
'; print_r ($ gå); ekko '
';

Som utvikler har jeg funnet Pushover å være enormt nyttig for å levere varsler i fravær av en dedikert mobilapplikasjon. For meg er Pushover mobilapp som et SysAdmin-dashbord som jeg ikke måtte bygge. Men det er også flott å sende varsler for viktige e-postmeldinger eller andre serverhendelser. Det er også morsomt å prankere dine venner hvis du kan få tak i brukertokenene og enhetens navn; men jeg ville aldri gjøre det.

Konklusjon

Jeg håper du liker å bruke Pushover så mye som jeg har. Hvis du ønsker å utforske alternative tjenester til Pushover, sjekk ut Boxcar og Panacea. Jeg vil gjerne høre tankene dine. 

Vennligst legg inn eventuelle kommentarer, rettelser eller flere ideer nedenfor. Du kan bla gjennom mine andre Tuts + tutorials på min forfatterside eller følge meg på Twitter @ reifman.