Slack

Veja o que acontece quando você usa o Slack como canal para seu assistente digital (ou habilidade standalone):

  • O Slack hospeda o assistente digital por meio do intermediário de um aplicativo Slack.
  • Os usuários batem papo com o assistente digital por meio do aplicativo Slack na interface de usuário do Slack.

Consulte Criando aplicativos Slack para obter a documentação do desenvolvedor do Slack para aplicativos Slack.

Veja a seguir as etapas para criar um canal do Slack para o Digital Assistant.

Observação

As habilidades e os assistentes digitais que você expõe por meio de canais do Slack também podem ser incluídos em chats de grupo. Consulte Chats de Grupo.

Etapa 1: Obter um Espaço de Trabalho do Slack

Para disponibilizar seu assistente digital (ou bot standalone) no Slack, você precisa ter um espaço de trabalho do Slack disponível para você onde tenha as permissões necessárias para criar um aplicativo Slack.

Se você não tiver um espaço de trabalho disponível, poderá criar o seu. Consulte a página Criar um novo espaço de trabalho do Slack.

Etapa 2: Criar um Aplicativo Slack

  1. Vá para a página Seus Aplicativos do Slack.

  2. Clique em Criar um Aplicativo Slack e selecione do zero.

  3. Na caixa de diálogo Criar um Aplicativo do Slack, preencha os campos Nome do Aplicativo e Espaço de Trabalho de Desenvolvimento do Slack e clique em Criar Aplicativo.

    Uma vez criado o aplicativo, a página Informações Básicas será exibida.

  4. Role para baixo até a seção Credenciais do Aplicativo da página e anote os valores ID do Cliente, Segredo do Cliente e Segredo de Assinatura.

    Você precisará dessas credenciais quando configurar o canal no Digital Assistant.

Etapa 3: Adicionar Escopos OAuth para o Aplicativo Slack

Você adiciona escopos OAuth para permissões que deseja conceder ao bot e ao usuário.

  1. Na navegação à esquerda da console Web do seu aplicativo Slack, na seção Recursos, selecione OAuth e Permissões.

  2. Role a tela para a seção Escopos da página.

  3. Os escopos se enquadram nestas categorias:
    • Escopos de Token de Bot
    • Escopos de Token do Usuário
  4. Na seção Escopos de Token de Bot, adicione os escopos que correspondem às permissões no nível do bot que você deseja permitir. No mínimo, são necessários os seguintes escopos de token de bot:

    • chat:write
    • im:history
    • users:read

    Dependendo dos recursos da habilidade, outros escopos podem ser necessários. Por exemplo, os seguintes escopos são necessários para trabalhar com anexos:

    • files:read
    • files:write
  5. Na seção Escopos de Token de Bot, adicione os escopos que correspondem às permissões no nível de usuário que você deseja permitir. Os seguintes escopos de token do usuário são obrigatórios:

    • files:read
    • files:write

Dependendo dos requisitos do bot, você pode precisar adicionar outros escopos.

Etapa 4: Adicionar o Aplicativo ao Espaço de Trabalho

  1. Volte para a parte superior da página Permissões de Perguntas e Respostas.

  2. Na seção OAuth Tokens e URLs de Redirecionamento, clique em Install to Workspace.

    Será exibida uma página mostrando o que o aplicativo poderá fazer.

  3. Na parte inferior dapágina, clique em Permitir.

Depois de concluir esta etapa, você poderá ver o aplicativo no espaço de trabalho do Slack selecionando Aplicativos na navegação à esquerda.

Etapa 5: Criar um Canal no Digital Assistant

  1. No Digital Assistant, clique em Canais no menu esquerdo e escolha Usuários.

  2. Clique em + Canal para abrir a caixa de diálogo Criar Canal.

  3. Dê um nome ao canal.

  4. Escolha Slack como tipo de canal.

  5. Preencha os valores de ID do Cliente, Segredo do Cliente e Segredo de Assinatura que você obteve quando criou seu aplicativo Slack.

    Você pode recuperar esses valores na página Definições do seu aplicativo Slack.

  6. Se você estiver configurando o canal para bate-papos em grupo e quiser que as mensagens sejam enviadas para o grupo sem mencionar o nome do aplicativo Slack, selecione Permitir Mensagens sem Menção de Aplicativo no Bate-papo em Grupo.
  7. Clique em Criar.

  8. Na página Canais, copie o URL do WebHook e cole-o em algum lugar conveniente no seu sistema. Você precisará fazer isso para finalizar a configuração do aplicativo Slack.

  9. Clique em ícone da lista drop-down Rotear para... e selecione o assistente digital ou a habilidade que deseja associar ao canal.

  10. Na lista drop-down Rotear para, selecione a habilidade ou o assistente digital que você deseja associar ao canal.

  11. Alterne para ativado o controle Canal Ativado.

Etapa 6: Configurar o URL do Webhook no Aplicativo Slack

  1. Na navegação esquerda da console Web do seu aplicativo do Slack, selecione Interatividade e Atalhos.

  2. Deixe a opção Interatividade ATIVADA.

  3. Nos campos URL da Solicitação e URL do Carregamento de Opções, cole o URL do webhook que foi gerado quando você criou o canal no Digital Assistant.

  4. Clique em Salvar Alterações.

  5. Na navegação esquerda, selecione Permissões de Perguntas e Respostas.

  6. No campo Redirecionar URLs, clique em Adicionar Novo URL de Redirecionamento.

  7. Cole o URL do webhook, inclua /authorizeV2 e clique em Adicionar.

  8. Clique em Salvar URLs.

  9. Na navegação à esquerda, selecione Home do Aplicativo.

  10. Na seção Presença do Seu Aplicativo no Slack, ative a opção Sempre Mostrar Meu Bot como On-line.

  11. Role a página para baixo até a seção Mostrar Guias e ative a opção Guia Mensagens.

  12. Marque a caixa de seleção Permitir que os usuários enviem comandos e mensagens de Barra na guia mensagens.

  13. No painel de navegação esquerdo, selecione Inscrições em Eventos.

  14. Defina a opção Ativar Eventos como ATIVADO.

  15. No campo URL de Solicitação, cole o URL do webhook.

    Depois de digitar o URL, um label verde Verificado deverá aparecer ao lado do label URL de Solicitação.

  16. Expanda a seção Inscrever-se em eventos de bot da página, clique em Adicionar Evento do Usuário Bot e adicione o seguinte evento:

    • message.im
  17. Se você planeja disponibilizar o bot em chats de grupo, adicione também os seguintes eventos:
    • app_mention
    • message.mpim
    • message.channels
  18. Clique em Salvar Alterações.

  19. Na navegação à esquerda, selecione Gerenciar Distribuição.

  20. Clique no botão Adicionar ao Slack e, em seguida, clique em Permitir.

    Nesse ponto, você deverá receber a mensagem Você instalou com sucesso seu Aplicativo no Slack.

Etapa 7: Testar o Bot no Slack

Concluída a configuração do canal e das mensagens do Slack, você poderá testar seu bot (assistente digital ou habilidade) no Slack.

  1. Abra o espaço de trabalho do Slack no qual você instalou o aplicativo.

  2. Na barra de navegação esquerda, selecione o aplicativo que está associado ao seu assistente digital.

  3. No campo Mensagem, digite o texto para começar a se comunicar com o assistente digital.
Observação

Se você vir a mensagem "Enviar mensagens para este aplicativo foi desativado" em seu cliente Slack, tente reiniciar o aplicativo Slack. Se isso não ativar o campo, verifique se você concedeu todas as permissões necessárias.

Aplicativos Slack "Novos" e "Clássicos"

A partir da versão 20.6 do Oracle Digital Assistant, a criação de canais do Slack é baseada em um fluxo OAuth atualizado nos aplicativos Slack. Este fluxo atualizado permite escopos mais granulares. As instruções para a configuração do canal neste guia se baseiam no novo fluxo OAuth.

Consulte https://api.slack.com/authentication/oauth-v2 para obter detalhes sobre o fluxo OAuth atualizado.

Observação

Quaisquer canais existentes criados antes do Digital Assistant 20.6 e baseados em aplicativos "clássicos" do Slack continuarão funcionando. No entanto, você deve considerar a migração desses aplicativos clássicos do Slack para novos aplicativos do Slack. Consulte https://api.slack.com/authentication/migration para obter os detalhes.

Capacidades Suportadas

Os canais do Slack no Digital Assistant suportam as seguintes capacidades:

  • texto (envio e recebimento)
  • imagens (envio e recebimento)
  • arquivos (suporte parcial para envio; suporte total para recebimento)
  • emojis (suporte parcial para envio; suporte total para recebimento)
  • links
  • postbacks
  • propriedades personalizadas
  • componentes de carrossel (mas renderizados na vertical, em vez na horizontal)
  • componentes de lista

O Slack permite formatar mensagens usando markdown. Consulte https://api.slack.com/reference/surfaces/formatting na documentação da API do Slack.

Observação

Se você estiver direcionando sua habilidade para vários canais com diferentes recursos de formatação e sintaxe, poderá usar a marcação HTML básica em suas mensagens. Se você fizer isso, essa marcação será convertida automaticamente para o formato de markdown do Slack quando a mensagem for transmitida para o canal. Isso é particularmente útil se você estiver direcionando suas habilidades para outros canais, além do Slack. Consulte Formatação de Rich Text em Canais.

Restrições de Mensagens

Os canais do Slack no Digital Assistant têm as seguintes restrições de mensagens:

  • Mensagens de Texto
    • Tamanho máximo da mensagem de texto: 3.000 caracteres. Se o tamanho exceder 3.000, o texto será dividido em várias mensagens.
    • Tamanho máximo do label de ação do texto: 30 caracteres
    • Tipos de ações de texto permitidos: Postback, URL
  • Cartões Horizontais
    • Suportado? Não. O cartão é layout convertido em vertical.
  • Cartões Verticais
    • Tamanho máximo do título: 3.000 caracteres
    • Tamanho máximo da descrição: 3.000 caracteres
    • Tamanho máximo do label de ação do cartão: 30 caracteres
    • Número máximo de cartões: 100
    • Tipos de ações de cartão permitidos: Postback, URL
    • Tipos de ações de lista de cartão permitidos: Postback, URL
  • Mensagens de Anexo
    • Suportado?: Sim
    • Tipos de Ações Permitidos: Postback, URL
  • Botões de Ação
    • Tamanho máximo do label de ação global: 30 caracteres
    • Tipos de ações globais permitidos: Postback, URL

Extensões de Canal do Slack

Para canais do Slack, você pode estender a funcionalidade dos componentes de Resposta Comum com recursos específicos do Slack.

Acesse as extensões usando o elemento channelCustomProperties nos metadados do componente Resposta Comum e definindo as propriedades apropriadas. O código tem o seguinte formato:

...
            channelCustomProperties:
            - channel: "slack"
              properties:
                PROPERTY_NAME: "PROPERTY_VALUE"
...

Estas são as propriedades personalizadas disponíveis para canais do Slack:

Nome Valores permitidos Aplica-se a... Descrição
dropDownPlaceholder
  • texto do placeholder
  • objeto aninhado com as seguintes propriedades, cada uma com um valor de string:
    • postbackActions
    • cardPostbackActions
    • globalPostbackActions
Itens de Resposta Use essa propriedade para especificar o texto do placeholder mostrado na lista drop-down.
ephemeral
  • true
  • false
Itens de Resposta Pode ser usado em chats de grupo para exibir uma mensagem a apenas um usuário, como quando esse usuário tenta autenticar.
fields
  • um array de strings
Itens de resposta do tipo text. Os valores de string especificados nesta propriedade são exibidos como campos em um layout de duas colunas (desktop) ou de coluna única (móvel).
renderActionsAsDropDown
  • true
  • false
  • objeto aninhado com as seguintes propriedades, cada uma com um valor booliano:
    • postbackActions
    • cardPostbackActions
    • globalPostbackActions
Itens de Resposta Por padrão (se você não definir essa propriedade), as ações serão exibidas:
  • como botões, se houver cinco ou menos ações
  • em uma lista drop-down se houver seis ou mais

Se você quiser exibir ações em uma lista drop-down, não importa quantas ações houver, defina essa propriedade como true.

Se você quiser exibir ações como botões, não importa quantas ações houver, defina essa propriedade como false.

Se quiser ter outro comportamento para diferentes tipos de ações de postback, você poderá usar um objeto aninhado com valores boolianos para cada um dos seguintes tipos de ações:

  • postbackActions - ações de postback definidas no nível do item de resposta, incluindo texto, anexo e itens da lista de cartões.
  • cardPostbackActions - ações de postback definidas para um cartão individual
  • globalPostbackActions - ações de postback definidas para ações globais.

Para renderizar ações em um menu drop-down, o Slack usa um menu de seleção com itens estáticos. Consulte https://api.slack.com/reference/messaging/block-elements#static-select.

showDatePicker
  • true
  • false
  • um objeto aninhado com as propriedades show, initialDate e placeholder
Itens de resposta do tipo text. Defina como true para mostrar um seletor de data ao lado da mensagem de texto.

Na caixa de diálogo Adicionar Estado, você pode selecionar o modelo Seletor de Data do Slack para obter o código de amostra para exibir um seletor de data condicionalmente.

Consulte também https://api.slack.com/reference/messaging/block-elements#datepicker.

showImageInAccessory
  • true
  • false
Itens de resposta do tipo cards. Defina como true para mostrar a imagem do cartão à direita em tamanho pequeno, em vez de maior e centralizada.

Veja um exemplo do uso da propriedade personalizada renderActionsAsDropDown.

responseItems:
- type:
 "text"
  text: "Here is a list of the UI features of the Common Response Component:"
  actions:
  - ...
  channelCustomProperties:
  - channel: "slack"
    properties:
      renderActionsAsDropDown: false

E aqui está um exemplo de como usar a propriedade personalizada renderActionsAsDropDown com propriedades aninhadas para postbackActions, cardPostbackActions e globalPostbackActions.

responseItems:
- type: "text"
  text: "Here is a list of the UI features of the Common Response Component:"
  actions:
  - ...
  channelCustomProperties:
  - channel: "slack"
    properties:
      renderActionsAsDropDown:
        postbackActions: false
        cardPostbackActions: true
        globalPostbackActions: true

Para obter informações gerais adicionais sobre channelCustomProperties, consulte Extensões Específicas do Canal.

Modais do Slack

Você pode criar um botão para chamar um modal do Slack em um componente Resposta Comum. Para fazer isso, defina a propriedade de ação do botão como system.openModal e inclua uma variável chamada system.dialogPayload do tipo map. Os metadados da ação devem ser semelhantes a este trecho de código:

          actions:
          - label: "Open Dialog"
            type: "postback"
            payload:
              action: "system.openModal" 
              variables:
                system.dialogPayload: ${dialogPayload}
Observação

A expressão do Freemarker para fazer referência à variável system.dialogPayload não termina com .value. Isso ocorre porque a variável mantém um objeto JSON, e expressões do Freemarker sempre devem ser avaliadas como uma string. O uso da expressão ${dialogPayload.value} geraria um erro. A conversão de objeto em string JSON ocorre quando você omite .value.

O valor de system.dialogPayload geralmente é definido em um componente personalizado, mas também pode ser definido em linha ou usando um componente Definir Variável.

Observação

Se você definir a variável system.dialogPayload em um componente personalizado, não precisará codificar os valores da entidade como opções. Em vez disso, você pode repetir todos os valores de entidade de um item específico e criar dinamicamente um tipo de elemento selecionado com um array de opções para os valores permitidos.

Quando o usuário envia entrada na caixa de diálogo do Slack, o componente Resposta Comum define a transição system.dialogSubmitted para um estado que processa os valores enviados. Os valores enviados são armazenados em variáveis com o mesmo nome.

Cabe a você determinar como os valores de campo enviados serão processados. O componente Resposta Comum NÃO executa atualizações automáticas de valores de entidade. Ele só armazena os valores em variáveis. Normalmente, você processará esses valores em um componente personalizado, para que possa fazer validações adicionais, se necessário. Em sua forma mais simples, você pode armazenar os valores de campo enviados em uma variável de string e, em seguida, usar o componente Entidade de Correspondência para atualizar os valores da entidade.

Dica:

No editor de fluxo de caixas de diálogo (no modo de caixa de diálogo Visual e YAML), há um modelo Slack Block Kit que contém uma amostra de metadados aninhada que é típica da saída do construtor de kits. Se você precisar de metadados complexos para esse estado e quiser facilitar a leitura, poderá usar variáveis de mapa no nível do fluxo, colar objetos JSON inteiros gerados pelo construtor de kits neles como valores padrão e incorporar as variáveis nos metadados.

Para obter documentação completa sobre os tipos de elemento suportados no payload da caixa de diálogo do Slack, consulte https://api.slack.com/reference/block-kit/block-elements. A estrutura especificada no payload da caixa de diálogo deve ser idêntica à estrutura descrita na documentação do Slack.

Observação

A caixa de diálogo do Slack também suporta ter um array de erros enviado de volta como resposta quando o modal é enviado. No entanto, esta funcionalidade não é suportada no momento nos componentes de Resposta Comum. Em vez disso, você deve tratar a validação personalizada e o feedback do usuário associados a erros de validação em um componente personalizado.

Janela de Caixa de Diálogo do Slack

Observação

O Slack agora recomenda que você use modais do Slack em vez de caixas de diálogo do Slack. Consulte Modos do Slack para obter detalhes sobre como incorporar modais do Slack ao seu fluxo de caixas de diálogo e https://api.slack.com/block-kit/dialogs-to-modals para obter informações sobre como converter caixas de diálogo em modais.

Você pode criar um botão para chamar uma caixa de diálogo do Slack em um componente de Resposta Comum. Para fazer isso, defina a propriedade de ação do botão como system.openDialog e inclua uma variável chamada system.dialogPayload. Os metadados da ação devem ser semelhantes a este trecho de código:

            actions:
              - label: "Edit"
                type: "postback"
                payload:
                  action: "system.openDialog"
                  variables:
                    system.dialogPayload: ${dialogPayload}
Observação

A expressão do Freemarker para fazer referência à variável system.dialogPayload não termina com .value. Isso ocorre porque a variável mantém um objeto JSON, e expressões do Freemarker sempre devem ser avaliadas como uma string. O uso da expressão ${dialogPayload.value} geraria um erro. A conversão de objeto em string JSON ocorre quando você omite .value.

O valor de system.dialogPayload geralmente é definido em um componente personalizado, mas também pode ser definido em linha ou usando um componente Definir Variável.

Observação

Se você definir a variável system.dialogPayload em um componente personalizado, não precisará codificar os valores da entidade como opções. Em vez disso, você pode repetir todos os valores de entidade de um item específico e criar dinamicamente um tipo de elemento selecionado com um array de opções para os valores permitidos.

Quando o usuário envia entrada na caixa de diálogo do Slack, o componente Resposta Comum define a transição system.dialogSubmitted para um estado que processa os valores enviados. Os valores enviados são armazenados em variáveis de fluxo de caixas de diálogo com o mesmo nome.

Cabe a você determinar como os valores de campo enviados serão processados. O componente Resposta Comum NÃO executa atualizações automáticas de valores de entidade. Ele só armazena os valores em variáveis de fluxo de caixas de diálogo. Normalmente, você processará esses valores em um componente personalizado, para que possa fazer validações adicionais, se necessário. Em sua forma mais simples, você pode armazenar os valores de campo enviados em uma variável de string e, em seguida, usar o componente Entidade de Correspondência para atualizar os valores da entidade.

Para obter documentação sobre outras propriedades e tipos de elemento suportados no payload da caixa de diálogo do Slack, consulte https://api.slack.com/dialogs#top-level_dialog_attributes. A estrutura do payload da caixa de diálogo deve ser idêntica à estrutura descrita na documentação do Slack.

Observação

A caixa de diálogo do Slack também suporta ter um array de erros enviado de volta como resposta quando a caixa de diálogo é enviada. No entanto, esta funcionalidade não é suportada no momento nos componentes de Resposta Comum. Em vez disso, você deve tratar a validação personalizada e o feedback do usuário associados a erros de validação em um componente personalizado.