[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?