Ler em outros idiomas: 한국어.
Nesta jornada do desenvolvedor, será desenvolvido um TJBot que entende de beisebol. Usando o Watson Discovery, o TJBot fornecerá informações sobre seus times preferidos, como posição atual na liga, próximos jogos e links para alguns artigos relevantes do Watson News.
Depois de concluir esta jornada, o leitor saberá como:
- Desenvolver um TJBot que conversa usando o Watson Assistant
- Usar os serviços Watson Text to Speech e Speech to Text para conversar com o TJBot
- Usar o Watson Tone Analyzer para determinar como você se sente em relação aos seus times preferidos
- Usar o Watson Discovery News para encontrar notícias a respeito dos seus times preferidos
- Consultar origens de dados de terceiros para obter os dados mais recentes da Major League Baseball (MLB)
- Usar o Twilio para enviar mensagens de texto por SMS com os calendários dos times e links para notícias
Deseja levar seu aplicativo Watson para o próximo nível? Quer aproveitar os ativos da marca Watson? Participe do programa With Watson, que oferece recursos técnicos, de marketing e da marca exclusivos para amplificar e acelerar sua solução comercial incorporada do Watson.
- Watson Assistant: Desenvolva, teste e implemente um bot ou agente virtual em dispositivos móveis, plataformas de sistemas de mensagens ou até mesmo um robô físico.
- Watson Discovery: Um mecanismo cognitivo de procura e analytics de conteúdo para aplicativos identificarem padrões, tendências e informações acionáveis.
- Watson Text to Speech: Converte textos escritos para áudios em linguagem natural, com suporte a vários idiomas e tipos de vozes.
- Watson Speech to Text: Um serviço que converte voz humana em textos escritos.
- Watson Tone Analyzer: Usa análise linguística para detectar os tons da comunicação em texto escrito.
- Twilio: Integre voz, sistema de mensagens e VoIP nos seus aplicativos móveis e da web.
- MLB FantasyData: Um dos principais provedores de conteúdo e dados esportivos em tempo real para vários esportes, atendendo a clientes de fantasy league, mídia e dispositivo móvel no mundo todo.
- Node.js: Um tempo de execução JavaScript direcionado por evento assíncrono, criado para o desenvolvimento de aplicativos escaláveis.
Este aplicativo foi criado para ser executado em um TJBot, mas pode funcionar em qualquer estação de trabalho ou laptop padrão com suporte para controles de áudio - especificamente, um dispositivo de entrada de microfone e um alto-falante de saída. Para começar, talvez seja mais simples instalar no seu laptop. Caso queira desenvolver diretamente em um TJBot, passe para a seção Desenvolver um TJBot antes de concluir as próximas etapas.
- Clonar o repositório
- Criar serviços do Bluemix
- Configurar o Watson Assistant
- Ativar o Watson Discovery
- Ativar o Watson Speech to Text
- Ativar o Watson Text to Speech
- Ativar o Watson Tone Analyzer
- Inscrever-se no serviço do Twilio
- Inscrever-se no serviço do MLB FantasyData
- Executar o aplicativo
Clone o tjbot-sports-buddy
localmente. Em um terminal, execute:
$ git clone https://github.com/ibm/tjbot-sports-buddy
Utilizaremos o arquivo data/workspace.json
Crie os serviços a seguir:
Acione a ferramenta Watson Assistant. Use o botão com o ícone import à direita
Localize a versão local de data/workspace.json
e selecione Import. Para localizar o ID da área de trabalho, clique no menu de contexto da nova área de trabalho e selecione View details. Salve esse ID para mais tarde.
Como opção, para visualizar o diálogo do Assistant, selecione a área de trabalho e escolha a guia Dialog. Este é um fragmento do diálogo:
Acione a ferramenta Watson Discovery. Selecione Watson Discovery News Collection.
No painel de detalhes, salve os valores environment_id e collection_id.
Selecione o serviço Watson Speech to Text. Selecione o item do menu Service credentials.
Clique em View Credentials e salve os valores username e password.
Selecione o serviço Watson Text to Speech. Selecione o item do menu Service credentials.
Clique em View Credentials e salve os valores username e password.
Selecione o serviço Watson Tone Analyzer. Selecione o item do menu Service credentials.
Clique em View Credentials e salve os valores username e password.
Uma das funções principais do tjbot-sports-buddy
é enviar mensagens de texto sobre os próximos jogos e manchetes de notícias a respeito dos times de beisebol preferidos dos usuários. Para enviar mensagens de texto por SMS, usamos o serviço do Twilio. Inscreva-se para uma conta para teste gratuita em https://www.twilio.com/try-twilio.
Como parte do serviço, serão atribuídos os valores a seguir, que precisarão ser salvos. É possível acessá-los por meio das configurações da conta do usuário:
- SID da conta
- Token de autenticação
Por fim, você precisará de um número de telefone fornecido pelo Twilio, do qual todas as mensagens de texto serão originadas. Para criar um, navegue até a opção Programmable SMS no menu de contexto.
- Número de telefone fornecido pelo Twilio
Por padrão, você poderá enviar mensagens de texto por SMS somente para o número de telefone que foi fornecido no momento da criação da conta. Para enviar mensagens para outros números, você precisa adicioná-los em https://www.twilio.com/console. Para cada número inserido, o usuário do número deverá verificá-lo e vai receber um código de verificação. Em seguida, o código de verificação deve ser inserido para concluir o processo de registro.
Outra característica do tjbot-sports-buddy
é ser capaz de fornecer estatísticas atualizadas da Major League Baseball (MLB). Especificamente, calendário e posição. Para recuperar esses dados, usamos APIs fornecidas pelo FantasyData.
Inscreva-se para uma conta para teste gratuita em https://developer.fantasydata.com.
Após a inscrição, salve a chave de assinatura fornecida, disponível no seu perfil.
Em primeiro lugar, atualize os valores em config.new.js
e renomeie como config.js
:
$ cp config.new.js config.js ### edit config.js
Em segundo lugar, instale as dependências, execute o seguinte no local do repositório clonado:
$ npm install --save
OBSERVAÇÃO: talvez seja necessário instalar outras dependências; consulte a seção [Resolução de Problemas](resolução de problemas) abaixo.
Por fim, execute o aplicativo:
$ node run.js
Versão textual de uma conversa de amostra com o TJBot:
Você: "Olá, Watson"
TJBot: "Olá. Eu me chamo Watson e gosto muito de beisebol. Qual é seu time preferido?"
Você: "Os Yankees"
TJBot: "Os New York Yankees estão em primeiro lugar no momento. Como você acha que será o desempenho do time este ano?"
Você: "Excelente!"
TJBot: "Concordo, se conseguirem se manter em forma"
TJBot: "Gostaria de receber uma mensagem de texto com os próximos jogos dos New York Yankees e links para algumas manchetes do Watson News?"
Você: "Claro"
TJBot: "Qual número devo usar?"
Você: “Um, dois, três, quatro, cinco, seis, sete, oito, nove, dez, zero"
TJBot: "A mensagem de texto foi enviada. Você está interessado em algum outro time?"
Você: "Não, obrigado"
TJBot: "Certo. Tenha um bom dia"
Segue uma recapitulação dos serviços usados para ter essa conversa:
- Watson Assistant: O fluxo da conversa.
- Watson Speech-To-Text: Converte a entrada do usuário em texto.
- Watson Text-To-Speech: Converte as respostas do TJBot em som.
- Watson Tone Analyzer: Determina uma resposta adequada ao sentimento do usuário em relação ao seu time preferido.
- Watson Discovery: Gera links para manchetes sobre o time.
- FantasyData: Recupera a posição atual e os próximos jogos do time.
- Twilio: Envia mensagem de texto com o calendário e notícias sobre a equipe para o usuário.
Para desenvolver um TJBot, siga o tutorial intitulado: Desenvolva um chatbot que se importa: Parte 2.
Ele contém um guia abrangente para:
- Configuração do Raspberry Pi
- Montagem do TJBot Carboard
- Configuração do Node.js
- Suporte e resolução de problemas de áudio
Quando o TJBot estiver em execução e funcional, realize as etapas 1-10 acima para configurar e executar o aplicativo TJBot Sports Buddy.
Talvez você precise instalar algumas dependências relacionadas a áudio caso esteja vendo este erro:
events.js:163 throw er; // Unhandled 'error' event
Use brew
para instalar:
- mplayer * sox * ffmpeg
$ brew install sox mplayer ffmpeg
E use NPM para instalar: * node-ffprobe
$ npm install node-ffprobe
$ sudo apt-get install ffmpeg
E use NPM para instalar: * node-ffprobe
$ npm install node-ffprobe
Encontramos esse erro no Ubuntu. É causado por problemas no microfone.
A primeira etapa é diagnosticar o problema. Em run.js, acesse o objeto a seguir e modifique debug
para true:
const MIC_PARAMS = {
rate: 44100,
channels: 2,
debug: true,
exitOnSilence: 6
};
Se encontrar o erro:
Received Info: arecord: main:722: audio open error: No such file or directory
Tente fazer o seguinte:
$ arecord -l // locate your microphone card and device number
**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC262 Analog [ALC262 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 2: ALC262 Alt Analog [ALC262 Alt Analog]
Subdevices: 2/2
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
card 2: C320M [Plantronics C320-M], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
A seguir, inclua o número da placa e do dispositivo (hw:card,device
) nos parâmetros do microfone. Por exemplo, para usar a placa Plantronics
acima:
const MIC_PARAMS = {
rate: 44100,
channels: 2,
device: 'hw:2,0',
debug: true, exitOnSilence: 6
};
Se encontrar o erro:
Received Info: arecord: main:722: audio open error: Device or resource busy
Significará que seu dispositivo está sendo usado por outro processo. Tente fazer o seguinte:
- Saia de qualquer aplicativo de controle de áudio que possa estar em execução, como
PulseAudio
. - Saia de todos os navegadores abertos. Caso ainda encontre o erro, reinicialize.
OBSERVAÇÃO: não se esqueça de definir
debug:false
depois que tudo estiver funcionando; caso contrário, muitas mensagens de log serão enviadas ao console.