Hola comunidad SAP.
Esta publicación de blog proporcionará una solución para muchas personas al desarrollar su aplicación comercial.
¿Cómo conectar el destino BTP de SAP en las instalaciones a través de una aplicación NodeJS utilizando el CAP de programación de aplicaciones en la nube?
Las soluciones a estos problemas fueron exitosas para escenarios por Joachim van Praet ya sea creando nuestro propio destino en BTP usando proveedores SMTP como Mailtrapque no era adecuado para nuestro caso de uso porque no es una solución local.
Otra solución proporcionada por Niklas Miroll está abordando el escenario a través de Fundición en la nube BTP usando Java con éxito, pero nuestra pila tecnológica era Javascript / NodeJS.
Para encontrar una solución, he consultado el anuncio de marika marszalkowski y esta sección de el cargo sobre las actualizaciones más recientes me fascinó.
Mandando correos electrónicos
Recientemente lanzamos una funcionalidad experimental para enviar correos electrónicos contra destinos SAP BTP de tipo «CORREO».
En la versión 3, lo haremos disponible para uso productivo.
Puedes encontrar más detalles en el documentación por correo.
Después de leer la documentación y entenderla, creé un nuevo proyecto para probar esta característica. Y con una configuración simple, ahora puede conectar sus servidores de correo locales con éxito gracias a los maravillosos desarrolladores del equipo SAP Cloud SDK.
Avancemos paso a paso para mostrar cómo realizarlo en una aplicación CAP simple desde cero.
Estos son servicios gratuitos en BTP, lo que significa que todos pueden probar lo que hacemos con una cuenta de prueba:
IDE para hacer que nuestra aplicación funcione se está ejecutando en Estudio de aplicaciones empresariales de SAP.
También necesitamos generar claves de instancia de servicio para cada uno de esos servicios para probar nuestra aplicación. Verifique la imagen a continuación sobre cómo crear una clave de instancia de servicio a popa
He generado esos servicios y claves de servicio con una convención de nomenclatura de la siguiente manera. El primer parámetro es el nombre de la instancia del servicio, el segundo parámetro es la clave de la instancia del servicio. Los he creado en BTP como puede ver el servicio de Autorización y Administración de Confianza a continuación, y completé el resto.
correo-xsuaa , correo-xsuaa-clave
correo-destino , correo-destino-clave
conectividad de correo, clave de conectividad de correo
Es muy importante manejar la configuración del destino, en este ejemplo estamos usando el servidor SMTP para Gmail y su configuración es la siguiente en nuestro Destino BTP.
Con la pestaña ‘Nueva propiedad’, puede agregar más propiedades o eliminar las adicionales que no sean necesarias para su configuración. El destino al que está llamando debe ser tipo ‘CORREO’ y debe ser configurado correctamente.
Aquí hay un ejemplo para ti:
Abra Business Application Studio. Haga clic en el panel superior izquierdo resaltado en rojo>Archivo>Nuevo proyecto a partir de plantilla.
Luego elija Proyecto CAP y haga clic en Iniciar.
Establezca la configuración de su proyecto como se muestra a continuación y haga clic en Finalizar.
Tenemos un proyecto vacío con una configuración de red troncal. Una carpeta db vacía, una carpeta srv vacía, un archivo package.json y un archivo mta.yaml que son importantes. Los llenaremos paso a paso.
npm install
npm install @sap-cloud-sdk/mail-client
npm install @sap-cloud-sdk/connectivity
npm install @sap/xssec
npm install passport
El paquete de cliente de correo es el paquete más nuevo de Sap Cloud SDK que proporciona la configuración necesaria para el manejo de correo local. El paquete de conectividad es necesario para manejar la conectividad con el destino local. Xssec y el pasaporte son necesarios para manejar la autenticación.
"cds": {
"requires": {
"[hybrid]": {
"auth": {
"kind": "xsuaa"
},
"mailService": {
"kind": "rest",
"credentials": {
"destination": "mail_destination",
"forwardAuthToken": true
}
}
}
}
}
{
"name": "mail-on-premise",
"version": "1.0.0",
"description": "A simple CAP project.",
"repository": "<Add your repository here>",
"license": "UNLICENSED",
"private": true,
"dependencies": {
"@sap-cloud-sdk/connectivity": "^2.14.0",
"@sap-cloud-sdk/mail-client": "^2.14.0",
"@sap/cds": "^6",
"@sap/xssec": "^3.2.17",
"express": "^4",
"passport": "^0.6.0"
},
"devDependencies": {
"sqlite3": "^5.0.4"
},
"scripts": {
"start": "cds run"
},
"engines": {
"node": "^16.15"
},
"eslintConfig": {
"extends": "eslint:recommended",
"env": {
"es2020": true,
"node": true,
"jest": true,
"mocha": true
},
"globals": {
"SELECT": true,
"INSERT": true,
"UPDATE": true,
"DELETE": true,
"CREATE": true,
"DROP": true,
"CDL": true,
"CQL": true,
"CXL": true,
"cds": true
},
"rules": {
"no-console": "off",
"require-atomic-updates": "off"
}
},
"cds": {
"requires": {
"[hybrid]": {
"auth": {
"kind": "xsuaa"
},
"mailService": {
"kind": "rest",
"credentials": {
"destination": "mail_destination",
"forwardAuthToken": true
}
}
}
}
}
}
namespace test.mail;
action sendmail() returns String;
using test.mail as my from '../db/mail';
service MailService {
action sendmail();
}
const { sendMail } = require('@sap-cloud-sdk/mail-client');
module.exports = srv =>
srv.on("sendmail", async (req) => {
const mailConfig = {
to: 'ahmet.demirlicakmak@aarini.com',
subject: 'Test On Premise Destination',
text: 'If you receive this e-mail, you are successful.'
};
sendMail({ destinationName: 'mail_destination' }, [mailConfig]);
});
### // Check mail
POST http://localhost:4004/mail/sendmail
Content-Type: application/json
{}
Para vincular nuestras instancias de servicio a nuestra aplicación, abra la terminal y vincule cada una de las instancias de servicio a continuación paso a paso.
cds bind -2 mail-xsuaa:mail-xsuaa-key
cds bind -2 mail-destination:mail-destination-key
cds bind -2 mail-connectivity:mail-connectivity-key
Inicie su aplicación con enlaces de instancia de servicio con comando
cds watch --profile hybrid
Vaya a su archivo test.http y haga clic en Enviar solicitud sombreada en gris.
Ahora revise su correo electrónico. Queremos recibir un correo electrónico con el asunto y el texto que haya completado en el archivo mail.js al instante.
Si ha realizado un seguimiento con éxito, ha recibido un correo electrónico de su destino SAP BTP On-Premise utilizando SAP Cloud SDK y CAP.
En resumen, aprendió cómo configurar un proyecto CAP simple, consumir los servicios BTP necesarios en modo híbrido, cómo se usa SAP Cloud SDK con CAP y cómo conectar servidores de correo locales.
Siéntase libre de compartir y comentar esta publicación para solucionar problemas cuando sea necesario. Encuentre los recursos sobre SAP CAP y SAP Cloud SDK en los siguientes temas y asegúrese de seguirlos para recibir notificaciones con los últimos casos de uso:
Para la programación de aplicaciones en la nube, haga clic aquí
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073