Supabase

Supabase es una plataforma de código abierto Backend-as-a-Service (BaaS) que ofrece una alternativa sólida a Firebase. Incluye una amplia gama de herramientas para el desarrollo de aplicaciones, entre las que se encuentran una base de datos relacional PostgreSQL, autenticación de usuarios, almacenamiento, suscripciones en tiempo real y funciones Edge. Puedes elegir entre alojarlo todo tú mismo o aprovechar sus servicios gestionados en la nube. A diferencia de Firebase, que utiliza una base de datos NoSQL, Supabase aprovecha las ventajas de SQL a través de PostgreSQL, lo que te permite crear relaciones de datos complejas y ejecutar consultas intrincadas.

Para poder enviar SMS a través de seven, solo tiene que realizar unos pequeños ajustes. El proceso le llevará unos diez minutos y no requiere conocimientos técnicos avanzados.

Requisitos

Uso

  1. 1

    Crear secretos

    1. Abra el panel de control de Supabase y vaya a Edge Functions -> Secrets (Funciones de borde -> Secretos).
    2. En la sección Add new secrets (Añadir nuevos secretos), cree un par de claves con el nombre SEVEN_API_KEY y su clave API como valor.
    3. Confirme con Save (Guardar).
  2. 2

    Crear una función de borde

    1. Vaya a Edge Functions -> Functions y haga clic en Deploy a new function -> Via Editor.

    2. Introduzca un nombre significativo, por ejemplo, sms-hook.

    3. Pegue el siguiente código en el editor:

       import 'jsr:@supabase/functions-js/edge-runtime.d.ts';
      
       Deno.serve(async (req) => {
         try {
           const payload = await req.json();
           const { user, sms } = payload;
           const body = {
             text: `Buenos días, su código de verificación es: ${sms.otp}`,
             to: user.phone
           };
           const resp = await fetch('https://gateway.seven.io/api/sms', {
             body: JSON.stringify(body),
             method: 'POST',
             headers: {
               Accept: 'application/json',
               'X-Api-Key': Deno.env.get('SEVEN_API_KEY')
             }
           });
           const response = await resp.json();
           console.log('response', response);
           if (response.success === '100') {
             return new Response(JSON.stringify({
               message: 'SMS enviado correctamente'
             }), {
               status: 200,
               headers: {
                 'Content-Type': 'application/json'
               }
             });
           }
           return new Response(JSON.stringify({
             error: {
               http_code: response.succcess,
               message: `Error al enviar el SMS: ${response.succcess}.`
             }
           }), {
             status: resp.status,
             headers: {
               'Content-Type': 'application/json'
             }
           });
         } catch (err) {
           console.error(err);
           return new Response(JSON.stringify({
             error: {
               http_code: 500,
               message: `Error al enviar el SMS: ${JSON.stringify(err)}`
             }
           }), {
             status: 500,
             headers: {
               'Content-Type': 'application/json'
             }
           });
         }
       });
      
    4. Haga clic en Deploy function (Implementar función).