Chamando uma extensão customizada

Uma extensão é uma integração com um serviço externo. Ao chamar uma extensão a partir de uma ação, seu assistente de IA pode enviar solicitações ao serviço externo e receber dados de resposta que poderá usar na conversa.

Por exemplo, pode-se usar uma extensão para interagir com um sistema de abertura de chamados ou de gerenciamento de relacionamento com o cliente (CRM) ou para recuperar dados em tempo real, como taxas de hipoteca ou condições meteorológicas. Os dados de resposta da extensão ficam então disponíveis como variáveis de ação, que seu assistente de IA pode usar na conversa.

Para obter informações sobre como construir uma extensão customizada, consulte Construir uma extensão customizada.

Chamando a extensão de uma etapa

Para chamar uma extensão customizada por meio de uma ação:

  1. No editor de ação, crie ou abra a etapa da qual deseja chamar a extensão.

  2. Opcional: no campo Assistant says (O assistente diz ), digite uma mensagem a ser exibida ao cliente antes de o ramal ser chamado (por exemplo, " Please wait while I retrieve your account balance...).

A saída dessa etapa é enviada ao canal com a variável de contexto global ' skip_user_input definida como ' true. Essa variável instrui o canal a exibir a mensagem, mas _não_ a solicitar uma resposta do cliente. Em vez disso, o canal envia uma mensagem vazia, permitindo que o assistente de IA prossiga com a chamada para o ramal.

Todas as integrações de canal incorporadas (como o bate-papo na Web) respeitam a variável de contexto " skip_user_input. Se você estiver usando a API para desenvolver um cliente personalizado, é sua responsabilidade incluir a verificação lógica dessa variável. Para obter mais informações, consulte Processamento da entrada do usuário.

  1. No editor de etapa, clique em E depois.

  2. Clique em Usar uma extensão.

  3. Na janela Configuração de extensão, especifique as informações a seguir:

    • No campo Extensão, selecione a extensão que deseja chamar.

    • No campo Operação, selecione a operação que deseja executar. (Uma _operação_ é um método ou função suportada pela extensão.)

  4. Especificar valores para cada um dos parâmetros de entrada necessários. Um _parâmetro_ é um valor de entrada enviado a uma operação, como o ID de um registro de cliente que você deseja recuperar ou a localização a ser usada para uma previsão do tempo.

Para designar um valor a um parâmetro, clique no campo de entrada para o valor. É possível selecionar na lista de variáveis disponíveis ou gravar uma expressão para especificar o valor.

Definição de um valor de parâmetro

Cada parâmetro possui um tipo de dados (como _number_ ou _string_). A variável selecionada deve ser compatível com o tipo de dados do parâmetro; para obter mais informações, consulte Variáveis compatíveis para parâmetros.

Você deve especificar valores para todos os parâmetros necessários antes de continuar.

  1. Para especificar um valor para quaisquer parâmetros opcionais, clique em Parâmetros opcionais. Em seguida, é possível repetir esse processo para cada parâmetro opcional que deseja usar.

  2. Clique em Aplicar. (Se o botão Aplicar não estiver disponível, certifique-se de ter especificado valores para todos os parâmetros necessários.)

Agora a seção E depois do editor de etapa mostra uma visão geral da chamada para a extensão:

Visão geral da chamada configurada para o ramal

Para fazer mudanças, clique em Editar extensão para reabrir a janela Configuração de extensão.

Variáveis compatíveis para parâmetros

Para passar um valor de parâmetro de entrada para uma operação, você deve selecionar uma variável de ação ou variável de sessão compatível.

Uma variável de ação contém um valor que se baseia em uma resposta do cliente em uma etapa anterior. Uma variável de sessão pode ter um valor baseado em uma resposta do cliente ou um valor definido por uma expressão. (Para obter mais informações sobre variáveis de ação e variáveis de sessão, consulte “Usando variáveis para gerenciar informações de conversação ”.)

Quando você atribui um valor a um parâmetro, a variável escolhida deve ser compatível com o tipo de dados do parâmetro. (Por exemplo, um parâmetro _number_ deve receber um valor numérico, e não texto.)

A tabela a seguir mostra os possíveis tipos de resposta ao cliente e tipo de dados do parâmetro compatíveis com cada um.

Tabela 1. Tipos de resposta compatíveis para parâmetros

Tipo de resposta ao cliente

Tipos de dados compatíveis

Notas

opções

string

Uma opção selecionada é sempre tratada como uma sequência, mesmo que seja um valor numérico.

número

number\ninteger

Um número de vírgula flutuante transmitido como o valor para um parâmetro integer pode causar um erro, dependendo do comportamento da API de REST.

data

string

As datas são renderizadas como YYYY-MM-DD.

horário

string

Os horários são renderizado como HH:MM:SS em formato de 24 horas, convertidos para o fuso horário do usuário.

Moeda

number\ninteger

Porcentagem

number\ninteger

Um valor percentual é transmitido como um número inteiro (assim 75% torna-se 75).

Texto livre

string

Expressão regular

string

Matrizes

Além dos tipos de resposta do cliente compatíveis, uma variável também pode conter um valor de matriz. Se você precisar passar um parâmetro de matriz para uma operação, deverá criar uma variável de sessão de matriz:

  1. Crie uma nova variável de sessão, usando Definir valores de variável no editor de etapas ou na página Variáveis > Criadas por você. (Para obter mais informações sobre como criar uma variável de sessão, consulte Criação de uma variável de sessão)

  2. No campo Type (Tipo ), selecione Any (Qualquer).

  3. No campo " Valor inicial, clique no botão de alternância " Usar expressão para ativá-lo. Digite uma expressão que defina um valor de matriz (como ' ["New York", "London", "Tokyo"], ' [123, 456, 789] ou ' []).

Como essa variável contém um valor de matriz, suas ações podem usar expressões com métodos de matriz para acessar ou modificar os valores da matriz. Por exemplo, você pode querer criar uma variável que inicialmente contenha uma matriz vazia ([]) e, em seguida, usar o método ' add() para criar uma lista com um elemento de cada vez. Para obter mais informações sobre os métodos de matriz que você pode usar em expressões, consulte Métodos de matriz.

Agora você pode selecionar essa variável como o valor de um parâmetro que requer uma matriz.

Acessando dados de resposta de extensão

Após chamar uma extensão, os valores dos dados de resposta são armazenados em variáveis de ação especiais que podem ser acessadas em etapas subsequentes.

É possível acessar essas variáveis da mesma maneira que você acessa outras variáveis de ação. Elas podem ser referenciadas no texto Assistente diz, avaliadas como parte de uma condição de etapa ou designadas a uma variável de sessão para que outras ações possam acessá-las. As variáveis de resposta são mostradas na lista de variáveis disponíveis, categorizadas sob o nome da extensão e a etapa da qual foram chamadas:

Referência a uma variável de resposta

Cada chamada para uma extensão cria um conjunto separado de variáveis de resposta. Se a ação chamar a mesma extensão várias vezes de etapas diferentes, certifique-se de selecionar as variáveis da etapa correta.

Cada variável representa um valor do corpo de resposta. Para facilitar o acesso a esses valores, os dados são extraídos de objetos complexos, aninhados e mapeados para variáveis de resposta individuais. O nome de cada variável reflete sua localização dentro do corpo de resposta (por exemplo, body.name ou body.customer.address.zipcode).

Por exemplo, esta etapa de ação usa uma expressão para verificar a propriedade availability em uma resposta de extensão:

Variável de extensão na condição de etapa

Se uma variável de resposta contiver uma matriz, você poderá escrever uma expressão que use métodos de matriz para acessar os elementos da matriz. Por exemplo, você pode usar o contains() método em uma condição de etapa para verificar se a matriz contém um determinado valor, ou o join() método para formatar os dados da matriz como uma string que possa ser incluída na resposta de um assistente de IA. Para obter mais informações sobre métodos de matriz, consulte Métodos de matriz.

Verificando o sucesso ou a falha

Talvez você queira que seu assistente de IA seja capaz de lidar com erros que ocorrem ao chamar uma extensão personalizada. Você pode fazer isso verificando a variável Ran successfully de resposta que é retornada junto com a resposta da chamada à extensão. Essa variável é um valor booleano (true ou false).

Se você definir condições de etapa que verifiquem a Ran successfully variável, poderá criar etapas que permitam ao seu assistente de IA responder de maneira diferente, dependendo do sucesso ou não da chamada para o ramal. (Para obter mais informações sobre condições de etapa, consulte Condições de etapa.)

O exemplo a seguir mostra uma condição de etapa que verifica uma falha de uma extensão na etapa 3. Usando essa condição, é possível criar uma etapa que informe ao cliente que houve um erro e que ofereça uma conexão com um agente para o cliente obter mais ajuda.

Verificação de condição de etapa para falha de extensão

Condicionamento do status HTTP

Além da variável Ran successfully, talvez você também queira criar uma condição de etapa com base no status HTTP da resposta. Ao fazer isso, você pode criar etapas que tratam a situação de forma diferente, dependendo da causa da falha. Por exemplo, se a chamada falhar devido a um erro de tempo limite ( HTTP status 408), talvez você queira tentar novamente a chamada.

Existem muitos códigos de status HTTP possíveis, e métodos diferentes usam códigos de status diferentes para indicar vários tipos de sucesso ou falha. Para condicionar o status HTTP, você precisa saber quais códigos de status HTTP o serviço externo retorna e em que circunstâncias. Esses códigos de status são normalmente especificados no documento OpenAPI que descreve a API externa.

Para criar uma condição de etapa com base no código de status HTTP, siga estas etapas:

  1. Para o valor que você deseja testar, clique em Expression (Expressão).

  2. No campo de expressão, digite um sinal de dólar ($) para mostrar a lista de variáveis disponíveis.

  3. Selecione qualquer variável que seja um valor de resposta da extensão. (Não importa qual variável é selecionada, contanto que seja uma variável de resposta de extensão).

A expressão é atualizada automaticamente para mostrar uma referência à variável selecionada no formato ${step_xxx_result_y.body.variablename}. Por exemplo, se você selecionou uma variável de resposta chamada body.id, a referência poderá ser ${step_596_result_1.body.id}.

  1. Dentro das chaves, ({}), edite essa referência para remover .body.variablename. O resultado deve ser algo como ${step_596_result_1}.

  2. Após a chave de fechamento (}), inclua .status. A referência resultante identifica o código de status retornado da chamada para a extensão (por exemplo, ${step_596_result_1}.status).

Para obter mais informações sobre a gravação de expressões, consulte Gravando expressões.

  1. Complete a expressão adicionando um operador e um valor de comparação, para que a expressão seja avaliada como um valor booleano (verdadeiro/falso). Por exemplo, a expressão a seguir testa o status 408 do site HTTP, que indica um erro de tempo limite:

    ${step_549_result_1}.status==408

Falhas na depuração da extensão personalizada

Se as suas chamadas para uma extensão estiverem falhando, talvez você queira depurar o problema vendo informações detalhadas sobre o que está sendo enviado e retornado da API do sistema. Para fazer isso, você pode usar o Inspector no painel Preview:

  1. Vá para a página Actions (Ações) ou para o editor de ações e clique em Preview (Visualizar ) para abrir o painel Preview (Visualizar).

Não é possível acessar o Inspector a partir da visualização do assistente de IA na página de visualização, que mostra apenas o que um cliente veria. Em vez disso, use o recurso de visualização que faz parte da página Ações, que lhe dá acesso a informações adicionais.

  1. Interaja com seu assistente de IA como um cliente faria.

  2. Sempre que um ramal é chamado, o painel de visualização mostra uma mensagem que lhe dá acesso a informações detalhadas:

Clique em Inspect (Inspecionar ) para ver detalhes sobre a chamada para o ramal.

Você também pode clicar no Ícone do inspetor de extensão ícone para mostrar ou ocultar o Inspetor. Entretanto, você deve clicar em Inspect (Inspecionar ) no painel de visualização para mostrar informações sobre uma chamada específica para um ramal.

A guia Overview (Visão geral ) do Inspector mostra as seguintes informações sobre uma chamada para um ramal:

Opção de depuração

Descrição

Extensão

O nome da extensão, conforme especificado nas configurações da extensão.

Operação

A operação que foi chamada.

Status

O código de status HTTP da resposta. Esse código pode ajudá-lo a determinar se um erro está sendo retornado do serviço externo.

Parâmetros de solicitação

Os parâmetros de entrada que foram enviados à API do sistema como parte da solicitação.

Propriedades de resposta

Os valores de todas as propriedades incluídas na resposta da API do sistema. Esses são os valores mapeados para as variáveis de ação após a conclusão da chamada para o ramal.

Nas tabelas Request parameters (Parâmetros de solicitação ) e Response properties (Propriedades de resposta ), nomes longos de propriedades podem ser truncados para mostrar apenas a última parte do caminho JSON. Para ver o caminho completo e o nome da propriedade, passe o ponteiro do mouse sobre o nome da propriedade na tabela.

  1. Clique na guia Advanced (Avançado ) no inspetor de extensão se quiser ver os dados brutos de solicitação e resposta:

    • A solicitação é exibida como um comando ` cURL `, que você pode executar em uma linha de comando ou importar para uma ferramenta como o Postman. (Por motivos de segurança, o conteúdo de qualquer cabeçalho ' Authorization não é incluído)

    • A resposta é mostrada como os dados JSON completos retornados da API do sistema.

Reconfiguração de uma extensão ausente

Uma extensão pode ficar indisponível se alguém a remover do assistente de IA na página Integrações, ou se a ação for exportada e depois importada para um assistente de IA diferente, no qual a extensão necessária não esteja configurada. Se isso acontecer, qualquer etapa de ação que chame a extensão se tornará inválida.

Para corrigir o problema, siga estas etapas:

  1. Se necessário, recrie a extensão usando a mesma especificação OpenAPI que foi usada anteriormente. (Para obter mais informações, consulte “Criação de uma extensão personalizada ”.)

  2. Certifique-se de que a extensão foi adicionada ao assistente de IA. (Para obter mais informações, consulte Adicionar uma extensão ao seu assistente.)

  3. No editor de ações, edite a etapa de ação que chama o ramal e verifique se a chamada para o ramal está configurada corretamente. Se o assistente de IA reconhecer a extensão necessária, a configuração da extensão será restaurada automaticamente.

Se você vir a mensagem Extension not fully configured, isso significa que o criador de assistentes de IA não encontrou a extensão necessária. Clique em “Editar extensão ”.

  1. Na janela de configuração de ramal, selecione o ramal para o qual deseja ligar.

Se o criador de assistentes de IA reconhecer uma extensão disponível que tenha sido criada usando o mesmo documento OpenAPI, aparecerá uma mensagem sugerindo que você selecione essa extensão. No entanto, você pode selecionar qualquer extensão disponível.

  1. Verifique se os valores corretos estão especificados nos campos Operação e Parâmetros.

  2. Clique em Aplicar.

  3. Se você selecionou uma extensão que não é idêntica à que foi usada para criar a ação, talvez seja necessário modificar as etapas subsequentes que acessam as propriedades de resposta da extensão. Verifique todas as etapas posteriores que se referem às propriedades de resposta e certifique-se de que as referências ainda sejam válidas e corretas.