Habilidades de caixa: peças do quebra-cabeça + tutorial
As habilidades do Box foram introduzidas em 2017 e, desde então, mais de 1.000 habilidades foram usadas em vários setores para trazer inteligência ao conteúdo do Box. Quão fácil é configurar uma habilidade? Nesse blog eu vou te mostrar!
Caixa de atualização de habilidades
Antes de mergulhar em como configurar uma habilidade de caixa, quero dar uma visão geral sobre o que são e quais partes completam uma implementação de habilidades de caixa.
Se você consultar a seção do padrão de arquitetura do nosso site do desenvolvedor , o diagrama abaixo aparecerá. Ele representa um exemplo clássico de Box Skill — neste caso, uma solução de identificação de planta baixa.
- O fluxo é acionado a partir de um arquivo de planta baixa que está sendo carregado , movido ou copiado para a pasta configurada para a Box Skill.
- O arquivo é enviado para uma Função do Google Cloud por meio do URL de invocação configurado nas etapas de configuração da Box Skill . Qualquer provedor de nuvem que ofereça funções sem servidor pode ser usado, mesmo que mostremos o GCP neste tutorial.
- A função executa um código escrito personalizado para analisar a carga útil do Box Skill , verificar as chaves de segurança , baixar uma cópia local do arquivo , enviar o arquivo para um provedor de aprendizado de máquina — também GCP neste exemplo e gravar metadados descobertos pelo serviço de aprendizado de máquina de volta ao arquivo original em Box.
A segunda e a terceira partes não são licenciadas ou cobradas por meio da Box Platform e, como tal, geralmente exigem o trabalho das equipes de vendas e capacitação desses serviços específicos - elas não precisam ser o mesmo fornecedor. Por exemplo, você pode ter uma chamada de função do Azure IBM Watson .
A caixa fornece valor no fluxo, porque a ação inicial do conteúdo aciona o início do processo. Isso evita que os desenvolvedores migrem ou dupliquem o conteúdo para coletar insights. Além disso, o fluxo termina com metadados pesquisáveis diretamente na plataforma em segundos, permitindo que os usuários vejam as informações de que precisam mais rapidamente.
Na demonstração abaixo, mostrarei como configurar o fluxo no diagrama acima. No final, espero poder carregar uma planta baixa e ter o número de quartos na planta baixa escrito de volta como metadados no arquivo. Dessa forma, posso pesquisar todas as plantas baixas com um determinado número de quartos no futuro.
Vamos pular para o tutorial!
Configuração administrativa de habilidades de caixa
Crie uma conta de desenvolvedor do Box (opcional, mas recomendado)
Se você não possui uma conta corporativa do Box, pode se inscrever para uma conta de desenvolvedor gratuita aqui . Eu recomendo usar a conta do desenvolvedor para o tutorial em vez de usar seu ambiente de produção.
Observe que você não pode usar o mesmo endereço de e-mail durante a inscrição devido à restrição de ter um endereço de e-mail exclusivo em todo o Box.
Crie a Habilidade da Caixa (concluída pelo desenvolvedor)
Navegue até o console do desenvolvedor e clique em Criar novo aplicativo.
Selecione Box Custom Skill.
Dê um nome ao aplicativo e clique em Criar aplicativo.
Depois de criar o aplicativo, você verá a tela abaixo. A caixa vermelha é onde você colocará o URL onde deseja que a carga útil das habilidades da caixa vá. Adicionaremos esta URL mais tarde.
Na guia chaves de segurança, você encontrará duas chaves que podem ser usadas para verificar se o Box é o serviço que chamou a função serverless.
Ativar/autorizar a habilidade da caixa (concluída pelo administrador)
Assim como outros tipos de aplicativos, um administrador de sua instância do Box precisará ativar e autorizar o Box Skill na seção de habilidades do console administrativo. Você precisará fornecer ao administrador o ID do cliente do aplicativo, encontrado na tela de configuração do Box Skill.
Você também precisará fornecer o(s) nome(s) da pasta/proprietário do conteúdo para o qual deseja que a Habilidade seja acionada. Se você ainda não configurou uma pasta para a habilidade monitorar, faça isso antes de solicitar a autorização de seu administrador.
Na tela do console de administração de habilidades , clique em Adicionar habilidade.
Insira a ID do cliente da habilidade e clique em Avançar.
Selecione se a habilidade deve ser executada para todo o conteúdo ou um subconjunto de pastas.
Para (uma) pasta(s) específica(s), filtre o pop-up por nome de usuário ou pasta. Verifique a(s) pasta(s) para a qual a Habilidade deve ser acionada.
Confirme as seleções e clique em Ativar.
Crie um modelo de metadados de caixa (opcional — preenchido pelo administrador)
Esta etapa é opcional, pois metadados ou dados de habilidades podem ser gravados em um arquivo sem um modelo; no entanto, a criação de um modelo de metadados permitirá que os usuários pesquisem facilmente pelos resultados fornecidos pelo aprendizado de máquina.
No Admin Console, clique em Conteúdo > Metadados > Criar novo.
Configure o modelo de metadados dando a ele um nome, adicionando atributos — cada um deve ter um nome, formato e descrição e clicando em Salvar.
Configuração de função sem servidor
Este exemplo usará nosso repositório inicial de habilidades personalizadas do Serverless Box para acelerar o desenvolvimento.
Clique no link acima e baixe o repositório para o seu computador.
Descompacte a pasta baixada. Encontre a pasta box-custom-skills-starter-gcp no repositório baixado e renomeie-a para algo que corresponda ao seu caso de uso. Além disso, sinta-se à vontade para mover a pasta para o diretório de projetos típicos. Se preferir usar AWS ou Azure, você encontrará os diretórios hello world na mesma pasta zip.
Abra a pasta em um editor de código como o Visual Studio Code .
No terminal do editor, confirme se você possui o Node v10.0.0 ou superior.
Antes de continuar, você precisará configurar uma conta do GCP com um método de cobrança anexado. Não abordarei todas essas etapas aqui, mas você pode encontrá-las no site Serverless . Certifique-se de concluir todas as etapas, incluindo a criação de um projeto + ativação das APIs , criação de uma conta de serviço e download de um arquivo de chave JSON .
Arraste o arquivo de chave JSON que foi baixado na etapa acima para a pasta .gcloud.
Renomeie o arquivo como serverless.json.
Atualize o arquivo package.json para ter as informações de nomenclatura para seu caso de uso.
Atualize o arquivo serverless.yml para ter as informações de configuração e nomenclatura para sua conta do GCP e caso de uso. Além disso, certifique-se de adicionar as chaves de segurança do Box mostradas nas telas abaixo.
As chaves primárias e secundárias do Box vêm da seção de chaves de segurança do console do desenvolvedor que mencionei algumas seções acima. É importante usar essas chaves para garantir que apenas o Box possa executar o código da função serverless.
Em um terminal, execute npm install.
Então, corra npx serverless deploy.
A implantação pode levar vários minutos, especialmente na primeira vez. Após a conclusão, você receberá um URL de invocação.
Copie e cole isso no aplicativo do console do desenvolvedor que você criou anteriormente.
Visite o console do GCP para ver se sua função serverless está ativa.
Você também precisa adicionar uma permissão adicional à função para que o Box possa chamá-la. Clique em permissões > adicionar.
Digite “allUsers” na caixa de novos principais com uma função selecionada de Cloud Functions Invoker. Clique em Salvar.
Carregue um arquivo para a pasta Box configurada pelo administrador.
Abra o arquivo no Box para ver a mensagem “Hello World” anexada como metadados.
Você também pode verificar os logs na função sem servidor para verificação.
Configuração de IA de documento do GCP
Agora que a Box Skill e a função sem servidor estão funcionando, a última parte é configurar um provedor de aprendizado de máquina e editar nosso código para usá-lo. O Document AI do Google é perfeito para esse caso de uso, porque extrai o texto OCR das plantas baixas carregadas sem a necessidade de treinar um modelo de aprendizado de máquina personalizado. Podemos enviar o texto encontrado de volta para a configuração da função sem servidor acima, analisar os resultados e aplicá-los de volta ao arquivo como metadados pesquisáveis.
Antes de pular para as etapas de configuração, visite a seção de teste para ver a resposta típica que você receberá.
Observe o texto OCR e as guias JSON. Na resposta JSON, você pode ver um campo de texto. É aqui que os dados de texto OCR são colocados para você analisar.
Vamos usar a seção de guias de instruções da documentação do Document AI para configurar a API para o projeto GCP criado anteriormente. Esteja ciente de que não precisamos configurar outra conta de serviço ou baixar um novo arquivo de chave JSON, pois já fizemos isso na postagem anterior do blog.
Habilite o Document AI clicando aqui e ativando-o para o projeto GCP que configuramos anteriormente neste tutorial.
Acesse a página de processadores e clique em Explorar processadores.
Selecione o tipo de processador OCR do documento.
Dê um nome ao processador na janela pop-up lateral e clique em Criar.
Encontre o endpoint de previsão para o processador. Isso é o que usaremos para obter informações sobre as plantas depois de editarmos nosso código.
Agora, vamos editar o código para usar esta nova API.
No terminal, execute o seguinte:
npm install axios @google-cloud/documentai
No arquivo serverless.yml, precisamos adicionar mais algumas variáveis: gcp_project_id, gcp_location, gcp_processor_id, box_metadata_key, box_api_endpointe bedroom_list. Você pode encontrar a nova seção para copiar abaixo.
O ID do projeto, o local e o ID do processador vêm da configuração do GCP que fizemos anteriormente. Adicioná-los como variáveis agora nos permite acessar isso no código e alterá-los no futuro sem edição de código.
A chave de metadados é a chave para o modelo de metadados que configuramos anteriormente. Você pode encontrar isso no console de administração em conteúdo > metadados.
A lista de quartos é uma string separada por vírgulas de todos os nomes que nossas plantas chamam de quartos. Isso nos ajudará a analisar o teste de OCR em um inteiro pesquisável. Para esta e quaisquer outras listas — banheiros, varandas, etc — não pode haver espaços entre os termos.
Tudo isso fará mais sentido quando alterarmos o arquivo index.js.
Para o index.js, precisamos fazer várias alterações. Para facilitar, há um exemplo completo do arquivo index.js finalizado no repositório que você baixou anteriormente, do qual você pode copiar. É chamado index_reference.js. Tenha em mente que este é apenas um exemplo. Você pode usar isso para expandir a funcionalidade, dependendo do seu caso de uso no mundo real. Você verá comentários acima do código abaixo descrevendo o que cada seção faz.
Simplesmente copie/cole o arquivo index_reference.js e substitua o conteúdo do arquivo index.js.
Agora, você pode correr npx serverless deploye então podemos usar a habilidade!
Usando a Habilidade da Caixa
Neste ponto, todas as peças para uma habilidade de caixa funcionar foram configuradas: criação de habilidade de caixa, autorização de habilidade de caixa, criação de modelo de metadados e configuração de aprendizado de máquina/função sem servidor. Agora podemos usar a habilidade para nosso caso de uso real!
Carregue um arquivo para a pasta Box configurada pelo administrador.
Clique em um arquivo carregado e veja que os metadados foram aplicados a um arquivo.
O Box leva aproximadamente dez minutos para indexar os metadados. Depois disso, os metadados podem ser usados como critérios de pesquisa de conteúdo dentro do aplicativo web Box.
Clique na barra de pesquisa > Metadados > Escolha um modelo no menu suspenso > digite os critérios de pesquisa > pressione Enter.
Quaisquer arquivos que correspondam aos critérios serão retornados.
Tutorial de Habilidades de Caixa Completo
Nesta postagem do blog, mostrei como você pode usar um código clichê simples e uma API de aprendizado de máquina pronta para uso para coletar e usar dados valiosos no conteúdo armazenado no Box.
Neste tutorial, usamos plantas baixas, mas você pode usar qualquer documento que desejar — currículos, faturas, aplicativos, etc. As possibilidades são infinitas devido às muitas APIs de aprendizado de máquina prontas para uso. Além disso, como você pode ver no tutorial, configurar o fluxo não é tão difícil!
Muito obrigado a Marley !
Esperamos que você tenha gostado deste tutorial e sinta-se à vontade para entrar em contato conosco no fórum do desenvolvedor para obter suporte ou via Box Pulse para fazer sugestões sobre como melhorar as habilidades do Box.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)