Sobre os consumidores de competências
APLICA-SE A: SDK v4
Um consumidor de habilidades é um bot que pode chamar uma ou mais habilidades. Com relação às habilidades, um bot raiz é um bot voltado para o usuário que também é um consumidor de habilidades.
Da perspetiva do usuário, o bot raiz é o bot com o qual ele está interagindo. Do ponto de vista da habilidade, o consumidor de habilidades é o canal pelo qual ele se comunica com o usuário. (Para obter mais informações, consulte a visão geral de habilidades.)
Como um consumidor de habilidades, um bot raiz inclui alguma lógica adicional para gerenciar o tráfego entre ele e uma habilidade:
- Informações de configuração para cada habilidade usada pela raiz.
- Uma fábrica de ID de conversação que permite que a raiz alterne entre a conversa que está tendo com o usuário e a que está tendo com uma habilidade.
- Um cliente de habilidades que pode empacotar e encaminhar atividades para um bot de habilidades.
- Um manipulador de habilidades que pode receber solicitações e descompactar atividades de um bot de habilidades.
Competências de gestão
Começar e deixar uma única habilidade correr até a conclusão é gerenciado com algumas adições ao consumidor de habilidades. Cenários mais complexos são possíveis, com múltiplas habilidades ou tópicos de conversa.
Um consumidor de habilidades implementa pelo menos dois pontos de extremidade HTTP:
- Um ponto de extremidade de mensagens recebe atividades do usuário ou canal. Este é o ponto de extremidade de mensagens usual que todos os bots implementam.
- Um ponto de extremidade de host de habilidade para receber atividades de uma habilidade. Isso funciona como uma URL de retorno de chamada, a URL do serviço à qual a habilidade responde. (O consumidor de habilidade precisa emparelhar o código que recebe a solicitação de método HTTP da habilidade com um manipulador de habilidades.)
Descrições de habilidades
Para cada habilidade, adicione um objeto de habilidade do Bot Framework ao arquivo de configuração do consumidor de habilidades. Cada um terá um ID, um ID de aplicativo e um ponto de extremidade para a habilidade.
Propriedade | Descrição |
---|---|
ID | O ID ou chave da habilidade, específico para o consumidor de habilidade. |
ID do aplicativo | O appId atribuído ao recurso de bot quando a habilidade foi registrada no Azure. |
Ponto final de habilidade | O ponto de extremidade de mensagens para a habilidade. Este é o URL que o consumidor usará para se comunicar com a habilidade. |
Cliente de habilidades e manipulador de habilidades
O consumidor de habilidades usa um cliente de habilidade para enviar atividades para uma habilidade. O cliente:
- Leva uma atividade para enviar para a habilidade, seja de um usuário ou gerada pelo consumidor.
- Define a URL do serviço na atividade enviada para a habilidade para o ponto de extremidade do host de habilidades do consumidor.
- Substitui a referência de conversa original por uma para a conversa de habilidade do consumidor.
- Adiciona um token de autenticação de bot para bot.
- Envia a atividade atualizada para a habilidade.
O consumidor de habilidades usa um manipulador de habilidades para receber atividades de uma habilidade. O manipulador:
- Manipula os métodos da API REST do serviço de canal.
- Impõe a autenticação e a validação de declarações.
- Recupera a referência de conversa original.
- Gera uma atividade para o adaptador do consumidor. Esta atividade sinalizará que a habilidade foi concluída ou será uma atividade para encaminhar para o usuário.
Gerencie uma habilidade diretamente
Você precisa adicionar lógica ao seu consumidor de habilidades para rastrear quaisquer habilidades ativas. Cabe ao consumidor saber como gere as competências em geral, se consegue manter múltiplas competências ativas em paralelo ou não, e assim por diante. Os cenários específicos a considerar incluem:
- Iniciar uma nova conversa sobre as competências do consumidor. (Isso será associado a uma conversa específica consumidor-usuário.)
- Para passar parâmetros para uma habilidade, defina a propriedade value na atividade inicial para a habilidade.
- Continuar uma conversa existente sobre as competências do consumidor.
- Reconhecer uma atividade da habilidade como sinalizando o fim de uma
endOfConversation
conversa de habilidade do consumidor.- Para recuperar qualquer valor de retorno de uma habilidade, verifique a propriedade value da atividade.
- Para verificar por que a habilidade está terminando, verifique o parâmetro de código da atividade, que pode indicar que a habilidade encontrou um erro.
- Cancelar uma habilidade do consumidor enviando uma
endOfConversation
atividade para a habilidade.
Veja como implementar um consumidor de habilidades para um consumidor que gerencia uma habilidade diretamente.
Gerenciar uma habilidade usando uma caixa de diálogo de habilidade
Se você estiver usando a biblioteca de diálogos, poderá usar uma caixa de diálogo de habilidade para gerenciar uma habilidade. Embora a caixa de diálogo de habilidade seja a caixa de diálogo ativa, ela encaminhará as atividades para a habilidade associada.
- Ao criar a caixa de diálogo de habilidade, use o parâmetro de opções de diálogo para fornecer todas as informações de que a caixa de diálogo precisa para gerenciar a habilidade, como o ID do aplicativo do consumidor e a URL de retorno de chamada, a fábrica de ID de conversa a ser usada, as propriedades da habilidade e assim por diante.
- Se você quiser gerenciar mais de uma habilidade como uma caixa de diálogo, você precisará criar uma caixa de diálogo de habilidade separada para cada habilidade.
- Muitas vezes, você adicionará a caixa de diálogo de habilidade a uma caixa de diálogo de componentes.
- Para iniciar a caixa de diálogo de habilidades, use o método begin do contexto de diálogo e forneça o ID da caixa de diálogo de habilidade. Use o parâmetro options para fornecer a atividade que o consumidor enviará como a primeira atividade para a habilidade.
- Você pode cancelar ou interromper a caixa de diálogo de habilidade como faria com qualquer outra caixa de diálogo. Veja como lidar com interrupções de usuários para obter um exemplo.
Veja como usar uma caixa de diálogo para consumir uma habilidade para um consumidor que usa uma caixa de diálogo para gerenciar uma habilidade.
Usando um modo de entrega de respostas esperadas
Bots e habilidades usam REST e JSON padrão do setor sobre HTTPS para comunicação. O fluxo normal de processamento de atividades começa quando o bot raiz recebe uma postagem de um canal no ponto de extremidade de mensagens. Em seguida, o bot raiz envia a atividade para a habilidade de processamento. As respostas da habilidade são postadas de volta no ponto de extremidade do host de habilidade do bot raiz, não no ponto de extremidade de mensagens. Finalmente, as respostas são processadas posteriormente ou postadas de volta no canal pelo bot raiz. Este fluxo normal pode ser alterado alterando o modo de entrega da atividade enviada para a habilidade. Se o modo de entrega estiver definido como "ExpectReplies", a habilidade não será postada de volta no ponto de extremidade do host de habilidades. Em vez disso, todas as atividades de resposta são serializadas no corpo da resposta. Em seguida, o bot raiz itera sobre essas atividades, processando-as de forma semelhante a como elas teriam sido processadas pelo endpoint do host de habilidades.
Para obter informações, consulte o modo de entrega na especificação de atividade.