Internet

Cum să creați un bot Facebook Messenger (Ghid)

Cum să creați un bot Facebook Messenger (Ghid)

Funcția „messenger bot” a Facebook nu este nimic nou și există deja mulți roboți minunați. Cu toate acestea, resursele referitoare exact la cum să-ți construiești propriul bot sunt rare și nu au explicații pentru persoanele care sunt noi la API-ul Facebook Graph. Roboții Messenger necesită acum să utilizați o adresă URL securizată de apelare webhook securizată SSL (mai multe despre asta mai târziu), iar configurarea SSL nu este pentru toată lumea și costă și bani.

În acest articol, vă voi parcurge întregul proces de creare a unui simplu bot Facebook Messenger, deoarece propria documentație Facebook este destul de prost explicată. Vom configura o aplicație cloud care utilizează protocolul https, codificăm botul în Node.js (care este un javascript, limbaj de pe server), vom folosi git pentru a împinge codul în aplicația cloud și îl vom testa pe Facebook Messenger.

Configurare bot

Veți avea nevoie de Node instalat pe laptop. Dacă nu, accesați site-ul web Node pentru a-l descărca și instala.

Odată ce ați terminat, puteți continua cu configurarea pentru bot. Urmați pașii de mai jos:

1. Lansați terminalul.

2. Aveți nevoie de un director separat pentru păstrarea codului.

3. Apoi, inițializați aplicația Node.
npm init

4. Instalați pachete
npm instalați cererea expresă a parserului de corp - salvați

5. În Finder, deschideți directorul „testbot”Pe care l-ați creat și găsiți fișierul numit„pachet.json„; deschideți acest lucru într-un editor precum Sublime Text.

6. În acest fișier, trebuie să adăugăm o linie
"start": "nod index.js"

7. Apoi, creați un fișier nou în Sublime Text și introduceți următorul cod în interiorul acestuia:

[js]

var express = require ('express');
var bodyParser = require ('body-parser');
var request = require ('request');
var app = express ();

app.use (bodyParser.urlencoded (Extended: false));
app.use (bodyParser.json ());
app.listen ((process.env.PORT || 3000));
app.get ('/', funcție (cerere, res)
res.send („Acesta este serverul TestBot”);
);
app.get ('/ webhook', funcție (cerere, rezoluție)
if (req.query ['hub.verify_token'] === 'testbot_verify_token')
res.send (req.query ['hub.challenge']);
altceva
res.send („Jeton de verificare nevalid”);

);

[/ js]

Salvați acest fișier ca index.js

Notă: În linia 13, valoarea „hub.verify_token” este setată ca „testbot_verify_token ', amintiți-vă această valoare, deoarece va fi utilizată la crearea webhook-ului în Facebook.

Creați un depozit Git

Acum că am configurat gestionarea apelului de apelare a robotului nostru, trebuie să împingem codul către Heroku. Pentru aceasta, trebuie să creăm un depozit git în directorul nostru.

Notă: „Git” este un sistem de control al versiunilor pentru fișiere și cod software. Puteți citi mai multe despre asta pe Wikipedia.

Crearea unui depozit git este ușoară și necesită doar câteva comenzi Terminal.

Notă: Asigurați-vă că vă aflați întestbot”Din terminal. Puteți face acest lucru tastând comanda pwd în terminal.

Urmați acești pași pentru a crea un depozit git:

1. git init

2. git add .

3. git commit -m "Înregistrează Facebook Webhook"

Configurați Heroku

Înainte chiar să intrăm în paginile dezvoltatorilor Facebook, avem nevoie de o adresă URL de apel invers cu care Facebook poate vorbi. Această adresă URL trebuie să utilizeze protocolul https, ceea ce înseamnă că trebuie să instalăm un certificat SSL pe site-ul nostru web; dar, acesta este un ghid pentru începători pentru roboții Facebook Messenger, deci să nu complicăm lucrurile. Vom folosi Heroku pentru a ne implementa codul. Heroku vă oferă URL-uri https pentru aplicațiile dvs. și are un plan gratuit care îndeplinește cerințele noastre (foarte elementare).

Accesați site-ul Heroku și înregistrați-vă.

Notă: În câmpul care scrie „Alegeți limba dvs. de dezvoltare principală”, utilizați „Folosesc o altă limbă”.

După ce ați terminat cu asta, instalați instrumentul Heroku pentru sistemul dvs. de operare (Mac, pentru mine) și instalați-l. Acest lucru vă va oferi acces la Heroku de pe terminal (sau promptul de comandă, pe Windows).

Apoi, vom crea o aplicație pe Heroku, care va deține întregul cod pentru botul nostru. Urmați pașii de mai jos:

1. Lansați terminalul

2. Tastați autentificare heroku

3. Tastați heroku creează

4. Acum puteți împinge codul aplicației la Heroku
git push heroku master

5. După ce ați făcut acest lucru, aplicația dvs. este practic live și puteți vizita linkul din browser pentru a verifica dacă totul funcționează bine. Ar trebui să deschidă o pagină web care să spună „Acesta este serverul TestBot„.

Configurare Facebook

Este timpul să ne conectăm botul la Facebook! Va trebui să creați o nouă pagină Facebook sau să utilizați una existentă pe care o dețineți. Vă voi arăta cum să procedați prin crearea unei noi pagini de Facebook.

1. Accesați Facebook și creați o pagină nouă.

2. Următorii pași pe care Facebook îi arată sunt opționali și pot fi săriți.

3. Apoi, accesați site-ul web al dezvoltatorilor Facebook.

4. Completați detaliile pentru numele aplicației și adresa de e-mail de contact.

5. Veți fi dus la tabloul de bord al aplicației dvs. În bara laterală, navigați la „+Adăugați produse”Și selectați„Mesager”Făcând clic pe„Incepe”Buton.

6. Selectați „Configurați Webhooks„.

7. Completați câmpurile obligatorii, înlocuind „Adresa URL de apel invers” cu adresa URL a aplicației Heroku, Verificați jetonul cu jetonul utilizat în fișierul index.js și selectați următoarele câmpuri de abonament:

Notă: Asigurați-vă că adăugați „/ webhook”La adresa URL de apel invers, astfel încât index.js să execute funcția necesară atunci când Facebook încearcă să facă ping la adresa URL, poate verifica„ Verificați jetonul ”.

8. Faceți clic pe „Verificați și salvați„.

9. În „Generarea de jetoane”, Faceți clic pe„Selectați o pagină”Și selectați pagina pe care ați creat-o mai devreme.

Acest lucru va genera un „Jeton de acces la pagină„, Salvează-l undeva; veți avea nevoie de el mai târziu.

10. Apoi, va trebui să efectuați o interogare POST pentru aplicația dvs., utilizând Tokenul de acces la pagină generat în ultimul pas. Acest lucru se poate face cu ușurință în terminal. Executați următoarea comandă, înlocuind PAGE_ACCESS_TOKEN cu Jetonul de acces la pagină pe care l-ați generat.

curl -X POST „https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=PAGE_ACCESS_TOKEN”

Ar trebui să primiți un „succes”Răspuns în Terminal.

Mai multă configurare Heroku

Da, încă nu am terminat. Nici pe departe.

1. Accesați site-ul Heroku și conectați-vă cu ID-ul dvs. de e-mail.

2. Găsiți aplicația în „tabloul de bord” și faceți clic pe ea.

3. Navigați la fila Setări.

4. Faceți clic pe „Reveal Config Vars

5. Adăugați PAGE_ACCESS_TOKEN ca „config var„Și faceți clic pe„Adăuga„.

Codificarea botului real

Acum, după ce am terminat munca gruntă, ne putem concentra asupra a ceea ce contează cu adevărat: a face ca robotul să răspundă la mesaje. Pentru a începe, vom proiecta doar un bot care să răsune pur și simplu mesajele pe care le primește. După cum se dovedește, această sarcină simplă necesită un pic considerabil de cod pentru a funcționa.

1. Codificarea ascultătorului de mesaje

Înainte ca robotul să poată reda mesajul, acesta trebuie să poată asculta mesajele. Să facem asta mai întâi.

În fișierul index.js, adăugați următorul cod:

[js]

app.post ('/ webhook', funcție (cerere, rezoluție)
var evenimente = req.body.entry [0] .messaging;
pentru (i = 0; i < events.length; i++)
var eveniment = evenimente [i];
if (event.message && event.message.text)
sendMessage (event.sender.id, text: "Echo:" + event.message.text);


res.sendStatus (200);
);

[/ js]

Ce face această funcție este că verifică mesajele primite și apoi verifică dacă există text în mesaj. Dacă găsește text în mesajul primit, apelează funcția sendMessage (afișat mai târziu), trecând ID-ul expeditorului și textul de trimis înapoi. Este important să înțelegeți următoarele valori și ce înseamnă acestea:

2. Codificarea funcției sendMessage

Permite codificarea funcției „sendMessage”, acum.

[js]

funcția sendMessage (recipientId, mesaj)
cerere(
url: „https://graph.facebook.com/v2.6/me/messages”,
qs: access_token: process.env.PAGE_ACCESS_TOKEN,
metoda: „POST”,
json:
destinatar: id: recipientId,
mesaj: mesaj,

, funcție (eroare, răspuns, corp)
dacă (eroare)
console.log ('Eroare la trimiterea mesajului:', eroare);
else if (response.body.error)
console.log ('Eroare:', response.body.error);

);
;

[/ js]

Funcția „sendMessage” are doi parametri:

Destinatarul ID este necesar pentru ca mesajul să poată fi adresat utilizatorului corect.

Mesajul este textul real care urmează să fie trimis în răspuns.

3. Împingerea modificărilor la Heroku

Dacă ați parcurs pașii de mai sus, robotul dvs. ar trebui să poată reda textul primit. Dar mai întâi, trebuie să împingeți modificările aplicației găzduite pe Heroku. Pentru aceasta, urmați pașii de mai jos:

1. Lansați terminalul.

2. Schimbați directorul în directorul testbot
cd testbot

3. Faceți următorii pași:

4. Acum trimiteți un mesaj către pagina dvs., iar robotul va răsuna mesajul către dvs..

Răspunsuri condiționate, de asemenea, făcând botul mai inteligent

Putem folosi potrivirea textului pentru a permite botului nostru de Facebook Messenger să răspundă în funcție de anumite cuvinte cheie speciale.

Pentru a realiza acest lucru, trebuie să adăugăm o altă funcție. Îl numesc „condiționatResponsări”, dar puteți alege orice nume preferați.

1. Codarea funcției conditionalResponses

[js]

function conditionalResponses (recipientId, text)
text = text || "";

var what = text.match (/ what / gi); // verificați dacă șirul de text conține cuvântul „ce”; ignoră cazul
var beebom = text.match (/ beebom / gi); // verificați dacă șirul de text conține cuvântul „beebom”; ignoră cazul
var who = text.match (/ who / gi); // verificați dacă șirul de text conține cuvântul „cine”; ignoră cazul
var tu = text.match (/ tu / gi); // verifică dacă șirul de text conține cuvântul „tu”; ignoră cazul

// dacă textul conține atât „ce”, cât și „beebom”, faceți acest lucru:

if (what! = null &&; beebom! = null)
mesaj =
text: "Beebom este un site web care oferă resurse tehnologice. Bine ați venit."

sendMessage (recipientId, mesaj);
întoarcere adevărată;

// dacă textul conține atât „cine”, cât și „dvs.”, faceți acest lucru:
if (cine! = nul && tu! = nul)
mesaj =
text: „Mi s-a cerut să nu discut identitatea mea online.”

sendMessage (recipientId, mesaj);
întoarce-te adevărat;

// dacă nimic nu se potrivește, reveniți la false pentru a continua executarea funcției interioare.
returnează fals;
;

[/ js]

În rândurile 4-7, am definit variabile în funcție de potrivirea șirului primit cu anumite cuvinte. Cea mai bună parte a utilizării „text.match ()” este că folosește Expresii regulate (denumite de obicei regex, citiți mai multe aici.). Este bine pentru noi, deoarece acest lucru înseamnă că atâta timp cât chiar și o parte a unui cuvânt din textul primit se potrivește cu oricare dintre cuvintele menționate în text.match (), variabila nu va fi nulă. Aceasta înseamnă că dacă mesajul primit a fost „Ce este Beebom?”, „Var what” și „var beebom” nu vor fi nule, deoarece cuvântul „What's” conține cuvântul „what”. Așadar, suntem salvați de la crearea unor declarații suplimentare pentru fiecare variantă în care cineva ar putea spune „Ce”.

2. Editarea ascultătorului de mesaje

De asemenea, trebuie să edităm Ascultătorul de mesaje pe care l-am codat, pentru a ne asigura că încearcă să potrivească textul primit și cu funcția „condiționalăResponsări”.

[js]

app.post ('/ webhook', funcție (cerere, rezoluție)
var evenimente = req.body.entry [0] .messaging;
pentru (i = 0; i < events.length; i++)
var eveniment = evenimente [i];
if (event.message && event.message.text)

// mai întâi încercați să verificați dacă mesajul primit se califică pentru răspuns condiționat.
if (! conditionalResponses (event.sender.id, event.message.text))

// dacă nu, evocați mesajul primit înapoi către expeditor.
sendMessage (event.sender.id, text: "Echo:" + event.message.text);



res.sendStatus (200);
);

[/ js]

Schimbările în ascultător s-ar putea să nu pară foarte drastice, dar efectele lor sunt cu siguranță. Acum, ascultătorul încearcă mai întâi să răspundă cu răspunsuri condiționate și, dacă nu există o condiție validă pentru mesajul primit, acesta va răsuna pur și simplu mesajului înapoi către utilizator.

3. Împingerea modificărilor la Heroku

Înainte de a putea încerca noile funcții, va trebui să împingeți codul actualizat în aplicația găzduită pe Heroku. Urmați pașii de mai jos pentru a face acest lucru:

1. Lansați terminalul.

2. Schimbați directorul în directorul testbot
cd testbot

3. Faceți următorii pași:

4. Acum trimiteți un mesaj către pagina dvs., iar robotul va răsuna mesajul către dvs..

Funcționalitate și mai mare

Botul nostru răspunde acum la un set mic de comenzi în răspunsuri frumoase și bine structurate. Dar încă nu este foarte util. Haideți să mai facem câteva modificări în cod pentru a face botul nostru mai „funcţional”Piesa de software. Sa fie bine reorganizând o mulțime de funcții, și adăugând încă câteva, așa că încântați-vă.

1. Editarea ascultătorului de mesaje

Ascultătorul nostru de mesaje, în această etapă, funcționează ok. Cu toate acestea, nu este foarte frumos formatat și dacă ar fi să continuăm să creștem instrucțiunile imbricate if pentru a adăuga în plus „verificări ale stării„, Va deveni repede urât de privit, greu de înțeles și mai lent la execuție. Nu vrem asta, acum, nu-i așa? Să facem câteva modificări.

Notă: Există o linie de cod în ascultătorul de mesaje care citește „Res.sendStatus (200)”, această linie trimite un cod de stare 200 către Facebook, spunându-i că funcția a fost executată cu succes. Conform documentației Facebook, Facebook așteaptă maximum 20 de secunde pentru a primi o stare 200, înainte de a decide că mesajul nu a trecut și oprește executarea codului.

Noul nostru ascultător de mesaje arată astfel. Noi folosim "res.sendStatus (200)”Comandă pentru a opri executarea funcției de îndată ce o condiție este potrivită și executată.

[js]

app.post ('/ webhook', funcție (cerere, rezoluție)
var evenimente = req.body.entry [0] .messaging;
pentru (i = 0; i < events.length; i++)
var eveniment = evenimente [i];
if (event.message && event.message.text)

// verificați mai întâi textul mesajului împotriva condițiilor de introRăspuns
if (introResponse (event.sender.id, event.message.text))
res.sendStatus (200);

// din lipsa unui nume mai bun, am numit acest nou Răspuns: p; verificați acest lucru în continuare
else if (newResponse (event.sender.id, event.message.text))
res.sendStatus (200);

// altfel, trebuie doar să revin la mesajul original
altceva
// înlocuiți ecoul cu lista de comenzi validă
sendMessage (event.sender.id, text: "Echo:" + event.message.text);



res.sendStatus (200);
);

[/ js]

2. Codificarea noii funcții de răspuns

Ascultătorul nostru de mesaje verifică acum textul mesajului cu un set de condiții din „NewResponse” de asemenea, dar mai întâi, trebuie să codăm funcția newResponse. Vom folosi această funcție pentru a verifica dacă utilizatorul a cerut sugestii de articole de pe site-ul Beebom, căutați interogarea termenul de pe site și prezintă linkul către utilizator. Încă o dată, vom folosi expresii regulate pentru a potrivi textul cu anumite cuvinte cheie.

[js]

function newResponse (recipientId, text)
text = text || "";
var suggest = text.match (/ suggest / gi);
var random = text.match (/ random / gi);
var articol = text.match (/ article / gi);
var iphone = text.match (/ iphone / gi);
var android = text.match (/ android / gi);
var mac = text.match (/ mac / gi);
var browser = text.match (/ browser / gi);
var vpn = text.match (/ vpn / gi);

// verificați dacă utilizatorul solicită deloc sugestii de articole
if (sugerează! = nul && articol! = nul)
var interogare = "";
// dacă sunt solicitate sugestii de articole, verificați subiectul pe care îl caută utilizatorul
if (android! = nul)
query = "Android";
else if (mac! = null)
interogare = "Mac";
else if (iphone! = null)
interogare = "iPhone";
else if (browser! = nul)
query = "Browser";
else if (vpn! = null)
interogare = "VPN";

sendButtonMessage (recipientId, interogare);
întoarce-te adevărat

returnează fals;
;

[/ js]

Folosim o altă funcție personalizată numită „SendButtonMessage” pentru a trimite mesajul în cazul în care utilizatorul solicită sugestii de articole. Vom crea acest lucru în continuare.

3. Codificarea funcției sendButtonMessage

Funcția sendButtonMessage ia doi parametri, a ID-ul destinatarului și a interogare. ID-ul destinatarului este utilizat pentru a identifica utilizatorul căruia trebuie să i se trimită mesajul, iar interogarea este utilizată pentru a identifica subiectul pe care utilizatorul dorește sugestii de articole.

[js]

funcția sendButtonMessage (recipientId, interogare)
var messageData =
destinatar:
id: recipientId
,
mesaj:
atașament:
tastați: „șablon”,
sarcină utilă:
template_type: "buton",
text: „Asta am găsit pentru” + interogare,
butoane:[
tastați: "web_url",
url: "http://www.beebom.com/?s="+query,
title: "Beebom:" + interogare
]



;

callSendAPI (messageData);

[/ js]

Încă o dată, folosim o funcție personalizată; de data aceasta pentru a trimite mesajul final, cu linkurile articolului, către utilizator. Funcția este, în multe feluri, similară cu "Trimite mesaj" funcția pe care am codat-o mai devreme, dar este mai generică în modul în care ia datele mesajului, care ni se potrivește, deoarece datele mesajului nostru se modifică odată cu interogarea pe care o face utilizatorul.

4. Codarea funcției callSendAPI

 „CallSendAPI” funcția ia un singur parametru, „MessageData”. Acest parametru conține datele întregului mesaj, formatate corespunzător conform regulilor Facebook, astfel încât messengerul să le poată afișa corect utilizatorului.

[js]

function callSendAPI (messageData)
cerere(
uri: 'https://graph.facebook.com/v2.6/me/messages',
qs: access_token: process.env.PAGE_ACCESS_TOKEN,
metoda: „POST”,
json: messageData

, funcție (eroare, răspuns, corp)
if (! error && response.statusCode == 200)
var recipientId = body.recipient_id;
var messageId = body.message_id;

console.log ("Mesajul generic a fost trimis cu succes cu ID-ul% s destinatarului% s",
messageId, recipientId);
altceva
console.error ("Imposibil de trimis un mesaj.");
console.error (răspuns);
console.error (eroare);

);

[/ js]

5. Împingerea schimbărilor la Heroku

Suntem la ultimul pas către ca robotul nostru actualizat să fie live. Trebuie doar să împingem toate modificările de cod la Heroku. Procesul este același ca înainte și este prezentat mai jos:

1. Lansați terminalul.

2. Schimbați directorul în testbot director.
cd testbot

3. Faceți următoarele:

4. Acum trimiteți un mesaj precum „Sugerează un articol pe Android” sau „Beebom, sugerează-mi orice articol pe tema Android”; iar robotul va trimite un mesaj frumos formatat cu un link pe care îl puteți atinge pentru a deschide articolele legate de interogarea dvs..

VEZI ȘI: 16 sfaturi și trucuri Facebook Messenger pe care ar trebui să le știi

Sapă mai adânc

Acum, că știi cum să începi să dezvolți roboții Facebook Messenger, consultă documentația Facebook despre cum să dezvolți roboții Facebook Messenger. Deși documentația nu este bună pentru începători, nu mai ești începător. Ar trebui să verificați documentația oficială și să încercați să aflați cum să vă faceți botul mai inteligent. Teaser: Puteți trimite și mesaje cu imagini și butoane! De asemenea, este posibil să utilizați servicii precum Wit.ai și Api.ai pentru a vă codifica botul și apoi să îl integrați cu Facebook, dar în încercările mele slabe de a utiliza aceste servicii, Wit.ai nu funcționează prea bine și Api.ai are o curbă de învățare ascuțită pentru începători.

Ați dezvoltat vreodată un bot Facebook Messenger? Dacă aveți, cum ați făcut acest lucru și ce poate face? Ați folosit servicii precum Wit.ai și Api.ai pentru a vă crea botul? Dacă nu v-ați încercat vreodată să codificați un bot, mergeți și dezvoltați propriul bot Facebook Messenger, faceți-l mai inteligent și mai bun și informați-ne despre experiența dvs. în comentariile de mai jos.

Evoluția Pinterest din 2010 până în 2012 [PICS]
Pinterest este site-ul cu cea mai rapidă creștere și în doar 2 ani se află sub cele mai vizitate 100 de site-uri web din lume. Deși site-ul a fost lan...
Cum să creați propriile videoclipuri muzicale cu Triller pe Android și iPhone
Toată lumea iubește vedetele muzicale și am minți dacă spunem că nu ne-am gândit niciodată să devenim rockstar. Cu toate acestea, majoritatea dintre n...
Cum să transmiteți în direct pe Facebook de pe o cameră GoPro
Am vorbit deja pe larg despre modul în care puteți transmite în flux de la un GoPro Hero 4 la Periscope și, în timp ce Twitter este o platformă bună, ...