Skip to content

Instantly share code, notes, and snippets.

@lotib
Forked from dvdvck/sms-node.js
Created March 24, 2018 13:46
Show Gist options
  • Save lotib/e386a71fcd79e7ae99b83553e5707f63 to your computer and use it in GitHub Desktop.
Save lotib/e386a71fcd79e7ae99b83553e5707f63 to your computer and use it in GitHub Desktop.

Revisions

  1. @dvdvck dvdvck revised this gist Apr 8, 2017. No changes.
  2. @dvdvck dvdvck created this gist Apr 8, 2017.
    57 changes: 57 additions & 0 deletions sms-node.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,57 @@
    'use strict';
    const DBus = require('dbus');
    const co = require('co');
    let bus = DBus.getBus('system');
    let mm = bus.getInterface.bind(bus, 'org.freedesktop.ModemManager1');

    co(function*(){
    let messaging = yield new Promise((res, rej)=>{
    mm('/org/freedesktop/ModemManager1', 'org.freedesktop.DBus.ObjectManager', (err, manager)=>{
    if(err){ rej(err); return }

    manager.GetManagedObjects((err, modems)=>{
    if(err){ rej(err); return }

    let pathModems = Object.keys(modems);
    mm(pathModems[0], 'org.freedesktop.ModemManager1.Modem.Messaging', (err, messaging)=>{
    if(err){ rej(err); return }
    res(messaging);
    });
    });
    });
    });

    let SMSpath = yield new Promise((res, rej)=>{
    messaging.Create({number:'5512345678', text:'Hello there/Hola ahí'}, (err, SMSpath)=>{
    if(err){ rej(err); return }
    res(SMSpath);
    });
    });

    mm(SMSpath, 'org.freedesktop.ModemManager1.Sms', (err, sms)=>{
    if(err){ throw new Error(err) }
    sms.Send();
    });

    return new Promise((res, rej)=>{
    mm(SMSpath, 'org.freedesktop.DBus.Properties', (err, sms)=>{
    if(err){ rej(err); return }
    sms.on('PropertiesChanged', (iface, changed)=>{
    console.log(changed);
    if(changed.State == 5){
    res();
    }else{
    rej(new Error('Envío no completado'+ changed));
    }
    });
    });
    });
    })
    .then(_=>{
    console.log('Eso fue todo amigos')
    process.exit();
    })
    .catch(err=>{
    console.error(err);
    process.exit();
    });