Adicionar Pacote de Componentes a uma Qualificação

Você adiciona um pacote de componentes a uma habilidade criando um serviço de componente.

Para pacotes de componentes que você hospeda em um servidor externo, no Oracle Cloud Infrastructure Functions ou no Oracle Mobile Hub, um serviço de componente é uma conexão ativa da habilidade com o servidor host. Como alternativa, você pode fazer upload do pacote de componentes e hospedá-lo na sua instância do Oracle Digital Assistant. Isso é chamado de serviço de componente incorporado.

Um serviço de componente tem duas funções:

  • Ele consulta o componente para obter os metadados do pacote, incluindo os nomes dos componentes, suas propriedades e as ações permitidas de cada um. Depois que um serviço é adicionado à habilidade, você pode ver essa informação na guia Componentes, que você acessa clicando em Componentes Esta é uma imagem do ícone Componentes. na barra de navegação esquerda. Você pode consultar essa página para obter os nomes, as propriedades e as ações do componente, que você precisará para usar os componentes no seu fluxo de caixas de diálogo.

  • Ela permite que a habilidade chame os componentes.

    O payload JSON da chamada feita pelo Mecanismo de Caixa de Diálogo para os componentes inclui parâmetros de entrada, valores de variáveis, contexto no nível do usuário e texto da mensagem do usuário. O componente retorna os resultados alterando os valores das variáveis existentes e/ou adicionando novos. O Mecanismo de Caixa de Diálogo faz parsing do payload retornado e continua.

Para adicionar um pacote de componentes personalizados a uma habilidade, vá para a guia Componentes Esta é uma imagem do ícone Componentes. e clique em Adicionar Serviço, que abre uma caixa de diálogo para configurar o serviço.

A forma de configurar o serviço depende de onde você está hospedando o pacote de componentes. Estes tópicos fornecem instruções para cada tipo:

Depois de criar o serviço, você pode chamar os componentes personalizados do seu fluxo de caixas de diálogo conforme descrito em Componentes Personalizados.

Quando você faz upload de um pacote para o contêiner incorporado, o Digital Assistant verifica se o pacote é válido e pode rejeitá-lo por estes motivos:

  • Existem erros de JavaScript.

  • O pacote não contém todas as dependências do módulo de nó.

  • O nome de um componente tem mais de 100 caracteres, começa com System. ou contém caracteres que não são alfanuméricos e sublinhados, nesse caso, a criação do serviço falhará.

  • Sua instância já tem o número máximo de serviços de componentes incorporados.

  • O arquivo TGZ é muito grande. Isso geralmente acontece quando o arquivo .npmignore não contém uma entrada *.tgz e, portanto, toda vez que você compacta os arquivos, uma cópia aninhada do arquivo TGZ existente é adicionada.

Consulte Adicionar Serviço de Componente Incorporado para obter mais informações sobre essas verificações.

Adicionar Serviço de Componente Incorporado

Se você quiser hospedar o pacote de componentes personalizados da sua instância do Oracle Digital Assistant, execute estas etapas:

  1. Preparar o Pacote para um Serviço de Contêiner Incorporado.

  2. Fazer Upload do Pacote para Criar um Serviço de Componente Incorporado.

Preparar o Pacote para um Serviço de Contêiner Incorporado

Para hospedar o pacote de componentes personalizados do Oracle Digital Assistant como um serviço de componente incorporado, primeiro você deve compactar os componentes personalizados em um arquivo TGZ. Em seguida, quando você criar o serviço de componente incorporado, faça upload desse arquivo.

Esse arquivo TGZ, que você compacta usando bots-node-sdk pack, deve conter os ativos e a estrutura descritos em Implementar Componentes Personalizados. Ele também deve conter todos os módulos de nó dos quais ele depende (o bots-node-sdk pack faz isso para você).

Observação

Há um limite de quantos serviços de componentes personalizados incorporados uma instância pode ter. Se você não souber o limite, peça ao administrador de serviço para obter o embedded-custom-component-service-count para você, conforme descrito em Exibir Limites do Serviço na Console de Infraestrutura. Se você tentar adicionar um serviço de componente depois de atingir a esse limite, a criação do serviço falhará.

Para preparar um pacote para upload no serviço de contêiner incorporado:

  1. Certifique-se de ter a versão mais recente das ferramentas de linha de comandos do Bots Node.js.

    O contêiner incorporado requer que o arquivo TGZ inclua todas as dependencies. As versões anteriores não incluíam dependencies no arquivo. Agora, o comando que você usará para criar o arquivo TGZ garante que o seu arquivo package.json contenha um nó bundledDependencies que lista todos os módulos dependentes que precisam ser incluídos no arquivo TGZ.

  2. No diretório que contém o arquivo main.js, execute o comando a seguir para todos os módulos dos quais seu pacote depende. Não é necessário fazer isso para devDependencies, como o Bots Node SDK.

    Esse comando adiciona o módulo à pasta node_modules e o adiciona como dependência em package.json.

    npm install <module>

    Se seu package.json já nomear todas as dependências, você poderá executar npm install.

  3. Certifique-se de que a pasta de nível superior contém um arquivo .npmignore com uma entrada *.tgz. Por exemplo :

    *.tgz
    spec
    service-*

    Caso contrário, ao compactar os arquivos em um arquivo TGZ, você incluirá o arquivo TGZ que já existe na pasta de nível superior e seu arquivo TGZ dobrará de tamanho. Depois de compactar os arquivos algumas vezes, o arquivo TGZ ficará muito grande para ser submetido a upload para o contêiner.

  4. Execute este comando:

    bots-node-sdk pack

    Este comando valida o pacote de componentes, atualiza-o para incluir devDependencies se necessário e, em seguida, cria um arquivo TGZ, do qual você fará upload quando criar um serviço de componente incorporado na guia Componentes da habilidade. Observe que os arquivos listados como dependencies são incluídos como bundledDependencies, com exceção do Bots Node SDK e do Express, que são devDependencies.

Seu pacote deve ser compatível com o Nó 14.17.0.

Para obter mais informações sobre o comando pack, consulte https://github.com/oracle/bots-node-sdk/blob/master/bin/CLI.md.

Fazer Upload do Pacote para Criar um Serviço de Componente Incorporado

Depois de compactar um pacote de componentes personalizados em um arquivo TGZ, você pode submetê-lo a upload para criar um serviço de componente incorporado na guia Componentes da habilidade.

Para saber como criar o arquivo TGZ, consulte Preparar o Pacote para um Serviço de Contêiner Incorporado.

Observação

Quando você faz upload do pacote para o serviço de componente incorporado, ele é implantado no Oracle Functions Service. Se sua instância for provisionada no Oracle Cloud Platform (como todas as instâncias da versão 19.4.1), o serviço será implementado na instância do Digital Assistant.

Para criar o serviço de componente incorporado:

  1. Na habilidade, clique em Componentes Ícone Componentes.

  2. Clique em Botão + Adicionar Serviço..

  3. Selecione Contêiner Incorporado.

  4. Clique em Fazer Upload de um arquivo de pacote de componentes e aponte para o arquivo TGZ para upload ou arraste o arquivo para a caixa Arquivo de Pacote.

  5. (Opcional) Se você quiser enviar instruções context.logger() de componente personalizado para o log do serviço, alterne Ativar Registro em Log do Componente para Ativado. Essa alternância só está disponível em instâncias do Oracle Digital Assistant provisionadas no Oracle Cloud Infrastructure (às vezes chamadas de infraestrutura de nuvem Geração 2).

    Você pode ver o log na guia Componentes clicando em Diagnóstico > Exibir Logs.

    Observação

    A habilidade mantém uma entrada de log por dois dias. Quando você exclui um serviço de componente personalizado incorporado, as entradas de log da habilidade desse serviço são excluídas.
  6. Clique em Criar.

    O Digital Assistant faz upload do arquivo TGZ e cria o serviço de componente incorporado. Durante o upload, o Digital Assistant verifica se o pacote é válido e pode rejeitar o pacote pelos motivos descritos posteriormente nesta seção.

    Após o upload do arquivo TGZ, o serviço de componente personalizado é construído e seus componentes são implantados. Se a página Componentes exibir uma mensagem de espera de implantação depois que você fizer upload do arquivo TGZ, isso significará que o serviço foi criado, mas ainda não está disponível. Quando o serviço se tornar disponível, os metadados de implantação serão exibidos no lugar da mensagem sobre a espera da implantação.

  7. Certifique-se de que a opção Serviço Ativado esteja ativado.

Durante o upload, o o Digital Assistant pode rejeitar o pacote. Aqui estão os motivos para a rejeição e maneiras de resolver os problemas.

  • JavaScript contém erros de sintaxe: Se o JavaScript de um componente tiver erros de sintaxe, esse componente não será adicionado ao contêiner, o que resultará nesta mensagem de erro:

    Error Message: failed to start service built: Invalid component
          path:

    Exiba os arquivos de componente em um editor que detecte erros de sintaxe. Além disso, tente hospedar o pacote em um servidor local que envia mensagens de erro para um log de console.

    Outro motivo para esta mensagem pode ser que o pacote não contém todas as dependências do módulo do nó. Consulte o próximo item desta lista.

  • Módulos de nó ausentes: Se o pacote não contiver todas as dependências do módulo de nó, você receberá a mesma mensagem de erro acima:

    Error Message: failed to start service built: Invalid component
          path:

    Para saber como incluir dependências do módulo de nó, consulte Preparar o Pacote para um Serviço de Contêiner Incorporado.

  • O nome do componente é muito longo: Se o nome de um componente tiver mais de 100 caracteres, começar com System., ou contiver caracteres que não sejam alfanuméricos e sublinhados, a criação do serviço falhará.

    Altere o nome no JavaScript do componente, compacte o componente novamente e repita o upload.

  • Limite de serviço do componente excedido: Se sua instância já tiver o número máximo de serviços de componente personalizado incorporado, a criação do serviço falhará. Peça ao administrador de serviço o limite embedded-custom-component-service-count conforme descrito em Exibir Limites de Serviço na Console de Infraestrutura.

    Se você precisar aumentar o limite, poderá solicitar um aumento. Consulte Solicitando um Aumento do Limite de Serviço.

  • O arquivo TGZ é muito grande: Isso geralmente acontece quando o arquivo .npmignore não contém uma entrada *.tgz e, portanto, toda vez que você compacta os arquivos, uma cópia aninhada do arquivo TGZ existente é adicionada.

    Quando a pasta de nível superior contém um arquivo .npmignore com *.tgz, a versão anterior do arquivo TGZ não é incluída quando você atualiza o pacote.

Se você enviar instruções context.logger() do componente personalizado para o log do serviço, alterne Ativar Registro em Log do Componente para Ativado. Essa alternância só está disponível em instâncias do Oracle Digital Assistant provisionadas no Oracle Cloud Infrastructure (às vezes chamadas de infraestrutura de nuvem Geração 2).

Quando a opção Ativar Registro em Log do Componente estiver ativada, você poderá clicar no botão Diagnóstico do serviço para acessar os logs de exibição e os relatórios de falhas para diagnosticar o problema.

  • Selecione Exibir Logs para exibir as mensagens que o componente personalizado envia para context.logger(). Esse recurso só está disponível em instâncias do Oracle Digital Assistant provisionadas no Oracle Cloud Infrastructure (às vezes chamadas de infraestrutura de nuvem Geração 2). A chave Ativar Registro em Log do Componente deve estar Ativada para que o log contenha essas mensagens.
  • Selecione Exibir Relatório de Falhas para exibir detalhes sobre o que pode ter feito o contêiner falhar.

Depois de criar o serviço, você pode chamar os componentes personalizados do seu fluxo de caixas de diálogo conforme descrito em Componentes Personalizados.

Adicionar Serviço do Oracle Functions

Você pode implantar seus componentes personalizados no Oracle Cloud Infrastructure Functions e adicioná-los a uma habilidade como um serviço do Oracle Function.

Para adicionar um serviço do Oracle Functions:

  1. Você precisará saber o URL da função. Um usuário com privilégios de desenvolvimento de função pode obter o URL na Console de Integração para você.

    1. Acesse a Console de Integração.
    2. Clique em Ícone do menu de navegação na parte superior esquerda para abrir o menu de navegação, clique em Serviços do Desenvolvedor > Funções e selecione o compartimento que foi configurado para desenvolvimento de funções.

    3. Clique no aplicativo.

    4. Na seção Funções, clique no ícone Mais para sua função e clique em Copiar Ponto Final de Chamada. Os desenvolvedores de habilidades precisam desse valor para adicionar o pacote de componentes personalizados como serviço de componentes em uma habilidade.

  2. Um desenvolvedor de habilidades adiciona o serviço de componente a uma habilidade no Oracle Digital Assistant. Acesse o Oracle Digital Assistant, abra a habilidade e clique em Componentes Ícone Componentes.

  3. Clique em Botão + Serviço..

  4. Informe um nome e uma descrição para o serviço.

  5. Selecione Oracle Function.

  6. Na caixa de texto URL, informe o URL do ponto final de chamada que você copiou da página Serviços do Desenvolvedor > Funções na Console de Infraestrutura ao concluir as etapas em Configurar sua Conta de Usuário para o Oracle Functions.

  7. Clique em Criar.

    Se você receber um erro "Não é Possível Criar o Serviço", vá para Serviços do Desenvolvedor > Funções na Console de Infraestrutura, selecione o compartimento, clique no aplicativo e clique em Logs no menu Recursos. Em seguida, ative o log para a função, repita a implantação e verifique os logs (clique no nome do log para vê-lo). Para saber mais sobre logs, consulte Armazenando e Exibindo Logs de Funções na Documentação do Oracle Cloud Infrastructure.

    Se você vir um erro como este, é porque a pasta não tem as permissões corretas. Em sua máquina local, use chmod 775 para alterar as permissões da pasta e, em seguida, reimplante:

    "Error: EACCES: permission denied, stat
    '/function/components/hello.world.js.js'"

    Se você vir um erro como este, em sua máquina local, exclua node_modules, execute npm install e reimplante.

    "Error: Cannot find module '@fnproject/fdk'"
  8. Certifique-se de que a opção Serviço Ativado esteja ativado.

Depois de criar o serviço, você pode chamar os componentes personalizados do seu fluxo de caixas de diálogo conforme descrito em Componentes Personalizados.

Adicionar Serviço de Componente Externo

Você pode hospedar seus componentes personalizados em seu próprio servidor Node.js e adicioná-los a uma habilidade como um serviço de componente externo.

Dica:

Você pode usar a opção de serviço externo durante o desenvolvimento, conforme descrito em Executar o Serviço do Componente em um Ambiente de Desenvolvimento.

Para adicionar um serviço de componente externo:

  1. Na habilidade, clique em Componentes Ícone Componentes.

  2. Clique em Botão + Serviço..

  3. Selecione Externo.

  4. Na caixa de texto URL de Metadados, informe o URL que aponta para o ponto final GET que retorna a lista de componentes.

  5. Informe o nome de usuário e a senha do serviço.

  6. Clique em Criar.

  7. Certifique-se de que a opção Serviço Ativado esteja ativado.

Depois de criar o serviço, você pode chamar os componentes personalizados do seu fluxo de caixas de diálogo conforme descrito em Componentes Personalizados.

Adicionar Serviço de Componente do Mobile Hub

Você pode hospedar seus componentes personalizados do Oracle Mobile Hub e adicioná-los a uma habilidade como um serviço de componente do Oracle Mobile Cloud. Os componentes personalizados hospedados no Mobile Hub podem se integrar com serviços remotos usando conectores controlados por um backend do Mobile Hub e têm acesso às APIs de plataforma do Mobile Hub.

Como o backend que hospeda o código personalizado trata a autenticação dos componentes personalizados, consulte a página Definições do backend para obter as informações necessárias para concluir a configuração.

Para adicionar um serviço de componente para o backend do Mobile Hub:

  1. Na habilidade, clique em Componentes Ícone Componentes.

  2. Clique em Botão + Serviço..

  3. Selecione Oracle Mobile Cloud.

  4. Digite o identificador exclusivo designado ao backend do Mobile Hub no campo ID de Backend. Esse ID é informado no cabeçalho REST de cada chamada da habilidade.

  5. No campo MetadataURL, informe o ponto final /components na API de código personalizado. Por exemplo, http://<server>:<port>/mobile/custom/ccPackage/components.

  6. Escolha Usar Acesso Anônimo se o serviço permitir log-in anônimo. Se você escolher essa opção, digite a chave anônima, que é uma string exclusiva que permite que seu aplicativo acesse APIs anônimas sem enviar um nome de usuário e uma senha codificados. A chave anônima é informada em seu lugar. Você pode encontrar a chave anônima na página Definições do backend no Mobile Hub. (Talvez seja necessário clicar em Mostrar.)

    Se o serviço do componente exigir um log-in (o que significa que não há acesso anônimo), digite o nome do usuário e a senha.

  7. Se o serviço exigir parâmetros específicos, clique em Adicionar Cabeçalho HTTP e, em seguida, defina os pares de chave/valor para os cabeçalhos.

  8. Clique em Criar.

  9. Certifique-se de que a opção Serviço Ativado esteja ativado.

Depois de criar o serviço, você pode chamar os componentes personalizados do seu fluxo de caixas de diálogo conforme descrito em Componentes Personalizados.