6. edycja Webb MeetUp

6. edycja Webb MeetUp

Zespół Da Vinci Studio rzucił kostką. Wypadła szczęśliwa szóstka. Miała ona moc sprawczą – doprowadziła do organizacji 6. edycji znanej i lubianej konferencji WeBB MeetUp.

WeBB MeetUp to spotkania pasjonatów branży IT, dla których podstawą rozwoju jest wymiana wiedzy i doświadczeń. Bazę konferencji stanowią profesjonalne prelekcje przygotowane przez ludzi, którzy na co dzień mają do czynienia z poruszanymi na konferencji tematami. Zatem podczas wystąpień nie należy spodziewać się suchej teorii oderwanej od rzeczywistości, a raczej praktycznych przykładów, które w jasny sposób obrazują dane zagadnienie.

Podczas 6. edycji WeBB MeetUp poruszane będą różnorodne tematy, które zainteresują każdego, kto chętnie kroczy ścieżką nowych technologii i nowinek ze świata IT. „Gdy HA to tylko haha” czy „.NETowiec w Kosmosie” to tytuły wybranych prelekcji tej edycji wydarzenia. Czy nie brzmią kusząco?

6. edycja WeBB MeetUp odbędzie się 11 maja 2017 roku o godzinie 17.00 na Akademii Techniczno-Humanistycznej w Bielsku-Białej. Już dzisiaj zachęcamy Was do wzięcia udziału w wydarzeniu. W celu poznania szczegółów odsyłamy na stronę: http://webbmeetup.com/. Dodamy, że event jest bezpłatny, a uczestnicy w czasie trwania konferencji mają możliwość wygrania cennych nagród rzeczowych.

Zespół DVS oraz Koło Informatyczne Reset ATH jako Organizatorzy, niezmiennie od pierwszej edycji, stawiają na jakość wystąpień oraz wiedzę i merytorykę prelekcji. Dzięki wsparciu Sponsorów i Patronów Medialnych powstaje event, którego nie możecie przegapić!

Chatbot, Wit.ai – tworzenie chatbota – Wit Node.js SDK

Artificial Intelligence

Dzisiaj już trzeci wpis z serii Wit.ai. Tym razem zajmiemy się tworzeniem chatbota w node.js. Przy tej okazji zapoznamy się z Wit Node.js SDK i zbudujemy aplikację, która wyświetli artykuł o szukanej osobie w wikipedii.

Wit Node.js SDK – przygotowanie środowiska

Instalacja

Instalacja Wit Node.js SDK przebiega w standardowy sposób.  Do instalacji używamy npm:

npm install --save node-wit

Jeżeli wszystko przebiegnie pomyślnie, zostanie stworzony folder node_modules, a w nim znajdować się będzie zainstalowana paczka.

Require

Możemy teraz, w głównym katalogu, stworzyć plik index.js. Tam z kolei dodajemy potrzebne zależności:

const Wit = require('node-wit').Wit;
const interactive = require('node-wit').interactive;

W tym tutorialu skorzystamy z Wit oraz interactive, więc dodajemy tylko te zależności.

Połączenie z Wit.ai API

Access token

Na początku musimy pobrać access token. Będziemy przekazywać go jako parametr, przy uruchamianiu aplikacji. Unikniemy w ten sposób zaszycia naszego tokenu w kodzie. Do wydobycia tokenu użyjemy node’owego proccess.

const accessToken = (() => {
  if (process.argv.length !== 3) {
    process.exit(1);
  }

  return process.argv[2];
})();

Tworzenie instancji Wit

Teraz możemy stworzyć nową instancję Wit. W tym celu dodajemy do naszego kodu następujące dwie linijki:

const client = new Wit({ accessToken, actions });
interactive(client);

Jak widzimy powyżej, tworząc instancję Wit, przekazujemy wcześniej utworzony accessToken. Dopisujemy od razu actions, które utworzymy za chwilę.

Akcje

Nasz chatbot do poprawnego działania potrzebuje jeszcze akcji. Do zapewnienia podstawowej komunikacji z Wit.ai API potrzebujemy w naszym przypadku dwóch akcji:

  • send – wbudowana akcja Wit.ai, przyjmuje dwa parametry: request i response
  • findPerson – zdefiniowana przez nas akcja

Zadeklarujmy więc akcje w naszym programie:

const actions = {
  send(request, response) {
    console.log('request', request);
    console.log('response', response);
  },
  findPerson({ context, entities }) {
    console.log('context', context);
    console.log('entities', entities);
  }
};

Testując naszą aplikację możemy zobaczyć od podszewki w jaki sposób działa Wit.ai.

Przykładowe wykorzystanie

Aby na tym poziomie nasz chatbot miał już jakąś funkcjonalność, sparsujemy wyodrębnione dane i sprawdzimy czy na temat danej osoby znajduje się artykuł w wikipedii.

Do tego celu wykorzystamy opn. Instalujemy paczkę przez npm.

npm install --save opn

Dodajemy opn do projektu:

const opn = require('opn');

Na koniec pozostało jeszcze zmodyfikowanie metody findPerson:

findPerson({ context, entities }) {
  const fullName = entities.fullName[0].value;
  const url = 'https://pl.wikipedia.org/wiki/' + fullName.replace(' ', '_');

  if (fullName) {
    context.fullName = fullName;
    opn(url, { wait: false });
  } else {
    console.error('Nie zrozumiałem.');
  }

  return context;
}

Test

Pozostało nam przetestować działanie aplikacji node.js. W tym celu wykorzystamy terminal:

Wit Node.js SDK

W terminalu otrzymaliśmy informację (zadeklarowaną w poprzednim wpisie o Wit.ai). Dodatkowo w prosty sposób sprawdzimy czy na temat danej osoby znajduje się artykuł na wikipedii.

Adam Małysz wiki

Dawid Ryłko wiki

Podsumowanie

W tym wpisie zapoznaliśmy się z Wit Node.js SDK i zbudowaliśmy prostą aplikację w Node.js. Kolejny wpis tej serii poświęcimy na rozbudowanie naszego chatbota.

Dodatkowo cały kod, z tego tutorialu do tworzenia chatbota, można pobrać z mojego repozytorium na githubie:
https://github.com/dawidrylko/spy/tree/1.0

Automatyczny deploy aplikacji Angular na Heroku

Heroku logo

Proces deploymentu, to dla deweloperów temat rzeka. Mamy obecnie wiele możliwości oraz wiele gotowych rozwiązań. W tym wpisie zademonstruję jak wykonać deploy aplikacji napisanej przy użyciu frameworka Angular na Heroku.

Przygotowanie

Na początku musimy trochę zmodyfikować package.json, który został wygenerowany za pomocą Angular CLI. Nasza aplikacja będzie budowana bezpośrednio na serwerze Heroku, dlatego musimy przenieść wymagane zależności z devDependencies do dependencies. W moim przypadku są to:

  • "@angular/cli": "^1.0.1"
  • "@angular/compiler-cli": "^4.1.0"
  • "typescript": "^2.3.1"

Dodatkowo, zadeklarujmy jaką wersję node i npm Heroku powinien wykorzystać do budowania aplikacji. Określamy to w następujący sposób:

"engines": {
  "node": "7.5.0",
  "npm": "4.1.2"
},

W przypadku nie zadeklarowania wersji node i  npm, Heroku użyje domyślnych. W chwili obecnej są to: node 6.10.3 i npm 3.10.10. Lokalnie korzystałem z node 7.5.0 i npm 4.1.2, więc aby wystrzec się błędów i różnic przy instalacji oraz kompilowaniu, zdecydowałem się na zadeklarowanie wersji, z których korzystam.

Budowanie aplikacji

Jeżeli przygotowaliśmy aplikację, przetestujmy czy uda się nam ją zbudować lokalnie. Do tego celu wykorzystamy komendę:

ng build --prod --aot

Parametr --prod oznacza wersję produkcyjną, natomiast --aot Ahead-of-time.

Polecam zerknąć na dokumentację Angular CLI, gdzie znajdziemy wszystkie atrybuty możliwe do wykorzystania podczas budowania aplikacji.

Jeżeli wszystko przebiegnie pomyślnie, zostanie utworzony folder dist/, a w nim znajdować się będzie kod wynikowy. Dodatkowo możemy przetestować poprawność budowania używając serwera http.

Angular app build

Na koniec tego etapu umieszczamy komendę do budowania aplikacji do skryptów. Zależy nam na tym, by Heroku automatycznie wykonało budowanie, więc skrypt nazywamy postinstall.

"scripts": {
  ...
  "postinstall": "ng build --prod --aot"
},

Utworzenie serwera

Do uruchomienia naszej aplikacji na Heroku wykorzystamy niezawodnego Express.js. Instalujemy framework poleceniem:

npm install express --save

Po pomyślnej instalacji, tworzymy prosty skrypt, który wypuści naszą aplikację na domyślny port Heroku czyli 8080:

const express = require('express');
const app = express();

app.use(express.static(__dirname + '/dist'));
app.listen(process.env.PORT || 8080);

Ostatnią czynność jaką musimy wykonać w tym etapie, to podmiana w package.json skryptu start:

"scripts": {
  ...
  "start": "node server.js"
},

Aplikacja na Heroku

Utworzenie aplikacji na Heroku zajmuje chwilę. Na początku wybieramy nazwę aplikacji oraz region gdzie nasza aplikacja będzie uruchomiona.

Heroku create app

Następnie w zakładce Deploy, mamy możliwość wybrania sposobu, w jaki nasza aplikacja ma być dystrybuowana. Mając repozytorium aplikacji w serwisie GitHub, zdecydowałem się na wybranie właśnie tego sposobu.

Heroku deploy app

Teraz możemy zdecydować, czy nasza aplikacja ma być automatycznie deployowana czy też nie. Nic nie stoi na przeszkodzie, by wykonać ręczny deploy w dowolnym momencie.

Heroku automatic deploys

Po wykonanym deployu możemy przejrzeć logi z budowania i uruchomić naszą aplikację.

Heroku log Shopping Manager Web