Академический Документы
Профессиональный Документы
Культура Документы
Este site utiliza cookies para análise, conteúdo personalizado e anúncios. Continuando a navegar neste site, você concorda com esse uso. Saiba mais
O objetivo deste artigo é criar um serviço de BOT básico, armazenado no Azure, e depois integrar com um banco de dados, de forma que as mensagens trocadas sejam
enviadas e respondidas num Emulador e numa aplicação integrada com o Slack. Utilizei o Visual Studio 2015 RC 2 para escrever este artigo.
Onde usar?
Você pode criar o seu BOT e integrá-lo diretamente nos seus negócios através da integração com conectores como chat, Email no Office 365, Skype, Slack, Telegram,
SMS, GroupMe, entre outros, conforme a figura 2. O SDK permite criar projetos em C# + Node.js e publica-los no Azure. Esta integração é feita através de serviços REST.
Funcionamento do BOT
O BOT é baseado em uma lógica que requisita e recebe textos de um Web Service, normalmente armazenado no Azure. Dependendo do texto solicitado ao servidor, o
mesmo trata a mensagem segundo uma Inteligência que você cria, e responde à solicitação. Quando falo sobre inteligência, quero dizer que você pode e deve criar um
conjunto de expressões, por exemplo, usar o LUIS (Language Understanding Intelligent Service https://www.microsoft.com/cognitive-services/en-us/language-
understanding-intelligent-service-luis http://luis.ai) para treinar este modelo de expressões. O treinamento é baseado no Machine Learning, que através dos diversos
modelos matemáticos e estatísticos submete tais expressões.
Como um BOT é baseado em serviços REST, tenha em mente que todas as mensagens trocadas entre cliente e servidor são mapeadas em JSON, por exemplo, a figura 3
mostra o conector BOT para o canal SMS. Imagine que você quer fazer o pedido de uma pizza através de um conector, não importa qual seja, o servidor recebe a
mensagem (text: “Diga fazer pedido para iniciar o pedido”), processa e entende que o cliente deseja iniciar o pedido. Então, o cliente recebe a mensagem texto do
servidor dando as instruções. Veja que no JSON é definida a linguagem a ser usada, até o momento está disponível apenas para algumas.
https://msdn.microsoft.com/pt-br/mt721312.aspx 1/12
25/10/2018 BOT Framework e Integração com Aplicações
Em seguida, crie um novo projeto chamado BOTArtigoMSDN. Selecione o template Visual C# / Bot Application, conforme a figura 4, clique em OK e aguarde a criação do
projeto.
O mais importante neste projeto é que você pode publica-lo em qualquer servidor de internet onde os conectores terão acesso. E, todo BOT tem o AppId e a AppSecret
descritos no Web.Config. Como o projeto foi criado agora, ainda não temos estas informações, mas quando registrarmos o BOT, elas são geradas e aí sim, basta copiar as
informações aqui.
<appSettings>
<!-- update these with your appid and one of your appsecret keys-->
<add key="AppId" value="YourAppId" />
<add key="AppSecret" value="YourAppSecret" />
</appSettings>
Abra o arquivo MessagesController.cs e note que a declaração do código a seguir. Aqui é o local onde é recebida a mensagem do usuário e enviada a resposta. Roda
assíncrona, e se a mensagem for do tipo Message, o código trata e retorna uma expressão em CreateReplyMessage. Neste exemplo padrão, o texto devolve a quantidade
de caracteres contidas na expressão. Caso contrário é disparado o HandleSystemMessage que verifica qual interação foi identificada e retorna a mensagem.
https://msdn.microsoft.com/pt-br/mt721312.aspx 2/12
25/10/2018 BOT Framework e Integração com Aplicações
}
}
return null;
}
Neste exemplo, adicione o seguinte código que retorna uma mensagem no IF a seguir:
No entanto, você não consegue interagir, então, a melhor coisa é instalar o emulador (http://aka.ms/bf-bc-emulator). Veja que a mensagem no navegador diz que você
pode navegar no site do BOT e ao registrá-lo, é preciso adicionar o “/api/messages” no final da URL, afinal é um serviço REST. Neste momento, copie a URL, deixe a
aplicação rodando no VS e pode fechar o navegador. Abra o emulador, por default a porta usada é 3978, note que já é inserido o “/api/messages”. Note ainda, que você
precisa fornecer o AppId e AppSecret, caso seja diferente do padrão.
Conforme a figura 6, clique no botão Send e veja que a resposta é a expressão “Olá Bot MSDN”, o qual é a que inserimos no código anterior. Isto porque já foi
identificado que o tipo de mensagem é message.Type == "BotAddedToConversation".
https://msdn.microsoft.com/pt-br/mt721312.aspx 3/12
25/10/2018 BOT Framework e Integração com Aplicações
Agora vamos enviar uma mensagem para o BOT, na caixa de texto no rodapé digite um texto e clique na seta para enviar. Veja que no chat são mostradas todas as
mensagens trocadas. Se você selecionar qualquer mensagem, será mostrado o JSON do lado direito, conforme a figura 7, assim você pode saber o que realmente está
sendo enviado e recebido do servidor.
Sendo assim, você pode construir toda a sua camada de negócios de forma que a própria mensagem faça uma pesquisa no banco de dados ou em um serviço na web, a
fim de retornar dados, por exemplo, valor da ação de uma empresa, cotação de moedas, se há estoque de um produto, emergências médicas, enfim, há uma infinidade
de cenários.
Desta forma, criei um serviço REST que contém um Controller com uma Action que recebe o ID de um produto e retorna dados (ID, nome e preço) do mesmo. Foquei
aqui somente no código, sem tratar qualquer HttpNotFound ou erros para que você entenda mais facilmente.
// GET api/ProdutosWebAPI/5
public class ProdutosWebAPIController : ApiController
{
NORTHWNDEntities ctx = new NORTHWNDEntities();
https://msdn.microsoft.com/pt-br/mt721312.aspx 4/12
25/10/2018 BOT Framework e Integração com Aplicações
public class ServiceProduto
{
public static async Task<string> GetProdutosAsync(int id)
{
string url = $"http://localhost:23736/api/ProdutosWebAPI/{id}";
string dados;
using (WebClient client = new WebClient())
{
dados = await client.DownloadStringTaskAsync(url).ConfigureAwait(false);
}
if (dados != "null")
{
string nome = dados.Split(',')[1].Split(':')[1].Split('\"')[1];
double preco = Convert.ToDouble(dados.Split(',')[2].Split(':')[1].Replace("}", ""));
return $"{nome} - preço: {preco:n2}";
}
else
{
return $"o produto {id} não consta no estoque";
}
}
}
Já no arquivo MessageController.cs, veja o Post que faz a chamada ao GetProdutos passando o Message como parâmetro, ou seja, o dado que o usuário enviou.
https://msdn.microsoft.com/pt-br/mt721312.aspx 5/12
25/10/2018 BOT Framework e Integração com Aplicações
Figura 8 – Retorno dos dados dos produtos
Pronto, este BOT já está finalizado para ser publicado em algum servidor.
No Solution Explorer clique no projeto do BOT e selecione Publish. Selecione a opção Microsoft Azure App Service. Clique no botão Next, conforme a figura 9.
Faça o login, caso precise, escolha a sua assinatura e o Serviços de Aplicativo já criado no Azure. Caso não tenha criado ainda, clique no botão New e preencha o
formulário para cria-lo. Ao final, clique no botão OK, conforme a figura 10.
Serão exibidas as informações referentes ao servidor, nome do site, login e url a ser criada. Clique no botão Next e nas demais telas, não há mistério, basta finalizar o
assistente e aguardar a publicação, conforme a figura 11.
https://msdn.microsoft.com/pt-br/mt721312.aspx 6/12
25/10/2018 BOT Framework e Integração com Aplicações
Assim que a publicação finaliza, é aberto o navegador já com a URL criada. Isto é tudo o que precisamos até o momento, o projeto está publicado no Azure.
Endpoint: será a Url gerada na publicação no Azure seguido da expressão “/api/messages”. É recomendado usar https caso use autorização básica. O link final no meu
caso é: https://botartigomsdn.azurewebsites.net/api/messages
App ID: coloque um texto, apenas letras e você não poderá alterar isto depois que salvar o registro.
Ao final, clique no chekbox para concordar com os termos e clique no botão Register e aguarde. Conforme a figura 12, veja o painel da esquerda com todas as
informações do BOT. E, no painel da direita todos os conectores disponíveis para você associar ao BOT, ou seja, integrar o BOT ao Email, Skype, Slack, etc.
Agora é preciso fazer um ajuste necessário nas configurações da aplicação criada no VS 2015. Lembre-se que no arquivo Web.Config temos o AppId e o AppSecret? Pois
bem, o projeto está publicado no Azure com credenciais default. Isto significa que se você testar o seu BOT agora, dará erro. No painel do lado esquerdo do BOT criado,
há estas duas chaves que precisamos, portanto, abra o Web.Config no VS 2015, copie e cole os dados do App ID e “Primary app secret”.
https://msdn.microsoft.com/pt-br/mt721312.aspx 7/12
25/10/2018 BOT Framework e Integração com Aplicações
<appSettings>
<!-- update these with your appid and one of your appsecret keys-->
<add key="AppId" value="BuildArtigoMSDN" />
<add key="AppSecret" value="a4c282d165ca41cdb5a724b718d6f69a" />
</appSettings>
No Solution Explorer, rode novamente o processo de Publish no Azure, é rápido pois foi alterado apenas um arquivo. Mesmo assim, se você executar pelo emulador ou
diretamente na janela de teste do MY BOTS dará erro. Isto porque o projeto aponta para o banco de dados em localhost. Sendo assim, vamos alterar a classe
ServiceProduto de forma que a pesquisa seja feita apenas em uma pequena lista de produtos. E, não se esqueça de criar a classe Produto.
Para garantir, faça o teste diretamente na janela do seu BOT em My BOTS. Como o seu BOT está selecionado, digite um número (ID do produto) na caixa de texto e
clique no botão Send. Veja o resultado JSON completo do retorno da mensagem, conforme a figura 14.
https://msdn.microsoft.com/pt-br/mt721312.aspx 8/12
25/10/2018 BOT Framework e Integração com Aplicações
É aberta uma nova janela no navegador para você seguir as etapas. Basicamente você precisa se ter uma conta no Slack, se logar e criar a aplicação do seu BOT
( https://api.slack.com/applications/new). Os três passos são fáceis de seguir porque o site já mostra o que você deve fazer para seguir o roteiro, conforme a figura 16.
https://msdn.microsoft.com/pt-br/mt721312.aspx 9/12
25/10/2018 BOT Framework e Integração com Aplicações
A figura 17 exibe os dados da aplicação criada no Slack, contendo o Client ID, o Client Secret e a Redirect URI que foi colada quando gerada a aplicação no BOT.
A figura 18 mostra o link gerado a ser copiado e colado para o campo “Use this Redirect URI”, quando você cria a aplicação no BOT.
No site do Slack, desça até encontrar a sessão “Bot User”, conforme a figura 19. No site do BOT, seguindo o passo a passo, na sessão “Scroll down on page and create a
bot”, clique no botão “Add a bot to this app” para adicionar o usuário ao Slack.
https://msdn.microsoft.com/pt-br/mt721312.aspx 10/12
25/10/2018 BOT Framework e Integração com Aplicações
E, para terminar, seguindo o passo a passo no site do BOT, localize a sessão “Submit your Client ID and Client Secret saved from above”. Aqui são solicitados dois dados
(Client ID e Client Secret), os quais você deverá copiar e colar do site do Slack (gerados na figura 17). Clique no botão “Submit Slack Credentials” e pronto.
Nos bastidores o Slack aprova e já disponibiliza em quais canais você quer que este usuário seja chamado. Você pode associar à sessão #general.
Agora, vamos ao teste real das solicitações de dados ao BOT. Abra o Slack.com, faça o login e crie outro usuário para você testar ou pode pedir para um amigo aceitar.
Na caixa de texto de mensagens, para você chamar o BOT no Azure passando o parâmetro, use @usuário (@botartigomsdn:) seguido de um número, que é o código do
produto. Dê ENTER e aguarde o retorno do Auzre com os dados sobre o produto. Veja na figura 19 as várias solicitações feitas e seus devidos retornos.
Agora que você já sabe o que e como usar o BOT, abra a sua mente e tente criar exemplos de como integrar o BOT aos conectores, afim de facilitar a vida de muitos
usuários.
Conclusão
Integrar serviços armazenados em um servidor ou Azure diretamente com aplicações famosas como Slack, Skype e outras, é o caminho para disseminar as informações e
serviços de forma simples, rápida e acessível de qualquer dispositivo. Portanto, estude o BOT e aplique o conhecimento ilustrado neste artigo.
Agradeço a oportunidade de poder compartilhar o conhecimento deste artigo. Qualquer dúvida e necessitando de treinamento, por favor me contate.
Sobre o Autor
Renato Haddad ( rehaddad@msn.com – www.renatohaddad.com) é MVP, MS Regional Director, MCPD e MCTS, palestrante em eventos da Microsoft em diversos países,
ministra treinamentos focados em produtividade com o VS.NET 2013/2015, ASP.NET Core, 4/5, Power BI, Entity Framework, Reporting Services, Universal Windows
Platform. Visite o blog http://weblogs.asp.net/renatohaddad.
https://msdn.microsoft.com/pt-br/mt721312.aspx 11/12
25/10/2018 BOT Framework e Integração com Aplicações
Channel 9 Blogs
Office MSDN Magazine Codeplex
Open Source
Visual Studio
Brasil (Português) Boletim informativo Privacidade & cookies Termos de uso Marcas comerciais © 2018 Microsoft
https://msdn.microsoft.com/pt-br/mt721312.aspx 12/12