Ceci est une simple démonstration utilisant GoogleCloud Functions et Flows pour effectuer la reconnaissance d'images sur une image envoyée sur Telegram.
Flows et au-delà
En tant que développeur de Flows, je pense souvent à qui sont nos utilisateurs, pourquoi ils utilisent Flows, et ce dont ils ont besoin pour atteindre leurs objectifs ; puis, quelles fonctionnalités nous devons implémenter pour mieux servir ces utilisateurs.
Flows est un puissant moteur d'automatisation par glisser-déposer pour créer des flux de communication. Nous l'avons initialement conçu comme une solution sans code, mais nous avons constaté que de nombreux utilisateurs pouvaient obtenir un comportement vraiment puissant en écrivant du code pour des cas d'utilisation spécifiques. Ces morceaux de code peuvent être intégrés dans Flows, ou ils peuvent être des fonctions cloud tierces telles que des fonctions AWS Lambda ou Google Cloud Functions.
Un cas d'utilisation intéressant : Reconnaissance d'images
Pour un exemple court et amusant, je vais vous montrer comment implémenter une application qui reconnaît les hot-dogs. Nous allons configurer un flux dans Flows, qui recevra des images des utilisateurs et décidera s'ils ont envoyé un hot-dog ou non.
Pour de nombreux clients, ce type de reconnaissance d'image peut être très puissant. Imaginez que vous dirigez un service de livraison et que vous vouliez vérifier les livraisons réussies automatiquement. De manière similaire à ce que je vais montrer, vous pourriez utiliser des données de localisation, des photos de colis, et même des signatures des destinataires pour créer un flux de vérification dans Flows.
Un plan pour le succès
Tout d'abord, nous allons créer une fonction cloud, qui reçoit une requête avec une URL vers une image, puis elle utilise une API de reconnaissance d'images pour traiter l'image, et répond s'il y a un hot-dog dans l'image ou non.
Ensuite, nous allons construire un flux, qui reçoit un message d'un utilisateur via un canal de messagerie (Telegram dans ce cas), exécute la fonction cloud ci-dessus, et répond à l'utilisateur s'il y a un hot-dog sur une image qu'il a envoyée.
Configurer la fonction Google Cloud
Tout d'abord, nous devrons configurer une fonction cloud. Pour bien commencer, créez une fonction cloud en utilisant ce tutoriel : https://cloud.google.com/functions/docs/quickstart-console. Comme 'Déclencheur', choisissez le déclencheur HTTP, environnement d'exécution : Node.js 10, et dans le champ de code source, insérez le morceau de code. C'est un code simple, qui vérifie si la requête contient un code JSON et répond oui ou non.
Ensuite, vous devrez déployer cette fonction. Pour la tester à l'intérieur de Google Cloud Platform, suivez les étapes du tutoriel.
Pour tester depuis votre navigateur, allez à l'URL suivante en insérant l'adresse spécifique de votre fonction :
https://your-function-address.cloudfunctions.net/HotDogOrNot/?url=hello devrait retourner {"isHotDog": true} et l'adresse https://your-function-address.cloudfunctions.net/HotDogOrNot devrait retourner {"isHotDog": false}.
Bon travail ! Vous avez configuré une fonction Google Cloud. Maintenant, nous devons rendre notre fonction cloud plus intelligente.
Configurer l'API Google Vision
Pour la rendre plus intelligente, ajoutons la reconnaissance d'images. Pour cela, nous allons utiliser l'API Google Vision. Pour commencer, suivez les étapes 1-4 de ce tutoriel : https://cloud.google.com/vision/docs/quickstart-client-libraries. Dans le tutoriel, vous activerez l'API Vision et créerez un compte de service pour l'utiliser.
Maintenant, revenez à la fonction cloud que vous avez créée. Activez "Variables d'environnement, réseau, délais et plus" et dans le fichier "Compte de service", choisissez le compte de service VisionAPI que vous venez de créer. Maintenant, nous pouvons accéder à l'API Vision dans notre fonction.
Maintenant, changeons le code. Dans l'onglet "Package.json", insérez ce code. Cela ajoutera la bibliothèque de l'API Google Vision comme dépendance à votre fonction, et sur l'onglet "Index.js", mettez à jour le code existant avec le morceau de code suivant.
Quelle est la différence par rapport à la version précédente ? Nous avons ajouté une requête à VisionAPI, qui retourne les ‘étiquettes’ trouvées sur l'image. Ensuite, nous filtrons ces étiquettes par description : si elle contient "hot dog" et si elle a plus de 60 % de confiance dans cette étiquette. S'il reste au moins 1 étiquette après filtrage, cela signifie que nous avons trouvé un hot-dog sur l'image.
Pour comprendre comment fonctionne l'API Google Vision et à quoi ressemble la réponse, consultez leur documentation, https://cloud.google.com/vision/docs
Après cela, déployez la nouvelle version de notre fonction. Pour la tester depuis votre navigateur, trouvez n'importe quelle image d'un hot-dog et enregistrez son URL. Maintenant, allez à l'URL de votre fonction (en insérant l'adresse correcte pour votre fonction) https://your-function-address.cloudfunctions.net/HotDogOrNot?url=url_to_image et remplacez la « url_to_image » par une URL vers l'image trouvée. S'il y a un hot-dog dans l'image, la page retournera {"isHotDog": true}.
Maintenant, connectons cette fonction à Flow Builder.
Créer un flux dans Flows
Connectez-vous au tableau de bord Bird ou inscrivez-vous pour un compte si vous n'en avez pas.
Si vous êtes nouveau dans Flows et que vous n'avez pas de canaux configurés, vous devrez aller sur la page de configuration du canal et choisir de configurer le canal Telegram. J'ai choisi Telegram pour cette démo car il est facile et rapide à configurer.
Maintenant vous avez un canal que nous pouvons utiliser dans Flows. Allez sur la page Flows, créez un nouveau flux personnalisé et choisissez le déclencheur de canal "Telegram".
Vous serez redirigé vers une page de flux, où vous devez choisir votre canal Telegram comme déclencheur, dans notre cas c'est "Hotdog". Veuillez ajouter 2 étapes : "Récupérer les variables" et "Répondre au message de canal".
À l'intérieur de l'étape "Récupérer les variables", nous allons appeler notre fonction cloud et récupérer la réponse dans la variable "isHotDog", qui contiendra "true" ou "false" en tant que réponse de la fonction GoogleClound. Dans le champ URL, veuillez insérer l'URL de votre fonction https://your-function-address.cloudfunctions.net/HotDogOrNot et remplissez tous les autres champs comme sur l'image du "contenu de l'étape Récupérer la variable".
Et à l'intérieur de l'étape "Répondre au message du canal", nous allons répondre au client avec un message contenant la réponse oui ou non. Pour cela, insérez dans le champ "Répondre avec message" le texte suivant "Hotdog sur l'image ? {{isHotDog}}".
Si vous avez des problèmes pour construire le flux, vous pouvez l'exporter à partir du fichier : simple-hotdog-flow.json.
Pour le tester, envoyez une image à votre bot Telegram.
Jusqu'à présent, cela a l'air cool ! Nous avons créé un petit bot de chat, qui vérifie les images envoyées par les clients. Pour le rendre plus joli, ajoutons quelques étapes de plus comme montré ci-dessous :
Si vous avez des problèmes pour construire le flux, vous pouvez l'exporter à partir du fichier : advanced-hotdog-flow.json.
Résultats
Bien que ce soit un exemple amusant, nous croyons que ce type de fonctionnalité peut être très utile pour nos utilisateurs.
Si vous souhaitez plus de fonctionnalités comme celle-ci intégrées dans Flows, écrivez à notre équipe de support pour nous le faire savoir.