> For the complete documentation index, see [llms.txt](https://docs.chatlayer.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chatlayer.ai/chatlayer-documentation-pt-br/buildabot/tips-and-best-practices/improve-the-not-understood-block/not-understood-google-search.md).

# Pesquisa do Google para não entendido

E se um usuário fizer uma pergunta que está fora do escopo do bot? Ou e se o seu bot não conseguir entender a entrada do usuário? Uma das coisas que você pode fazer é exibir uma mensagem de bloco de 'não entendido', o que geralmente leva a uma ação de encaminhamento. Isso funciona bem, mas e se houver uma maneira mais amigável para o usuário ainda obter a resposta para sua pergunta sem encaminhar ou sair do bot?

Este tutorial mostrará como criar uma **pesquisa no mecanismo de busca** no seu próprio site usando a entrada do usuário do seu chatbot! Vamos guiá-lo pelas etapas de criação de uma busca no seu site, usando o 'Programmable Search' do Google.

Por exemplo, o usuário pergunta sobre 'horário de funcionamento' no chatbot. No entanto, isso não é reconhecido porque não existe tal intenção no bot. Então, o bot irá para 'não entendido'. Em seguida, será feita uma pesquisa no seu site usando a entrada. O Google pesquisará por '{seu site} + horário de funcionamento' e mostrará os cinco primeiros resultados em um carrossel no chatbot.

![Um exemplo da funcionalidade de consulta de 'Não entendido' usando a documentação da Chatlayer.](/files/ba12908d87d783942c27c68bd66c495b48f5ed0b)

## Google Programmable Search

Com o Google Programmable Search, você pode incluir um mecanismo de busca em um site que você especificar. Usaremos esse recurso gratuito do Google para este tutorial. Primeiro, crie um novo mecanismo de busca [aqui ](https://programmablesearchengine.google.com/cse/create/new)para o seu site. Basta adicionar seu site ou as páginas nas quais você quer pesquisar e clicar em salvar.

Para este tutorial, você precisa da [chave da API do Google ](https://developers.google.com/custom-search/v1/introduction)e do ID do seu mecanismo de busca.

![](/files/f674a7f1ef1d915bb04fd109db182b6f39b46043)

## Bloco de ação: consulta por expressão

Agora podemos colocar a *Consulta* com as informações do mecanismo do Google em um *Ação* bloco no chatbot:

Adicione os seguintes argumentos ao seu bloco de ação:

* NLP: esta é a variável que estamos procurando, ou seja, a entrada fornecida pelo usuário e que resultou em um 'not understood'
* googleAPIKey: isso você recuperou usando o link mencionado acima
* googleEngine: o 'Search engine ID' na página do mecanismo de busca acima

![](/files/4d3fa470246e054ed39a887d280a06cec7408f37)

Depois que isso estiver pronto, adicione o código a seguir no mesmo bloco de ação. Na linha 15, cole uma imagem de fallback ali, por exemplo o logotipo da sua empresa. Essa imagem será exibida no carrossel se a busca não retornar uma imagem.

```javascript
const { nlp, googleEngine, googleAPIKey } = args;

const { expression } = nlp;

const url = `https://www.googleapis.com/customsearch/v1?key=${googleAPIKey}&cx=${googleEngine}&q=${expression}`;

const searchResult = await fetch(url).then(res => res.json());

const elements = _.get(searchResult, 'items', [])
  .slice(0, 5)
  .map(result => {
    const imageUrl = _.get(
      result,
      'pagemap.cse_thumbnail[0].src',
      'https:// {your image here} .png'
    );
    return {
      title: result.title,
      subTitle: result.snippet,
      ...(imageUrl ? { imageUrl } : {}),
      buttons: [
        {
          title: result.title,
          type: 'web_url',
          url: result.link,
          payload: {},
        },
      ],
    };
  });

const builder = ChatlayerResponseBuilder();

if (elements.length) {
  builder.addCarousel(elements);
} else {
  builder.addMessage('Nada encontrado!');
}

builder.send();

```

Esse bloco de código já cuida do carrossel, então não há necessidade de adicionar um bloco de Mensagem extra. Agora a última coisa a fazer é vinculá-lo à mensagem do bot 'Não entendido':

* Altere a mensagem de texto com {internal.nlp.expression}, para que a entrada do usuário seja exibida na mensagem de 'não entendido'
* Adicione um 'Ir para' para vincular o bloco de ação Consulta ao 'Não entendido'

![](/files/5081fdc3c424a2aee3cbcf75f23e3624b17cadfb)

Você também pode adicionar a mensagem de encaminhamento após a consulta, para garantir que o usuário possa obter a resposta de um agente humano se a resposta não for suficiente.

E é isso! Você acabou de criar uma mensagem de 'não entendido' mais amigável para o usuário!


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.chatlayer.ai/chatlayer-documentation-pt-br/buildabot/tips-and-best-practices/improve-the-not-understood-block/not-understood-google-search.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
