[Exemplo] Realizando requisições SOAP

Você pode usar o Ação de API 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 é a ferramenta para você.

Exemplo

O seguinte é um exemplo de como você pode aproveitar o fetch biblioteca incorporada no runtime do Editor de Código para executar requisições SOAP.

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 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.

// 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();
}

Atualizado

Isto foi útil?