[Exemplo] Fazendo solicitaçõ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 certa para você.
Exemplo
A seguir está um exemplo de como você pode aproveitar a fetch biblioteca incorporada ao runtime do Editor de Código para realizar solicitações SOAP.
A input variável deve conter qualquer número em formato de string, como "500". Construímos o corpo XML por meio de um literal de template 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 conterá então 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 {
// Faz a requisição para a API SOAP
const response = await fetch(url, options);
// Extrai o valor de texto da resposta
const xmlResponse = await response.text();
// Monta e faz a correspondência 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?