L'élément Webhook vous permet d'importer ou exporter des données vers n'importe quel système externe : votre propre Webhook, Zapier, IFTTT ou tout autre système qui répond au protocole HTTP.


Pour cela, saisissez l'url du service que vous souhaitez appeler. L'url doit obligatoirement être en HTTPS (http sécurisé). 

Vous pouvez ajouter des paramètres soit en les ajoutant directement dans l'URL soit en vous aidant de l'option + Ajouter un paramètre.

L'url sera appelée par Botnation AI en GET.

Astuces : 

  • N'oubliez d'essayer l'URL de votre wehbook cible "à la main"  auparavant dans un navigateur pour voir si elle se déclenche bien sur le site cible, vous aurez alors des indices si le Webhook échoue... comme les fameuses "Erreurs 404" si l'URL (adresse du site cible) est mal formatée.
  • Si vous voulez être certain que la variable contient bien une information avant son expédition vous pouvez, pour tester, vous afficher temporairement un message juste avant le Webhook qui affiche la variable.  
  • Votre Webhook doit toujours être situé après la collecte de données, pas en amont, sinon il n'a rien à envoyer ! 


Option "Traiter la réponse JSON"


Activez seulement cette option pour une utilisation très avancée du Webhook. Celle-ci peut être source de changement de comportement de votre chatbot si votre webhook ne respecte pas le format de reponse attendu.

Si vous ne faites que de la collecte de données il ne faut pas activer cette option.

Pour une utilisation avancée, l'élément  Webhook peut également lire et traiter la réponse renvoyée par l'appel HTTP.

Cela vous permet par exemple de générer des réponses personnalisées à partir de données sur vos propres serveurs. Ces réponses peuvent contenir des messages textes, images, videos, audios, variables, boutons, etc... 

Voici quelques exemples d'usage :

  • Récupérer vos dernières actualités automatiquement sans avoir à les intégrer quotidiennement "à la main" dans l'arborescence de votre chatbot.
  • Envoyer la ville ou les coordonnées GPS collectées d'un utilisateur à votre webhook qui renvoie en réponse un message contenant la météo à 7 jours + une image de la météo générée par votre système.
  • Envoyer à votre webhook un numéro de commande d'un utilisateur collecté par le chatbot  qui renvoie en réponse le status de la livraison et change des variables de l'utilisateur.
  • Envoyer le titre d'un film demandé par l'utilisateur dans votre chatbot à votre webhook qui se connecte à votre base de données de millions de vidéos pour lui envoyer une bande annonce sans avoir à tout pré-programmer et télécharger dans l'arborescence de votre chatbot ! 

Vote webhook devra alors répondre obligatoirement en quelques secondes (10),  au delà la connexion au webhook sera interrompue et l'éventuelle réponse annulée.

Votre chatbot sera en attente tant que votre webhook n'a pas délivré de réponse, misez donc sur un serveur avec une bonne connexion et des bases rapides.

Si vous allez récupérer une contenu non personnalisé (une actualité) ou réutilisable pour plusieurs utilisateurs (la météo d'une même ville), vous pouvez mettre en cache votre réponse afin d'augmenter la vitesse de traitement et limiter les appels à votre webhook. La durée peut être de quelques minutes à plusieurs jours.

Vous pouvez utiliser des services comme Zapier ou IFFT qui ont des webhooks pré-disponibles connectés à de nombreuses API externes comme Salesforce, Mailchimp, Google etc...

Le service devra  envoyer une réponse au format JSON et encodée en UTF-8.  Header content-type recommandé :   "application/json"

Toute réponse doit être formatée de la manière suivante :

{
    "botnation": "v1", // obligatoire pour que la réponse soit prise en compte
    "reply": [
         // contenu de la réponse (voir les nombreux exemples ci-dessous)
             
{
                        "type": "text",
                        "value": "Hello"
                }
    ]
}

Nous vous conseillons grandement d'utiliser le service https://jsonlint.com/ pour vérifier la syntaxe et le format de vos réponses JSON.  Il n'est pas rare d'oublier une virgule ou une accolade, la réponse serait alors annulée.

Attention : la réponse doit uniquement contenir le fichier JSON, rien avant, rien après.

Le tableau "reply [ ]" du JSON peut contenir des éléments de différents types (textes, images, boutons...) en une seule réponse.
 

Texte

Permet d'afficher un simple texte. 

Exemple :

{
        "botnation": "v1",
        "reply": [{
                        "type": "text",
                        "value": "Hello World!"
                }
        ]
}

Résultat :

Dans la valeur d'un texte vous pouvez injecter des variables de la même manière que pour les éléments Texte de l'interface. Pour cela, entourez votre variable comme ceci : {{variable}}.  Pour en savoir plus sur les variables consultez cet article : http://help.botnation.ai/les-fondamentaux/tout-savoir-sur-les-variables

Exemple :

{
        "botnation": "v1",
        "reply": [{
                        "type": "text",
                        "value": "Hello {{FIRSTNAME}} !"
                }
        ]
}


Un délais entre 2 éléments

"value" :   durée en secondes.

Exemple :

{
        "botnation": "v1",
        "reply": [{
                        "type": "text",
                        "value": "Hello World!"
                },
                {
                        "type": "delay",
                        "value": 5            
                },
                {
                        "type": "text",
                        "value": "how are you?"
                }
        ]
}

Image, Vidéo ou Audio

Permet d'afficher un média , format JPEG recommandé pour les images, MP4 pour les vidéos, MP3 pour l'audio).

"type" : "image", "video" ou "audio"
 "value" : "url du media" 

Exemple :

{
        "botnation": "v1",
        "reply": [{
                        "type": "text",
                        "value": "Hello World!"
                },
                {
                        "type": "image",
                        "value": "
https://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Nasa_blue_marble.jpg/250px-Nasa_blue_marble.jpg"
                }
        ]
}

Résultat :


Set de Variables

Permet d'affecter une valeur à une variable utilisateur.

"name" : "nom_de_la_variable" (sans espace ou caractère spécial)
"value" :  "chaine ou valeur"

Dans le bot appelez cette variable par {{nom_de_la_variable}} .

Vous pouvez créer une nouvelle variable via cet appel, cependant  l’interface vous demandera éventuellement de valider cette variable afin qu’elle apparaisse par la suite dans les menus de l'interface.

Pour en savoir plus sur les variables consultez cet article : http://help.botnation.ai/les-fondamentaux/tout-savoir-sur-les-variables

Exemple :

{
        "botnation": "v1",
        "reply": [
                {
                        "type": "set",
                        "name": "who",
                        "value": "World"
                },
                {
                        "type": "text",
                        "value": "Hello {{who}}"
                }
        ]
}


Résultat :

pour les variables globales {{%%varglob%%}} la syntaxe est :  "type": "set_gobal"

Exemple:

{
        "botnation": "v1",
        "reply": [
                {
                        "type": "set_gobal",
                        "name": "phone",
                        "value": "+33175757575"
                },
                {
                        "type": "text",
                        "value": "Hello {{%%phone%%}}"
                }
        ]
}

Boutons et Réponses rapides (Quick Replies)

Permet d'afficher une liste de boutons. 

Pour afficher les boutons d'une Story Bouton (3 boutons maximum):
{
    "type": "button",
    "value": "le texte à envoyer"
    "buttons": [button1, button2, button3]
}

Pour afficher les boutons d'une Story Rép. rapides (11 boutons maximum avec icône):
{  
    "type": "quickreply",    
    "value": "le texte à envoyer"    
    "buttons": [button1, button2, button3]
}

Chacun de ces boutons contient un champ next qui va rediriger l'utilisateur vers une séquence souhaitée. Dans ce champ, il faut renseigner un keyword de redirection que vous avez défini dans le module AI.

Boutons : Texte avec Redirection
Exemple :

{
        "botnation": "v1",
        "reply": [{
                        "type": "text",
                        "value": "Hello!"
                },
                {
                        "type": "button",
                        "value": "Where is Brian?",
                        "buttons": [{
                                        "label": "In the kitchen",
                                        "type": "payload",
                                        "next": "kitchen"
                                },
                                {
                                        "label": "In the bathroom",
                                        "type": "payload",
                                        "next": "bathroom"
                                }
                        ]
                }
        ]
}


Résultat :



Boutons : Set de Variable et Redirection
Exemple

{
        "botnation": "v1",
        "reply": [{
                        "type": "text",
                        "value": "Hello!"
                },
                {
                        "type": "button",
                        "value": "What do you want to eat?",
                        "buttons": [
                                {
                                        "label": "A sandwich!",
                                        "type": "input",
                                        "name": "eat",
                                        "value": "sandwich",
                                        "next": "confirmation"
                                },
                                {
                                        "label": "A Cheeseburger ;)",
                                        "type": "input",
                                        "name": "eat",
                                        "value": "burger",
                                        "next": "confirmation"
                                }
                        ]
                }
        ]
}


Boutons : Ouverture de Site Web et Lancement d'Appel Téléphonique
Le ratio  de la weview ouverte peu-être : "compact" , "tall" or "full"  
Le numéro de téléphone doit commencer par le code du pays. ( +1 (USA), +33 (France), +48 (Poland) etc..)

Exemple :

{
        "botnation": "v1",
        "reply": [
                {
                        "type": "button",
                        "value": "Google or Phone Call?",
                        "buttons": [{
                                        "label": "Google",
                                        "type": "web_url",
                                         "ratio": "full",
                                        "url": "
https://google.com"
                                },
                                {
                                        "label": "Call Me",
                                        "type": "phone_call",
                                        "value": "+33101010101"
                                }
                        ]
                }
        ]
}


Réponse Rapide (Quick Replies) avec Géolocalisation.
Uniquement sur Facebook Messenger
Exemple :

{
        "botnation": "v1",
        "reply": [{
                        "type": "text",
                        "value": "Hello!"
                },
                {
                        "type": "quickreply",
                        "value": "Where are you?",
                        "buttons": [{
                                        "label": "Geolocation!",
                                        "type": "location",
                                        "next": "confirmation"
                                }]
                }
        ]
}


Résultat :



Réponses Rapides (Quick Replies) avec Set de Variable et Redirection et icône ("url")
Exemple :

{
        "botnation": "v1",
        "reply": [{
                        "type": "text",
                        "value": "Hello!"
                },
                {
                        "type": "quickreply",
                        "value": "What do you want to eat?",
                        "buttons": [{
                                        "label": "A Pizza",
                                        "url": "
https://png.icons8.com/dusk/540/shopping-cart.png",
                                        "type": "payload",
                                        "next": "pizza"
                                },
                                {
                                        "label": "A Cheeseburger",
                                        "url": "
https://png.icons8.com/dusk/540/shopping-cart.png",
                                        "type": "payload",
                                        "next": "burger"
                                },
                                {
                                        "label": "A Salad",
                                        "url": "
https://png.icons8.com/dusk/540/shopping-cart.png",
                                        "type": "input",
                                        "name": "eat",
                                        "value": "salad",
                                        "next": "confirmation"
                                }
                        ]
                }
        ]
}


Résultat :

Sur le module "Web" de Botnation il est également possible d'indiquer des liens sortants.

Exemple:

                                {
                                        "label": "My Website",
                                        "url": "
https://png.icons8.com/dusk/540/shopping-cart.png",
                                        "type": "web_url",
                                        "web_url": "
https://botnation.ai",
                                        "ratio": "full"                                        
                                }


Générer un carrousel


Les carrousels peuvent contenir plusieurs pages et plusieurs boutons, chaque page peut avoir une image ou pas. La syntaxe des boutons est similaire aux boutons classiques (voir plus haut). 

Le ratio des images doit être déclaré en entête. "horizontal" ou "square"  (carré)  

Exemple d'un carrousel de 3 pages, dont la 3ème ne contient pas d'image avec plusieurs variantes de boutons.

Exemple:

{
"botnation": "v1",
"reply": [{
"type": "carousel",
"ratio": "horizontal",
"pages": [{
"title": "Where is Brian?",
"subtitle": "in the kitchen",
"image": "
https://i.pinimg.com/474x/c7/9b/2b/c79b2b537242b865188f172b346af5fc.jpg",
"link": "
https://www.botnation.ai",
"buttons": [{
"label": "In the kitchen",
"type": "redirect",
"next": "kitchen"
}, {
"label": "Call Brian",
"type": "phone_call",
"next": "+33140506010"
}]
}, {
"title": "Hello {{FIRSTNAME}}",
"subtitle": "Powered by Botnation",
"image": "
https://cdn.searchenginejournal.com/wp-content/uploads/2017/05/bing-site-search-760x400.png",
"link": "
https://www.botnation.ao",
"buttons": [{
"label": "Tell me more...",
"type": "redirect",
"next": "more"
}, {
"label": "Start {{LASTNAME}}",
"type": "web_url",
"url": "
https://uplike.com"
}]
}, {
"title": "One more time",
"subtitle": "no picture?",
"buttons": [{
"label": "Test Input",
"type": "input",
"name": "MyVar",
"value": "1234",
"next": "next_one"
}]
}]
}]
}

Redirection Simple

 
Enfin, si votre Webhook collecte des données et doit simplement envoyer l'utilisateur sur une redirection d'un message de confirmation vous pouvez simuler la saisie d'un mot-clé ou indiquer un blockId.

// par un mot clé

            {
                        "type": "redirect",
                        "next": "etape_suivante"


             }


// par un blockid

       {
                        "type": "redirect",
                        "next": "590898d2abec169ef65fcc47"


          }




Nous vous conseillons grandement d'utiliser le service https://jsonlint.com/  pour vérifier la syntaxe et le format de vos réponses JSON.  Il n'est pas rare d'oublier une virgule ou une accolade, la réponse ne serait alors pas prise en compte.


En savoir plus : 


Retour à l'aide en ligne

Did this answer your question?