Skip to main content

Data Ingestion

  1. Como criar um Connector do tipo File para integrar os dados de uma planilha na Carol?

  2. A plataforma permite redefinir o particionamento e o clustering de uma staging?

  3. Como realizar a anonimização de dados no Carol Connect 2C?

  4. Carol Connect - 2C - Dúvidas Frequentes

  5. Como efetuo uma carga de arquivos de áudio na plataforma Carol?

1. Como criar um Connector do tipo File para integrar os dados de uma planilha na Carol?

Criando um Connector do tipo File

1. Selecione o tipo File ao adicionar um novo Connector

First step

2. Informe o label do Connector e selecione o projeto. Clique em Next para continuar

Second step

3. Selecione o arquivo, informando o nome da Staging Table, o tipo de arquivo (CSV), e os demais campos. Clique em Next para continuar

Third step

4. Confirme as informações para criar o novo Connector

Após a criação do Connector, a listagem de Connectors é atualizada, e uma task é criada para o upload do arquivo. Para acompanhar o andamento do upload, acesse o Activity Management.

Para adicionar mais arquivos ao Connector, acesse a página através da listagem, e clique em Add Connector Feed. As etapas para inclusão do arquivo são as mesmas realizadas anteriormente, iniciando à partir do upload e dados de Staging.

2. A plataforma permite redefinir o particionamento e o clustering de uma staging?

Atualmente a plataforma não permite que o usuário tente atualizar o clustering e o particionamento da tabela de staging e deve retornar uma mensagem de erro no terminal.

3. Como realizar a anonimização de dados no Carol Connect 2C?

O 2C é capaz de anonimizar dados antes de enviá-los para Carol. Para usar esse recurso, basta selecionar o tipo de anonimização antes de ativar a sincronização da entidade.

Os tipos de anonimização são:

  • None: O campo não é anonimizado.
  • Base Round: Os dados do campo são arredondados usando um número base. por exemplo: 16800 usando uma base round de 1000 torna-se 17000. Defina o número base no campo de opção.
  • Date: Altere os valores de data para 1 (se o campo for dia, mês ou ano) ou 0 (se o campo for hora, minutos ou segundos). Coloque a letra referindo-se aos dados de data no campo de opções. Por exemplo: 12/15/2015 11:10:35 usando mdhMs opção torna-se 01/01/2015 00:00:00.
    • m mês
    • d dia do mês
    • y ano
    • h hora
    • M minuto
    • s segundo
  • Email Mask: Aplique aos dados do endereço de e-mail. por exemplo: user@somedomain.com torna-se ***@somedomain.com.
  • Hash: Uma função hash é aplicada aos dados de campo. Se o campo for um número, CRC32C é selecionado, se for uma string, SHA3 é selecionado.
  • Mask: Uma máscara é aplicada aos dados do campo. O caractere # significa que a posição do caractere não está mascarada. Por exemplo: número do cartão: 123-456-789-012 usando a máscara XXX-XXX-XXX-### torna-se XXX-XXX-XXX-012. Defina a máscara no campo de opção.
  • Suppression: Este campo não é enviado para Carol. É suprimido da carga de dados.
Criando anonimização de dados no 2C

1. Para realizar a anonimização acesse o Carol Connect (2C) e clique em Configure:

First step

2. Em seguida clique na entidade (tabela) que deseja anonimizar e em seguida clique em Apply Anonymization:

Second step

3. Ao aparecer os campos disponíveis para anonimização clique em Add anonymization, em seguida o campo escolhido para anonimização será transferido para a direita e neste momento você deverá escolher o tipo de anonimização que deseja:

Third step

4. Carol Connect - 2C - Dúvidas Frequentes

Nesse tópico iremos demonstrar algumas situações comuns e como tratá-las.

Endereço já em uso: JVM_Bind: 8080

Se você está recebendo a mensagem de erro no console do 2C "Address already in use: JVM_Bind", isso pode estar sendo causado por outro processo usando a mesma porta de rede que a Carol Connect está configurada para usar.

1. Inicie a análise verificando a porta definida no arquivo app.config.yml:

First step

2. No exemplo são usadas as portas 8880 e 8881. A porta do adminConnectors pode ser alterada sem nenhum impacto. Já a porta definida para o applicationConnectors vai alterar a URL usada para acessar a Carol Connect.

NOTA

🚧 Após alterar o arquivo app.config.yml é necessário reiniciar o serviço da Carol Connect para as alterações serem consideradas.

3. Outra validação importante é o comando netstat. Esse comando mostra as portas de rede em uso, então você consegue identificar outros processos usando a porta configurada na Carol Connect:

Uso:

- Windows: netstat -ano
- Linux: netstat -an

Ambos vão mostrar a lista de processos e portas em uso. Para ambiente configurados em Linux, você pode usar o grep para filtrar a porta que você está procurando. Para Windows, vocês pode enviar o resultado para um arquivo e analisar o conteúdo em um editor de texto.

Como atualizar o 2c

Windows

- pare o serviço do 2C;
- remova o serviço do 2C usando este bat serviceremove.bat no cmd do modo administrador;
- extraia e sobreponha os arquivos do zip no diretório raiz do 2C;
- execute serviceinstall.bat no modo administrador do cmd;
- e finalmente inicie o serviço novamente.

Linux

- Remova o serviço 2C do carregamento inicial usando: sudo systemctl disable [service_name]
- Pare o serviço 2C usando este comando: sudo systemctl stop [service_name]
- Para verificar se o serviço parou, use este comando: sudo systemctl status [service_name]
- Se o serviço ainda estiver em execução, use este comando para matar um processo no Linux: kill [pid_number]
- Extraia e sobrescreva os arquivos zip no diretório raiz para 2C.
- Após atualizar o 2C, inicie o serviço 2C usando este comando: sudo systemctl start [service_name]
- Se o serviço estiver configurado corretamente, ele será iniciado imediatamente. Enquanto isso, para verificar os serviços do Linux, ou seja, seu status de integridade, podemos usar: sudo systemctl status [service_name]
- Também é possível ter um serviço em execução enquanto o sistema operacional está carregando. Use: sudo systemctl enable [service_name]
Como desinstalar o 2C

Windows

- pare o serviço do 2C;
- remova o serviço 2C usando este bat serviceremove.bat no cmd do modo administrador.

Linux

- Remova o serviço 2C do carregamento inicial usando: sudo systemctl disable [service_name]
- Pare o serviço 2C usando este comando: sudo systemctl stop [service_name]
- Para verificar se o serviço parou use este comando: sudo systemctl status [service_name]
- Se o serviço ainda estiver em execução, use este comando para matar um processo no Linux: kill [pid_number]
Como obter ou editar a conexão de banco de dados no 2C para a Carol

1. Editar a Conexão
First step

2. Avançar Configuração
Second step

3. Tela de Edição, aqui pode se alterar qualquer informação e salvar
Third step

Como sincronizar imagens com Protheus

Se precisar sincronizar as imagens dos funcionários com Carol, você precisará configurar uma conexão de diretório com a pasta chamada shared, para mais informações sobre como criar uma conexão de diretório clique neste link.

Observações: a conexão de diretório precisa ser sincronizada com uma estratégia agendada, veja mais aqui.

1. Criar uma nova conxão normalmente
First step

2. Escolher a opção Directory e avançar
Second step

3. Tela de Configuração

Informar o local da pasta e o tipo da extensão das imagens, caso seja mais de um tipo utilize da seguinte forma:

- *.jpg,*.png

Third step

4. Escolher o agendamento e Habilitar
Forth step

Divergência de dados entre RM e Carol

Porquê o erro ocorre?
R: Atualizações de versão no produto RM alteram a configuração do 2C, como por exemplo: triggers, mas podem afetar outras configurações. Essa alteração nas configurações do 2C causam impactos na ingestão, gerando por consequência divergências nos dados na Carol.

Como isso pode ser corrigido?
R: Reconfigurando o 2C no ambiente do cliente.

Uma vez corrigido, pode voltar a ocorrer?
R: Sim, toda atualização do produto RM pode gerar esse tipo de problema.

Isso deve ocorrer em mais ambientes, certo? Como é o fluxo hoje?
R: Sim, isso pode ocorrer em qualquer ambiente que atualize o produto RM. Atualmente, os times de suporte fazem esse processo de reconfiguração.

5. Como efetuo uma carga de arquivos de áudio na plataforma Carol?

Nesse tópico iremos demonstrar o passo a passo para subir um árquivo de áudio na plataforma Carol.

Conteúdo enviado

Para o cenário de teste, enviamos um arquivo de áudio qualquer no formato WAV. Este audio tem o tamanho aproximado de 36MB e a duração de 3min36seg.

Convertendo o arquivo WAV em Base64

A plataforma aceita o envio de arquivos no formato base64 e, por este motivo, foi necessária a realização desta conversão. Para tanto utilizamos este site:

→ WAV to Base64 | Audio | Base64 Encode | Base64 Converter | Base64

Obtivemos a string base64 que corresponde ao arquivo WAV, mas perceba que essa string não possui os cabeçalhos que informam que o base64 é do tipo WAV. Assim, recomendamos que seja feito o seguinte ajuste, do contrário a plataforma não aceitará o envio.

DE: UklGRqLERgJXQVZFZm10IBAAAAABAA...

PARA: data:audio/wav;base64,UklGRqLERgJXQV...

Em resumo, nesta etapa o arquivo é convertido em string base64 e o cabeçalho data:audio/wav;base64, é adicionado como prefixo desta string.

Criando uma staging para testes

Para fazer esse teste, criamos uma staging table com o nome files, no connector cd829c25681c4613b75210836eb699cc (atente-se a esses dados pois eles são importantes para realização da requisição no próximo passo).

A staging possui os seguintes campos

id - string (chave primário ou crosswalk)

name - string

content - base64

Enviando dados para a staging

Neste caso realizamos o envio utilizando o cURL apenas para simplificar, mas sendo esta uma request HTTP, qualquer script Python pode realizar a mesma ação.

Como o cURL não aceita strings muito longas, fomos obrigados a criar um arquivo para armazenar o body da request. O arquivo ficou muito próximo a este modelo:

Body da request HTTP
{
"id": "5",
"name": "audio-36mb.wav",
"content": "data:audio/wav;base64,UklGRqLERgJXQVZFZm10IBAAAAABAAIARKw..."
}

E a request que realiza o envio dos dados é a seguinte (note que o -d, que corresponde ao body da request, faz referência ao nome do arquivo com o conteúdo da mesma, compartilhado acima).

cURL da request HTTP
curl -X 'POST' \
'https://api.carol.ai/api/v3/staging/tables/files?connectorId=cd829c25681c4613b75210836eb699cc&returnData=false' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: abcdef123456' \
-d @meu-arquivo-com-body-da-request.json

Por fim, a resposta enviada pela Carol foi de sucesso, indicando que ela conseguiu receber o arquivo WAV de 36mb:

response da request HTTP
{"data":null,"message":null,"success":true}
Validando o arquivo gerado

A imagem abaixo é um print demonstrando que o arquivo foi recebido na staging. step 1

Um ponto importante aqui é que a UI da Carol não está preparada para interpretar audio ou video, apenas imagem, mas isto não é um problema pois o importante aqui é ter acesso ao arquivo e conseguimos acessa-lo por meio da URL gerada pela Carol: https://mobile.carol.ai/furtadodev/go/uc474eio0b?thumbnail

Para obter esta URL basta clicar com o botão invertido do mouse e copiar a URL da imagem. Ela virá com esse parâmetro de thumbnail mas ele pode ser ignorado.

Sugestões relacionadas ao código Python

Se estiver usando código Python certifique-se se a conversão do arquivo para base64 já está sendo realizada. Verifique se o prefixo que identifica o tipo do arquivo foi adicionado antes da string base64 gerada pelo encode (data:audio/wav;base64,).

Outro ponto que acaba gerando dúvida é a utilização do parâmetro que cria o schema automaticamente. Particularmente, para este caso, sugerimos a criação do schema configurando o campo EncodedAudio para o tipo base64 (quando o schema é criado automaticamente, a Carol acaba criando ele com o tipo string). Uma vez com o schema configurado automaticamente, outros parâmetros poderiam ser ignorados e a chamada ficaria sendo algo como:

Exemplo de chamada em Python
json_payload = pd.DataFrame({
'EncodedAudio': audio_base64_com_cabeçalho,
'ContactID': contact_id
})

stg.send_data(
staging_name="test_send",
connector_name="nps",
data=json_payload
)

Para finalizar, recomendamos uma simulação inicial utilizando o cURL, para depois partir com o uso do pyCarol, já sabendo dos detalhes relacionado a este envio.