Πώς να δημιουργήσετε ένα bot bot με το SAP Conversational AI και το NodeJS

Αποκτήστε συστάσεις ταινιών από τη βάση δεδομένων ταινιών ζητώντας τη δική σας chatbot στο Facebook Messenger.

Μέχρι το τέλος αυτού του σεμιναρίου, θα είστε σε θέση να δημιουργήσετε ένα πλήρως λειτουργικό bot bot, ικανό να κάνει προτάσεις κινηματογραφικών ταινιών με βάση αρκετά κριτήρια. Χρησιμοποιούμε την πλατφόρμα SAP Conversational AI για την κατασκευή bot (εγγραφείτε δωρεάν εδώ) και τη Βάση δεδομένων ταινιών για πληροφορίες σχετικά με τις ταινίες.

Ακολουθήστε μια συνομιλία επίδειξης με το Movie Bot:

Τι χτίζουμε σήμερα;

Η αλληλεπίδραση με API τρίτου μέρους επιτρέπει πολύ πιο ενδιαφέροντα περιστατικά χρήσης απ 'ό, τι τα απλά Q / A chatbots. Με τις δεξιότητες Bot, προσθέσαμε την επιλογή να καλέσετε webhooks απευθείας από τον οικοδόμο, γεγονός που καθιστά ακόμα πιο εύκολη.

Το σημερινό bot απαιτεί διάφορα βήματα:

  1. Εξαγωγή βασικών πληροφοριών σε μια πρόταση
  2. Δημιουργία ροής bot (ενεργοποιήσεις, απαιτήσεις, ενέργειες)
  3. Δημιουργία και σύνδεση ενός API bot που είναι σε θέση να αντλήσει δεδομένα από τη βάση δεδομένων ταινιών

Θα χρειαστείτε ένα λογαριασμό SAP Conversational AI, Node.JS και ενδεχομένως Ngrok για έλεγχο.

Πριν εισέλθουμε, παρακαλούμε να ελέγξετε αυτόν τον οδηγό αν ψάχνετε για έναν οδηγό που θα περιγράφει λεπτομερώς τη δημιουργία του πρώτου σας bot.

Ας φτάσουμε σε αυτό!

Βήμα 1: Εξαγωγή πληροφοριών κλειδιού από μια πρόταση

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

Πρέπει να γνωρίζουμε τι θέλουν να δουν οι χρήστες.

Οι οντότητες σχεδιάζονται για να λύσουν αυτό το πρόβλημα: εξάγουν βασικές πληροφορίες σε μια πρόταση.

Οι προθέσεις σας κάνουν να καταλάβετε ότι πρέπει να κάνετε κάτι. Οι οντότητες σας βοηθούν να κάνετε κάτι πραγματικά.

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

Οι εξερχόμενες οντότητες θα βοηθήσουν στην κατανόηση του τι είναι λάθος, πού και πότε.

Για το bot μας, θα προσπαθήσουμε να εξαγάγουμε 3 βασικά κομμάτια των πληροφοριών:

  1. Τι θέλει ο χρήστης να παρακολουθήσει (μια ταινία σε μια τηλεοπτική εκπομπή)
  2. Τι είδος αναζητούν
  3. Σε ποια γλώσσα

Χρησιμοποιώντας χρυσές οντότητες

Για να σας βοηθήσει να επιταχύνετε την ανάπτυξή σας, το SAP Conversational AI εξάγει από προεπιλογή διάφορες οντότητες: ημερομηνίες, τοποθεσίες, αριθμούς τηλεφώνου ...

Ένας εξαντλητικός κατάλογος είναι διαθέσιμος εδώ.

Η γλώσσα της οντότητας θα είναι χρήσιμη:

Χρυσές οντότητες - Γλώσσα

Δείτε το μικρό αστέρι δίπλα στο όνομα της οντότητας; Διακρίνει μια χρυσή οντότητα από μια προσαρμοσμένη.

Θα το χρησιμοποιήσουμε για να εκπληρώσουμε την τρίτη μας απαίτηση: τη γλώσσα ταινίας.

Δημιουργία προσαρμοσμένων οντοτήτων

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

Η κατάρτιση των οντοτήτων σας μπορεί να συμβεί με πολλαπλές προθέσεις. Οι οντότητες είναι ανεξάρτητες από τις προθέσεις.

Για το ρομπότ ταινιών μας, χρειαζόμαστε μόνο μία πρόθεση, ανακαλύψτε και 2 οντότητες:

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

Ανοίξτε την πρόθεση ανακαλύψτε και προσθέστε εκφράσεις. Βεβαιωθείτε ότι καλύπτετε κάθε πιθανότητα, αυτό σημαίνει ένα υγιεινό μίγμα εκφράσεων με:

  • Δεν υπάρχουν οντότητες: "Ο φίλος μου θέλει να δει κάτι απόψε"
  • Μια οντότητα: "Θέλω να δω μια ταινία"
  • Πολλές οντότητες: "Μπορείτε να μου συστήσετε μερικές γαλλικές θεατρικές τηλεοπτικές εκπομπές;"

Για να προσθέσετε ετικέτες στις εκφράσεις σας, επιλέξτε το κείμενο που θέλετε να επισημάνετε και πληκτρολογήστε το όνομα της οντότητας:

Ετικέτα προσαρμοσμένων οντοτήτων

Θα πρέπει να προσθέσετε πολλά ακόμα παραδείγματα: 15 θα ήταν ωραία, αλλά ένα έτοιμο για παραγωγή θα απαιτούσε τουλάχιστον 50 παραδείγματα για να αποδώσει καλά. Για να επιταχύνετε τη διαδικασία μπορείτε να περάσετε τις οντότητες που είναι ενσωματωμένες σε αυτό το bot [οντότητα εγγραφής, οντότητα] και στη συνέχεια πιέστε την πρόθεση ανακαλύψεων από αυτό το bot.

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

Προσθήκη προσαρμοσμένων εμπλουτισμών

Τώρα που έχουμε επισημάνει ότι οι οντότητες μας θα τους εμπλουτίσουμε! Ανοίξτε τον πίνακα οντοτήτων από το bot σας κάτω από την καρτέλα κατάρτισης όπως φαίνεται παρακάτω:

Τμήμα οντοτήτων

Τώρα ας ανοίξουμε την οντότητα του είδους. Αν κοιτάξετε στην επάνω δεξιά γωνία του πίνακα θα πρέπει να δείτε μια εναλλαγή λέγοντας free-restricted και ρυθμίσεις. Ανοίξτε το για να μπορέσετε να εξηγήσετε λεπτομερώς τις διάφορες επιλογές στις οποίες έχετε πρόσβαση:

Πίνακας οντοτήτων

Μέσα στην ομάδα οντοτήτων έχετε πρόσβαση σε διάφορες επιλογές για την οντότητά σας:

  • Free vs. Restricted - Μια ελεύθερη προσαρμοσμένη οντότητα χρησιμοποιείται όταν δεν έχετε έναν αυστηρό κατάλογο τιμών και θέλετε να μάθει η μηχανή να ανιχνεύσει όλες τις πιθανές τιμές. Ενώ μια περιορισμένη προσαρμοσμένη οντότητα χρησιμοποιείται όταν έχετε μια αυστηρή λίστα λέξεων για να ανιχνεύσετε και δεν χρειάζεστε αυτόματη ανίχνευση της οντότητας.
  • Ασαφής αντιστοίχιση - Ασαφής αντιστοίχιση είναι ένας δείκτης μεταξύ 0 και 1 για να υποδείξει πόσο κοντά μια λέξη μπορεί να είναι από εκείνη της λίστας οντοτήτων αξιών σας. Αν η λέξη βρίσκεται πάνω από αυτόν τον δείκτη, τότε η πλατφόρμα θα την επισημάνει ως την πλησιέστερη τιμή στη λίστα σας.
  • Λίστα αξιών - Στο σημείο αυτό μπορείτε να προσθέσετε όλες τις λίστες τιμών της οντότητας σας που θα μπορούσαν να είναι διαφορετικές τιμές ή συνώνυμα

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

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

[
{id: 28, όνομα: 'Ενέργεια'},
{id: 12, όνομα: 'Περιπέτεια'},
{id: 16, όνομα: 'Animation'},
{id: 35, όνομα: 'Κωμωδία'},
{id: 80, όνομα: 'Έγκλημα'},
{id: 99, όνομα: 'Ντοκιμαντέρ'},
{id: 18, όνομα: 'Drama'},
{id: 10751, όνομα: 'Οικογένεια'},
{id: 14, όνομα: 'Φαντασία'},
{id: 36, όνομα: 'Ιστορικό'},
{id: 27, όνομα: 'Τρόμος'},
{id: 10402, όνομα: 'Μουσική'},
{id: 9648, όνομα: 'Mystery'},
{id: 10749, όνομα: 'Ρομαντική'},
{id: 878, όνομα: 'Science Fiction'},
{id: 53, όνομα: 'Θρίλερ'},
{id: 10752, όνομα: 'War'},
{id: 37, όνομα: 'Δυτική'}
]

Προσθέστε όλα τα διαφορετικά είδη στη λίστα τιμών μας. Μην ξεχάσετε επίσης να προσθέσετε συνώνυμα όπως SF, Sci-Fi για επιστημονική φαντασία, ρομαντικό για ρομαντισμό ή κινούμενα σχέδια, κινούμενα σχέδια για κινούμενα σχέδια. Μπορείτε να μεταφέρετε τη λίστα τιμών από εκεί.

Όπως μπορείτε να δείτε από το JSON παραπάνω, υπάρχουν αναγνωριστικά που σχετίζονται με τα είδη. Ο λόγος είναι ότι η Βάση δεδομένων ταινιών δεν μπορεί να αναζητήσει ένα συγκεκριμένο είδος βασισμένο στο αγγλικό του όνομα, αλλά σε έναν προσαρμοσμένο αριθμό. Μπορούμε να συσχετίσουμε για κάθε μία από τις τιμές του genre ένα συγκεκριμένο id που θα επιστραφεί μέσα στο JSON του API NLP. Μπορούμε να το μεταφέρουμε στο API της βάσης δεδομένων ταινιών. Αυτός είναι ο σκοπός των προσαρμοσμένων εμπλουτισμών. Κάθε φορά που εντοπίζεται μια οντότητα, το JSON που επιστρέφεται από το NLP API εμπλουτίζεται με πρόσθετες πληροφορίες για την οντότητα.

Μέσα στον ειδικό πίνακα εμπλουτισμού πρέπει να δημιουργήσουμε 3 κλειδιά:

  • όνομα - για να αντιστοιχίσετε τα συνώνυμα με την ίδια τιμή
  • id - για να εμπλουτίσετε με την ταυτότητα της Ταινίας βάσης δεδομένων
  • άρθρο - για να προσθέσετε το άρθρο του είδους (θα το χρησιμοποιήσουμε αργότερα)

Για να προσθέσετε έναν προσαρμοσμένο εμπλουτισμό, κάντε κλικ στο κουμπί Προσθήκη νέου κλειδιού και προσθέστε τα τρία παραπάνω κλειδιά. Για το άρθρο ορίστε την προεπιλεγμένη τιμή κλειδιού σε 'a' καθώς τα περισσότερα από τα είδη θα είναι με 'a'. Μέσα στο όνομα, μπορείτε να ξεκινήσετε να προσθέτετε τον συγκεκριμένο εμπλουτισμό και να το χαρτογραφήσετε σε όλες τις διαφορετικές τιμές για το άρθρο, το όνομα και το όνομα σας όπως παρακάτω:

Προσαρμοσμένοι εμπλουτισμοί για το όνομαΠροσαρμοσμένοι εμπλουτισμοί για IDsΕμπλουτισμοί για το άρθρο

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

"είδος": [
      {
        "τιμή": "κινούμενο",
        "ωμή": "κινούμενη",
        "εμπιστοσύνη": 0,99,
        "όνομα": "κινούμενα σχέδια",
        "id": 16,
        "άρθρο": "ένα"
      }}

Μεγάλη, τώρα ο εμπλουτισμός μας μας δίνει το γενικό όνομα, id, και το άρθρο! Ας κάνουμε το ίδιο πράγμα για την οντότητα εγγραφής. Επιστρέψτε στον πίνακα οντοτήτων και κάντε κλικ στην εγγραφή. Στη συνέχεια, περιορίστε και προσθέστε όλες τις πιθανές τιμές και συνώνυμα για τηλεοπτική εκπομπή και ταινία (όπως τηλεοπτικές εκπομπές, εκπομπές, κινηματογραφικές ταινίες, ταινίες, ταινίες, ταινίες κ.λπ.). Δείτε ολόκληρη τη λίστα εδώ. Τώρα μεταβείτε σε προσαρμοσμένους εμπλουτισμούς και προσθέστε τον τύπο κλειδιού και προσθέστε 2 συγκεκριμένες τιμές:

  • ταινία - για όλα τα συνώνυμα των ταινιών
  • tv - για όλα τα συνώνυμα τηλεοπτικών εκπομπών

Θα πρέπει να μοιάζει με αυτό:

Εμπλουτισμοί για τον τύπο

Αποστέλλοντας την πρόταση μας "Θέλω να παρακολουθήσω μια ταινία κινουμένων σχεδίων" έχουμε τώρα τον εμπλουτισμό για την εγγραφή:

"εγγραφή": [
      {
        "αξία": "ταινία",
        "ωμή": "ταινία",
        "εμπιστοσύνη": 0,99,
        "τύπος": "ταινία"
      }}
    ]

Βήμα 2: Δημιουργία ροής bot σας

Δεδομένου ότι απλά πρέπει να βεβαιωθείτε ότι πληρούνται όλα τα κριτήρια μας πριν καλέσετε ένα API Node.JS, το τμήμα κατασκευής θα είναι αρκετά απλό.

Απλώς θα χρειαστούμε μια δεξιότητα, ας την καλέσουμε να ανακαλύψει.

Μπορείτε να βρείτε ένα παράδειγμα μιας διαμορφωμένης ικανότητας εδώ.

Ενεργοποιεί

Θέλουμε να ενεργοποιήσουμε αυτήν την ικανότητα εάν υπάρχει η πρόθεση @discover:

Ενεργοποίηση μηνυμάτων

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

Απαιτήσεις

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

Για κάθε απαίτηση, μπορείτε να επιλέξετε να στείλετε ένα μήνυμα εάν είναι πλήρες ή αν λείπει.

Η αποστολή μηνυμάτων όταν μια απαίτηση είναι πλήρης μπορεί να κάνει το bot πιο ζωντανό: Μια ταινία εγκλημάτων; Τους αγαπώ πολύ !, αλλά είναι σχεδόν υποχρεωτικοί όταν η απαίτηση λείπει: Πρέπει να ζητήσετε από τους χρήστες σας να συμπληρώσουν ό, τι πρέπει να γνωρίζετε.

Για παράδειγμα, στέλνω γρήγορες απαντήσεις με προτεινόμενα είδη αν #genre λείπει:

Υποχρεωτικό μήνυμα αν λείπει μια απαίτηση

Για την επιβεβαίωση χρησιμοποιούμε τη μνήμη για να εμφανιστεί ένα δυναμικό μήνυμα για την επικύρωση της επιλογής του χρήστη χρησιμοποιώντας @yes και @nointent:

Χρησιμοποιώντας τη μνήμη για δυναμικό μήνυμα

Αφού ρυθμίσετε ερωτήσεις για τις 4 ομάδες οντοτήτων, μεταβείτε στην καρτέλα Ενέργειες.

Ενέργειες

Μόλις εκπληρωθούν οι απαιτήσεις, θέλουμε να καλέσουμε το API μας να εκτελέσει την αναζήτηση αν ο χρήστης πει ναι. Αλλιώς επαναφέρουμε τη μνήμη και ρωτάμε πάλι τι θέλει να δει ο χρήστης.

Αν υπάρχει _memory.no, επαναφέρετε ολόκληρη τη μνήμη και στείλτε ένα μήνυμα, όπως "Ας ξεκινήσουμε πάλι, τι θέλετε να παρακολουθήσετε;"

Αν το _memory.yes είναι παρόν, δημιουργήστε μια ενέργεια CALL WEHBOOK. Μπορείτε είτε να πληκτρολογήσετε μια πλήρη διεύθυνση URL (π.χ.: https://mydomainname.com/discover-movies), είτε μια σχετική διεύθυνση URL (/ discover-movies). Το SAP Conversational AI θα χρησιμοποιήσει την παράμετρο URL βάσης Bot στις ρυθμίσεις bot σας όταν πληκτρολογείτε μια σχετική διεύθυνση URL.

Στη συνέχεια, προσθέστε μια ενέργεια UPDATE CONVERSATION> EDIT MEMORY> RESET ALL MEMORY για να αδειάσετε τη μνήμη μόλις γίνει η κλήση.

Ενέργειες

Αν δεν έχετε δημόσιο διακομιστή ή αν θέλετε να δοκιμάσετε το bot σας κατά τη διάρκεια της ανάπτυξης, το ngrok είναι ένα πολύ βολικό εργαλείο. Δημιουργεί μια δημόσια διεύθυνση URL για εσάς και προωθεί τα αιτήματα στον υπολογιστή σας.

Μόλις το εγκαταστήσετε, εκτελέστε

ngrok http 5000

Και αντιγράψτε τη διεύθυνση URL προώθησης σε HTTPS (https://XXX.ngrok.io) στις ρυθμίσεις bot σας (πεδίο "Bot webhook base URL"). Όλα τα αιτήματα που υποβάλλονται σε αυτές τις διευθύνσεις URL θα προωθηθούν στη θύρα 5000 του υπολογιστή σας.

Όλες οι ανάγκες των bot σας είναι τώρα API του για να πάρει τις ταινίες σας!

Βήμα 3: Δημιουργία του API κινητής ταινίας

Το τμήμα NodeJS αυτού του bot είναι αρκετά απλό: Θα συμπεριφέρεται ως διακομιστής μεσολάβησης HTTP μεταξύ του SAP Conversational AI και της βάσης δεδομένων ταινιών.

Όταν η αίτησή σας λάβει αίτημα από το SAP Conversational AI, στέλνει ένα ερώτημα αναζήτησης στη βάση δεδομένων ταινίας με τα κριτήρια του χρήστη και μορφοποιεί την απάντηση JSON στη μορφή μηνυμάτων SAP Conversational AI.

Διάγραμμα API Bot

Επιλογή 1: ο αυτόματος τρόπος

Μπορείτε να κλωνοποιήσετε ολόκληρο το έργο απευθείας από το αποθετήριο Git: https://github.com/plieb/movie-bot-skills-training

Επιλογή 2: ο χειρωνακτικός τρόπος

Βήμα 1 - ικρίωμα του έργου σας

mkdir ταινία-bot && cd ταινία-bot
npm init
npm install - αποθηκεύστε το axios
αγγίξτε index.js config.js
mkdir ανακαλύψτε ταινίες && cd ανακαλύψτε ταινίες
αγγίξτε index.js movieApi.js
CD..

Βήμα 2 - λήψη ενός διακριτικού API TMDb

Θα χρειαστείτε ένα κουπόνι για να χρησιμοποιήσετε το API Ταινίας βάσης δεδομένων, πηγαίνετε εδώ για να δημιουργήσετε ένα και επεξεργαστείτε το αρχείο config.js:

module.exports = {MOVIEDB_TOKEN: process.env.MOVIEDB_TOKEN || 'PURYOURTOKENHERE', ΛΙΜΑΝΙ: process.env.PORT || 5000,}.

Βήμα 3 - συμπληρώνοντας το index.js με μια εφαρμογή Express
 
Ας δημιουργήσουμε μια εφαρμογή Express για την αντιμετώπιση των αιτημάτων από το SAP Conversational AI. Για να οργανώσουμε καλύτερα το έργο μας, όπως φαίνεται στο Βήμα 1, έχουμε ένα φάκελο / ανακαλύψτε-ταινίες / που περιέχει τον πυρήνα του κώδικα bot (αντί να βάζουμε όλα τα αρχεία μας στον ίδιο φάκελο) και το ονομάζουμε μέσω του loadMovieRoute.

const express = απαιτούν ('express');
const bodyParser = απαιτούν ('body-parser');

const config = απαιτούν ('./ config');
const loadMovieRoute = απαιτούν ('./ discover-movies');

const app = express ();
app.use (bodyParser.json ());

loadMovieRoute (app);

app.post ('/ σφάλματα', λειτουργία (req, res) {
  console.log (req.body);
  res.sendStatus (200).
});

const port = config.PORT;
app.listen (θύρα, συνάρτηση () {
  console.log (`Η εφαρμογή ακούει στη θύρα $ {port}`);
});

Βήμα 4 - συμπλήρωση ανακαλύψτε-movies / index.js

Ζητάμε από το SAP Conversational AI να στείλει ένα αίτημα POST σε / ανακαλύψει ταινίες όταν ένας χρήστης έχει συμπληρώσει τα κριτήρια αναζήτησης.

Ο κύριος στόχος του ελεγκτή μας είναι να επιλέξουμε και να μορφοποιήσουμε τις προτιμήσεις από τη μνήμη για να τις στείλουμε στο API της Βάσης δεδομένων ταινιών:

const config = απαιτεί ('../ config'); const {findMovie} = απαιτεί ('./ movieApi'); Λειτουργία loadMovieRoute (app) {app.post ('/ discover-movies', συνάρτηση (req, res) {console.log ('[GET] / ανακαλύψτε ταινίες') const είδος req.body.conversation.memory [ 'εγγραφή'] Τύπος: const genre = req.body.conversation.memory ['genre'] id = "const" γλώσσα = req.body.conversation.memory ['γλώσσα']; (είδος, genreId, isoCode) .then (λειτουργία (carouselle) {res.json ({ απαντήσεις: carouselle, συνομιλία: {}});)) .catch (λειτουργία (err) {console.error ('movieApi :: discoverMovie error:', err);});}); } module.exports = loadMovieRoute;

Βήμα 5 - πλήρωση ανακαλύψεων ταινιών / ταινιώνApi.js

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

const axios = απαιτούν ('axios');
const config = απαιτεί ('../ config');

λειτουργία findMovie (είδος, genreId, γλώσσα) {
  επιστροφή moviedbApiCall (είδος, genreId, γλώσσα) .then (απάντηση =>
    apiResultToCarousselle (response.data.results)
  ) ·
}}

λειτουργία moviedbApiCall (είδος, genreId, γλώσσα) {
  επιστροφή axios.get (`https://api.themoviedb.org/3/discover/$ {είδος}`, {
    params: {
      api_key: config.MOVIEDB_TOKEN,
      sort_by: 'popularity.desc',
      include_adult: false,
      with_genres: genreId,
      with_original_language: γλώσσα,
    },
  });
}}

λειτουργία apiResultToCarousselle (αποτελέσματα) {
  αν (results.length === 0) {
    ΕΠΙΣΤΡΟΦΗ [
      {
        πληκτρολογήστε: 'quickreads',
        περιεχόμενο: {
          title: 'Sorry, αλλά δεν βρήκα κανένα αποτέλεσμα για το αίτημά σας :(',
          κουμπιά: [{τίτλος: 'Έναρξη άνω', τιμή: 'Έναρξη άνω'}],
        },
      },
    ] ·
  }}

  const κάρτες = results.slice (0, 10) .map (e => ({
    τίτλος: e.title || e.name,
    υπότιτλος: e.overview,
    imageUrl: `https://image.tmdb.org/t/p/w600_and_h900_bestv2$ {e.poster_path} ',
    κουμπιά: [
      {
        πληκτρολογήστε: 'web_url',
        αξία: `https://www.themoviedb.org/movie/$ {e.id}`,
        τίτλος: 'Προβολή περισσότερων',
      },
    ],
  }}).

  ΕΠΙΣΤΡΟΦΗ [
    {
      πληκτρολογήστε: 'κείμενο',
      περιεχόμενο: "Εδώ βρήκα ό, τι βρήκα για σας!",
    },
    {type: 'carousel', περιεχόμενο: κάρτες},
  ] ·
}}

module.exports = {
  discoverMovie,
},

Βήμα 6 - Εκκινήστε τον κινητήρα!

Αυτό είναι όλο! Είστε έτοιμοι να δοκιμάσετε το bot σας.

Ξεκινήστε την εφαρμογή σας τρέχοντας: node index.js

Όλα είναι καλά, θα πρέπει να δείτε: App ξεκίνησε στο λιμάνι 5000

Προτάσεις ταινιών, καιρός, υγεία, κυκλοφορία ... Με API τρίτων, όλα είναι δυνατά! Τώρα που είστε εξοικειωμένοι με τη ροή εργασίας, δεν μπορούμε να περιμένουμε να σας ακούσουμε για το τι χτίζετε! Και θυμηθείτε, είστε πολύ ευπρόσδεκτοι να επικοινωνήσετε μαζί μας αν χρειάζεστε βοήθεια, μέσω της ενότητας σχολίων παρακάτω ή μέσω Slack.

Δημοσιεύθηκε αρχικά στο blog του Conversational AI του SAP.