• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Attempt to Rebuild MMM-Slack with media handling, includes dont seem to load

Scheduled Pinned Locked Moved Development
7 Posts 4 Posters 2.2k Views 4 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    mediathreat
    last edited by mediathreat Apr 9, 2018, 12:14 AM Apr 8, 2018, 9:08 PM

    I’m banging my head to rewrite the MMM-Slack module to unfurl links and media shared on slack onto the screen using the most current version of @slack node sdk. My first test code run from node seems to work lovely:

    var NodeHelper = require('node_helper');
    var RtmClient = require('@slack/client').RTMClient;
    // Not sure we need this:
    // var CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;
    // These hold the variables for us to extra the message data
    
    // at some point this needs to come from the config
    var rtm = new RtmClient('xxxxxxKEY_REDACTEDxxxxx');
    console.log(RtmClient);
    rtm.start();
    
    let channel;
    
    rtm.on('authenticated', (rtmStartData) => {
      console.log('connected');
    });
    
    rtm.on('message', function(message) {
        console.log(message.message);
    });
    
    
    rtm.on('slack_event', function(event) {
        console.log(event);
     });
    

    i get a nice output of the messages from slack in JSON, however when i use similiar code to send notifications to the new module in node_helper.js. rtm is never defined! my debug has led me to it not even being defined.included at the top. Here’s my code for the stripped version:

    var NodeHelper = require("node_helper");
    var RtmClient = require('@slack/client').RtmClient;
    // Not sure we need this:
    var CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;
    var userName = '';
    var messageText = '';
    var messages = [];
    
    module.exports = NodeHelper.create({
            start: function () {
                    //this.config = {}
            },
    
            socketNotificationReceived: function (notification, payload) {
                    if (notification === 'START_CONNECTION') {
                            // startslackconnects sends config to front end
                            this.config = payload;
                            //this.sendSocketNotification(notification , payload);
                            this.startSlackConnection(payload);
                    }
            },
    
            startSlackConnection: function(config) {
                    var self = this;
                    var token = config.config.slackToken;
                    var rtm = new RtmClient('xxxREDACTED KEY');
                   //  this.sendSocketNotification('SIGN IN' , rtm);  this shows NULL on the front end!
    
                    rtm.start();
    
                    let channel;
    
                    rtm.on('authenticated', (rtmStartData) => {
                            this.sendSocketNotifcation('AUTH' , "CONNECTED");
                    });
    
                    rtm.on('message', function(message) {
                            this.sendSocketNotifcation('SLACK_DATA' , message);
                    });
                  rtm.on('slack_event',  function(event) {
    
                            this.sendSocketNotifcation('SLACK_DATA' , event);
                    });
    
            }
    
    
    });
    
    

    I did noticed that a directory structure for the updated @slack/client is different than the one from the original module (and it doesnt have a index.js in the top directory. I dont know if that has anything to do with it. I have the old version in the original MMM-Slack directory and that works fine. As I mentioned before when i run the version above from the command line , it works fine - defining rtm (RtmClient) and using it to connect and pull data, but once i try the same code in node_helper.js as the second piece of code… no go. rtm is blank and no data is found.

    It sends all data to the front end sucessfully wether its the payload is full or not, I’m just coming up Null or worse with trying to include the slack/client

    Any ideas where I can start looking to fix this?

    S 1 Reply Last reply Apr 8, 2018, 9:37 PM Reply Quote 0
    • S Offline
      strawberry 3.141 Project Sponsor Module Developer @mediathreat
      last edited by Apr 8, 2018, 9:37 PM

      @mediathreat just from looking at the code there is something missing (this should result in an error)

      rtm.on('message', function(message) {
        this.sendSocketNotifcation('SLACK_DATA' , message);
      });
      
        this.sendSocketNotifcation('SLACK_DATA' , event);
      });
      

      it should be, look at slack event and use arrow functions to keep your scope to be able to call the notification method

      rtm.on('message', (message) => {
        this.sendSocketNotifcation('SLACK_DATA' , message);
      });
      rtm.on('slack_event', (event) => {
        this.sendSocketNotifcation('SLACK_DATA' , event);
      });
      

      Please create a github issue if you need help, so I can keep track

      M 1 Reply Last reply Apr 9, 2018, 12:09 AM Reply Quote 0
      • M Offline
        mediathreat @strawberry 3.141
        last edited by Apr 9, 2018, 12:09 AM

        @strawberry-3.141 oops thanks for that, yeah- i cut and paste in two sections and forgot that part.

        Is there a way I can check to debug why it wont load the

        var RtmClient = require(‘@slack/client’).RTMClient;

        S 1 Reply Last reply Apr 9, 2018, 9:47 PM Reply Quote 0
        • S Offline
          strawberry 3.141 Project Sponsor Module Developer @mediathreat
          last edited by Apr 9, 2018, 9:47 PM

          @mediathreat dou you have it in your local node_modules folder?

          Please create a github issue if you need help, so I can keep track

          1 Reply Last reply Reply Quote 0
          • M Offline
            mediathreat
            last edited by Apr 10, 2018, 7:10 PM

            Actually the fix above got the whole thing working and I was able to strip the code down quite a bit with the new simpler function calls. Thank you! I hope to have a updated module posted to the forum soon from github

            @strawberry-3.141 said in Attempt to Rebuild MMM-Slack with media handling, includes dont seem to load:

            @mediathreat dou you have it in your local node_modules folder?

            G 1 Reply Last reply Apr 12, 2018, 6:08 PM Reply Quote 0
            • G Offline
              gekberlin @mediathreat
              last edited by Apr 12, 2018, 6:08 PM

              @mediathreat That sound’s great and i’m looking forward for your module :)

              1 Reply Last reply Reply Quote 0
              • M Offline
                maxbachmann
                last edited by May 16, 2018, 6:04 PM

                a slack module sounds great

                1 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Enjoying MagicMirror? Please consider a donation!
                MagicMirror created by Michael Teeuw.
                Forum managed by Sam, technical setup by Karsten.
                This forum is using NodeBB as its core | Contributors
                Contact | Privacy Policy