Bygg din egen chatbot med Watson Assistant för Facebook Messenger

Watson Assistant (tidigare Watson Conversation) är det naturliga språkgränssnittet från IBM för att automatisera interaktioner med dina slutanvändare. Jag kommer att visa hur du kan integrera Watson Assistant med Facebook Messenger.

Jag har varit värd för min kod på glitch-plattformen, så den kan enkelt blandas om och utvidgas till dina behov. Chatboten kan svara på användaren beroende på användarens avsikt.

Watson Assistant tillåter lite logisk integration. På grund av detta behöver vi en mellanhand mellan assistent och Facebook för att hantera mer komplex logik. I god programmeringsjargong kallar vi denna mellanhand en orkestrator. En sådan begränsning tvingar oss till att separera oro, och det är bra. Assistenten fokuserar bara på att tolka ett meddelande, orkestrator för logisk körning och Messenger för meddelandeleverans till vår användare.

Inga förkrav behövs för att följa med, men du behöver vissa Javascript- och Node-färdigheter om du vill ta det ett steg längre (och du borde!) När det gäller funktionaliteter.

Vad du kommer att behöva:

  1. Remix startkoden från https://glitch.com/edit/#!/facebookbotandwatsonassistant (Överst till vänster på namnet och i rullgardinsmenyn hittar du remixknappen)
  2. Ett Facebook-konto för att skapa en Facebook-sida
  3. En Facebook Developer-applikation på https://developers.facebook.com/apps/
  4. Ett IBM Cloud-konto (det är gratis!) På https://console.bluemix.net/

Glitch.com

https://glitch.com tillåter oss att distribuera vår Node.js-app utan krångel. Det har några fina funktioner: kodremix (som du har gjort), kodsamarbete och delning genom gemenskapen är några av dem.

All kod är tillgänglig och redo att användas på https://glitch.com/edit/#!/facebookbotandwatsonassistant

Koden kräver ingen anpassning, förutom .env-filen som kräver dina egna miljövariabler. Du måste remixa projektet vid denna tidpunkt för att följa med.

Det är möjliga förbättringar av koden, men syftet här är att låta dig förstå bilden omedelbart.

App.get tillåter oss att validera webbhaken från Facebook med verifieringstoken som vi tillhandahöll både Facebook och .env-filen

Vid varje användares meddelande från Messenger kontrollerar vi om det verkligen är ett meddelande. Det finns olika typer av meddelanden (postback, bilaga). För denna tutorial fokuserar vi bara på textversionen av meddelandet.

Vid varje meddelande förbereder vi en nyttolast som vi skickar till assistentobjektet (som innehåller Watson.ConversationV1 SDK). Svaret på detta objekt är tolkningen av användarens meddelande (innehållande event.message) via Watson Assistant. Resultatet (data) skickas sedan tillbaka till Facebook via den mottagna funktionen

Skapa en Facebook-sida

Du kan komma åt skapandet av Facebook-sidan på https://www.facebook.com/pages/creation/

Det här är sidan vi kommer att interagera med. För att möjliggöra enklare räckvidd för kontaktknappen på din sida kan du lägga till messenger via Lägg till en knapp -> kontakta din kategori

Genom att flytta över knappen Skicka meddelande kan du klicka på testknappen för att prata med dig via Messenger.

Skapa Facebook-utvecklarapplikationen

Gå till Facebook för utvecklare på https://developers.facebook.com/apps/ och skapa ett program. Inuti vår applikation behöver vi två produkter: Messenger och Webhooks. Du kan lägga till dem i din applikation genom att klicka på respektive inställningsknapp. Messenger-produkten kommer att kräva åtkomst till din sida du just har skapat, för att generera ett symbol och ge det till vår orkestrator.

Inne i messenger-produktinställningarna, i avsnittet för att generera token, välj den sida du skapade innan och kopiera det token som genererades.

Gå tillbaka till ditt Glitch-projekt i .env-filen klistra in sidan_access_token som du just har kopierat, och glöm inte att fylla i verifieringstoken med något. Jag har "tutorial". Alla variabler i .env bör omges av citat!

Facebook-utvecklare-applikationens webbhook

När du går tillbaka till Messenger-inställningarna, där du har kopierat sidtoken, ser du avsnittet Webhook under. Webhooken länkar vår orkestrator-app till vår messenger bot.

Webbplatsen för återuppringning är länken från ditt glitch-projekt, du kan nå den genom att klicka på "Show Live". Använd den här länken som återuppringningsadress och lägg till / webbhook Om du har samma verifieringstecken, fyll i "handledning" i det andra textfältet.

Se till att du väljer meddelanden & messaging_postback också, eftersom det är de fält som vi kommer att använda för vår handledning. Välj också din sida du har skapat och prenumerera på den

Watson assistent

Så nu har vi orkestern (vår Node-app) som ansvarar för att hantera logiken och Facebook för att ta emot och skicka meddelanden. Dags att introducera Watson Assistant för att tolka meddelandena!

När du har skapat ditt IBM Cloud-konto skapar du en förekomst av Watson Assistant https://console.bluemix.net/dashboard/apps/

Skapa resurs → Watson Assistant

Du kan distribuera det i Storbritannien eller Tyskland. Välj Lite och skapa. Innan du startar verktyget, spara servicenummer i Glitch.

Kopiera URL, användarnamn och lösenord och klistra in innehållet i din .env-fil i ditt glitch-projekt. Din .env ska se ut så här

PAGE_ACCESS_TOKEN = "page_access_token" VERIFY_TOKEN = "handledning" ASSISTANT_URL = "https://gateway.watsonplatform.net/assistant/api" ASSISTANT_USERNAME = "användarnamn" ASSISTANT_PASSWORD = "lösenord" ASSISTANT_WORKSPACEID = "workspace

Skapa arbetsytan som är värd för vår assistent. Innan du fortsätter, gå tillbaka till arbetsytans översikt, så att vi kan kopiera arbetsytans ID. Du kan kopiera det efter att du har klickat på de tre punkterna och se detaljerna.

Watson Assistant är tyst enkelt att förstå. Det finns tre huvudkomponenter

  1. Syften Syften är vägen till att känna igen användarens input. Ju fler exempel du ger en avsikt, desto mer säker kommer assistenten att vara med på att ge ett svar på användarens begäran.
  2. Enheter är en del av användarens input som du kan använda för att ge ett annat svar på en viss avsikt. Låt oss ta ett exempel: tåg. Om vi ​​skulle bygga en bot där en användare begär sitt tågschema, skulle assistenten behöva känna igen avgångs- och ankomststationen på användarens begäran. Enheter kan användas för detta.
  3. Dialog Det här är lekplatsen där du arkitekterar ditt dialogträd. Din dialog kommer att bestå av flera noder som utlöses när assistenten har tillräckligt med självförtroende som matchar en viss avsikt med den.

Sedan ett par versioner tillåter Watson Assistant oss att integrera befintligt innehåll. Låt oss använda detta som en utgångspunkt. Bläddra i innehållskatalogen och lägg till den allmänna avsikten i arbetsytan. Detta innehåll integrerar igenkänning av hälsningar, personliga attribut som språk men samt begär att prata med en mänsklig agent till exempel.

Öppna dialogfliken, låt oss lägga till två andra noder bredvid de befintliga. Låt oss skapa en nod under den välkomna och låt den upptäcka #general_greetings. Låt botten svara på något som "Hej där!" Och en annan nod som upptäcker #General_Agent_Capabilities Som ett exempel kan du skriva "Jag kan upptäcka avsikten bakom din begäran."

Se till att Glitch fortfarande körs (servern pausar efter några minuter om den upptäcker ingen användning) och testa botten på Facebook! Det bör svara på lämpligt sätt

Detta exempel är väldigt enkelt, men när integrationen nu fungerar kan du enkelt integrera all din logik i orkestern. Gå vidare och gör något bra!

Tack vare denna snabbstart får du möjligheten att lägga till alla funktioner du behöver till din rockstar chatbot. Möjligheterna är oändliga: interaktion med en databas, en betalningsport, integration av npm-bibliotek, ..

Vill du fortsätta? Det finns en större startkod här https://github.com/watson-developer-cloud/assistant-simple