Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As interações de um bot podem estar a utilizar texto, voz, imagens ou vídeo. Processa a entrada do utilizador para compreender o pedido e avalia a entrada para realizar tarefas relevantes. Um bot pode pedir informações ou ativar o acesso aos serviços e responder ao utilizador.
Âmbitos do bot
Os bots no Microsoft Teams podem fazer parte de uma conversa privadas, um chat em grupo ou um canal em uma equipe. Cada escopo fornece oportunidades únicas e desafios para seu bot conversacional.
| Em um canal. | Em um chat em grupo | Chat Privado |
|---|---|---|
| Alcance enorme | Menos membros | Maneira tradicional |
| Interações individuais concisas | @mention para bot | Bots de P e R |
| @mention para bot | Semelhante ao canal | Bots que contam piadas e fazem anotações |
Em um canal.
Os canais contêm conversações por tópicos entre várias pessoas, até mesmo até 2000. Isso potencialmente dá ao seu bot um alcance enorme, mas as interações individuais devem ser concisas. As interações multifator tradicionais não funcionam. Em vez disso, tem de procurar utilizar cartões ou caixas de diálogo interativos (referidos como módulos de tarefas no TeamsJS v1.x) ou mover a conversação para uma conversação um-para-um para recolher muitas informações. O bot só tem acesso a mensagens em que é @mentioned. Você pode recuperar mensagens adicionais da conversa usando as permissões do Microsoft Graph no nível da organização.
Os bots funcionam melhor em um canal nos seguintes casos:
- Notificações, em que você fornece um cartão interativo para os usuários obterem informações adicionais.
- Comentários cenários como votações e pesquisas.
- Um único ciclo de solicitação ou resposta resolve interações e os resultados são úteis para vários membros da conversa.
- Bots sociais ou divertidos, em que você obtém uma imagem de gato incrível, escolhe aleatoriamente um vencedor e assim por diante.
Em um chat em grupo
Os chats de grupo são conversas não-encadeadas entre três ou mais pessoas. Tendem a ter menos membros do que um canal e são mais temporários. Semelhante a um canal, o bot só tem acesso a mensagens onde está @mentioned diretamente.
Os bots que funcionam melhor num canal também funcionam melhor numa conversa de grupo.
Chat Privado
O chat privado é a maneira tradicional de um bot de conversação interagir com um usuário. Alguns exemplos de bots de chat ptivado são:
- Bots de P e R
- bots que iniciam fluxos de trabalho noutros sistemas.
- bots que contam piadas.
- bots que tiram notas. Antes de criar chatbots um-para-um, considere se uma interface baseada em conversação é a melhor forma de apresentar a sua funcionalidade.
Processador de atividade e lógica do bot
Para criar uma aplicação de bot que satisfaça as suas necessidades, é essencial compreender o processador de atividades do Microsoft Teams e a lógica do bot. Estes dois componentes principais trabalham em conjunto para organizar a lógica de conversação.
Processador de atividades do Teams: processa eventos e interações específicos do Teams, tais como a criação de canais, adições de membros da equipa e outras ações exclusivas para o ambiente do Teams. No SDK do Teams v2, os processadores são registados diretamente numa
Appinstância e não através da herança de classes.Lógica do bot: o
Appobjeto aloja a lógica de conversação do bot e é responsável por tomar decisões com base na entrada do utilizador. As atividades de entrada são encaminhadas para o processador adequado com base no tipo de atividade e na correspondência de padrões opcionais.
Processador de atividades do Teams
O processador de atividade é o núcleo da funcionalidade de um bot, ao gerir e processar as interações do utilizador. No SDK do Teams v2:
- Instancia um
Appobjeto e regista processadores no mesmo. - Os processadores recebem um objeto de contexto escrito (
IActivityContextem TypeScript,IContext<TActivity>em C#,ActivityContext[TActivity]em Python). - As respostas e as mensagens proativas são enviadas através de
ctx.reply()ouctx.send().
Quando um bot do Teams recebe uma atividade, o SDK encaminha-a através do processador registado. Os eventos específicos do Teams (ciclo de vida do canal, alterações de membros, etc.) são apresentados como eventos nomeados distintos, pelo que não precisa de inspecionar channelData.eventType manualmente.
Observação
Se uma atividade de bot demorar mais de 15 segundos a ser processada, o Teams envia um pedido de repetição para o ponto final do bot, para que possa ver pedidos duplicados.
Fragmentos de código do processador de atividades
Os fragmentos seguintes mostram os processadores de atividade do Teams para eventos de ciclo de vida do canal e da equipa.
Os bots são criados com o @microsoft/teams.apps pacote. Instancia e App regista processadores com app.on(eventName, handler). O SDK encaminha as atividades para o processador correto com base na cadeia de nome do evento.
channelCreated
import { App } from '@microsoft/teams.apps';
const app = new App();
app.on('channelCreated', async ({ activity }) => {
const channel = activity.channelData.channel; // { id, name }
const team = activity.channelData.team; // { id, name }
// Code logic here
});
channelDeleted
app.on('channelDeleted', async ({ activity }) => {
// Code logic here
});
channelRenamed
app.on('channelRenamed', async ({ activity }) => {
// Code logic here
});
teamRenamed
app.on('teamRenamed', async ({ activity }) => {
// Code logic here
});
membersAdded / membersRemoved
app.on('membersAdded', async ({ activity, send }) => {
for (const member of activity.membersAdded) {
await send(`Welcome, ${member.name}!`);
}
});
app.on('membersRemoved', async ({ activity }) => {
// Code logic here
});
messageUpdate / messageDelete
As edições de mensagens são apresentadas como messageUpdate. As eliminações de forma recuperável são apresentadas como messageDelete — o activity.channelData.eventType será 'softDeleteMessage'.
app.on('messageUpdate', async ({ activity }) => {
// Code logic here
});
app.on('messageDelete', async ({ activity }) => {
// activity.channelData.eventType === 'softDeleteMessage' for soft deletes
// Code logic here
});
Exemplo de processador de atividade de bot
O código seguinte fornece um exemplo de uma atividade de bot:
import { App } from '@microsoft/teams.apps';
const app = new App();
app.on('message', async ({ activity, reply }) => {
const senderName = activity.from.name;
await send(`Hello <at>${senderName}</at>.`);
});
app.start().catch(console.error);
Lógica do bot
A lógica do bot incorpora as regras fundamentais e as estruturas de tomada de decisões que ditam as ações e interações de um bot. Descreve como o bot interpreta a entrada do utilizador, formula respostas e participa em conversações.
No SDK v2 do Teams, a lógica do bot processa as atividades recebidas de um ou mais canais de bot e gera atividades de saída. Todo o App encaminhamento de atividade é processado pela instância – regista os processadores e o SDK envia atividades para os mesmos automaticamente.
Processadores de atividade principais
A lista de nomes de eventos suportados pelo app.on() inclui o seguinte:
| Evento | Cadeia de nome do evento | Descrição |
|---|---|---|
| Qualquer tipo de atividade recebida | 'activity' |
O processador Catch-all chamou todas as atividades. |
| Atividade de mensagem recebida | 'message' |
Processe as mensagens sms recebidas. Utilize app.message(pattern, handler) para a correspondência de regex. |
| Atualização de conversação recebida | 'conversationUpdate' |
Atividade de atualização de conversação não processada. |
| Instalação adicionada | 'install.add' |
O bot foi instalado. |
| Instalação removida | 'install.remove' |
O bot foi desinstalado. |
| Membros adicionados | 'membersAdded' |
Um ou mais membros juntaram-se à conversação. |
| Membros removidos | 'membersRemoved' |
Um ou mais membros deixaram a conversação. |
| Mensagem editada | 'messageUpdate' |
Foi editada uma mensagem na conversação. |
| Mensagem eliminada de forma recuperável | 'messageDelete' |
Uma mensagem foi eliminada de forma recuperável (activity.channelData.eventType === 'softDeleteMessage'). |
| Recibo de leitura recebido | 'readReceipt' |
Foi recebido um recibo de leitura. |
Processadores de eventos específicos do Teams
app.on() suporta as seguintes cadeias de nomes de eventos específicas do Teams:
| Evento | Cadeia de nome do evento | Descrição |
|---|---|---|
channelCreated |
'channelCreated' |
Foi criado um canal do Teams. |
channelDeleted |
'channelDeleted' |
Um canal do Teams foi eliminado. |
channelRenamed |
'channelRenamed' |
Foi mudado um nome para um canal do Teams. |
channelRestored |
'channelRestored' |
Foi restaurado um canal do Teams. |
channelMemberAdded |
'channelMemberAdded' |
Um membro foi adicionado a um canal. |
channelMemberRemoved |
'channelMemberRemoved' |
Um membro foi removido de um canal. |
teamRenamed |
'teamRenamed' |
O nome da equipa foi mudado. |
teamArchived |
'teamArchived' |
A equipa foi arquivada. |
teamDeleted |
'teamDeleted' |
A equipa foi eliminada. |
teamRestored |
'teamRestored' |
A equipa foi restaurada. |
| Reunião iniciada | 'meetingStart' |
Foi iniciada uma reunião. |
| A reunião terminou | 'meetingEnd' |
Terminou uma reunião. |
| Participante associado | 'meetingParticipantJoin' |
Um participante entrou numa reunião. |
| Participante à esquerda | 'meetingParticipantLeave' |
Um participante saiu de uma reunião. |
Atividades de invocação do Teams
A tabela seguinte lista invocar processadores de atividade disponíveis através de app.on():
| Tipo de invocação | Cadeia de nome do evento | Descrição |
|---|---|---|
CardAction.Invoke |
'card.action' |
Foi recebida uma atividade de invocação de ação card (adaptiveCard/action). |
signin/verifyState |
Processado automaticamente pelo SDK (fluxo OAuth) | Inicie sessão para verificar a atividade do estado. |
task/fetch |
'dialog.open' |
Foi obtida uma caixa de diálogo (módulo de tarefas). |
task/submit |
'dialog.submit' |
Foi submetida uma caixa de diálogo (módulo de tarefa). |
Agora que se familiarizou com os processadores de atividade de bots, deixe-nos ver como os bots se comportam de forma diferente consoante a conversação e as mensagens que recebe ou envia.
Recomendações
Uma caixa de diálogo extensa entre o bot e o usuário é uma maneira lenta e complexa de concluir uma tarefa. Um bot que suporta comandos excessivos, especialmente uma vasta gama de comandos, não é bem-sucedido ou visto positivamente pelos utilizadores.
Evitar experiências multi-turn no chat Uma caixa de diálogo extensa requer que o programador mantenha o estado. Para sair deste estado, um utilizador tem de exceder o limite de tempo ou selecionar Cancelar. Além disso, o processo é entediante. Por exemplo, consulte o seguinte cenário de conversa:
USER: Agende uma reunião com Sara.
BOT: Encontrei 200 resultados, incluindo o nome próprio e o apelido.
USER: Agende uma reunião com Sara Melo.
BOT: OK, a que hora você gostaria de se encontrar com Sara Melo?
USUÁRIO: 13h.
BOT: Em qual dia?
Suportar seis ou menos comandos frequentes Uma vez que existem apenas seis comandos visíveis no menu de bot atual, é pouco provável que sejam utilizados com qualquer frequência. Bots que se aprofundam em uma área específica em vez de tentar ser um amplo trabalho de assistente funcionam melhor.
Otimizar o tamanho do base de dados de conhecimento para uma interação mais rápida Uma das desvantagens dos bots é que é difícil manter uma grande base de dados de conhecimento de obtenção com respostas não classificadas. Os bots são mais adequados para interações rápidas e curtas e não passam por listas longas em busca de uma resposta.
Observação
A plataforma Teams só suporta a versão 1.2 do Transport Layer Security (TLS). Certifique-se de que configura o ambiente do bot em conformidade.
Explorar outras funcionalidades do bot
Além das funcionalidades de bot convencionais, também pode explorar funcionalidades avançadas disponíveis numa aplicação de bot do Teams:
- Obtenha contexto específico do Teams para o seu bot.
- Bots de chamadas e reuniões online.
- Ative o SSO para a sua aplicação.
Exemplo de código
| Nome do exemplo | Descrição | TypeScript | C# | Python |
|---|---|---|---|---|
| Bot de conversas do Teams | Esta aplicação demonstra eventos de bot básicos. | View | View | View |