Partilhar via


Solução de problemas geral para bots do Serviço de Bot do Azure AI

APLICA-SE A: SDK v4

Essas perguntas frequentes podem ajudá-lo a solucionar problemas operacionais ou de desenvolvimento de bots comuns.

Como posso solucionar problemas com meu bot?

  1. Depure o código-fonte do bot com o Visual Studio Code ou Visual Studio.
  2. Teste seu bot usando o Bot Framework Emulator antes de implantá-lo na nuvem.
  3. Implante seu bot em uma plataforma de hospedagem em nuvem, como o Azure, e teste a conectividade com seu bot usando o controle de bate-papo da Web interno no painel do bot no portal do Azure. Se você encontrar problemas com seu bot depois de implantá-lo no Azure, considere usar este artigo de blog: Noções básicas sobre solução de problemas e suporte do Azure.
  4. Exclua a autenticação como um possível problema.
  5. Teste seu bot no Web Chat, no Teams ou em qualquer outro canal que você pretenda usar com seu bot. Isso ajudará você a validar a experiência do usuário de ponta a ponta.
  6. Considere testar seu bot em canais que tenham requisitos de autenticação extras, como Linha Direta ou Bate-papo na Web.
  7. Analise o modo de depurar um bot e os outros artigos de depuração nessa seção.

Como posso solucionar problemas de autenticação?

Para obter detalhes sobre como solucionar problemas de autenticação com seu bot, consulte Solução de problemas de autenticação do Bot Framework.

Como faço para testar a conectividade de rede entre bots e um canal?

Você pode usar os endereços IP, gerados pelas etapas abaixo, para verificar se há alguma regra bloqueando a conexão com esses endereços. Consulte a secção Verificar rastreamentos de firewall em ligações falhadas.

Testar a conexão do bot para o canal

  1. No browser, aceda ao Portal do Azure.

  2. Selecione o Serviço de Aplicativo do bot cuja conexão você deseja testar.

  3. No painel esquerdo, na seção Ferramentas de Desenvolvimento, selecione Ferramentas Avançadas.

  4. No painel direito, selecione Ir. A página de informações do Kudu é exibida.

  5. Na barra de menu superior, selecione Depurar console. Em seguida, no menu suspenso, selecione CMD. O console do aplicativo web Kudu bot é aberto. Para obter mais informações, consulte Kudu.

    kudu cmd console

  6. Execute nslookup directline.botframework.com e verifique se a resolução DNS está funcionando. Observe que nslookup (pesquisa de servidor de nomes) é uma ferramenta de linha de comando de administração de rede para consultar o DNS (Sistema de Nomes de Domínio) para obter mapeamento de nome de domínio ou endereço IP ou outros registros DNS. Se a resolução DNS estiver funcionando, a resposta a esse comando conterá as informações relevantes.

    kudu cmd console bot canal dns

    A ferramenta de pesquisa de IP WHOIS é útil para obter informações sobre endereços IP.

  7. Execute o curl -I directline.botframework.com. (A opção -I é usada para obter uma resposta contendo apenas o cabeçalho.) Verifique se um status HTTP de 301 é retornado para verificar se há conectividade.

    kudu cmd console http 301

Testar a conexão do canal para o bot

Como o curl não tem acesso ao local de produção e directline.botframework.com está na internet pública, você deve usar o curl no modo de simulação. Execute as etapas mostradas abaixo fora de uma Rede Privada Virtual (VNET), por exemplo, usando um ponto de acesso de telefone celular. Consulte também O que é a Rede Virtual do Azure?.

  1. Execute o nslookup ivr-sr-bot.botapps.amat.com. A resolução DNS está a funcionar se a resposta a este comando contiver informações relevantes.

    kudu cmd console canal bot dns

  2. Execute curl -I https://ivr-sr-bot.botapps.amat.com/api/messages e verifique se um código de status HTTP apropriado é retornado (por exemplo, o método 405 não é permitido). O método especificado na solicitação não é permitido para o recurso identificado pelo URI especificado. Esta é apenas uma maneira de verificar se há conectividade.

    kudu cmd console http 405

  3. Se você não receber a resposta do bot, anote o endereço IP do cliente.

Verificar rastreamentos de firewall em conexões com falha

Use os endereços IP de nslookup ivr-sr-bot.botapps.amat.com e nslookup directline.botframework.com verifique se há uma regra bloqueando a conexão com esses endereços em qualquer direção.

Estou usando o SDK do Bot Framework para .NET. Como posso solucionar problemas com meu bot?

Procurar exceções

No Visual Studio 2019, vá para Depurar>configurações de exceção do Windows.> Na janela Configurações de exceções, marque a caixa de seleção Quebrar quando lançado ao lado de Exceções do Common Language Runtime. Você também pode ver a saída de diagnóstico na janela Saída quando houver exceções lançadas ou não tratadas.

Olhe para a pilha de chamadas

No Visual Studio, você pode escolher se está ou não depurando Apenas Meu Código . Examinar a pilha de chamadas completa pode fornecer mais informações sobre quaisquer problemas.

Certifique-se de que todos os métodos de diálogo terminem com um plano para lidar com a próxima mensagem

Todas as etapas de diálogo precisam alimentar a próxima etapa da cascata ou encerrar a caixa de diálogo atual para tirá-la da pilha. Se uma etapa não for tratada corretamente, a conversa não continuará como você espera. Dê uma olhada no artigo de conceito para diálogos para saber mais sobre diálogos.

O que causa um erro com o código de status HTTP 429 "Muitas solicitações"?

Uma resposta de erro com o código de estado HTTP 429 indica que foram emitidos demasiados pedidos num determinado período de tempo. O corpo da resposta deve incluir uma explicação do problema e pode também especificar o intervalo mínimo necessário entre pedidos.

Por que minhas mensagens de bot não estão sendo recebidas pelo usuário?

A atividade da mensagem gerada em resposta deve ser endereçada corretamente, caso contrário, não chegará ao destino pretendido. Na maioria dos casos, você não precisará lidar com isso explicitamente; o SDK se encarrega de abordar a atividade da mensagem para você.

Para abordar corretamente uma atividade, inclua os detalhes apropriados do ID da conversa, juntamente com detalhes sobre o remetente. Na maioria dos casos, a atividade da mensagem é enviada em resposta a uma que chegou. Portanto, os detalhes de endereçamento podem ser retirados da atividade de entrada.

Se você examinar rastreamentos ou logs de auditoria, poderá verificar se suas mensagens foram endereçadas corretamente. Se não estiverem, defina um ponto de interrupção no bot e veja onde os IDs estão sendo definidos para sua mensagem.

Como posso executar tarefas em segundo plano no ASP.NET?

Em alguns casos, talvez você queira iniciar uma tarefa assíncrona que aguarda alguns segundos e, em seguida, executa algum código para limpar o perfil do usuário ou redefinir o estado da conversa/diálogo. Para obter detalhes sobre como conseguir isso, consulte Como executar tarefas em segundo plano no ASP.NET. Em particular, considere o uso de HostingEnvironment.QueueBackgroundWorkItem.

Meu bot é lento para responder à primeira mensagem que recebe. Como posso torná-lo mais rápido?

Os bots são serviços Web e algumas plataformas de hospedagem, incluindo o Azure, colocam automaticamente o serviço em repouso se ele não receber tráfego por um determinado período de tempo. Se isto acontecer ao bot, o mesmo deverá recomeçar do zero da próxima vez que receber uma mensagem, o que faz com que a resposta seja muito mais lenta do que se já estivesse a funcionar.

Algumas plataformas de hospedagem permitem que você configure seu serviço para que ele não seja colocado em suspensão. Se o seu bot estiver hospedado em Aplicativos Web do Serviço de Bot do Azure AI, vá para o serviço do bot no portal do Azure, selecione Configurações do aplicativo e selecione Sempre ativado. Esta opção está disponível na maioria dos planos de serviço, mas não em todos.

Como posso garantir a ordem de entrega da mensagem?

O Bot Framework preservará a ordenação de mensagens tanto quanto possível. Por exemplo, se você enviar a mensagem A e aguardar a conclusão dessa operação HTTP antes de iniciar outra operação HTTP para enviar a mensagem B. Alguns canais, como SMS e e-mail, não garantem a ordem em que o usuário receberá mensagens.

Por que partes do texto da minha mensagem estão sendo descartadas?

O Bot Framework e muitos canais interpretam o texto como se estivesse formatado com Markdown. Verifique se o texto contém caracteres que podem ser interpretados como sintaxe Markdown.

Como posso oferecer suporte a vários bots no mesmo ponto de extremidade de serviço de bot?

Este exemplo mostra como configurar o Conversation.Container com o direito MicrosoftAppCredentials e usar um simples MultiCredentialProvider para autenticar vários IDs de aplicativo e senhas.

Como os identificadores funcionam no Bot Framework?

Para obter detalhes sobre identificadores no Bot Framework, consulte o guia do Bot Framework para identificadores.

Como posso ter acesso ao ID de utilizador?

Os canais do Bot Framework apresentam o from.Id ID do usuário no campo de qualquer atividade enviada pelo usuário. SMS e mensagens de e-mail fornecerão o ID de usuário bruto nesta propriedade. Alguns canais obscurecem a from.Id propriedade, de modo que ela contém ID exclusivo para o usuário, que difere do ID do usuário no canal. Se você precisar se conectar a uma conta existente, poderá usar um cartão de entrada e implementar seu próprio fluxo OAuth para conectar o ID de usuário ao ID de usuário do seu próprio serviço.

Por que meus nomes de usuário do Facebook não são mais exibidos?

Alterou a sua palavra-passe do Facebook? Isso invalidará o token de acesso e você precisará atualizar as definições de configuração do bot para o canal do Facebook Messenger no portal do Azure.

Como posso usar os serviços autenticados do meu bot?

Para autenticação do Microsoft Entra ID, consulte o tutorial Adicionar autenticação ao seu bot .

Nota

Se você adicionar funcionalidade de autenticação e segurança ao seu bot, deverá garantir que os padrões implementados em seu código estejam em conformidade com os padrões de segurança apropriados para seu aplicativo.

Como posso limitar o acesso ao meu bot a uma lista pré-determinada de usuários?

Alguns canais, como SMS e e-mail, fornecem endereços sem escopo. Nesses casos, as mensagens do usuário conterão o ID de usuário bruto na from.Id propriedade.

Outros canais, como o Facebook e o Slack, fornecem endereços com escopo ou locatários de uma forma que impede que um bot seja capaz de prever o ID de um usuário com antecedência. Nesses casos, você precisará autenticar o usuário por meio de um link de login ou segredo compartilhado para determinar se ele está ou não autorizado a usar o bot.

Por que minha conversa da Linha Direta 1.1 recomeça depois de cada mensagem?

Nota

Esta seção não se aplica à versão mais recente do protocolo Direct Line, 3.0

Se a conversa da Linha Direta parecer recomeçar após cada mensagem, a from propriedade provavelmente está ausente ou null nas mensagens que o cliente da Linha Direta enviou para o bot. Quando um cliente de Linha Direta envia uma mensagem com a from propriedade ausente ou , o serviço de Linha Direta aloca automaticamente uma ID, de modo que cada mensagem enviada pelo cliente parecerá ter origem em um usuário novo e nulldiferente.

Para corrigir isso, defina a from propriedade em cada mensagem que o cliente Direct Line envia para um valor estável que representa exclusivamente o usuário que está enviando a mensagem. Por exemplo, se um usuário já estiver conectado a uma página da Web ou aplicativo, você poderá usar esse ID de usuário existente como o valor da from propriedade nas mensagens enviadas pelo usuário. Como alternativa, você pode optar por gerar um ID de usuário aleatório no carregamento de página ou no carregamento do aplicativo, armazenar esse ID em um estado de cookie ou dispositivo e usar esse ID como o valor da from propriedade nas mensagens enviadas pelo usuário.

O que faz com que o serviço Direct Line 3.0 responda com o código de status HTTP 502 "Bad Gateway"?

A Linha Direta 3.0 retorna o código de status HTTP 502 quando tenta entrar em contato com o bot, mas a solicitação não é concluída com êxito. Esse erro indica que o bot retornou um erro ou a solicitação expirou. Para obter mais informações sobre erros gerados pelo bot, acesse o painel do bot no portal do Azure e selecione o link "Problemas" para o canal afetado. Se você configurou o Application Insights para seu bot, também poderá encontrar informações detalhadas sobre erros lá.

Por que recebo uma exceção Authorization_RequestDenied ao criar um bot?

A permissão para criar bots do Serviço de Bot do Azure AI é gerenciada por meio do portal Microsoft Entra ID. Se as permissões não estiverem configuradas corretamente no centro de administração do Microsoft Entra ID, os usuários receberão a Authorization_RequestDenied exceção ao tentar criar um serviço de bot.

Primeiro, verifique se você é um "Convidado" do diretório:

  1. Entre no portal do Azure.
  2. Selecione Todos os serviços e procure por ativo.
  3. Selecione Microsoft Entra ID.
  4. Selecione Utilizadores.
  5. Encontre o usuário na lista e verifique se o Tipo de Usuário não é um Convidado.

Tipo de usuário do Microsoft Entra ID

Depois de verificar que você não é um convidado, para garantir que os usuários dentro de um diretório ativo possam criar o serviço de bot, o administrador do diretório precisa definir as seguintes configurações:

  1. Entre no Centro de administração do Microsoft Entra ID. Vá para Usuários e grupos e selecione Configurações do usuário.
  2. Na seção Registro de aplicativos, defina Usuários podem registrar aplicativos como Sim. Isso permite que os usuários em seu diretório criem o serviço de bot.
  3. Na seção Usuários externos, definir As permissões de usuários convidados são limitadas a Não. Isso permite que os usuários convidados em seu diretório criem um serviço de bot.

Centro de Administração do Microsoft Entra ID

Por que não consigo migrar meu bot?

Se o bot estiver registrado no dev.botframework.com e você quiser migrá-lo para o Azure, mas estiver tendo problemas para migrar o bot, pode ser porque o bot pertence a um diretório diferente do diretório padrão. Experimente estes passos:

  1. No diretório de destino, adicione um novo usuário (via endereço de e-mail) que não seja membro do diretório padrão, conceda a função de colaborador do usuário nas assinaturas que são o destino da migração.

  2. No Portal de Desenvolvimento, adicione o endereço de e-mail do usuário como coproprietários do bot que deve ser migrado. Em seguida, saia.

  3. Entre no Dev Portal como o novo usuário e prossiga para migrar o bot.

Onde posso obter mais ajuda?

  • Pesquise perguntas respondidas anteriormente no Stack Overflow ou publique suas próprias perguntas usando a botframework tag . O Stack Overflow tem diretrizes como exigir um título descritivo, uma declaração de problema completa e concisa e detalhes suficientes para reproduzir seu problema. Solicitações de recursos ou perguntas excessivamente amplas estão fora do tópico; novos usuários devem visitar a Central de Ajuda do Stack Overflow para obter mais detalhes.
  • Consulte os problemas do BotBuilder no GitHub para obter informações sobre problemas conhecidos com o SDK do Bot Framework ou para relatar um novo problema.
  • A discussão da comunidade BotBuilder no Gitter.