Integrar seu bot a um navegador da Web

aplica-se a: SDK v4

Alguns cenários exigem mais do que apenas um bot para atender a um requisito. Um bot talvez seja necessário para enviar o usuário para um navegador da Web para concluir uma tarefa e, em seguida, continuar a conversa com o usuário depois que a tarefa tiver sido concluída.

Autenticação e autorização

se um bot quiser a capacidade de ler o calendário do usuário em Office 365, ou talvez até mesmo criar compromissos em nome desse usuário, o usuário deverá primeiro se autenticar com o Microsoft Azure Active Directory e autorizar o bot a acessar os dados do calendário do usuário. O bot redirecionará o usuário para um navegador da Web para concluir as tarefas de autenticação e autorização e, em seguida, continuará a conversa com o usuário.

Segurança e conformidade

Os requisitos de segurança e conformidade muitas vezes restringem o tipo de informação que um bot pode trocar com um usuário. Em alguns casos, pode ser necessário para o usuário enviar/receber dados fora da conversa atual. Por exemplo, se um usuário quiser executar um pagamento usando um provedor de pagamento de terceiros, um número de cartão de crédito não deverá ser especificado dentro do contexto da conversa. Em vez disso, o bot redirecionará o usuário para um navegador da Web para concluir o processo de pagamento e, em seguida, continuará a conversa com o usuário.

Este artigo explora o processo de facilitar a transição de um usuário do bot para o navegador da Web e de volta.

Observação

A transição de bate-papo do navegador da Web e de volta não é ideal, porque alternar entre aplicativos pode confundir o usuário. Para fornecer uma melhor experiência, vários canais oferecem janelas HTML internas que um bot pode usar para apresentar aplicativos que de outra forma seriam exibidos em um navegador da Web. Essa técnica permite que o usuário permaneça dentro da conversa enquanto ainda acessa recursos externos. Essa abordagem é conceitualmente semelhante a aplicativos móveis gerenciando os fluxos de autorização usando OAuth em modos de exibição da Web incorporados.

Bot para o navegador da Web e de volta

Este diagrama mostra o fluxo de alto nível para a integração entre o navegador da Web e o bot.

Bot para interação da Web

Considere cada etapa do fluxo:

  1. O bot gera e exibe um hiperlink que redirecionará o usuário para um site da Web. O hiperlink normalmente inclui dados por meio de parâmetros de querystring na URL de destino que especificam informações sobre o contexto da conversa atual, como ID da conversa, a ID do canal e a ID do usuário no canal.

  2. O usuário clica no hiperlink e é redirecionado para a URL de destino dentro de um navegador da Web.

  3. O bot entra em um estado aguardando a comunicação do site da Web para indicar que o fluxo do site foi concluído.

    Dica

    Crie este fluxo para que o bot não fique permanentemente no estado 'aguardando' se o usuário nunca concluir o fluxo do site. Em outras palavras, se o usuário abandonar o navegador da Web e começar a se comunicar com o bot novamente, o bot deverá confirmar, e não ignorar essa entrada.

  4. O usuário conclui as tarefas necessárias por meio do navegador da Web. Isso pode ser um fluxo de OAuth ou qualquer sequência de eventos necessários pelo cenário em questão.

  5. Quando o usuário concluir o fluxo do site, o site gerará um 'número mágico' e instruirá o usuário para copiara o valor e colá-lo de volta na conversa com o bot.

  6. O site sinaliza para o bot que o usuário concluiu o fluxo do site. Ele comunica o 'número mágico' para o bot e fornece todos os outros dados relevantes. Por exemplo, no caso de um fluxo de OAuth, o site forneceria um token de acesso para o bot.

  7. O usuário retorna ao bot e cola o 'número mágico' no bate-papo. O bot valida se o 'número mágico' fornecido pelo usuário corresponde ao valor esperado, verificando se o usuário atual é o mesmo usuário que anteriormente clicou no hiperlink para iniciar o fluxo de site.

Verificar a identidade do usuário usando o 'número mágico'

A geração de um 'número mágico' durante o fluxo do bot para o site (etapa 5 acima) permite que o bot, subsequentemente verifique se que o usuário que iniciou o fluxo de site é realmente o usuário para o qual ele foi destinado.

Por exemplo, se um bot está realizando um chat de grupo com vários usuários, qualquer um deles poderia ter clicado no hiperlink para iniciar o fluxo de site. Sem o processo de validação do 'número mágico', o bot não tem nenhuma maneira de saber qual usuário concluiu o fluxo. Um usuário pode autenticar e injetar os tokens de acesso na sessão de outro usuário.

Aviso

Isso não é apenas um risco em bate-papos de grupo. Sem o processo de validação do 'número mágico', qualquer pessoa que obtiver o hiperlink para iniciar o fluxo de site poderá falsificar a identidade do usuário.

O número mágico deve ser um número aleatório gerado usando uma biblioteca de criptografia forte. Para obter um exemplo do processo de geração em C#, consulte o código na biblioteca BotAuth.

o BotAuth permite que os bots criados em Microsoft Bot Framework implementem o fluxo de Bot para site para autenticar um usuário em um site e, em seguida, usar o token de acesso que foi gerado do processo de autenticação. Como BotAuth não faz suposições sobre os recursos do canal, esses fluxos devem funcionar bem com a maioria dos canais.

Observação

A necessidade para o processo de validação do 'número mágico' deve ser preterida porque os canais criam seus próprios modos de exibição da Web incorporados.

Como o site 'sinaliza' o bot?

Quando o bot gera o hiperlink no qual o usuário clicará para iniciar o fluxo do site, ele inclui informações por meio dos parâmetros de QUERYSTRING na URL de destino sobre o contexto da conversa atual, como ID de conversa, ID do canal e ID de usuário no canal. Posteriormente, o site pode usar essas informações para ler e gravar as variáveis de estado para esse usuário ou conversa com o SDK do Bot Framework ou APIs REST. Veja a etapa 6 acima para obter um exemplo de como o site 'sinaliza' para o bot que o fluxo do site foi concluído.

Código de exemplo

Conforme descrito neste artigo, a biblioteca BotAuth permite que os fluxos OAuth sejam associados a bots criados usando o .net e o nó no Microsoft bot Framework.

Recursos adicionais