Cum de a crea o interfață slack pentru aplicația dvs. php - blog php academy

Cum se creează o interfață slack pentru aplicația dvs. PHP

Dacă ați urmărit dezvoltarea instrumentelor de comunicare pentru birou în ultimul an sau înainte, sunt sigur că ați auzit multe despre Slack. La prima vedere, Slack este doar o altă aplicație de chat proiectat pentru mediul de afaceri, dar din cauza atenția pentru detalii și posibilitatea de a extinde, multe companii sunt deja spunând că această aplicație este foarte mult se va schimba modul în care vom lucra în viitor.







Ca dezvoltatori, avem de fiecare oportunitate de a fi o tendință și cred despre modul în care putem folosi Slack, ambele bazate pe interfața cu utilizatorul de chat, în aplicațiile noastre.

Prin urmare, în această lecție, veți învăța cum să începeți integrarea aplicațiilor dvs. PHP în Slack, astfel încât să poată trimite mesaje către canalul Slack și să răspundă la slash-ul comenzii.

Codul lecției constă din două părți:

  • Schelet, dar o interfață completă pentru interacțiunea cu Slack
  • Un exemplu de script simplu care folosește clasa Slack pentru a trimite notificări și a răspunde la o comandă slash

O căutare rapidă pe Google pe "Slack PHP" prezintă mai multe interfețe Slack create de diverși dezvoltatori, astfel încât să puteți lua un proiect deja existent pentru al conecta la aplicația dvs.

Cu toate acestea, API nu este deloc complicat și nu există niciun motiv să nu se distreze și să nu se apropie proiectul de cealaltă parte. Astfel, veți ști ce este în API (și în integrarea dvs.). Este întotdeauna bine să înțelegeți puțin aceste lucruri.

Accentul acestei lecții este crearea interfeței Slack, dar pentru a testa și a încerca să o folosim, avem nevoie și de o aplicație. Pentru aceasta, am decis să fac o mică aplicație PHP care nu folosește niciun cadru.

Iată cum funcționează această aplicație nemaipomenită:

1 Când porniți aplicația pentru prima dată, veți vedea butonul "Adăugați la slăbit", astfel încât aplicația să se poată conecta la canalul Skack.

2 Când faceți clic pe butonul, veți trece autentificarea OAuth pentru Slack. Când aplicația primește un jeton de acces la Slack, îl va salva într-un fișier text, astfel încât să îl puteți utiliza mai târziu când comunicați cu Slack.

3 După finalizarea autentificării OAuth, aplicația vă va arăta un câmp simplu de text care poate fi folosit pentru a trimite o notificare amuzantă ("Oh da, eu sunt un bot!") Pe canalul dvs. Slack.

4 Și în cele din urmă, în spatele scenei, aplicația va răspunde la comenzile slash pe care le tipăriți pe echipă sau pe echipa dvs. în canalul Slack atașat.

Cum de a crea o interfață slack pentru aplicația dvs. php - blog php academy

Puteți rula aplicația pe un server PHP pe Internet sau urmați instrucțiunile din lecție pentru al rula pe mașina locală.

Această aplicație demo este creată doar pentru demonstrație, astfel că, în cele din urmă, probabil veți obține interfața Slack și o veți atașa unui proiect existent WordPress, Laravel sau alt proiect PHP. În cursul lecției vom împărtăși cu dvs. idei despre modul în care puteți folosi clasa de interfață într-o aplicație reală în loc de demo-ul nostru simplu.

În primul rând, să începem prin crearea unei arhitecturi de proiect simple și să descompunem toate fișierele în locuri.

În dosarele proiectului, creați următoarea structură:

  1. php: Acesta este fișierul pentru aplicația de probă descrisă mai sus.
  2. slack-interface: un director care va conține interfața Slack pe care o vom crea în acest tutorial. Directorul va conține următoarele fișiere:
    1. slack-interface / class-slack.php: interfață Slack
    2. slack-interface / class-slack-access.php: O clasă care va conține informația de acces Slack și o va trece la interfață și o va folosi.
  3. slack-interface / class-slack-api-exception.php: Clasa de excepție pentru trecerea erorilor de la interfață la codul care o utilizează.

Apoi, atunci când fișierele sunt în loc, să adăugăm conținut la fiecare dintre ele, astfel încât să avem un cadru pentru dezvoltarea în continuare a funcționalității.

Începeți prin adăugarea formularului HTML principal și a unui cod de înlocuire în index.php:

Să vedem ce este scris în scenariu:

  • În linii 7-13, vom conecta mai întâi fișierele de bibliotecă și spune PHP pe care o vom folosi clase și Slack_API_Exception de a jocului nume spațiu Slack_Interface. Fișierele și o clasă nu există încă, dar vom ajunge în curând la ele.
  • Apoi, există două suporturi pentru funcțiile de ajutor. Prima funcție helper, initialize_slack_interface (liniile 19-26), va crea clasa Slack pentru sesiunea curentă.
  • A doua funcție ajutor, do_action (liniile 28-45) vor fi folosite pentru procesarea altele decât cea a paginii acțiune de redare - de exemplu, trimiterea de mesaje la canalul Slack, dar, de asemenea, primi comenzi primite de la Slack Slack.
  • Mai departe, după ajutorul funcțiilor, există o "principală" funcțională a aplicației noastre mici. Mai întâi, aplicația inițializează obiectul Slack (linia 52). Apoi, în liniile 54-59, verifică dacă acțiunea a fost declanșată de parametri. Dacă da, aplicația va efectua acțiunea utilizând ajutorul de ajutor do_action.
  • În restul scriptului, acesta este un simplu cod HTML (și un mic CSS, le-am scris în același fișier pentru simplitate), care redă forma pe care ați văzut-o în imaginea de mai sus

Apoi, adăugați conținutul la fișierele de clasă pentru a realiza interfața Slack.

În class-slack.php, adăugați următorul cod:

Clasa nu conține încă nicio altă funcționalitate decât constructorul substituentului și definiția adreselor URL pentru Slack API. În linia 2, veți vedea, de asemenea, că clasa este plasată în spațiul de nume Slack_Interface.

În mod similar, adăugați următorul cod la clasa-slack-access.php:

În cele din urmă, adăugați clasa-slack-api-exception.php la clasă:

Acum, am creat un cadru pentru aplicația Slack și suntem gata să începem să adăugăm funcționalitate.

Dar mai întâi, trebuie să punem aplicația pe Internet, astfel încât Slack să poată interacționa cu ea.

Pasul 2: Faceți serverul disponibil pe Internet.

Înainte de a vă putea înregistra cererea în Slack și a vă face să primească apelurile primite de la Slack, trebuie să o faceți mai întâi pe Internet.

Comenzile Slash au încă nevoie de aplicația pentru a utiliza protocolul HTTPS. Dacă nu aveți nevoie de comenzi și doriți doar ca aplicația dvs. să trimită mesaje, săriți această parte. Cu toate acestea, în această lecție, deoarece comenzile de intrare slash sunt o parte semnificativă a ceea ce am dori să facem, avem nevoie de o soluție care să ne permită să folosim HTTPS.

Dacă aveți deja configurate HTTPS, ar fi grozav.

O altă opțiune, în faza de dezvoltare, este utilizarea unui serviciu de tunel, cum ar fi localtunnel. Localtunnel furnizează serverului dvs. o adresă URL sigură în rețea care poate indica spre serverul dvs. web care rulează pe mașina dvs. locală. Aceasta nu este o opțiune pentru aplicațiile reale, dar atunci când testați funcționalitatea, simplifică foarte mult lucrarea (nu este nevoie să încărcați fișiere pe server) și vă oferă suport HTTPS.







Apoi porniți serverul web, marcând portul pe care îl va asculta.

Și la sfârșit, când serverul dvs. este în sus, porniți localtunnel din terminal folosind următoarele comenzi. Înlocuiți subdomeniul dvs. cu subdomeniul dorit și portul_port la portul serverului dvs.:

Cum de a crea o interfață slack pentru aplicația dvs. php - blog php academy

Odată ce serverul dvs. este disponibil de pe Internet, este timpul să vă înregistrați o nouă aplicație Slack.

Pagina Aplicație nouă arată astfel:

Cum de a crea o interfață slack pentru aplicația dvs. php - blog php academy

Pe această pagină, introduceți informații despre aplicația dvs. și faceți clic pe Creare aplicație pentru ao salva:

Când este creată aplicația Slack, o veți vedea în lista de pe pagina Aplicațiile mele. De acolo puteți modifica, dacă este necesar, informațiile despre aplicație, copiați acreditările API (care se află în departamentul de informații OAuth) pentru integrare:

Cum de a crea o interfață slack pentru aplicația dvs. php - blog php academy

Apoi, atunci când salvați acreditările API în aplicația dvs. PHP, ar fi bine să vă gândiți cum să faceți cererea dvs. cât mai sigură posibil.

În general, nu se consideră o practică bună să se comită astfel de informații în sistemul de control al versiunilor. În schimb, puteți utiliza una dintre opțiunile de mai jos:

  • O idee bună ar fi să stoca datele utilizatorului în baza de date, de exemplu, WorlPress plugin-ul, în cazul în care fiecare utilizator poate păstra propriile lor acreditările API și poate doriți să facă acest lucru, pentru a permite utilizatorilor să specifice datele direct din Panoul de administrare.
  • O altă opțiune (mai fiabile decât primul) este de a înregistra acreditările ca și constante în fișierul de configurare pe server (din nou, dacă folosiți WordPress, atunci în mod natural pe care o alegeți să wp-config.php). Asigurați-vă că fișierul de configurare nu poate fi schimbat din exterior (sau zakomichchen din sistemul de control al versiunilor).
  • Și ultima opțiune, puteți specifica ID-ul clientului și cheia secretă în variabilele de mediu de pe server. Astfel, informațiile nu vor fi stocate într-un fișier care poate fi deteriorat accidental în afara aplicației.

În implementarea noastră vom urmări combinația ultimelor două paragrafe. Pentru a vă asigura că Slack știe despre acreditările API, adăugați două funcții noi la clasa Slack:

Două funcții sunt practic copie una de cealaltă, așa că haideți să ne uităm la prima, get_client_id. să înțeleagă ceea ce fac:

  • La început, liniile 7-10, funcția verifică dacă ID-ul de utilizator a fost stocat într-o constantă numită SLACK_CLIENT_ID. Dacă este definită o constantă, funcția returnează o valoare.
  • Dacă constanta nu a fost definită, funcția continuă să verifice variabilele de mediu pentru o potrivire cu același nume (liniile 12-15).
  • În final, dacă ID-ul clientului nu este găsit, funcția returnează o valoare goală.

Pentru a putea utiliza această abordare, adăugați datele de acces la începutul index.php. sau chiar mai bine, într-un fișier PHP separat pe care îl includeți în index.php, dar nu se va angaja.

Autentificarea are loc în trei etape:

1 Dacă utilizatorul nu a adăugat încă aplicația la Slack, butonul "Add to Slack" apare în continuare.

2 După ce utilizatorul face clic pe buton, utilizatorul este rugat să permită aplicației să trimită notificări și să răspundă la comenzi din canalul Slack.

Vom începe în curând să implementăm implementarea descrisă mai sus, dar, mai întâi, avem nevoie de o metodă pentru stocarea și utilizarea informațiilor de autentificare după ce am obținut-o de la Slack.

Pentru a face acest lucru, avem nevoie de clasa Slack_Access. pe care am făcut-o mai devreme în lecție.

Apoi, scriem un constructor care citește valorile acestor variabile dintr-o matrice care este transmisă constructorului ca parametru:

Constructorul inițializează variabilele cu valorile care au fost transferate în matricea de date $. sau valori goale dacă informația cerută nu era în matrice.

Imediat după constructor, adăugați o funcție de test pentru a vedea dacă datele pe care am inițializat variabilele au fost valide:

Apoi, adăugați următoarea funcție pentru a stoca datele:

Dar, mai întâi, să ne întoarcem la clasa Slack și să folosim funcționalitatea pe care tocmai am scris-o în Slack_Access.

Scrieți constructorul astfel încât să creeze un obiect de acces pentru interfața curentă Slack:

Pasul 6: Afișați butonul Adăugați la Sare

Rețineți că, în timp ce clasa Slack_Access poate fi utilizată în multe alte aplicații așa cum este ea, clasa index.php este scrisă doar pentru demonstrații: deoarece nu avem o interfață de utilizator sau o gestionare a bazei de date, pur și simplu stocăm datele formatul JSON de la to_json la un fișier text.

Pentru a face această schemă de stocare simplă, începeți prin înlocuirea funcției initialize_slack_interface în index.php cu următorul cod:

Apoi, în rândul 17, datele sunt analizate în matrice utilizând interfața Slack (linia 19).

La sfârșitul fișierului index.php, înlocuiți formularul cu următorul cod:

Apoi, în altceva, în liniile 8-12, codul arată acum butonul Adăugare la slăbire. "

Să vedem ce este în butonul de buton:

Restul este doar HTML care arată imaginea butonului.

Acum, iată ce ar trebui să vedeți dacă deschideți aplicația în browserul dvs.:

Cum de a crea o interfață slack pentru aplicația dvs. php - blog php academy

Pasul 7: Finalizați autentificarea OAuth

Acum, butonul "Adăugați la Slack" este pus pe loc. Dar ce se întâmplă atunci când o apasă un utilizator?

Cum de a crea o interfață slack pentru aplicația dvs. php - blog php academy

Deci, dacă din punctul de vedere al utilizatorului totul nu pare rău, el sau ea va face clic pe butonul Autorizare și de acum încolo controlul va merge la cererea dumneavoastră.

Vă amintiți că atunci când am definit aplicația în Slack, am specificat adresa URL a adresei URL (YOUR_URL / index.php? Action = oauth).

Cu toate acestea, în timp ce modul de obținere a răspunsului va varia în funcție de aplicație, ceea ce vom face cu datele primite de la Slack vor fi aceleași.

Înlocuiți funcția încă goală do_action cu următorul cod:

Acum, după ce autentificarea OAuth a fost finalizată cu succes. iar pe linia 23, funcția salvează datele în acest fișier.

Dar, înainte de a ajunge acolo, pentru a finaliza autentificarea, trebuie încă să facem funcția do_oauth în clasa Slack.

Pentru a face acest lucru, avem nevoie de o modalitate de a trimite o cerere HTTP la serverul Slack. Există multe modalități de a face o solicitare HTTP în PHP, iar cea pe care o vom arăta nu este singura opțiune. De exemplu, dacă sunteți în curs de dezvoltare pentru WordPress. s-ar putea să doriți să faceți acest lucru cu wp_remote_get și wp_remote_post.

De data aceasta, însă, pentru a face acest lucru, astfel încât să nu depindem de un anumit cadru, am decis să folosesc biblioteca gratuită cu o sintaxă excelentă, ușor de citit, Cereri.

Instalați biblioteca urmând instrucțiunile de pe site-ul Web. În codul sursă din depozitul Tuts + GitHub, veți găsi configurația Composer ready pentru adăugarea unei biblioteci în aplicație.

După ce instalați Requests (sau o opțiune de bibliotecă HTTP), adăugați funcția do_oauth la clasa Slack:

Să ne uităm la linia funcțională după linie:

În liniile 14 până la 14, funcția inițializează parametrii pentru solicitarea HTTP. Este demn de remarcat faptul că ID-ul clientului și cheia secretă sunt transferate ca parametri de interogare pentru a utiliza mecanismul de autentificare HTTP de bază.

În linia 21, veți observa că trimitem un simbol unic primit în apelul funcțional. Pentru ca SLE API să identifice cererea.

Acum, butonul "Adăugați la Slack" este complet gata. Dacă încercați să faceți clic pe el, veți vedea următoarele:

Cum de a crea o interfață slack pentru aplicația dvs. php - blog php academy

De asemenea, dacă vă uitați în dosarul nostru de proiect, ar trebui să vedeți că fișierul access.txt a apărut în el. cu datele de autentificare stocate în acesta.

Acum suntem gata să începem o parte interesantă: să facem posturi din aplicație pe canalul Slack.

Trimiterea unei notificări Canalul Slack este un instrument puternic care vă permite să păstrați o echipă informată cu privire la evenimentele importante pentru ei. Magazinul web poate trimite notificări de achiziții noi, software-ul pentru erorile de urmărire poate notifica automat dezvoltatorii și această listă poate fi continuată.

În exemplul nostru, așa cum ați văzut deja în interfața de utilizator mai devreme, vom trimite o notificare despre postarea utilizatorului în câmpul de text.

Dar funcționalitatea pentru trimiterea oricăror alte mesaje va fi aceeași, așa că o puteți scrie o singură dată, puteți utiliza același cod pentru a trimite propriile mesaje mai complexe.

Pasul 1: Creați o funcție pentru a trimite un mesaj

Adăugați următoarea funcție la clasa Slack:

Nu am acordat prea multă atenție procesului "Adăugați la Slack", dar dacă vă uitați din nou la datele din Slack_Access. veți observa că Slack returnează un câmp numit incoming_webhook. Acest câmp conține un câmp cu două câmpuri: adresa URL la care trebuie să afișăm notificările noastre și canalul pe care utilizatorul alege să trimită mesajele aplicației.







Articole similare

Trimiteți-le prietenilor: