Início Rápido: Adicionar um bot ao seu aplicativo de chat
Saiba como criar experiências de IA de conversação em um aplicativo de chat usando o canal de mensagens de Chat dos Serviços de Comunicação do Azure, disponível no Serviço de Bot do Azure. Neste início rápido, você criará um bot usando o SDK do BotFramework. Em seguida, integre o bot a um aplicativo de chat criado com o SDK de Chat dos Serviços de Comunicação.
Neste guia de início rápido, você aprende a:
- Criar e implantar um bot no Azure
- Obter um recurso dos Serviços de Comunicação
- Habilitar o Canal de Chat dos Serviços de Comunicação para o bot
- Criar um aplicativo de chat e adicionar o bot como um participante
- Explorar mais recursos para o seu bot
Pré-requisitos
- Uma conta Azure e uma assinatura ativa. Crie uma conta gratuitamente.
- Visual Studio 2019 ou posterior.
- A versão mais recente do .NET Core. (https://dotnet.microsoft.com/download/dotnet/).
- SDK da estrutura de bot
Criar e implantar um bot no Azure
Para usar o chat dos Serviços de Comunicação do Azure como um canal no Serviço de Bot do Azure, primeiro implante um bot. Para implantar um bot, conclua estas etapas:
- Criar um recurso do Serviço de Bot do Azure
- Obter a ID e a senha do aplicativo de bot
- Criar um aplicativo Web para armazenar o aplicativo de bot
- Criar um ponto de extremidade de mensagens para o bot
Criar um recurso do Serviço de Bot do Azure
Primeiro, use o portal do Azure para criar um recurso do Serviço de Bot do Azure. O canal de Serviços de Comunicação de Chat também dá suporte a bots de identidade gerenciada, de locatário único e de vários locatários.
- Para fins deste início rápido, usaremos um bot
multitenant
. - Para configurar um bot
single-tenant
ou um botmanaged identity
, consulte Informações de identidade de bot. - Para um bot
managed identity
, talvez seja necessário atualizar a identidade do serviço de bot.
Obter a ID e a senha do aplicativo do bot
Em seguida, obtenha a ID do aplicativo da Microsoft e a senha atribuídas ao bot quando ele for implantado. Use esses valores para configurações posteriores.
Criar um aplicativo de bot e publicá-lo em um aplicativo Web
Para criar um bot, você pode fazer um dos seguintes procedimentos:
- Revise exemplos do Bot Builder para seu cenário, crie um aplicativo Web e implante seu exemplo de bot nele.
- Use o SDK do Bot Builder para criar e publicar um bot em um aplicativo Web.
Para este início rápido, usaremos o exemplo de Echo Bot dos exemplos do Bot Builder.
Criar um aplicativo Web para armazenar o aplicativo de bot
Para criar o aplicativo Web, use a CLI do Azure para criar um recurso de Serviço de Aplicativo do Azure ou crie o aplicativo no portal do Azure.
Para criar um aplicativo Web de bot usando o portal do Azure:
No portal, selecione Criar um recurso. Na caixa de pesquisa, insira aplicativo Web. Selecione o bloco Aplicativo Web.
Em Criar Aplicativo Web, selecione ou insira detalhes para o aplicativo, incluindo a região em que você deseja implantar o aplicativo.
Selecione Examinar + Criar para validar a implantação e examinar os detalhes da implantação. Em seguida, selecione Criar.
Quando o recurso de aplicativo Web for criado, copie a URL do nome do host mostrada nos detalhes do recurso. A URL faz parte do ponto de extremidade que você cria para o aplicativo Web.
Criar um ponto de extremidade de mensagens para o bot
O Serviço de Bot do Azure normalmente espera que o controlador de aplicativo Web do aplicativo de bot exponha um ponto de extremidade no formulário /api/messages
. O ponto de extremidade manipula todas as mensagens enviadas para o bot.
Em seguida, no recurso de bot, crie um ponto de extremidade de mensagens de aplicativo Web:
No portal do Azure, acesse o recurso de Bot do Azure. No menu de recursos, selecione Configuração.
Em Configuração, para Ponto de extremidade de mensagens, cole a URL do nome do host do aplicativo Web copiado na seção anterior. Anexe o URL com
/api/messages
.Clique em Salvar.
Implantar o aplicativo Web
A etapa final para criar um bot é implantar o aplicativo Web. Para este início rápido, use o exemplo do Echo Bot. A funcionalidade do Echo Bot é limitada a ecoar a entrada do usuário. Veja como implantá-lo em seu aplicativo Web no Azure:
Use o Git para clonar este repositório do GitHub:
git clone https://github.com/Microsoft/BotBuilder-Samples.git cd BotBuilder-Samples
No Visual Studio, abra o projeto Echo Bot.
No projeto do Visual Studio, abra o arquivo Appsettings.json. Cole a ID do aplicativo Microsoft e a senha do aplicativo copiadas anteriormente:
{ "MicrosoftAppType": "", "MicrosoftAppId": "<App-registration-ID>", "MicrosoftAppPassword": "<App-password>", "MicrosoftAppTenantId": "" }
Em seguida, use o Visual Studio ou VS Code para bots C# para implantar o bot.
Você também pode usar uma janela do Prompt de Comando para implantar um bot do Azure.
No Visual Studio, no Gerenciador de Soluções, clique com o botão direito do mouse no projeto EchoBot e selecione Publicar:
Selecione Novo para criar um novo perfil de publicação. Em Destino, selecione Azure:
Para o destino específico, selecione Serviço de Aplicativo do Azure:
Na configuração de implantação, selecione o aplicativo Web nos resultados exibidos após entrar em sua conta do Azure. Para concluir o perfil, selecione Concluir e, em seguida, selecione Publicar para iniciar a implantação.
Obter um recurso dos Serviços de Comunicação
Agora que o bot foi criado e implantado, crie um recurso dos Serviços de Comunicação para usar e configurar um canal dos Serviços de Comunicação:
Conclua as etapas para criar um recurso dos Serviços de Comunicação.
Crie um usuário dos Serviços de Comunicação e emita um token de acesso do usuário. Defina o escopo como chat. Copie a cadeia de caracteres de token e a cadeia de caracteres de ID de usuário.
Habilitar o Canal de Chat dos Serviços de Comunicação
Com um recurso dos Serviços de Comunicação, é possível configurar um canal dos Serviços de Comunicação no recurso de bot. Nesse processo, uma ID de usuário é gerada para o bot.
No portal do Azure, acesse o recurso de Bot do Azure. No menu recurso, selecione Canais. Na lista de canais disponíveis, selecione Serviços de Comunicação do Azure – Chat.
Selecione Conectar para ver uma lista de recursos dos Serviços de Comunicação disponíveis em sua assinatura.
No painel Nova Conexão, selecione o recurso de chat dos Serviços de Comunicação e, em seguida, selecione Aplicar.
Quando os detalhes do recurso são verificados, uma ID de bot é mostrada na coluna de Bot de Serviços de Comunicação do Azure. Use a ID do bot para representar o bot em uma conversa de chat usando a API AddParticipant do Chat dos Serviços de Comunicação. Depois de adicionar o bot a um chat como participante, o bot começa a receber atividades relacionadas ao chat e pode responder na conversa do chat.
Criar um aplicativo de chat e adicionar o bot como um participante
Agora que você tem a ID dos Serviços de Comunicação do bot, poderá criar uma conversa de chat com o bot como um participante.
Siga o guia de início rápido "Adicionar Chat ao seu aplicativo"
Siga as etapas mostradas no início rápido Adicionar Chat ao seu aplicativo para criar um aplicativo de chat.
- Substitua <Resource_Endpoint> pelo ponto de extremidade dos Serviços de Comunicação na etapa Obter um Recurso do Serviço de Comunicação.
- Substitua <Access_Token> pelo token de acesso do usuário na etapa Obter um Recurso do Serviço de Comunicação.
- Substitua <Access_ID> pelos bots ACS_ID na etapa Habilitar o canal de Serviços de Comunicação de Chat.
Executar o aplicativo de chat em C# localmente
Para executar o aplicativo de chat localmente, use o comando dotnet run
:
dotnet run
Você deve receber uma mensagem do bot no console que diz "Olá, Mundo".
Exemplo de saída:
1730405535010:Hello World
Mais coisas que você pode fazer com um bot
Um bot pode receber mais do que uma mensagem de texto sem formatação de um usuário em um canal de Chat dos Serviços de Comunicação. Algumas das atividades que um bot pode receber de um usuário incluem:
- Atualização de conversa
- Atualização de mensagem
- Exclusão de mensagem
- Indicador de digitação
- Atividade de evento
- Vários anexos, incluindo cartões adaptáveis
- Dados do canal de bot
As próximas seções mostram alguns exemplos para ilustrar esses recursos.
Enviar uma mensagem de boas-vindas quando um novo usuário for adicionado à conversa
A lógica do Echo Bot atual aceita a entrada do usuário e a ecoa de volta. Se você quiser adicionar mais lógica, como responder a um evento dos Serviços de Comunicação adicionado por um participante, copie o código a seguir e cole-o no arquivo de origemEchoBot.cs:
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;
namespace Microsoft.BotBuilderSamples.Bots
{
public class EchoBot : ActivityHandler
{
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken)
{
if (turnContext.Activity.Type == ActivityTypes.Message)
{
var replyText = $"Echo: {turnContext.Activity.Text}";
await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
}
else if (ActivityTypes.ConversationUpdate.Equals(turnContext.Activity.Type))
{
if (turnContext.Activity.MembersAdded != null)
{
foreach (var member in turnContext.Activity.MembersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
await turnContext.SendActivityAsync(MessageFactory.Text("Hello and welcome to chat with EchoBot!"), cancellationToken);
}
}
}
}
}
}
}
Enviar um cartão adaptável
Observação
Os cartões adaptáveis só têm suporte em casos de uso dos Serviços de Comunicação do Azure em que todos os participantes do chat são usuários dos Serviços de Comunicação do Azure e não para casos de uso de interoperabilidade do Teams.
Envie um cartão adaptável para a conversa de chat para aumentar o envolvimento e a eficiência. Um cartão adaptável também ajuda você a se comunicar com os usuários de várias maneiras. Envie um cartão adaptável de um bot adicionando o cartão como um anexo de atividade de bot.
Aqui está um exemplo de como enviar um cartão adaptável:
var reply = Activity.CreateMessageActivity();
var adaptiveCard = new Attachment()
{
ContentType = "application/vnd.microsoft.card.adaptive",
Content = {/* the adaptive card */}
};
reply.Attachments.Add(adaptiveCard);
await turnContext.SendActivityAsync(reply, cancellationToken);
Obtenha exemplos de conteúdos para cartões adaptáveis em Exemplos e modelos.
Para um usuário de chat, o canal de Chat dos Serviços de Comunicação adiciona um campo aos metadados da mensagem que indica que a mensagem tem um anexo. Nos metadados, a propriedade microsoft.azure.communication.chat.bot.contenttype
é definida como azurebotservice.adaptivecard
.
Aqui está um exemplo de uma mensagem de chat que tem um cartão adaptável anexado:
{
"content": "{\"attachments\":[{\"contentType\":\"application/vnd.microsoft.card.adaptive\",\"content\":{/* the adaptive card */}}]}",
"senderDisplayName": "BotDisplayName",
"metadata": {
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.adaptivecard"
},
"messageType": "Text"
}
Enviar uma mensagem do usuário para o bot
Enviar uma mensagem de texto básica de um usuário para o bot da mesma maneira que envia uma mensagem de texto para outro usuário.
No entanto, ao enviar uma mensagem que tenha um anexo de um usuário para um bot, adicione esse sinalizador aos metadados do Chat dos Serviços de Comunicação:
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.adaptivecard"
Para enviar uma atividade de evento de um usuário para um bot, adicione este sinalizador aos metadados de Chat dos Serviços de Comunicação:
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.event"
As seções a seguir mostram formatos de exemplo para mensagens de chat de um usuário para um bot.
Mensagem de texto simples
{
"content":"Simple text message",
"senderDisplayName":"Acs-Dev-Bot",
"metadata":{
"text":"random text",
"key1":"value1",
"key2":"{\r\n \"subkey1\": \"subValue1\"\r\n
"},
"messageType": "Text"
}
Mensagem com um anexo
{
"content": "{
\"text\":\"sample text\",
\"attachments\": [{
\"contentType\":\"application/vnd.microsoft.card.adaptive\",
\"content\": { \"*adaptive card payload*\" }
}]
}",
"senderDisplayName": "Acs-Dev-Bot",
"metadata": {
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.adaptivecard",
"text": "random text",
"key1": "value1",
"key2": "{\r\n \"subkey1\": \"subValue1\"\r\n}"
},
"messageType": "Text"
}
Mensagem com uma atividade de evento
Uma carga do evento inclui todos os campos JSON no conteúdo da mensagem, exceto Name
. O campo Name
contém o nome do evento.
No exemplo a seguir, o nome do evento endOfConversation
com o conteúdo "{field1":"value1", "field2": { "nestedField":"nestedValue" }}
é enviado para o bot:
{
"content":"{
\"name\":\"endOfConversation\",
\"field1\":\"value1\",
\"field2\": {
\"nestedField\":\"nestedValue\"
}
}",
"senderDisplayName":"Acs-Dev-Bot",
"metadata":{
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.event",
"text":"random text",
"key1":"value1",
"key2":"{\r\n \"subkey1\": \"subValue1\"\r\n}"
},
"messageType": "Text"
}
O campo de metadados microsoft.azure.communication.chat.bot.contenttype
é necessário apenas em uma mensagem enviada de um usuário para um bot.
Campos de atividade de bot com suporte
As seções a seguir descrevem os campos de atividade de bot com suporte para fluxos de bot para usuário e fluxos de usuário para bot.
Fluxo do bot para o usuário
Os campos de atividade de bot a seguir têm suporte para fluxos de bot para usuário.
Atividades
- Mensagem
- Digitação
Campos de atividade de mensagem
Text
Attachments
AttachmentLayout
SuggestedActions
From.Name
(Convertido para Serviços de ComunicaçãoSenderDisplayName
.)ChannelData
(Convertido para Serviços de ComunicaçãoChat Metadata
. Se valores de mapeamentoChannelData
forem objetos, eles serão serializados no formato JSON e enviados como uma cadeia de caracteres.)
Fluxo do usuário para o bot
Esses campos de atividade de bot têm suporte para fluxos de usuário para bot.
Atividades e campos
Mensagem
Id
(ID de mensagem do Chat dos Serviços de Comunicação)TimeStamp
Text
Attachments
Atualização de conversa
MembersAdded
MembersRemoved
TopicName
Atualização de mensagem
Id
(ID de mensagem do Chat dos Serviços de Comunicação atualizada)Text
Attachments
Exclusão de mensagem
Id
(ID de mensagem do Chat dos Serviços de Comunicação excluída)
Evento
Name
Value
Digitação
Outros campos comuns
Recipient.Id
eRecipient.Name
(ID de usuário e nome de exibição do Chat dos Serviços de Comunicação)From.Id
eFrom.Name
(ID de usuário e nome de exibição do Chat dos Serviços de Comunicação)Conversation.Id
(ID de conversa do Chat dos Serviços de Comunicação)ChannelId
(Chat dos Serviços de Comunicação se estiver vazio)ChannelData
(metadados de mensagem do Chat dos Serviços de Comunicação)
Padrões de entrega do bot
Às vezes, um bot não entende uma pergunta ou não pode responder a uma pergunta. Um cliente pode pedir no chat para estar conectado a um agente humano. Nesses cenários, a conversa de chat deve ser transferida do bot para um agente humano. Crie o aplicativo para fazer a transição de uma conversa de um bot para uma pessoa.
Como lidar com a comunicação de bot para bot
Em alguns casos de uso, em que dois bots precisam ser adicionados à mesma conversa de chat para fornecer serviços diferentes. Nesse cenário, talvez seja necessário garantir que um bot não envie respostas automatizadas para as mensagens de outro bot. Se não for tratado corretamente, a interação automatizada dos bots entre si poderá resultar em um loop infinito de mensagens.
Verifique a identidade do usuário dos Serviços de Comunicação de um remetente de mensagem na propriedade From.Id
da atividade. Verifique se ele pertence a outro bot. Em seguida, execute a ação necessária para impedir um fluxo de comunicação bot para bot. Se esse tipo de cenário resultar em grandes volumes de chamadas, o canal de Chat dos Serviços de Comunicação limitará as solicitações e um bot não poderá enviar e receber mensagens.
Saiba mais sobre os limites de restrição.
Solucionar problemas
As seções a seguir descrevem maneiras de solucionar problemas de cenários comuns.
Não é possível adicionar o canal do Chat
No portal do desenvolvedor do Microsoft Bot Framework, acesse aConfiguração>de Mensagens de Bot para verificar se o ponto de extremidade foi definido corretamente.
O bot recebe uma exceção proibida ao responder a uma mensagem
Verifique se a ID e a senha do aplicativo Microsoft do bot foram salvos corretamente no arquivo de configuração do bot carregado no aplicativo Web.
O bot não pode ser adicionado como participante
Verifique se a ID dos Serviços de Comunicação do bot é usada corretamente quando uma solicitação é enviada para adicionar um bot a uma conversa de chat.
Próximas etapas
Você também pode querer:
- Familiarize-se com os conceitos de chat
- Entenda como o preço funciona para o chat