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.4k 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.
    • mediathreatM Offline
      mediathreat
      last edited by mediathreat

      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?

      strawberry 3.141S 1 Reply Last reply Reply Quote 0
      • strawberry 3.141S Offline
        strawberry 3.141 Project Sponsor Module Developer @mediathreat
        last edited by

        @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

        mediathreatM 1 Reply Last reply Reply Quote 0
        • mediathreatM Offline
          mediathreat @strawberry 3.141
          last edited by

          @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;

          strawberry 3.141S 1 Reply Last reply Reply Quote 0
          • strawberry 3.141S Offline
            strawberry 3.141 Project Sponsor Module Developer @mediathreat
            last edited by

            @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
            • mediathreatM Offline
              mediathreat
              last edited by

              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 Reply Quote 0
              • G Offline
                gekberlin @mediathreat
                last edited by

                @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

                  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