Συνιστάται, 2024

Επιλογή Συντάκτη

Πώς να δημιουργήσετε ένα Facebook Messenger Bot (Οδηγός)

Το χαρακτηριστικό του "messenger bots" του Facebook δεν είναι κάτι καινούργιο και υπάρχουν ήδη πολλά φοβερά bots. Ωστόσο, οι πόροι σχετικά με το πώς ακριβώς να δημιουργήσετε το δικό σας bot είναι σπάνιοι, και λείπουν στην εξήγηση για τους ανθρώπους που είναι νέοι στο Facebook Graph API. Τα bots του Messenger απαιτούν επίσης από εσάς να χρησιμοποιήσετε μια διεύθυνση URL επαναφοράς κλήσεων Webhook με ασφάλεια SSL (περισσότερα για αυτό αργότερα) και η ρύθμιση SSL δεν είναι για όλους και επίσης κοστίζει χρήματα.

Σε αυτό το άρθρο, θα σας καθοδηγήσω σε όλη τη διαδικασία δημιουργίας ενός απλού bot μηνύματος στο Facebook, επειδή η τεκμηρίωση του Facebook μάλλον εξηγείται ελάχιστα. Θα δημιουργήσουμε μια εφαρμογή σύννεφο που χρησιμοποιεί πρωτόκολλο https, κωδικοποιεί το bot στο Node.js (το οποίο είναι javascript, γλώσσα διακομιστή), χρησιμοποιεί git για να σπρώξει τον κώδικα στην εφαρμογή σύννεφο και να το δοκιμάσει στο Facebook Messenger.

Εγκατάσταση Bot

Θα χρειαστείτε να εγκαταστήσετε τον κόμβο στον φορητό υπολογιστή σας. Εάν δεν το κάνετε, μεταβείτε στον ιστότοπο κόμβου για να το κατεβάσετε και να το εγκαταστήσετε.

Μόλις τελειώσετε, μπορείτε να συνεχίσετε με τη ρύθμιση για το bot. Ακολουθήστε τα παρακάτω βήματα:

1. Εκκινήστε τον τερματικό σταθμό.

2. Χρειάζεστε έναν ξεχωριστό κατάλογο για να κρατάτε τον κωδικό σας.

  • Δημιουργήστε έναν νέο κατάλογο
    mkdir testbot
  • Αλλάξτε τον κατάλογο εργασίας σας στον κατάλογο που μόλις δημιουργήσατε
    cd testbot

3. Στη συνέχεια, αρχικοποιήστε την εφαρμογή κόμβου.
npm init

  • Θα σας ζητηθεί να εισαγάγετε πληροφορίες σχετικά με την αίτησή σας, απλά χρησιμοποιήστε τις προεπιλογές πατώντας το Enter για όλα.

4. Εγκαταστήστε πακέτα
npm install express body-parser request --save

  • Η εντολή θα τρέξει και θα δώσει ορισμένες προειδοποιήσεις. αγνόησέ τους.

5. Στο Finder, ανοίξτε τον κατάλογο " testbot " που δημιουργήσατε και βρείτε το αρχείο με το όνομα " package.json ". ανοίξτε το σε ένα πρόγραμμα επεξεργασίας όπως το Sublime Text.

6. Σε αυτό το αρχείο, πρέπει να προσθέσουμε μια γραμμή
"start": "node index.js"

  • Μην ξεχάσετε να προσθέσετε ένα ", " στο τέλος της προηγούμενης γραμμής.

7. Στη συνέχεια, δημιουργήστε ένα νέο αρχείο στο Sublime Text και τοποθετήστε τον ακόλουθο κώδικα μέσα σε αυτό:

[js]

var express = require ('express');
var bodyParser = απαιτούν ('body-parser');
var request = require ('αίτημα');
var app = express ();

app.use (bodyParser.urlencoded ({extended: false})).
app.use (bodyParser.json ());
app.listen ((process.env.PORT || 3000)).
app.get ('/', συνάρτηση (req, res) {
res.send ('Αυτός είναι ο διακομιστής TestBot');
});
app.get ('/ webhook', λειτουργία (req, res) {
αν (req.query ['hub.verify_token'] === 'testbot_verify_token') {
res.send (req.query ['hub.challenge']).
} else {
res.send ('Μη έγκυρο αναγνωριστικό συμβόλαιο').
}}
});

[/ js]

Αποθηκεύστε αυτό το αρχείο ως index.js

Σημείωση: Στη γραμμή 13, η τιμή του 'hub.verify_token' έχει οριστεί ως ' testbot_verify_token', θυμηθείτε αυτήν την τιμή καθώς θα χρησιμοποιηθεί κατά τη δημιουργία του webhook στο Facebook.

Δημιουργία χώρου αποθήκευσης Git

Τώρα που έχουμε ρυθμίσει το χειρισμό callback του bot μας, πρέπει να σπρώξουμε τον κώδικα στο Heroku. Για αυτό, πρέπει να δημιουργήσουμε ένα git αποθετήριο στον κατάλογό μας.

Σημείωση: Το "git" είναι ένα σύστημα ελέγχου εκδόσεων για αρχεία και κώδικα λογισμικού. Μπορείτε να διαβάσετε περισσότερα για αυτό στη Wikipedia.

Η δημιουργία ενός repository git είναι εύκολη και απαιτεί μόνο μερικές εντολές Terminal.

Σημείωση: Βεβαιωθείτε ότι είστε μέσα στον κατάλογο " testbot " στο τερματικό. Μπορείτε να το κάνετε αυτό πληκτρολογώντας την εντολή pwd στο τερματικό.

Ακολουθήστε αυτά τα βήματα για να δημιουργήσετε ένα αποθετήριο git:

1. git init

2. git add .

3. git commit -m "Register Facebook Webhook"

Ρύθμιση Heroku

Πριν πάμε ακόμη και στις σελίδες προγραμματιστών του Facebook, χρειαζόμαστε μια διεύθυνση URL επαναφοράς που μπορεί να μιλήσει το Facebook. Αυτή η διεύθυνση URL πρέπει να χρησιμοποιεί το πρωτόκολλο https, πράγμα που σημαίνει ότι πρέπει να εγκαταστήσουμε ένα πιστοποιητικό SSL στην ιστοσελίδα μας. αλλά, αυτός είναι ο οδηγός για αρχάριους στο Facebook messenger bots, οπότε ας μην περιπλέξουμε τα πράγματα. Θα χρησιμοποιήσουμε το Heroku για να αναπτύξουμε τον κώδικα μας. Το Heroku σας δίνει διευθύνσεις https για τις εφαρμογές σας και έχει ένα δωρεάν σχέδιο που ανταποκρίνεται στις (πολύ βασικές) απαιτήσεις μας.

Πηγαίνετε στην ιστοσελίδα του Heroku και καταχωρίστε τον εαυτό σας.

Σημείωση: Στο πεδίο που λέει "Επιλέξτε τη γλώσσα πρωτοβάθμιας ανάπτυξης", χρησιμοποιήστε τη "Χρήση άλλης γλώσσας".

Μόλις τελειώσετε με αυτό, εγκαταστήστε τη ζώνη εργαλείων Heroku για το λειτουργικό σας σύστημα (Mac, για μένα) και εγκαταστήστε την. Αυτό θα σας δώσει πρόσβαση στο Heroku στο Terminal σας (ή στη γραμμή εντολών, στα Windows).

Στη συνέχεια, θα δημιουργήσουμε μια εφαρμογή στο Heroku, η οποία θα κρατήσει ολόκληρο τον κώδικα για το bot μας. Ακολουθήστε τα παρακάτω βήματα:

1. Εκκινήστε τον τερματικό σταθμό

2. Πληκτρολογήστε heroku login

  • Θα σας ζητηθεί να καταχωρίσετε το email και τον κωδικό πρόσβασής σας.
  • Πληκτρολογήστε το email σας, πατήστε Enter. στη συνέχεια, πληκτρολογήστε τον κωδικό πρόσβασής σας, πατήστε Enter.
  • Θα είστε συνδεδεμένοι στο heroku

3. Πληκτρολογήστε το heroku create

  • Αυτό θα δημιουργήσει μια εφαρμογή στο Heroku και θα σας παρέχει μια υπερ-σύνδεση. Σημειώστε ότι ο σύνδεσμος χρησιμοποιεί το πρωτόκολλο https. Εύκολο, σωστά;

4. Τώρα μπορείτε να σπρώξετε τον κωδικό της εφαρμογής σας στο Heroku
git push heroku master

5. Μόλις γίνει αυτό, η εφαρμογή σας είναι βασικά ζωντανή και μπορείτε να επισκεφθείτε τη σύνδεση στο πρόγραμμα περιήγησής σας για να ελέγξετε ότι όλα λειτουργούν καλά. Θα πρέπει να ανοίξει μια ιστοσελίδα λέγοντας " Αυτός είναι ο διακομιστής TestBot ".

Ρύθμιση Facebook

Ήρθε η ώρα να συνδέσουμε το bot με το Facebook! Θα χρειαστεί να δημιουργήσετε μια νέα σελίδα στο Facebook ή να χρησιμοποιήσετε μια υπάρχουσα σελίδα που έχετε στην κατοχή σας. Θα σας δείξω πώς να προχωρήσετε δημιουργώντας μια νέα σελίδα στο Facebook.

1. Μεταβείτε στο Facebook και δημιουργήστε μια νέα σελίδα.

  • Μπορείτε να δημιουργήσετε μια σελίδα σε οποιαδήποτε κατηγορία θέλετε. Επιλέγω Εταιρεία / Οργανισμό, για κανέναν ιδιαίτερο λόγο.

2. Τα επόμενα βήματα που δείχνει το Facebook είναι προαιρετικά και μπορούν να παραληφθούν.

3. Στη συνέχεια, κατευθυνθείτε στον ιστότοπο του Προγραμματιστές του Facebook.

  • Στην επάνω δεξιά γωνία, τοποθετήστε το δείκτη του ποντικιού στην επιλογή "Οι εφαρμογές μου " και, στη συνέχεια, κάντε κλικ στην επιλογή " Προσθήκη νέας εφαρμογής " από το αναπτυσσόμενο μενού.

  • Κάντε κλικ στην " βασική ρύθμιση " όταν το Facebook σας ζητήσει να επιλέξετε μια πλατφόρμα.

4. Συμπληρώστε τις λεπτομέρειες για το όνομα της εφαρμογής σας και τη διεύθυνση ηλεκτρονικού ταχυδρομείου επαφής.

  • Επιλέξτε " Εφαρμογές για σελίδες " στην κατηγορία.
  • Κάντε κλικ στην επιλογή " Δημιουργία αναγνωριστικού εφαρμογής ".

5. Θα μεταφερθείτε στον πίνακα ελέγχου για την εφαρμογή σας. Στην πλευρική γραμμή, μεταβείτε στο " + Προσθήκη προϊόντων " και επιλέξτε " Messenger " κάνοντας κλικ στο κουμπί " Ξεκινώντας ".

6. Επιλέξτε " Ρυθμίσεις Webhooks ".

7. Συμπληρώστε τα απαιτούμενα πεδία, αντικαθιστώντας το URL "Callback URL" με τη διεύθυνση URL της εφαρμογής Heroku, Verify Token με το διακριτικό που χρησιμοποιείται στο αρχείο index.js και επιλέξτε τα ακόλουθα πεδία συνδρομής:

  • message_deliveries
  • μηνυμάτων
  • message_optins
  • messaging_postbacks

Σημείωση: Βεβαιωθείτε ότι έχετε προσθέσει " / webhook " στην διεύθυνση URL ανάκλησης έτσι ώστε το index.js να εκτελέσει την απαιτούμενη λειτουργία όταν το Facebook προσπαθεί να κάνει ping στη διεύθυνση URL, μπορεί να επαληθεύσει το "Verify Token".

8. Κάντε κλικ στο " Επαλήθευση και αποθήκευση ".

9. Στην ενότητα " Δημιουργία σημάτων ", κάντε κλικ στο " Επιλογή σελίδας " και επιλέξτε τη σελίδα που δημιουργήσατε νωρίτερα.

Αυτό θα δημιουργήσει ένα " Σήμανση πρόσβασης σελίδας ", θα το αποθηκεύσει κάπου. θα το χρειαστείτε αργότερα.

10. Στη συνέχεια, θα πρέπει να κάνετε ερώτημα POST στην εφαρμογή σας, χρησιμοποιώντας το αναγνωριστικό πρόσβασης σελίδας που δημιουργήθηκε στο τελευταίο βήμα. Αυτό μπορεί να γίνει εύκολα στο τερματικό σταθμό. Απλώς εκτελέστε την ακόλουθη εντολή, αντικαθιστώντας το PAGE_ACCESS_TOKEN με το αναγνωριστικό πρόσβασης σελίδας που δημιουργήσατε .

curl -X POST "//graph.facebook.com/v2.6/me/subscribed_apps?access_token=PAGE_ACCESS_TOKEN"

Θα πρέπει να λάβετε απάντηση " επιτυχίας " στο τερματικό.

Περισσότερες ρυθμίσεις του Heroku

Ναι, δεν είμαστε ακόμα τελειωμένοι. Οχι κοντά.

1. Μεταβείτε στον ιστότοπο του Heroku και συνδεθείτε με το αναγνωριστικό ηλεκτρονικού ταχυδρομείου σας.

2. Εντοπίστε την εφαρμογή σας στον "πίνακα ελέγχου" και κάντε κλικ σε αυτό.

3. Μεταβείτε στην καρτέλα Ρυθμίσεις.

4. Κάντε κλικ στο " Reveal Config Vars "

5. Προσθέστε το PAGE_ACCESS_TOKEN ως " config var " και κάντε κλικ στο " Προσθήκη ".

Κωδικοποίηση της πραγματικής Bot

Τώρα που τελειώσαμε με το έργο του grunt, μπορούμε να εστιάσουμε σε αυτό που πραγματικά έχει σημασία: να κάνουμε το bot να ανταποκρίνεται στα μηνύματα. Για να ξεκινήσουμε, θα σχεδιάσουμε απλά ένα bot που απλά αντανακλά τα μηνύματα που λαμβάνει. Όπως αποδεικνύεται, αυτή η απλή εργασία απαιτεί ένα σημαντικό κομμάτι κώδικα για να λειτουργήσει.

1. Κωδικοποίηση του ακουστικού μηνύματος

Προτού το bot μπορέσει να επαναλάβει το μήνυμα, πρέπει να μπορεί να ακούει μηνύματα. Ας το κάνουμε πρώτα.

Στο αρχείο index.js, προσθέστε τον ακόλουθο κώδικα:

[js]

app.post ('/ webhook', συνάρτηση (req, res) {
var γεγονότα = req.body.entry [0] .messaging;
για (i = 0, i <events.length; i ++) {
var event = συμβάντα [i];
αν (event.message && event.message.text) {
sendMessage (event.sender.id, {text: "Ηχώ:" + event.message.text});
}}
}}
res.sendStatus (200).
});

[/ js]

Τι κάνει αυτή η λειτουργία; ελέγχει τα ληφθέντα μηνύματα και στη συνέχεια ελέγχει αν υπάρχει μήνυμα στο μήνυμα. Εάν εντοπίσει κείμενο στο ληφθέν μήνυμα, καλεί τη λειτουργία sendMessage (εμφανίζεται αργότερα), διαβιβάζοντας την ταυτότητα του αποστολέα και το κείμενο για να στείλει πίσω. Είναι σημαντικό να κατανοήσετε τις ακόλουθες αξίες και τι σημαίνουν:

  • event.message.text είναι το κείμενο που ελήφθη στο μήνυμα. Για παράδειγμα, αν κάποιος στείλει το μήνυμα "Hello" στο bot μας, η τιμή του event.message.text θα είναι "Hello".
  • event.sender.id είναι η ταυτότητα του ατόμου που έστειλε το μήνυμα στο bot. Αυτό είναι απαραίτητο ώστε το bot να γνωρίζει σε ποιόν να απαντήσει.

2. Κωδικοποίηση της λειτουργίας sendMessage

Αφήνει κώδικα τη λειτουργία "sendMessage", τώρα.

[js]

λειτουργία sendMessage (recipientId, μήνυμα) {
αίτηση({
url: '//graph.facebook.com/v2.6/me/messages',
qs: {access_token: process.env.PAGE_ACCESS_TOKEN},
μέθοδος: "POST",
json: {
παραλήπτης: {id: recipientId},
μήνυμα: μήνυμα,
}}
}, λειτουργία (σφάλμα, απόκριση, σώμα) {
αν (σφάλμα) {
console.log ('Σφάλμα αποστολής μηνύματος:', σφάλμα);
} else if (response.body.error) {
console.log ('Σφάλμα:', response.body.error);
}}
});
},

[/ js]

Η λειτουργία "sendMessage" λαμβάνει δύο παραμέτρους:

  • recipientId
  • μήνυμα

Το recipientId είναι απαραίτητο ώστε το μήνυμα να μπορεί να απευθυνθεί στον σωστό χρήστη.

Το μήνυμα είναι το πραγματικό κείμενο που πρόκειται να σταλεί στην απάντηση.

3. Πιέζοντας τις αλλαγές στο Heroku

Αν έχετε ολοκληρώσει τα παραπάνω βήματα, το bot θα πρέπει να είναι σε θέση να επαναλάβει το κείμενο που έχει λάβει. Αλλά πρώτα, πρέπει να ωθήσετε τις αλλαγές στην εφαρμογή που φιλοξενείται στο Heroku. Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα:

1. Εκκινήστε τον τερματικό σταθμό.

2. Αλλάξτε τον κατάλογο στον κατάλογο testbot
cd testbot

3. Ακολουθήστε τα παρακάτω βήματα:

  • git add.
  • Σημείωση: Υπάρχει "." Στο τέλος του "git add"
  • git commit -m "Πρώτη δέσμευση"
  • git push master heroku

4. Τώρα στείλτε ένα μήνυμα στη σελίδα σας, και το bot θα επαναλάβει το μήνυμα πίσω σε εσάς.

Υποστηριζόμενες απαντήσεις aka Κάνοντας το Bot πιο έξυπνο

Μπορούμε να χρησιμοποιήσουμε την αντιστοίχιση κειμένου για να επιτρέψουμε στο bot μας να ανταποκριθεί σύμφωνα με ορισμένες ειδικές λέξεις-κλειδιά.

Για να επιτευχθεί αυτό, πρέπει να προσθέσουμε μια άλλη λειτουργία. Το ονομάζω "conditionalResponses", αλλά μπορείτε να επιλέξετε ό, τι όνομα προτιμάτε.

1. Κωδικοποίηση της συνάρτησης conditionalResponses

[js]

συνάρτηση conditionalResponses (recipientId, κείμενο) {
κείμενο = κείμενο || "";

var what = text.match (/ what / gi); // ελέγξτε αν η συμβολοσειρά κειμένου περιέχει τη λέξη "τι"; αγνοήστε την περίπτωση
varGadget-Info.com = text.match (/ beebom / gi). // ελέγξτε αν η συμβολοσειρά κειμένου περιέχει τη λέξη "beebom". αγνοήστε την περίπτωση
var ο οποίος = text.match (/ who / gi); // ελέγξτε αν η συμβολοσειρά κειμένου περιέχει τη λέξη "ποιος"; αγνοήστε την περίπτωση
var you = text.match (/ you / gi); // ελέγξτε εάν η συμβολοσειρά κειμένου περιέχει τη λέξη "εσείς". αγνοήστε την περίπτωση

// αν το κείμενο περιέχει τόσο "τι" και "beebom", κάντε το εξής:

αν (what! = null &&; Gadget-Info.com! = null) {
μήνυμα = {
κείμενο: "Η Beebom είναι μια ιστοσελίδα που προσφέρει τεχνικούς πόρους.
}}
sendMessage (recipientId, μήνυμα);
επιστροφή true;
}}

// εάν το κείμενο περιέχει και "ποιος" και "εσείς", κάντε το εξής:
αν (who! = null && you! = null) {
μήνυμα = {
κείμενο: "Μου ζητήθηκε να μην συζητήσω την ταυτότητά μου στο διαδίκτυο."
}}
sendMessage (recipientId, μήνυμα);
επιστροφή true;
}}

// αν δεν συμφωνεί τίποτα, επιστρέψτε ψευδές για να συνεχίσετε την εκτέλεση της εσωτερικής λειτουργίας.
επιστροφή ψευδής?
},

[/ js]

Στις γραμμές 4 έως 7, έχουμε ορίσει μεταβλητές ανάλογα με την αντιστοίχιση της ληφθείσας συμβολοσειράς με συγκεκριμένες λέξεις. Το καλύτερο μέρος για τη χρήση του "text.match ()" είναι ότι χρησιμοποιεί κανονικές εκφράσεις (συνήθως ονομάζεται regex, διαβάστε περισσότερα εδώ). Είναι καλό για εμάς, επειδή αυτό σημαίνει ότι όσο ένα μέρος μιας λέξης στο κείμενο που λαμβάνεται αντιστοιχεί σε οποιαδήποτε από τις λέξεις που αναφέραμε στο text.match (), η μεταβλητή δεν θα είναι μηδενική. Αυτό σημαίνει ότι εάν το ληφθέν μήνυμα ήταν "Τι είναι το Beebom;", "var what" και "var beebom" δεν θα είναι άκυρες, επειδή η λέξη "What's" περιέχει τη λέξη "what". Έτσι σώζονται από τη δημιουργία πρόσθετων δηλώσεων για κάθε παραλλαγή στην οποία κάποιος θα μπορούσε να πει "Τι".

2. Επεξεργασία του ακουστικού μηνύματος

Πρέπει επίσης να επεξεργαστούμε τον κωδικοποιητή μηνυμάτων μηνυμάτων (Message Listener), τον οποίο κωδικοποιήσαμε, για να διασφαλίσουμε ότι προσπαθεί να ταιριάζει με το "conditionalResponses" και με το "conditionalResponses".

[js]

app.post ('/ webhook', συνάρτηση (req, res) {
var γεγονότα = req.body.entry [0] .messaging;
για (i = 0, i <events.length; i ++) {
var event = συμβάντα [i];
αν (event.message && event.message.text) {

// δοκιμάστε πρώτα να ελέγξετε αν το ληφθέν μήνυμα πληροί τις προϋποθέσεις απάντησης υπό όρους.
εάν (! conditionalResponses (event.sender.id, event.message.text)) {

// εάν δεν το κάνει, απλά επαναλάβετε το ληφθέν μήνυμα πίσω στον αποστολέα.
sendMessage (event.sender.id, {text: "Ηχώ:" + event.message.text});
}}
}}
}}
res.sendStatus (200).
});

[/ js]

Οι αλλαγές στον ακροατή μπορεί να μην φαίνονται πολύ δραστικές, αλλά τα αποτελέσματά τους είναι σίγουρα. Τώρα, ο ακροατής προσπαθεί πρώτα να απαντήσει με τις υπό όρους απαντήσεις και αν δεν υπάρχει έγκυρη συνθήκη για το ληφθέν μήνυμα, απλώς αντηχεί το μήνυμα πίσω στον χρήστη.

3. Πιέζοντας τις αλλαγές στο Heroku

Πριν μπορέσετε να δοκιμάσετε τις νέες δυνατότητες, θα πρέπει να σπρώξετε τον ενημερωμένο κώδικα στην εφαρμογή που φιλοξενείται στο Heroku. Ακολουθήστε τα παρακάτω βήματα για να το κάνετε αυτό:

1. Εκκινήστε τον τερματικό σταθμό.

2. Αλλάξτε τον κατάλογο στον κατάλογο testbot
cd testbot

3. Ακολουθήστε τα παρακάτω βήματα:

  • git add.
  • Σημείωση: Υπάρχει "." Στο τέλος του "git add"
  • git commit -m "Προσθήκη δυνατοτήτων υπό όρους"
  • git push master heroku

4. Τώρα στείλτε ένα μήνυμα στη σελίδα σας, και το bot θα επαναλάβει το μήνυμα πίσω σε εσάς.

Ακόμη περισσότερη λειτουργικότητα

Το bot μας ανταποκρίνεται τώρα σε ένα μικρό σύνολο εντολών με ωραίες, καλά δομημένες απαντήσεις. Αλλά δεν είναι ακόμα πολύ χρήσιμο. Ας κάνουμε κάποιες άλλες αλλαγές στον κώδικα για να κάνουμε το bot μας ένα πιο " λειτουργικό " λογισμικό. Θα ανανεώσουμε πολλές λειτουργίες και θα προσθέσουμε ακόμα ένα ζευγάρι, ώστε να ενθουσιαστείτε.

1. Επεξεργασία του ακουστικού μηνύματος

Ο ακροατής μας μηνυμάτων, σε αυτό το στάδιο, λειτουργεί καλά. Ωστόσο, δεν είναι πολύ ωραίο μορφοποιημένο και εάν επρόκειτο να συνεχίσουμε να αυξάνουμε τις δηλώσεις ένθετου if να προσθέσουμε επιπλέον " ελέγχους κατάστασης ", θα γίνει γρήγορα άσχημο να κοιτάξει κανείς, είναι δύσκολο να καταλάβει και πιο αργή στην εκτέλεση. Δεν θέλουμε αυτό, τώρα, εμείς; Ας κάνουμε κάποιες αλλαγές.

Σημείωση: Υπάρχει μια γραμμή κώδικα στον ακροατή μηνύματος που διαβάζει "res.sendStatus (200)", αυτή η γραμμή στέλνει ένα κωδικό κατάστασης 200 στο Facebook, λέγοντας ότι η λειτουργία εκτελέστηκε με επιτυχία. Σύμφωνα με την τεκμηρίωση του Facebook, το Facebook περιμένει για μέγιστο διάστημα 20 δευτερολέπτων για να λάβει μια κατάσταση 200, προτού αποφασίσει ότι το μήνυμα δεν θα περάσει και θα σταματήσει την εκτέλεση του κώδικα.

Ο νέος ακροατής μηνυμάτων μοιάζει με αυτό. Χρησιμοποιούμε την εντολή " res.sendStatus (200) " για να σταματήσουμε την εκτέλεση της λειτουργίας αμέσως μόλις μια κατάσταση συμφωνηθεί και εκτελεστεί.

[js]

app.post ('/ webhook', συνάρτηση (req, res) {
var γεγονότα = req.body.entry [0] .messaging;
για (i = 0, i <events.length; i ++) {
var event = συμβάντα [i];
αν (event.message && event.message.text) {

// πρώτα να ελέγξετε το κείμενο του μηνύματος έναντι των συνθηκών introResponse
αν (introResponse (event.sender.id, event.message.text)) {
res.sendStatus (200).
}}

// για έλλειψη καλού ονόματος, κάλεσα αυτό το νέοResponse: p; ελέγξτε αυτό το επόμενο
else if (newResponse (event.sender.id, event.message.text)) {
res.sendStatus (200).
}}

// else, απλά επαναφέρετε το αρχικό μήνυμα
αλλού {
// αντικαταστήστε την echo με την έγκυρη λίστα εντολών
sendMessage (event.sender.id, {text: "Ηχώ:" + event.message.text});
}}
}}
}}
res.sendStatus (200).
});

[/ js]

2. Κωδικοποίηση της νέας λειτουργίας αντιστάθμισης

Ο ακροατής μηνυμάτων μας ελέγχει τώρα το κείμενο του μηνύματος έναντι ενός συνόλου συνθηκών στο "newResponse", αλλά πρώτα, πρέπει να κωδικοποιήσουμε τη λειτουργία newResponse. Θα χρησιμοποιήσουμε αυτή τη λειτουργία για να ελέγξουμε εάν ο χρήστης ζήτησε προτάσεις άρθρων από το δικτυακό τόπο του Gadget-Info.com, αναζητά τον όρο ερωτήματος στον ιστότοπο και παρουσιάζει τη σύνδεση στον χρήστη. Για άλλη μια φορά, θα χρησιμοποιήσουμε κανονικές εκφράσεις για να ταιριάξουμε το κείμενο με συγκεκριμένες λέξεις-κλειδιά.

[js]

συνάρτηση newResponse (recipientId, κείμενο) {
κείμενο = κείμενο || "";
var προτείνουμε = text.match (/ suggest / gi);
var τυχαία = text.match (/ random / gi);
άρθρο var = text.match (/ article / gi);
var iphone = text.match (/ iphone / gi).
var android = text.match (/ android / gi).
var mac = text.match (/ mac / gi).
var πρόγραμμα περιήγησης = text.match (/ browser / gi);
var vpn = text.match (/ vpn / gi).

// ελέγξτε εάν ο χρήστης ζητά καθόλου προτάσεις για το άρθρο
αν (προτείνουμε! = null && article! = null) {
var ερώτηση = "";
// Εάν ερωτηματολόγια του άρθρου ερωτηθούν, ελέγξτε το θέμα που αναζητά ο χρήστης
αν (android! = null) {
ερώτημα = "Android";
} else αν (mac! = null) {
ερώτημα = "Mac";
} else αν (iphone! = null) {
ερώτημα = "iPhone";
} else αν (browser! = null) {
query = "Πρόγραμμα περιήγησης";
} else αν (vpn! = null) {
ερώτημα = "VPN";
}}
sendButtonMessage (recipientId, ερώτημα);
επιστροφή true
}}
επιστροφή ψευδής?
},

[/ js]

Χρησιμοποιούμε μια άλλη προσαρμοσμένη λειτουργία που ονομάζεται "sendButtonMessage" για να στείλει το μήνυμα σε περίπτωση που ο χρήστης ζητήσει προτάσεις άρθρου. Θα δημιουργήσουμε αυτό το επόμενο.

3. Κωδικοποίηση της λειτουργίας sendButtonMessage

Η συνάρτηση sendButtonMessage απαιτεί δύο παραμέτρους, αναγνωριστικό παραλήπτη και ερώτημα. Το αναγνωριστικό παραλήπτη χρησιμοποιείται για τον προσδιορισμό του χρήστη στον οποίο πρέπει να αποσταλεί το μήνυμα και το ερώτημα χρησιμοποιείται για να προσδιορίσει το θέμα στο οποίο ο χρήστης θέλει προτάσεις άρθρων.

[js]

λειτουργία sendButtonMessage (recipientId, ερώτημα) {
var messageData = {
αποδέκτης: {
id: recipientId
},
μήνυμα: {
συνημμένο: {
πληκτρολογήστε: "πρότυπο",
ωφέλιμο φορτίο: {
template_type: "κουμπί",
κείμενο: "Αυτό το έχω βρει για" + ερώτημα,
κουμπιά: [{
πληκτρολογήστε: "web_url",
url: "//www.beebom.com/?s="+query,
τίτλος: "Beebom:" + ερώτημα
}]
}}
}}
}}
},

callSendAPI (messageData);
}}

[/ js]

Για άλλη μια φορά, χρησιμοποιούμε μια προσαρμοσμένη λειτουργία. αυτή τη φορά για να στείλει το τελικό μήνυμα, με τους συνδέσμους του άρθρου, στον χρήστη. Η λειτουργία είναι, με πολλούς τρόπους, παρόμοια με τη λειτουργία "sendMessage" που κωδικοποιήσαμε νωρίτερα, αλλά είναι πιο γενική στον τρόπο που παίρνει τα δεδομένα των μηνυμάτων που μας ταιριάζει, επειδή τα δεδομένα των μηνυμάτων μας αλλάζουν με το ερώτημα που κάνει ο χρήστης.

4. Κωδικοποίηση της λειτουργίας callSendAPI

Η συνάρτηση "callSendAPI" λαμβάνει μία μόνο παράμετρο, την "messageData" . Αυτή η παράμετρος περιέχει όλα τα δεδομένα μηνυμάτων, μορφοποιημένα σωστά σύμφωνα με τους κανόνες του Facebook, έτσι ώστε ο αγγελιοφόρος να μπορεί να το εμφανίσει σωστά στον χρήστη.

[js]

λειτουργία callSendAPI (messageData) {
αίτηση({
uri: '//graph.facebook.com/v2.6/me/messages',
qs: {access_token: process.env.PAGE_ACCESS_TOKEN},
μέθοδος: "POST",
json: messageData

}, λειτουργία (σφάλμα, απόκριση, σώμα) {
αν (! error && response.statusCode == 200) {
var recipientId = body.recipient_id;
var μήνυμαId = body.message_id;

console.log ("Αποστολή γενικού μηνύματος με id% s στον παραλήπτη% s",
messageId, recipientId);
} else {
console.error ("Δεν είναι δυνατή η αποστολή μηνύματος.");
console.error (απάντηση);
console.error (σφάλμα);
}}
});
}}

[/ js]

5. Πιέζοντας τις αλλαγές στο Heroku

Είμαστε στο τελευταίο βήμα προς την κατεύθυνση της αναβάθμισης του bot μας. Απλά πρέπει να προωθήσουμε όλες τις αλλαγές κώδικα στο Heroku. Η διαδικασία είναι ίδια με την προηγούμενη και περιγράφεται παρακάτω:

1. Εκκινήστε τον τερματικό σταθμό.

2. Αλλάξτε τον κατάλογο στον κατάλογο testbot .
cd testbot

3. Κάντε τα εξής:

  • git add.
  • Σημείωση: Υπάρχει ένα "." Στο τέλος αυτής της εντολής.
  • git commit -m "βελτίωση των ελέγχων κατάστασης και μορφοποίησης"
  • git push master heroku

4. Τώρα στείλτε ένα μήνυμα, όπως "Προτείνετε ένα άρθρο για το Android", ή "Beebom, προτείνω μου οποιοδήποτε άρθρο σχετικά με το θέμα Android"? και το bot θα στείλει ένα όμορφα διαμορφωμένο μήνυμα με έναν σύνδεσμο στον οποίο μπορείτε να πατήσετε για να ανοίξετε τα άρθρα που σχετίζονται με το ερώτημά σας.

Σκάβουμε βαθύτερα

Τώρα που ξέρετε πώς να ξεκινήσετε με την ανάπτυξη bots Facebook Messenger, περάστε από την τεκμηρίωση του Facebook σχετικά με τον τρόπο ανάπτυξης των bots Facebook messenger. Ενώ η τεκμηρίωση δεν είναι καλή για αρχάριους, δεν είστε πια αρχάριος. Θα πρέπει να ελέγξετε την επίσημη τεκμηρίωση και να προσπαθήσετε να καταλάβετε πώς να κάνετε το bot σας πιο έξυπνο. Teaser: Μπορείτε να στείλετε μηνύματα με εικόνες και κουμπιά επίσης! Είναι επίσης δυνατό να χρησιμοποιήσετε υπηρεσίες όπως Wit.ai και Api.ai για να κωδικοποιήσετε το bot σας και στη συνέχεια να το ενσωματώσετε στο Facebook, αλλά στις αδύναμες προσπάθειές μου να χρησιμοποιήσω αυτές τις υπηρεσίες, το Wit.ai δεν λειτουργεί πάρα πολύ καλά και το Api.ai έχει μια αιχμηρή καμπύλη μάθησης για αρχάριους.

Έχετε αναπτύξει ποτέ ένα bot bot messenger; Αν έχετε, πώς πήγατε να το αναπτύξετε και τι μπορεί να κάνει; Χρησιμοποιήσατε υπηρεσίες όπως το Wit.ai και το Api.ai για να δημιουργήσετε το bot σας; Εάν δεν έχετε δοκιμάσει ποτέ τα χέρια σας για την κωδικοποίηση ενός bot, πηγαίνετε και να αναπτύξετε το δικό σας bot messenger του Facebook, να το κάνετε πιο έξυπνο και καλύτερο και να μας ενημερώσετε για την εμπειρία σας στα παρακάτω σχόλια.

Top