Dit is een eenvoudige demonstratie waarbij GoogleCloud Functions en Flows worden gebruikt voor beeldherkenning op een afbeelding verzonden via Telegram.
Flows en verder
Als ontwikkelaar van Flows denk ik vaak aan wie onze gebruikers zijn, waarom ze Flows gebruiken en wat ze nodig hebben om hun doelen te bereiken; en dan, welke functies we moeten implementeren om die gebruikers het beste van dienst te zijn.
Flows is een krachtige drag-and-drop automatiseringsmotor voor het creëren van communicatieflows. We hebben het aanvankelijk bedacht als een no-code oplossing, maar we ontdekten dat veel gebruikers echt krachtige functionaliteiten konden realiseren door code te schrijven voor specifieke use-cases. Deze stukjes code kunnen binnen Flows zijn, of ze kunnen externe cloudfuncties zijn zoals AWS Lambda functies of Google Cloud Functions.
Een interessant gebruiksvoorbeeld: Beeldherkenning
Voor een kort en grappig voorbeeld zal ik je laten zien hoe je een app implementeert die hotdogs herkent. We zullen een flow instellen in Flows, die afbeeldingen van gebruikers ontvangt en beslist of ze een hotdog hebben gestuurd of niet.
Voor veel van onze klanten kan dit soort beeldherkenning zeer krachtig zijn. Stel je voor dat je een bezorgservice runt en je succesvolle leveringen automatisch wilt verifiëren. Vergelijkbaar met wat ik ga laten zien, zou je locatiegegevens, foto's van pakketten en zelfs handtekeningen van ontvangers kunnen gebruiken om een verificatieflow te creëren in Flows.
Een plan voor succes
Eerst zullen we een cloudfunctie opzetten, die een verzoek met een URL naar een afbeelding ontvangt, vervolgens gebruikt deze een beeldherkennings-API om de afbeelding te verwerken, en reageert of er een hotdog in de afbeelding zit of niet.
Dan zullen we een flow bouwen, die een bericht van een gebruiker via een berichtenkanaal ontvangt (in dit geval Telegram), de bovengenoemde cloudfunctie uitvoert en aan de gebruiker meldt of er een hotdog in de door hem verstuurde afbeelding zit.
De Google Cloud Function instellen
Eerst, moeten we een cloudfunctie instellen. Om snel aan de slag te gaan, maak een cloudfunctie aan met behulp van deze tutorial: https://cloud.google.com/functions/docs/quickstart-console. Kies als ‘Trigger’ HTTP-trigger, uitvoeringsomgeving: Node.js 10, en voeg in het broncodeveld het codefragment in. Het is een eenvoudige code die controleert of het verzoek JSON-code bevat en antwoordt met ja of nee.
Vervolgens moet je deze functie implementeren. Volg de stappen uit de tutorial om het binnen het Google Cloud Platform te testen.
Om het vanuit je browser te testen, ga je naar de volgende URL en voeg je het specifieke adres voor je functie toe:
https://your-function-address.cloudfunctions.net/HotDogOrNot/?url=hello zou {“isHotDog”: true} moeten retourneren en het adres https://your-function-address.cloudfunctions.net/HotDogOrNot zou {“isHotDog”: false}. moeten retourneren.
Goed gedaan! Je hebt een Google-cloudfunctie ingesteld. Nu moeten we onze cloudfunctie slimmer maken.
De Google Vision API instellen
Om het slimmer te maken, laten we beeldherkenning toevoegen. Voor dit doel zullen we de Google Vision API gebruiken. Volg om te beginnen de stappen 1-4 van deze tutorial: https://cloud.google.com/vision/docs/quickstart-client-libraries. In de tutorial activeer je de Vision API en maak je een service-account aan om deze te gebruiken.
Ga nu terug naar de cloudfunctie die je hebt gemaakt. Schakel “Omgevingsvariabelen, netwerken, time-outs en meer” in en kies in het kader “Service-account” het VisionAPI-service-account dat je zojuist hebt gemaakt. Nu kunnen we vanuit onze functie toegang krijgen tot de Vision API.
Laten we nu de code wijzigen. Plaats op een tabblad “Package.json” deze code. Dit voegt de Google Vision API-bibliotheek toe als een afhankelijkheid van je functie, en op het tabblad "Index.js" werk je de bestaande code bij met het volgende codefragment.
Wat is het verschil met de vorige versie? We hebben een verzoek aan VisionAPI toegevoegd, dat de ‘labels’ retourneert die het op de afbeelding heeft gevonden. Vervolgens filteren we deze labels op beschrijving: als deze "hot dog" bevat en als het meer dan 60% vertrouwen heeft in dat label. Als er minstens één label overblijft na het filteren, betekent dat dat we een hotdog op de afbeelding hebben gevonden.
Om te begrijpen hoe Google VisionAPI werkt en hoe de respons eruitziet, bekijk hun documentatie, https://cloud.google.com/vision/docs
Daarna implementeer je de nieuwe versie van onze functie. Om het vanuit je browser te testen, zoek je een afbeelding van een hotdog en sla je de URL op. Ga nu naar de URL van je functie (waarbij je het juiste adres voor je functie invoegt) https://your-function-address.cloudfunctions.net/HotDogOrNot?url=url_to_image en vervang je de “url_to_image” door een URL naar de gevonden afbeelding. Als er een hotdog op de afbeelding staat, geeft de pagina {“isHotDog”: true} terug.
Laten we nu deze functie verbinden met Flow Builder.
Een flow maken in Flows
Log in op het Bird Dashboard of meld je aan voor een account als je er nog geen hebt.
Als je nieuw bent met Flows en je hebt nog geen kanalen ingesteld, moet je naar de kanaalinstellingenpagina gaan en ervoor kiezen om het Telegram-kanaal in te stellen. Ik koos voor Telegram voor deze demo omdat het eenvoudig en snel in te stellen is.
Nu heb je een kanaal dat we kunnen gebruiken in Flows. Ga naar de Flowspagina, maak een nieuwe aangepaste flow aan en kies de trigger “Telegram” kanaal.
Je wordt doorgestuurd naar een flowpagina, waar je je Telegram-kanaal als trigger moet kiezen, in ons geval is dat “Hotdog”. Voeg a.u.b. 2 stappen toe: “Variabelen ophalen” en “Reageer op kanaalbericht”.
In de stap “Variabelen ophalen” roepen we onze cloudfunctie aan en halen de respons op in de variabele “isHotDog”, die “true” of “false” als respons van de GoogleClound-functie bevat. Vul in het URL-veld de URL naar je functie in https://your-function-address.cloudfunctions.net/HotDogOrNot en vul alle andere velden in zoals op de afbeelding "Variabelen ophalen stap inhoud".
En in de stap “Reageer op kanaalbericht” reageren we op de klant met een bericht met daarin de ja of nee-reactie. Voor die stap voeg je in het veld "Reageer met bericht" de volgende tekst in: "Hotdog op de afbeelding? {{isHotDog}}".
Als je problemen hebt bij het maken van de stroom, kun je deze exporteren vanuit het bestand: simple-hotdog-flow.json.
Om het te testen, stuur je een afbeelding naar je Telegram-bot.
Tot nu toe ziet het er cool uit! We hebben een kleine chatbot gecreëerd die controleert welke afbeeldingen klanten hebben verzonden. Om het mooier te maken, laten we nog wat meer stappen toevoegen zoals hieronder getoond:
Als je problemen hebt bij het maken van de stroom, kun je deze exporteren vanuit het bestand: advanced-hotdog-flow.json.
Resultaten
Hoewel dit een leuk voorbeeld is, denken we dat dit type functionaliteit zeer nuttig kan zijn voor onze gebruikers.
Als je meer functies zoals deze ingebouwd wilt hebben in Flows, schrijf dan naar ons ondersteuningsteam om het ons te laten weten.