Chats de Grupo

Nos canais do Microsoft Teams e do Slack, é possível disponibilizar habilidades e assistentes digitais para chats de grupo, em que vários participantes humanos podem colaborar com um assistente digital na mesma conversa.

Os chats de grupo são bons para situações nas quais você precisa que uma habilidade execute ações ou forneça informações para um grupo de participantes humanos. Em um chat de grupo:

  • Todos os aspectos da conversa são visíveis para todos os participantes.
  • A habilidade só responde às mensagens nas quais o usuário inclui uma menção do Microsoft bot ou do aplicativo Slack que representa a habilidade. Isso significa que os participantes humanos de um chat de grupo podem trocar mensagens entre si sem envolver a habilidade. Por exemplo, pode ser que eles tenham de entrar em um acordo sobre o que solicitar à habilidade antes de fazer a solicitação.
  • Por padrão, a habilidade não fará mediação entre os usuários. Ela responderá à entrada na ordem recebida como se todas estivessem vindo da mesma pessoa. Por exemplo, se um usuário contradizer outro, o bot não tentará reconciliar os dois, a menos que alguma lógica tenha sido programada em um componente personalizado para fazer isso (mas provavelmente precisaria ter usuários conectados que o bot pudesse rastrear explicitamente).
  • Qualquer consulta feita a uma habilidade dentro de um chat de grupo se baseia na identidade (e, no caso de habilidades que exigem autenticação, nas credenciais correspondentes) do usuário no chat de grupo que fez a consulta.

Você também pode configurar a habilidade para exigir que todos os participantes de um chat de grupo sejam autenticados.

Para que o chat de grupo funcione, configure um canal do Microsoft Teams ou do Slack.

Se você estiver usando um canal do Microsoft Teams, certifique-se de ter selecionado os escopos de bot apropriados para ativar o chat de grupo. Você pode selecionar Equipe e/ou Chat de Grupo (este último é um grupo definido pelo usuário).

Se você estiver usando o Slack como canal, certifique-se de que o aplicativo Slack tenha as seguintes assinaturas de evento:

  • message.im
  • app_mention
  • message.mpim
  • message.channels

Depois que um canal é configurado para a habilidade ou o assistente digital a ser usado no chat de grupo, os usuários podem adicionar a um grupo o Microsoft bot ou o aplicativo Slack correspondente. Na conversa, eles podem chamar o bot ou o aplicativo com uma menção do usuário.

Autorização do Usuário em Chats de Grupo

Em habilidades destinadas a chats de grupo, talvez você queira exigir autorização para que os usuários enviem mensagens. Como vários usuários podem acessar a habilidade em uma sessão, configure a habilidade para tratar adequadamente a autorização de cada usuário, não apenas do usuário que encontra primeiro o estado de autorização. Isso é feito usando:

  • A propriedade Requer Autorização nos estados em que você deseja impor a autorização. Isso garante que um usuário não possa informar uma mensagem no chat quando estiver nesse estado até que esse usuário seja autorizado.
  • O evento Autorizar Usuário para direcionar usuários não autorizados para o estado de autorização apropriado quando tentarem informar uma mensagem no chat em um estado protegido.
  • A variável skill.system.event.value.authorizeUser.requestedState para identificar o estado em que um usuário não autorizado informa uma mensagem no chat (e, portanto, o estado para o qual ele deve ser redirecionado após a autorização bem-sucedida).
  • A propriedade booliana system.message.channelConversation.groupConversation, que você pode consultar quando precisar determinar se a conversa é um chat de grupo.

Impor Autorização do Usuário para Chats de Grupo

Veja a seguir as etapas gerais para impor a autorização para cada usuário em um chat de grupo:

  1. Supondo que você queira impor a autenticação para a maioria dos estados da habilidade, configure a habilidade como um todo para exigir autorização por padrão. Para fazer isso:
    1. Clique em ícone para abrir o menu lateral para abrir o menu lateral, selecione Desenvolvimento > Habilidades e selecione sua habilidade.
    2. Na navegação à esquerda da habilidade, clique em o ícone Definições.
    3. Clique na guia Configuração.
    4. Defina a propriedade Requer Autorização como true.

    Isso define o valor padrão para a propriedade Requer Autorização para todos os estados no fluxo de caixas de diálogo. Esse valor pode ser substituído em estados individuais.

  2. Para qualquer estado que não precise de autorização, defina a propriedade Exige Autorização como false. Por exemplo :
    Observação

    Como alternativa, você pode definir a propriedade Requer Autorização da habilidade como false e, em seguida, definir a propriedade Requer Autorização para estados individuais como true.
  3. Adicione um componente OAuth Link da Conta ou OAuth 2.0 Link da Conta no fluxo de caixas de diálogo para autenticação do usuário.

    Use variáveis no escopo do usuário para armazenar o token de acesso e o ID do usuário autenticado. Caso contrário, as informações de autorização de cada usuário que entrar no chat substituirão as informações de autorização do usuário anterior que entrou no chat.

    Para a transição pass, use a variável de sistema skill.system.event.value.authorizeUser.requestedState para retornar o usuário ao estado em que ele tentou entrar na conversa.

  4. Adicione os estados para falha de autorização. Por exemplo, você pode ter estados separados para os seguintes casos:
    • Onde a autorização com falha acontece em um chat de grupo. Nesse caso, talvez o usuário não consiga autenticar, mas a conversa pode continuar com os outros participantes.
    • Quando a autorização com falha acontece em um chat individual, nesse caso a conversa pode simplesmente terminar.
      Observação

      Para esse caso, você pode usar a propriedade de canal personalizado ephemeral para exibir a mensagem apenas ao usuário que está acionando essa resposta.
      responseItems:
        - type: "text"
          text: "Sorry ${profile.firstName}, you are not authorized to use this skill"
          channelCustomProperties:
            - channel: "slack"
              properties:
                ephemeral: true
  5. Na seção Mapeamentos de Evento da configuração do fluxo, mapeie o evento Autorizar Usuário para o estado de autenticação do usuário.

    Este evento é acionado quando um usuário ainda não autorizado tenta entrar na conversa e atinge um estado que exige autorização.

Ativar Mensagens sem Menção do Usuário em Chats de Grupo do Slack

É possível configurar canais do Slack para permitir que mensagens sejam enviadas ao aplicativo Slack sem menções do usuário ao aplicativo Slack. Esse comportamento pode ser particularmente útil para canais do Slack onde há muitos usuários e nem todos sabem que precisariam de uma menção de usuário para que o aplicativo Slack responda. Um canal de suporte ao usuário é um desses exemplos.

Para permitir que mensagens sem menção do usuário sejam transmitidas ao assistente digital em chats de grupo do Slack:

  • Ao criar o canal ou modificar a configuração do canal posteriormente, defina a opção Permitir Mensagens sem Menção de Aplicativo no Bate-papo de Grupo como ATIVADA.

Permitir que os usuários impeçam que mensagens sejam enviadas para o aplicativo Slack

Nos canais do Slack em que você ativou mensagens sem uma menção do usuário do Aplicativo Slack para serem enviadas ao assistente digital, pode haver casos em que o usuário deseja impedir que essas mensagens sejam enviadas ao assistente digital. Nesse caso, você pode iniciar o "modo ambiente" para impedir que as mensagens sejam enviadas ao assistente digital por meio do aplicativo Slack. Para fazer isso, especifique uma ação de postback system.startAmbientMode na definição do fluxo de caixas de diálogo.

O postback para iniciar o modo ambiente pode parecer algo como o seguinte:

responseItems:
  - type: "text"
    text: "Do you want to stop chatting with the skill?"
    name: "stopMessages"
    actions:
      - label: "Stop chatting with the skill"
        type: "postback"
        payload:
          action: "system.startAmbientMode"
        name: "stop"

Depois que o usuário selecionar essa opção, as mensagens a seguir do usuário não serão enviadas ao assistente digital até que o usuário insira novamente uma menção do usuário ao aplicativo Slack em uma mensagem.

Da mesma forma, você pode adicionar uma ação de postback system.stopAmbientMode na definição do fluxo de caixas de diálogo para encerrar o modo ambiente.

O que os Usuários Precisam Saber sobre Chats de Grupo

Quando você criar uma habilidade projetada para operar em um chat de grupo, certifique-se de que os usuários da habilidade estejam cientes do seguinte:

  • Para envolver a habilidade (ou o assistente digital) no chat de grupo, encaminhe o correspondente bot do Microsoft Teams ou o aplicativo Slack com uma menção do usuário (@bot_name).
    Observação

    Para canais do Slack, você também tem a opção de enviar mensagens ao aplicativo Slack sem uma menção do usuário. Consulte Ativar Mensagens sem Menção do Usuário nos Chats de Grupo do Slack.
  • Para cada mensagem que você digita e espera uma resposta do bot, inclua a menção do usuário do bot.
  • Se sua mensagem for destinada somente a outros participantes humanos, não inclua uma menção do usuário para o bot. O bot vai ignorar essas mensagens.
  • Nos chats de grupo do Slack, os chats precisam ser mantidos no thread no qual o bot foi introduzido pela primeira vez na conversa. Se alguém responder fora do thread da conversa, criará uma nova conversa independente da anterior.
  • Quando um participante no chat de grupo faz uma solicitação do bot, o bot está ciente de qual usuário fez a solicitação. Portanto, quando apropriado, a resposta à solicitação se baseia na identidade e nas credenciais do solicitante. Se um participante específico fizer uma solicitação, a resposta a essa solicitação será baseada na identidade e nas credenciais desse segundo participante.
  • Todos os usuários que entraram com sucesso em um chat de grupo podem ver todas as respostas do bot. É responsabilidade dos participantes no grupo de chat não transmitir informações do bot que outros participantes não precisam ver.