IBM Watson II: Desenvolvendo uma API com Watson Assistant + Node JS
Então chegamos a segunda parte desta série de artigos sobre o Chatbots e Watson Assistant. Relembrando, aqui você pode ver a parte 1, que é uma introdução a ferramenta, seus conceitos e funcionalidades.
Neste artigo vamos colocar a mão na massa! Vamos ver como implementar uma API que faça o consumo do serviço do Watson Assistant juntamente com um front end. Usaremos Node.js no backend e Vue.js no frontend.
Criando conta e serviço Watson Assistant
Bom, para começarmos, temos que visitar o site do Watson Assistant na IBM aqui e, se você ainda não tem, criar uma conta no IBM Cloud. Lembrando que a IBM disponibiliza uma versão gratuita por 30 dias do Watson Assistant.
Após clicar em Get Started, preencha o cadastro e confirme o seu login. Acessando o este link, clique em Create no canto inferior direito da tela.
Após a criação do novo serviço de Watson Assistant você será direcionado para esta tela. Ela contém as credenciais de acesso do seu serviço:
Salve essas informações em algum lugar que você deseja, pois elas serão muito importante no momento da construção de nossa API.
Clique em Launch tool e agora você será direcionado para a tela de introdução ao Watson Assistant.
Clique em Create a WorkSpace.
Agora estamos na principal tela do Watson Assistant, onde podemos gerenciar os Workspaces.
Um Workspace é um container para todos os artefatos que compõem um fluxo de conversação. É no workspace que configuramos as nossa Entidades, Intenções e o nosso fluxo de conversa. Podemos também definir a linguagem padrão, por exemplo, supondo que nosso bot será em espanhol, é aqui que definimos isso. A definição da língua é importante para que a IA processe corretamente as frases.
Clique em Create para iniciar um workspace novo.
Para fins do exemplo que estamos construindo, vamos usar o tema de previsão do tempo para o nosso bot. O nome do nosso bot será PreviBot. Vamos definir uma descrição e, muito importante, selecionar Português como a linguagem do bot. Feito isso, clique em Create.
Ao criarmos um workspace nós estaremos nessa tela.
Na aba de Intents é onde nós criamos as nossas intenções de conversa, na aba de Entities as entidades e na aba de Dialog é onde iremos criar a nossa árvore de conversa.
Clique na aba de Dialog e veja que temos a opção de iniciarmos um novo diálogo. Clique em Create para iniciarmos uma nova árvore de conversa.
Para não nos alongarmos muito na parte da criação das intenções, entidades e no diálogo que já foram explicadas no artigo 1, vou disponibilizar através deste link o Workspace completo deste exemplo e vamos importá-lo.
Na parte superior da tela, clique em Workspaces. Você será direcionado para a tela inicial dos workspaces.
Note o ícone na parte superior da tela. Clique nele e importe o Workspace baixado.
Após a importação, clique sobre a barra de três pontinhos em cima do workspace importado e clique em View detais.
Salve esta informação junto com as credenciais que salvamos anteriormente.
Pronto, agora vamos para o desenvolvimento da nossa API.
Dica
- Sugiro também que você tire um tempo para conversar através da ferramenta de testes de conversa que o serviço nos disponibiliza, para testar o workspace disponibilizado e para uma melhor compreensão do fluxo de conversa.
Desenvolvendo nossa API
Para desenvolver a API que vai consumir o serviço do Watson Assistant você deve ter instalado em sua máquina o Node.js e o NPM.
Você pode baixar o Node.js através deste link.
Para instalar o NPM, basta abrir um terminal em sua máquina e digitar:
npm install npm@latest -g
Para testar se a instalação do Node.js e do NPM foram bem sucedidas, abra um terminal e digite os comandos abaixo:
node -vnpm -v
Crie uma pasta com o nome de API.
Acesse a pasta através do terminal.
Dentro dela digite o comando abaixo para iniciar o package.json.
npm init -y
Crie uma pasta com nome de src.
Dentro desta pasta crie um arquivo chamado de index.js.
Dentro da pasta src crie uma outra pasta chamada watson.
Dentro da pasta watson crie o arquivo client-watson.js.
Volte para a pasta API.
Vamos instalar agora as dependências do projeto. Digite o comando abaixo:
npm install --save express body-parser cors watson-developer-cloud
- express: É um framework para Node.js. Ele é minimalista, flexível e contém um robusto conjunto de recursos para desenvolver aplicações web.
- body-parser: Para fazer o parse do corpo das requisições.
- cors: Para habilitar o CORS da aplicação.
- watson-developer-cloud: É a biblioteca responsável por acessar os serviços do IBM Watson utilizando Node.js.
Feito isso, nós teremos o seguinte cenário:
Pronto, montamos a estrutura da nossa API, agora vamos CODAR!
LET’S CODE!
Abra o seu arquivo client-watson.js.
Para importar a Biblioteca do Watson adicione esta linha:
Vamos criar nossa variável de configurações. Lembra das credenciais geradas na criação do serviço? Então, você vai utilizar elas aqui! Adicione o seguinte código:
Pronto, agora para exportamos nossa instância para usarmos dentro da index.js basta adicionar no final do arquivo a seguinte linha:
Se você seguiu o passo a passo a passo o seu arquivo deve estar assim.
Agora vamos para o arquivo index.js.
Vamos importar as bibliotecas do express, body-parser e cors. Para isso adicione o seguinte código:
Vamos importar agora a nossa instância da biblioteca do Watson Assistant. Adicione a seguinte linha:
Pronto, agora vou definir nossa const app. Adicione a seguinte linha:
Agora vou definir que o app vai usar. Adicione o seguinte código:
Já adicionei as nossas dependências e configurei o que a nossa const app vai usar. Agora vamos criar a rota que irá acessar o serviço que criamos.
Adicione o seguinte código:
Veja que eu defini uma rota POST que vai pegar do corpo da nossa request os dados no formato que o serviço do Watson Assistant aceita. Após isso, nós definimos uma const params que, além de receber as informações resgatadas do body, contém também um campo chamado workspace_id. Esse Workspace_ID vai indicar para o Serviço do Watson Assistant qual é o workspace que nós queremos acessar para submeter nossa requisição.
Note que eu usei a const watson que carrega uma instância da biblioteca do watson. Usaremos ela para mandarmos a nossa request com o texto a ser avaliado.
Por fim, vamos colocar nossa aplicação para rodar em uma porta de nossa máquina, vamos usar a 3000. Para isso basta adicionar a seguinte linha:
Se você seguiu todos os passos até aqui, seu arquivo index.js deve estar assim:
Pronto! Terminamos a construção de nossa API. Para rodar basta acessar a pasta src e através do terminal executar o seguinte comando:
node index.js
Frontend
Caso você queira testar o Previbot, acesse aqui o link com uma aplicação feita em Vue.js que consome a API criada.
Para rodar basta clonar o Projeto, ir até a pasta watson-app, dar os seguintes comandos:
npm install
npm run dev
** Lembre-se que você deve estar rodando a API também.
Conclusão
Neste artigo mostramos como é feita a criação de um serviço do Watson Assistant dentro do IBM Cloud. Também construímos uma API com Node.js que consome o nosso serviço criado. Além disso, foi disponibilizado um frontend para fins de testes do bot criado.