# \[Exemplo] Fazendo requisições SOAP

Você pode usar o [Ação de API](/chatlayer-documentation-pt-br/integrateandcode/custom-back-end-integrations.md#api-plugin) para fazer chamadas de API baseadas em REST. Se a API com a qual você está integrando for baseada em SOAP, o[ Editor de Código](/chatlayer-documentation-pt-br/integrateandcode/code-action.md) é a ferramenta para você.&#x20;

### Exemplo

O seguinte é um exemplo de como você pode aproveitar o [fetch ](/chatlayer-documentation-pt-br/integrateandcode/code-action.md#fetch)biblioteca incorporada no runtime do Editor de Código para executar requisições SOAP.&#x20;

O `entrada`  variável deve conter qualquer número em formato de string, como "500". Construímos o corpo XML por meio de um [template literal](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals?retiredLocale=nl) e substituímos o valor de entrada. Em seguida, extraímos o valor da resposta por meio de Regex. A mensagem de saída no chat então conterá o número por extenso, "quinhentos" no caso do nosso exemplo.

```javascript
// Fazemos uso da seguinte API pública
// https://documenter.getpostman.com/view/8854915/Szf26WHn

const { input } = args;

const url = "https://www.dataaccess.com/webservicesserver/NumberConversion.wso";

// O corpo da requisição
const body = `<?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
      <NumberToWords xmlns="http://www.dataaccess.com/webservicesserver/">
        <ubiNum>${input}</ubiNum>
      </NumberToWords>
    </soap:Body>
  </soap:Envelope>
`;

const headers = {
  // Cabeçalhos adicionais podem ser necessários
  // dependendo da implementação do seu servidor
  "Content-Type": "text/xml; charset=utf-8",
};

const options = { method: "POST", headers, body };

const chatlayer = ChatlayerResponseBuilder();

try {
  // Execute a requisição para a API SOAP
  const response = await fetch(url, options);
  
  // Extraia o valor de texto da resposta
  const xmlResponse = await response.text();
  
  // Construa e faça o match da RegExp para extrair dados da resposta
  const regExp = new RegExp(
    "<m:NumberToWordsResult>(.*?)</m:NumberToWordsResult>"
  );
  const match = xmlResponse.match(regExp);
  if (!match) {
    throw new Error("Não foi possível encontrar o número fornecido");
  }
  const result = match[1];
  chatlayer.addMessage(result);
} catch (ex) {
  chatlayer.addMessage(ex.toString());
} finally {
  chatlayer.send();
}
```


---

# Agent Instructions: 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:

```
GET https://docs.chatlayer.ai/chatlayer-documentation-pt-br/integrateandcode/code-action/making-soap-requests.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
