Configure o Openflow Connector para Slack

Nota

O conector está sujeito aos termos do conector.

Este tópico descreve as etapas para configurar o Openflow Connector para Slack.

Pré-requisitos

  1. Certifique-se de ter revisado Openflow Connector para Slack.

  2. Certifique-se de ter configurado o Openflow.

Configure um aplicativo Slack

Configure um aplicativo Slack em seu espaço de trabalho do Slack. É necessário um administrador do Slack para configurar o acesso ao espaço de trabalho Slack. Isso é feito criando ou fornecendo credenciais para um aplicativo Slack e instalando o aplicativo no espaço de trabalho e nos canais do Slack. Você pode criar um aplicativo Slack usando a configuração JSON:

  1. Atualize o manifesto JSON. Copie o texto do manifesto JSON abaixo. Altere as propriedades de nome e nome de exibição de EXAMPLE_NAME_CHANGE_THIS para o nome desejado de seu aplicativo Slack. Recomenda-se usar o mesmo nome e mesmo nome de exibição para seu aplicativo.

    {
        "display_information": {
            "name": "EXAMPLE_NAME_CHANGE_THIS"
        },
        "features": {
            "bot_user": {
                "display_name": "EXAMPLE_NAME_CHANGE_THIS",
                "always_online": false
            }
        },
        "oauth_config": {
            "scopes": {
                "bot": [
                    "channels:history",
                    "channels:read",
                    "groups:history",
                    "groups:read",
                    "im:history",
                    "im:read",
                    "mpim:history",
                    "mpim:read",
                    "users.profile:read",
                    "users:read",
                    "users:read.email",
                    "files:read",
                    "app_mentions:read",
                    "reactions:read"
                ]
            }
        },
        "settings": {
            "event_subscriptions": {
                "bot_events": [
                    "message.channels",
                    "message.groups",
                    "message.im",
                    "message.mpim",
                    "reaction_added",
                    "reaction_removed",
                    "file_created",
                    "file_deleted",
                    "file_change"
                ]
            },
            "interactivity": {
                "is_enabled": true
            },
            "org_deploy_enabled": false,
            "socket_mode_enabled": true,
            "token_rotation_enabled": false
        }
    }
    
    Copy
  2. Crie um aplicativo do Slack na página Aplicativos.

    1. Na página Seus aplicativos, selecione Criar novo aplicativo.

    2. Selecione De um manifesto.

    3. Selecione o Workspace onde você desenvolverá o aplicativo. Você poderá [distribuir seu aplicativo](https://api.slack.com/distribution) para outros espaços de trabalho posteriormente, se desejar.

    4. Copie o arquivo JSON do manifesto atualizado da etapa 1.

  3. Gere um token no nível do aplicativo. Você precisa criar um token no nível do aplicativo mesmo após usar o JSON do manifesto. Em Informações básicas, role até a seção Tokens no nível do aplicativo e clique no botão para gerar um [token no nível do aplicativo](https://api.slack.com/concepts/token-types#app). Inclua o escopo connections:write no token.

  4. Instale e autorize o aplicativo.

    1. Retorne à seção Informações básicas da página de gerenciamento de aplicativos.

    2. Instale seu aplicativo selecionando o botão Instalar no espaço de trabalho.

    3. Você será encaminhado ao fluxo OAuth do Slack. Selecione Permitir na tela seguinte.

    Se quiser adicionar seu aplicativo a um espaço de trabalho diferente do seu, essas etapas precisarão ser executadas por um usuário desse espaço de trabalho. Após a instalação, volte para a página OAuth e permissões. Você verá um token de acesso em Tokens OAuth. Os tokens de acesso representam as permissões delegadas ao seu aplicativo pelo usuário instalador. Mantenha-o seguro e protegido. Evite verificá-los no controle de versão público. Em vez disso, acesse-os por meio de uma variável de ambiente.

  5. Adicione o aplicativo aos canais. Seu aplicativo ainda não é membro de nenhum canal, portanto, escolha um canal para adicionar algumas mensagens de teste e use o comando /invite para convidar seu aplicativo. Por exemplo, /invite @Grocery Reminders.

Nota

Reinicie os processadores para carregar os novos canais. Depois que o aplicativo é adicionado a um novo canal, o processador Consume Slack Conversation no tempo de execução do OpenFlow precisa ser interrompido e reiniciado.

Configure as regras de entrada necessárias

Um administrador Snowflake deve seguir o guia de saída para aplicar regras de saída ao ponto de extremidade https://slack.com/api e ativar a saída de WebSocket em wss://wss.slack.com. Isso é feito com mais facilidade adicionando uma regra para habilitar a saída no domínio “slack.com”.

Configure a conta Snowflake

Como administrador de conta Snowflake, execute as seguintes tarefas:

  1. Crie uma nova função ou use uma função existente e conceda a Privilégios de banco de dados.

  2. Crie um novo usuário de serviço Snowflake com o tipo SERVICE.

  3. Conceda ao usuário do serviço Snowflake a função que você criou nas etapas anteriores.

  4. Configure com a autenticação de pares de chaves para o usuário do Snowflake SERVICE da etapa 2.

  5. A Snowflake recomenda enfaticamente essa etapa. Configure um gerenciador de segredos compatível com o Openflow, por exemplo, AWS, Azure e Hashicorp, e armazene as chaves públicas e privadas no armazenamento de segredos.

    Nota

    Se, por algum motivo, você não quiser usar um gerenciador de segredos, será responsável por proteger os arquivos de chave pública e chave privada usados para autenticação de pares de chaves de acordo com as políticas de segurança de sua organização.

    1. Depois que o gerenciador de segredos estiver configurado, determine como você se autenticará nele. No AWS, é recomendável que você use a função de instância EC2 associada ao Openflow, pois dessa forma nenhum outro segredo precisa ser mantido.

    2. No Openflow, configure um provedor de parâmetros associado a esse gerenciador de segredos, no menu de três traços no canto superior direito. Navegue até Controller Settings » Parameter Provider e, em seguida, busque os valores dos parâmetros.

    3. Nesse momento, todas as credenciais podem ser referenciadas com os caminhos de parâmetros associados e nenhum valor sensível precisa ser mantido no Openflow.

  6. Se qualquer outro usuário Snowflake precisar de acesso aos documentos e tabelas brutos ingeridos pelo conector (por exemplo, para processamento personalizado no Snowflake), conceda a esses usuários a função criada na etapa 1.

  7. Designar um warehouse para o conector usar. Comece com o menor tamanho de warehouse e, em seguida, experimente o tamanho, dependendo do número de tabelas sendo replicadas e da quantidade de dados transferidos. Os números de tabelas grandes normalmente são mais bem dimensionados com warehouses multicluster, em vez de warehouses maiores.

Caso de uso 1: ingestão apenas do conteúdo do Slack

Use a definição do conector para:

  • Realize análises personalizadas nos dados ingeridos do Slack (sem processamento do Cortex Search).

  • Faça a ingestão de mensagens do Slack, reações, anexos de arquivos e listas de membros no Snowflake e mantenha-os atualizados.

Configuração do conector

Como engenheiro de dados, execute as seguintes tarefas para configurar o conector:

Instalação do conector

  1. Crie um banco de dados e um esquema no Snowflake para que o conector armazene os dados ingeridos. Conceda os Privilégios de banco de dados necessários para a função criada na primeira etapa. Substitua o espaço reservado para a função pelo valor real e use os seguintes comandos SQL:

    CREATE DATABASE DESTINATION_DB;
    CREATE SCHEMA DESTINATION_DB.DESTINATION_SCHEMA;
    GRANT USAGE ON DATABASE DESTINATION_DB TO ROLE <CONNECTOR_ROLE>;
    GRANT USAGE ON SCHEMA DESTINATION_DB.DESTINATION_SCHEMA TO ROLE <CONNECTOR_ROLE>;
    GRANT CREATE TABLE ON SCHEMA DESTINATION_DB.DESTINATION_SCHEMA TO ROLE <CONNECTOR_ROLE>;
    
    Copy
  1. Navegue até a página Visão geral do Openflow. Na seção Featured connectors, selecione View more connectors.

  2. Na página de conectores do Openflow, localize o conector e selecione Add to runtime.

  3. Na caixa de diálogo Select runtime, selecione seu tempo de execução na lista suspensa Available runtimes.

  4. Selecione Add.

    Nota

    Antes de instalar o conector, verifique se você criou um banco de dados e um esquema no Snowflake para que o conector armazene os dados ingeridos.

  5. Autentique-se na implementação com as credenciais de sua conta Snowflake e selecione Allow quando solicitado para permitir que o aplicativo de tempo de execução acesse sua conta Snowflake. O processo de instalação do conector leva alguns minutos para ser concluído.

  6. Autentique-se no tempo de execução com as credenciais de sua conta Snowflake.

A tela do Openflow é exibida com o grupo de processos do conector adicionado a ela.

Configuração do conector

  1. Clique com o botão direito do mouse no grupo de processos importado e selecione Parâmetros.

  2. Digite os valores dos parâmetros necessários, conforme descrito em Parâmetros de fluxo: ingerir somente conteúdo abaixo.

  3. Clique com o botão direito do mouse na tela e selecione Ativar todos os serviços de controlador.

  4. Clique com o botão direito do mouse no grupo de processos importado e selecione Iniciar. O fluxo cria todos os objetos necessários do Snowflake e começa a ingerir os dados do Slack.

Parâmetros de fluxo: somente ingestão de conteúdo

Parâmetro

Descrição

Token de aplicativo

Token no nível do aplicativo Slack gerado no aplicativo Slack.

Token de bot

Token de bot do Slack gerado no aplicativo Slack.

Banco de dados de destino

Banco de dados para conter todos os objetos do conector (criado se não houver).

Esquema de destino

Esquema dentro do banco de dados (criado se não houver).

Conta Snowflake

Identificador de conta Snowflake.

Função Snowflake

Função que o fluxo assume após a autenticação.

Usuário Snowflake

Nome de usuário que o fluxo usa para se conectar.

Chave privada Snowflake

Chave privada RSA usada para autenticação (formatoPKCS8 PEM). Observe que a chave privada do Snowflake ou o arquivo de chave privada do Snowflake devem ser definidos.

Senha de chave privada Snowflake

Senha para a chave privada criptografada (deixe em branco se não for criptografada).

Arquivo de chave privada Snowflake

Arquivo que contém a chave privada RSA (formato PKCS8 PEM). A linha do cabeçalho começa com -----BEGIN PRIVATE.

Warehouse Snowflake

Warehouse usado para SQL executado pelo fluxo.

Intervalo de upload

É hora de coletar os dados antes de enviar ao Snowflake. Um intervalo maior reduz a carga no Snowflake, mas pode aumentar a latência e o uso da memória.

Atualizar membros do Slack

Minutos entre as atualizações da associação ao Slack (ACL).

Caso de uso 2: ingestão do conteúdo do Slack e ativação do Cortex

Use a definição do conector para:

  • Prepare os dados do Slack para a pesquisa conversacional com o Snowflake Cortex.

  • Garanta que os controles de acesso ao canal do Slack sejam respeitados nos resultados de pesquisa.

Configuração do conector

Como engenheiro de dados, execute as seguintes tarefas para configurar o conector:

Instalação do conector

  1. Crie um banco de dados e um esquema no Snowflake para que o conector armazene os dados ingeridos. Conceda os Privilégios de banco de dados necessários para a função criada na primeira etapa. Substitua o espaço reservado para a função pelo valor real e use os seguintes comandos SQL:

    CREATE DATABASE DESTINATION_DB;
    CREATE SCHEMA DESTINATION_DB.DESTINATION_SCHEMA;
    GRANT USAGE ON DATABASE DESTINATION_DB TO ROLE <CONNECTOR_ROLE>;
    GRANT USAGE ON SCHEMA DESTINATION_DB.DESTINATION_SCHEMA TO ROLE <CONNECTOR_ROLE>;
    GRANT CREATE TABLE ON SCHEMA DESTINATION_DB.DESTINATION_SCHEMA TO ROLE <CONNECTOR_ROLE>;
    
    Copy
  1. Navegue até a página Visão geral do Openflow. Na seção Featured connectors, selecione View more connectors.

  2. Na página de conectores do Openflow, localize o conector e selecione Add to runtime.

  3. Na caixa de diálogo Select runtime, selecione seu tempo de execução na lista suspensa Available runtimes.

  4. Selecione Add.

    Nota

    Antes de instalar o conector, verifique se você criou um banco de dados e um esquema no Snowflake para que o conector armazene os dados ingeridos.

  5. Autentique-se na implementação com as credenciais de sua conta Snowflake e selecione Allow quando solicitado para permitir que o aplicativo de tempo de execução acesse sua conta Snowflake. O processo de instalação do conector leva alguns minutos para ser concluído.

  6. Autentique-se no tempo de execução com as credenciais de sua conta Snowflake.

A tela do Openflow é exibida com o grupo de processos do conector adicionado a ela.

Configuração do conector

  1. Clique com o botão direito do mouse no grupo de processos importado e selecione Parâmetros.

  2. Digite os valores dos parâmetros necessários, conforme descrito em Parâmetros de fluxo: ingestão de conteúdo e ativação do Cortex abaixo.

  3. Clique com o botão direito do mouse na tela e selecione Ativar todos os serviços de controlador.

  4. Clique com o botão direito do mouse no grupo de processos importado e selecione Iniciar.

  5. Quando o fluxo estiver em execução, prossiga para Consulte o Cortex Search Service para teste.

Parâmetros de fluxo: ingestão de conteúdo e ativação do Cortex

Parâmetro

Descrição

Token de aplicativo

Token no nível do aplicativo Slack gerado no aplicativo Slack.

Token de bot

Token de bot do Slack gerado no aplicativo Slack.

Banco de dados de destino

Banco de dados para conter todos os objetos do conector (criado se não houver).

Esquema de destino

Esquema dentro do banco de dados (criado se não houver).

Intervalo de upload

É hora de coletar os dados antes de enviar ao Snowflake. Um valor maior reduz a carga, mas aumenta a latência dos dados.

Conta Snowflake

Identificador de conta Snowflake.

Função Snowflake

Função que o fluxo assume após a autenticação.

Usuário Snowflake

Nome de usuário que o fluxo usa para se conectar.

Chave privada Snowflake

Chave privada no formato PEM para autenticação por par de chaves.

Senha de chave privada Snowflake

Senha da chave privada criptografada (em branco se não for criptografada).

Warehouse Snowflake

Warehouse usado para todos o SQL executado pelo fluxo e pelo Cortex.

Atualizar membros do Slack

Minutos entre as atualizações da associação ao Slack (ACL).

Ativação de ACLs de canal privado

Não são necessárias etapas adicionais além de convidar o aplicativo Slack para cada canal privado. O conector atualiza automaticamente a lista de membros e a armazena na tabela de membros a cada intervalo de Atualizar membros do Slack.

Consultar o Cortex Search Service

Depois que o caso de uso 2 estiver em execução e o serviço Cortex Search tiver sido criado, você poderá consultá-lo da seguinte forma:

SELECT PARSE_JSON(
  SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
    '<openflow_db>.<openflow_schema>.<<SLACK_CORTEX_SEARCH>',
    '{
      "query": "What is my vacation carry over policy?",
      "columns": ["text","channel","ts","username"],
      "filter": {"@contains": {"memberemails": "alice@example.com"}},
      "limit": 10
    }'
  )
)['results'] AS results;
Copy

Colunas pesquisáveis comuns

text, type, subtype, channel, user, username, connectorId, workspaceId, ts, threadTs

Exemplo: consulte um assistente de AI para obter informações sobre recursos humanos (HR)

Você pode usar o Cortex Search para consultar um assistente de AI para que os funcionários conversem sobre as últimas postagens do Slack. As mensagens pesquisadas podem vir de canais informativos do Slack, como general ou it-help.

Execute o seguinte em uma planilha SQL para consultar o serviço Cortex Search em mensagens ingeridas do Slack.

Substitua o seguinte:

  • cortex_db: nome do banco de dados que contém o serviço Cortex Search, especificado pelo parâmetro Banco de dados de destino.

  • cortex_schema: nome do esquema que contém o serviço Cortex Search, especificado pelo parâmetro Esquema de destino.

  • cortex_search_service_name: nome do Cortex Search Service, especificado pelo parâmetro Nome do Cortex Search.

  • user_emailID: ID de e-mail do usuário para o qual você deseja filtrar as respostas.

SELECT PARSE_JSON(
     SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
          '<cortex_db>.<cortex_schema>.<cortex_search_service_name>',
          '{
             "query": "What is my vacation carry over policy?",
             "columns": ["text", "channel", “ts”,”username”],
             "filter": {"@contains": {"memberemails": "<user_emailID>"} },
             "limit": 1
          }'
     )
 )['results'] AS results
Copy