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 agente 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 agente pode pedir informações ou ativar o acesso aos serviços e responder ao utilizador.
Âmbitos do agente
Os agentes no Microsoft Teams podem fazer parte de uma conversação um-para-um, de uma conversa de grupo ou de um canal numa equipa. Cada âmbito proporciona oportunidades e desafios exclusivos para o seu agente de conversação.
| Em um canal. | Em um chat em grupo | Chat Privado |
|---|---|---|
| Alcance enorme | Menos membros | Maneira tradicional |
| Interações individuais concisas | @mention para agente | Q&A agents (Agentes do Q&A) |
| @mention para agente | Semelhante ao canal | Agentes que contam piadas e tiram notas |
Em um canal.
Os canais contêm conversações por tópicos entre várias pessoas, até mesmo até 2000. Isto potencialmente dá ao agente um alcance enorme, mas as interações individuais têm de 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 agente 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 agentes funcionam melhor num 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.
- Agentes sociais ou divertidos, onde obtém uma imagem incrível de gato, escolhem 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 agente só tem acesso a mensagens onde está @mentioned diretamente.
Os agentes que funcionam melhor num canal também funcionam melhor numa conversa de grupo.
Chat Privado
O chat um-para-um é uma forma tradicional de um agente de conversação interagir com um utilizador. Alguns exemplos de agentes de conversação um-para-um são:
- Q&A agents (Agentes do Q&A)
- agentes que iniciam fluxos de trabalho noutros sistemas.
- agentes que contam piadas.
- agentes que tiram notas. Antes de criar agentes 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 agente
Para criar uma aplicação de agente que satisfaça as suas necessidades, é essencial compreender o processador de atividades e a lógica do agente do Microsoft Teams. 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 agente: o
Appobjeto aloja a lógica de conversação do agente 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 agente, 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 agente 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 agente demorar mais de 15 segundos a ser processada, o Teams envia um pedido de repetição para o ponto final do agente, 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 agentes 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 agente
O código seguinte fornece um exemplo de uma atividade de agente:
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 agente
A lógica do agente incorpora as regras fundamentais e as estruturas de tomada de decisões que ditam as ações e interações de um agente. Descreve como o agente interpreta a entrada do utilizador, formula respostas e participa em conversações.
No SDK v2 do Teams, a lógica do agente processa as atividades recebidas de um ou mais canais de agente 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 agente foi instalado. |
| Instalação removida | 'install.remove' |
O agente 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 do agente, deixe-nos ver como os agentes 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 agente e o utilizador é uma forma lenta e complexa de concluir uma tarefa. Um agente 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.
Encontrei 200 resultados, incluindo o nome próprio e o apelido.
USER: Agende uma reunião com Sara Melo.
A que horas gostaria de se encontrar com Megan Bowen?
USUÁRIO: 13h.
Em que dia?
Suportar seis ou menos comandos frequentes Uma vez que existem apenas seis comandos visíveis no menu atual do agente, é pouco provável que algo mais seja utilizado com qualquer frequência. Agentes que entram profundamente numa área específica em vez de tentarem ser um trabalho amplo assistente e se safarem melhor.
Otimizar o tamanho de base de dados de conhecimento para uma interação mais rápida Uma das desvantagens dos agentes é que é difícil manter uma grande base de dados de conhecimento de obtenção com respostas não classificadas. Os agentes são mais adequados para interações rápidas e curtas e não percorrem listas longas à procura 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 agente em conformidade.
Explorar outras funcionalidades do agente
Além das funcionalidades convencionais do agente, também pode explorar funcionalidades avançadas disponíveis numa aplicação de agente do Teams:
- Obtenha contexto específico do Teams para o seu agente.
- Agentes 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 |
|---|---|---|---|---|
| Agente de conversação do Teams | Esta aplicação demonstra eventos básicos do agente. | View | View | View |