Recevoir automatiquement des informations sur les produits via Facebook Messenger

Ce tutoriel vous montre comment fournir automatiquement à un utilisateur des informations pertinentes sur un produit via Facebook Messenger.

Dans ce cas d'utilisation, l'utilisateur salue l'entreprise via sa page Facebook. Un message est automatiquement envoyé à l'utilisateur. Grâce à la correspondance des mots-clés, l'utilisateur peut recevoir des informations personnalisées sur les produits et les services.

NOTE : Ce tutoriel suppose que vous avez déjà créé un profil et une page Facebook.

Code source

Le code source de ce projet est disponible dans la communauté Dépôt GitHub.

Conditions préalables

  1. Créer un Account Vonage
  2. Installer Node JS - nécessaire pour utiliser l'interface de ligne de commande (CLI) de Vonage.
  3. Installer le CLI de Vonage
  4. Savoir comment tester votre serveur webhook localement
  5. Python 3 installé
  6. Flacon installé

Les étapes

Une fois les conditions préalables remplies, les étapes sont les suivantes :

  1. Créer une application Vonage
  2. Reliez votre application Vonage à votre page Facebook
  3. Faire fonctionner Ngrok
  4. Rédigez votre application de base
  5. Interagissez avec votre page Facebook
  6. Client minimal pour l'envoi de messages Facebook Messenger en utilisant Python
  7. Le cas d'utilisation revisité
  8. Une mise en œuvre

Il existe plusieurs façons d'obtenir le même résultat avec Vonage. Ce tutoriel ne montre qu'une façon spécifique de faire les choses, par exemple vous verrez comment utiliser la ligne de commande pour créer l'application, plutôt que le tableau de bord. D'autres tutoriels démontrent d'autres façons de faire.

Créez votre Applications Vonage

Si vous ne l'avez pas encore fait, créez un nouveau répertoire pour votre projet, par exemple fbm-app. Entrez dans ce répertoire.

Utilisez le CLI pour créer votre application Vonage :

vonage apps:create "FBM App" --messages_inbound_url=https://abcd1234.ngrok.io/inbound --messages_status_url=https://abcd1234.ngrok.io/status

Notez l'identifiant d'application généré. Vous pouvez également le vérifier dans la fenêtre tableau de bord.

Cette commande crée également une clé privée, fbm_app.key dans votre répertoire actuel, ainsi que la mise à jour/création de vonage_app.json.

Cette commande définit également les deux webhooks où toutes les interactions ont lieu entre votre application et Vonage. Vous devez avoir un serveur en cours d'exécution et accessible à Vonage à ces URLs.

Reliez votre application à votre page Facebook

Partie 1 : Connectez votre page Facebook à votre compte API Vonage

La connexion de votre page Facebook à votre compte API Vonage permet à Vonage de gérer les messages entrants et vous permet d'envoyer des messages à partir de l'API Messages.

  1. Pour relier votre page Facebook à votre Account API de Vonage, visitez la page Lier la page Facebook dans votre tableau de bord.

  2. Connectez-vous à votre Account Facebook à partir du tableau de bord.

  3. Sélectionnez la page Facebook que vous souhaitez connecter à votre compte API Vonage dans la liste déroulante.

  4. Sélectionnez la clé API que vous souhaitez utiliser.

  5. Cliquez sur Configuration complète.

À ce stade, votre compte API Vonage et cette page Facebook sont liés. Le lien entre votre compte API Vonage et votre page Facebook n'a pas de date d'expiration, mais il peut occasionnellement expirer. Après l'expiration, vous devez le relier à nouveau en utilisant le même processus.

Partie 2 : Connectez votre page Facebook à votre application API Vonage

Une fois que votre page Facebook est connectée à votre compte API Vonage, elle devient disponible pour être utilisée par n'importe laquelle de vos applications. Pour connecter la page Facebook à une application API de Vonage :

  1. Naviguez jusqu'à votre page des applications.

  2. Dans la liste, cliquez sur l'application que vous souhaitez lier. Vous pouvez filtrer en utilisant le bouton Capacités et en sélectionnant messages pour faciliter les choses.

  3. Sélectionnez ensuite l'option Canaux sociaux liés tabulation.

  4. Cliquez sur le bouton Lien à côté de la page Facebook à laquelle vous souhaitez connecter votre application, en veillant à ce que le bouton Fournisseur est Facebook Messenger.

Vous êtes maintenant prêt à recevoir les messages que les utilisateurs vous envoient sur votre page Facebook.

NOTE : Si, à l'avenir, vous souhaitez lier une autre application à cette page Facebook, il vous suffira de répéter la procédure décrite dans la partie 2, pour la nouvelle application.

Faire fonctionner Ngrok

Assurez-vous que vous avez lancé Ngrok pour le tester localement. Pour démarrer Ngrok, tapez

ngrok http 9000

Pour générer une URL Ngrok temporaire. Si vous êtes un abonné payant, vous pouvez taper :

ngrok http 9000 -subdomain=your_domain

Notez que dans ce cas, Ngrok détournera les webhooks de Vonage que vous avez spécifiés lors de la création de votre application Vonage vers localhost:9000.

Rédigez votre application de base

Ainsi, dans le cas le plus simple, votre application ressemblerait à ce qui suit :

from flask import Flask, request, jsonify
from pprint import pprint

app = Flask(__name__)

@app.route('/inbound', methods=['POST'])
def inbound_message():
    data = request.get_json()
    pprint(data)
    return ("200")

@app.route('/status', methods=['POST'])
def message_status():
    data = request.get_json()
    pprint(data)
    return ("200")

if __name__ == '__main__':
    app.run(host="localhost", port=9000)

Ajoutez ce code à un fichier appelé app1.py et l'enregistrer.

Exécutez-le localement avec :

python3 app1.py

Votre application de base est maintenant opérationnelle et prête à enregistrer des événements.

Interagissez avec votre page Facebook

Maintenant que votre application de base est opérationnelle, vous pouvez envoyer un message à votre page Facebook, puis vérifier que le message est enregistré. Ainsi, si vous envoyez un message de base à votre page Facebook à l'aide de Messenger, vous obtiendrez un enregistrement tel que le suivant :

{'direction': 'inbound', 'from': {'id': '1234567890123456', 'type': 'messenger'}, 'message': {'content': {'text': 'Hello Mr. Cat', 'type': 'text'}}, 'message_uuid': 'da13a7b0-307c-4029-bbcd-ec2a391873de', 'timestamp': '2019-04-09T12:26:47.242Z', 'to': {'id': '543210987654321', 'type': 'messenger'}} 127.0.0.1 - - [09/Apr/2019 13:26:58] "POST /inbound HTTP/1.1" 200 -

Vous y trouverez des informations importantes que vous pourrez utiliser pour développer votre application et la rendre plus utile.

Champ d'application Description
from L'identifiant Facebook de la personne qui envoie un message à votre page.
to L'identifiant Facebook de votre page (la page à laquelle la personne envoie un message).
message Le message envoyé.

Vous pouvez voir que le message est un objet JSON. Vous pouvez extraire le texte du message de cet objet.

Notez qu'il est utile d'enregistrer à la fois l'identifiant Facebook de votre page (que vous ne connaissiez peut-être pas) et l'identifiant Facebook de l'utilisateur qui vous envoie un message. L'enregistrement de l'identifiant Facebook est particulièrement utile si votre application gère plusieurs pages Facebook.

Client minimal pour l'envoi de messages Facebook Messenger en utilisant Python

Actuellement, Vonage ne prend pas officiellement en charge les Messages API et Dispatch API dans le SDK du serveur Python, mais notre API REST est entièrement prise en charge et la fonction Le code Python est fourni dans le projet pour vous dans une classe réutilisable. Le code étant fourni, nous ne l'aborderons pas plus avant dans ce tutoriel.

Le cas d'utilisation revisité

Il est temps d'examiner ce cas d'utilisation plus en détail afin que vous puissiez construire votre application de manière plus efficace.

Imaginez qu'un utilisateur envoie un message du type "Bonjour" à votre page Facebook via Messenger. Cependant, en raison des fuseaux horaires, vous n'êtes pas disponible pour répondre au message - l'utilisateur risque de se sentir découragé. D'un autre côté, ce serait formidable si vous pouviez répondre automatiquement avec des informations utiles. Par exemple, à un message tel que "Bonjour", vous pourriez répondre par "Bienvenue chez T's Cat Supplies. Voici nos principales catégories de produits : jouets, nourriture, médicaments, bling-bling".

En utilisant une construction Python telle que if keyword in msg vous pouvez détecter des mots-clés et envoyer des documents en fonction de ceux-ci. Par exemple, si un utilisateur envoie un message du type "Bonjour, mes réservoirs ont besoin d'être triés", vous pouvez détecter le mot tank et envoyez des informations sur vos services de nettoyage de réservoirs. Ou si vous recevez un message du type "Bonjour, je pense que j'ai besoin d'une grue pour soulever nos sections de pipelines". Vous pouvez envoyer des informations sur vos services de location de grues. Lorsque des mots clés ne sont pas détectés, il est facile de renvoyer un message générique à l'utilisateur pour l'aider à s'orienter.

Cette fonction de réponse automatique est utile car certaines entreprises ont des centaines de produits et de services.

Une autre fonction utile est la possibilité de désactiver la réponse automatique, par exemple pour traiter directement avec un humain. Vous pourriez intégrer des commandes telles que auto: off et auto: on pour contrôler la façon dont vos clients interagissent avec votre page Facebook.

Dans les sections suivantes, vous verrez comment mettre en œuvre ce cas d'utilisation.

Une mise en œuvre

L'une des structures de données utiles pour mettre en œuvre ce cas d'utilisation est le dictionnaire Python. Vous pouvez en voir un exemple ici :

cats_dict = {
    'other': 'Our products: toys, food, meds, and bling',
    'toys': 'More info on cat toys here https://bit.ly/abc',
    'food': 'More info on cat food here https://bit.ly/def',
    'meds': 'More info on cat meds here https://bit.ly/ghi',
    'bling': 'More info on cat bling here https://bit.ly/jkl'
}

Pour mettre cela en perspective, examinez le code suivant :

class ProductMatcher:

    auto_mode = True

    cats_dict = {
        'other': 'Our products: toys, food, meds, and bling',
        'toys': 'More info on cat toys here https://bit.ly/abc',
        'food': 'More info on cat food here https://bit.ly/def',
        'meds': 'More info on cat meds here https://bit.ly/ghi',
        'bling': 'More info on cat bling here https://bit.ly/jkl'
    }

...

    def product_matcher(self, fb_sender, user, msg):
        product = 'other'
        msg = msg.lower().strip()
        if self.auto_mode:
            if "auto: off" in msg:
                self.auto_mode = False
                self.fbm.send_message(fb_sender, user, "Auto mode is off")
                return
            for k in self.cats_dict.keys():
                if k in msg:
                    product = k
                    break
            self.fbm.send_message(fb_sender, user, self.cats_dict[product])
        if "auto: on" in msg:
                self.auto_mode = True
                self.fbm.send_message(fb_sender, user, "Auto mode is on")
        return product

Si l'utilisateur envoie un message via Messenger et qu'aucun humain ne répond, un menu est renvoyé à l'utilisateur. Dans le message de l'utilisateur, le produit est extrait et le message approprié est envoyé. Ce code adopte une approche spécifique, mais j'espère qu'il indique le potentiel.

Vous vous demandez peut-être si cela ne risque pas de gêner l'utilisateur s'il souhaite parler à une personne réelle. Cependant, la réponse automatique peut être désactivée une fois que vous êtes en ligne et que vous pouvez prendre des messages. Le code permet à l'utilisateur d'utiliser les commandes suivantes auto: off et auto: on pour contrôler l'interaction. Ce contrôle pourrait également être assuré par le gestionnaire du canal.

Dans le code ci-dessus, le produit qui intéresse l'utilisateur est également renvoyé. Cela pourrait être utilisé si, par exemple, vous vouliez enregistrer l'utilisateur et son choix de produit dans une base de données. Vous pouvez également rechercher un utilisateur dans la base de données pour savoir s'il s'agit d'un nouveau client ou s'il a déjà eu affaire à l'entreprise.

Résumé

Dans ce tutoriel, vous avez vu un cas d'utilisation où l'utilisateur peut recevoir automatiquement des informations sur un produit via Facebook Messenger. Ce cas d'utilisation était basé sur la correspondance de mots-clés. L'utilisateur avait également la possibilité de basculer le mode de réponse automatique en fonction de ses besoins.

Autres ressources