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.

    MMM-SpotifyControl . Control your Spotify music player using Mk2 assistant.

    Scheduled Pinned Locked Moved Entertainment
    38 Posts 4 Posters 20.3k Views 9 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.
    • Cr4z33C Offline
      Cr4z33 @ejay-ibm
      last edited by Cr4z33

      @ejay-ibm said in MMM-SpotifyControl . Control your Spotify music player using Mk2 assistant.:

      with your free account : what does it do when you say “bob marley on spotify” ?

      Well considering that my (mirror) Google Assistant is set to Italian language it simply replies saying it doesn’t know what I want to do.

      On the other hand if I say (in Italian) ‘Hey Google play music on Spotify’ on my living room’s Google Home Mini it works flawlessly.

      Actually tell me how is your module supposed to accept that command if we only entered PREV_SONG, PAUSE_SPOTIFY, RESUME_SPOTIFY and PLAY_NEXT_SPOTIFY?
      I mean I see no PLAY command there? :smiling_face_with_open_mouth_cold_sweat:

      Also aren’t these transcriptionHook entries supposed to be entered into quotation marks?
      I ask because I’ve got other entries there and they are ALL into quotation marks.

      ejay-ibmE 1 Reply Last reply Reply Quote 0
      • ejay-ibmE Offline
        ejay-ibm Project Sponsor Module Developer @Cr4z33
        last edited by ejay-ibm

        @Cr4z33
        Ok I got your point Google assisant and sdk act differently .

        What happen when you say something to your assisant:
        “Play bob marley on spotify”
        It search like you would do in the google search bar
        and return a result.
        That is your payload for the play … spotify command.
        Note that this command is the only one to not have a hook .

        So what it does is returning the first result from a google search .

        if I type “bob marley spotify” in my search bar i’m getting :
        Bob Marley & The Wailers on Spotify
        https://open.spotify.com/artist/2QsynagSdAqZj3U9HgDzjD

        That is what is expected from the payload , as we build later the api call from this url .

        I would try first to google search for "an artist on spotify in italian’ and see what it return they say to your assisant in italian the same. Usually the assistant quickly display what it find from the search you should see an url like :
        https://open.spotify.com/(artist, track or playlist)/with an Id here .

        regarding the syntax Quote or double quote doesn’t matter in js.

        Both

         transcriptionHook: {
                PREV_SONG: {
                   pattern: "previous song",   
                   command: "PREV_SONG"
              },
        or 
        transcriptionHook: {
                PREV_SONG: {
                   pattern: 'previous song',   
                   command: 'PREV_SONG'
              },
        
        

        will work the same.

        Hope this helps

        Ejay

        Cr4z33C 1 Reply Last reply Reply Quote 0
        • Cr4z33C Offline
          Cr4z33 @ejay-ibm
          last edited by

          @ejay-ibm said in MMM-SpotifyControl . Control your Spotify music player using Mk2 assistant.:

          @Cr4z33
          Both
          transcriptionHook: {
          PREV_SONG: {
          pattern: “previous song”,
          command: “PREV_SONG”
          },
          or
          transcriptionHook: {
          PREV_SONG: {
          pattern: ‘previous song’,
          command: ‘PREV_SONG’
          },

          will work the same.

          Hope this helps

          Ejay

          Sorry you misunderstood me. :smiling_face_with_open_mouth_cold_sweat:

          What I meant is don’t we have to put ie. PREV_SONG into quotation marks like

          "PREV_SONG": {
          

          ?

          As for the Google Assistant test you are asking me are you referring to the mirror module or to my Google Home Mini device?

          ejay-ibmE 1 Reply Last reply Reply Quote 0
          • ejay-ibmE Offline
            ejay-ibm Project Sponsor Module Developer @Cr4z33
            last edited by

            @Cr4z33
            don’t use your google home device it’s not comparable .
            I have one as well at home and it’s working completely differently, otherwise, I would not have to write this module. So i’m refering to what interest us your Mk2 assistant on your mirror .

            ejay

            1 Reply Last reply Reply Quote 0
            • Cr4z33C Offline
              Cr4z33
              last edited by Cr4z33

              It says something like ‘I am sorry I don’t know how to help you, but I am learning new things day by day’.

              I am 100% sure that all the API/token details are correct and still valid (if I run MMM-NowPlayingOnSpotify it works flawlessly).

              ejay-ibmE 1 Reply Last reply Reply Quote 0
              • ejay-ibmE Offline
                ejay-ibm Project Sponsor Module Developer @Cr4z33
                last edited by ejay-ibm

                @Cr4z33
                What Are you saying exactly ?
                What is the result of this if you try to type in in your google search bar ?
                did you simply try : “bob marley spotify” ?
                what is your search result ? in google ?

                Cr4z33C 1 Reply Last reply Reply Quote 0
                • Cr4z33C Offline
                  Cr4z33 @ejay-ibm
                  last edited by

                  @ejay-ibm
                  I am saying that:

                  • If I say in Italian to MMM-AssistantMk2 play Bob Marley on Spotify then Google Assistant replies (by voice) that he doesn’t know how to help me
                  • If I search for bob marley spotify on Google then the first result I get is this link
                  ejay-ibmE 1 Reply Last reply Reply Quote 0
                  • ejay-ibmE Offline
                    ejay-ibm Project Sponsor Module Developer @Cr4z33
                    last edited by

                    @Cr4z33 try to just say “Bob Marley Spotify” so there’s no language interaction.

                    Cr4z33C 2 Replies Last reply Reply Quote 0
                    • Cr4z33C Offline
                      Cr4z33 @ejay-ibm
                      last edited by Cr4z33

                      @ejay-ibm just tried and again GA says he apologizes, but he doesn’t know right now how to help me.

                      1 Reply Last reply Reply Quote 0
                      • Cr4z33C Offline
                        Cr4z33 @ejay-ibm
                        last edited by Cr4z33

                        @ejay-ibm perhaps it doesn’t work (yet) when using GA in another language than English?

                        ejay-ibmE 1 Reply Last reply Reply Quote 0
                        • ejay-ibmE Offline
                          ejay-ibm Project Sponsor Module Developer @Cr4z33
                          last edited by

                          @Cr4z33 Well i’m using it in french … so I don’t think so .
                          I need to think a bit why your payload is incorrect.

                          Cr4z33C F 2 Replies Last reply Reply Quote 0
                          • Cr4z33C Offline
                            Cr4z33 @ejay-ibm
                            last edited by

                            @ejay-ibm sure take your time mate as I might probably not resume testing before tomorrow afternoon. ;)

                            1 Reply Last reply Reply Quote 0
                            • F Offline
                              F17MC @ejay-ibm
                              last edited by

                              @ejay-ibm I thought your module only works to play/stop/next/previous. I have tried run “Bob Marley Spotify” and nothing happens. With other artist the same.
                              If I can test something…
                              Pd: Spanish + Spotify premium

                              ejay-ibmE 1 Reply Last reply Reply Quote 0
                              • ejay-ibmE Offline
                                ejay-ibm Project Sponsor Module Developer @F17MC
                                last edited by

                                @F17MC @Cr4z33
                                I don’t think the issue is with the module but with what the assistant return to the module .

                                the module is expecting something like “”(open.spotify.com - https://open.spotify.com/artist/2Gkz5N7rWiCE3jlCgsw1yp""

                                So i’m not getting why your assistant doesn’t understand what to search for.

                                I’ll continue digging

                                Ejay

                                Cr4z33C 1 Reply Last reply Reply Quote 1
                                • Cr4z33C Offline
                                  Cr4z33 @ejay-ibm
                                  last edited by

                                  @ejay-ibm OK thanks I might ask also @Sean tomorrow to see if he knows anything we don’t. :D

                                  ejay-ibmE 1 Reply Last reply Reply Quote 0
                                  • ejay-ibmE Offline
                                    ejay-ibm Project Sponsor Module Developer @Cr4z33
                                    last edited by ejay-ibm

                                    @Cr4z33 I’m already working on it with @Sean ;)

                                    quick question : if you just say “micheal jackson smooth criminal”
                                    does it start playing youtube ?
                                    if yes then just try “micheal jackson smooth criminal spotify”
                                    and let me know

                                    If that doesn’t work I’ll ask you some patience so I can implement the spotify search function directly in my module and not from the assistant. We will just use a hook in the assisant .

                                    Ejay

                                    F Cr4z33C 2 Replies Last reply Reply Quote 0
                                    • F Offline
                                      F17MC @ejay-ibm
                                      last edited by F17MC

                                      @ejay-ibm yes, with YouTube it works. But with Spotify no. I try with “artist + song Spotify”, “artist + song on Spotify” etc. Always run the video in YouTube.

                                      ejay-ibmE 1 Reply Last reply Reply Quote 0
                                      • ejay-ibmE Offline
                                        ejay-ibm Project Sponsor Module Developer @F17MC
                                        last edited by

                                        @F17MC That is interesting … that mean the result of the assistant research never bring a spotify url but a youtube one . a openspotify url is what the module expect to work .

                                        So we know now that under some circumpstance the module doesn’t get the right payload from assistant to work.
                                        Thanks for testing and reporting this guys .

                                        I’ll work with sean to implement a search function directly with the spotify APIs call . With that we will make the search directly on spotify ( and not on google ) so we will bypass this issue .

                                        I’m wondering where the difference is between you and I, because it work fine here and as well another German guy Mantha who is the original code creator .

                                        Anyway, there’s no problem … only solution .

                                        I’ll keep you informed once the module is updated .

                                        Ejay .

                                        F 1 Reply Last reply Reply Quote 0
                                        • F Offline
                                          F17MC @ejay-ibm
                                          last edited by F17MC

                                          @ejay-ibm
                                          I tried again and I receive this:

                                          [AMK2] end-of-utterance
                                          [AMK2] Transcription: los planetas Spotify  --- Done: true
                                          [AMK2] openSpotify found: https://open.spotify.com/artist/0N1TIXCk9Q9JbEPXQDclEL
                                          { requestId: '5c8b16da-0000-2878-a45c-...' } { profileFile: 'default.json', lang: 'es-ES' }
                                          [AMK2] Device Action: { requestId: '5c8b16da-0000-2878-a45c-...' }
                                          [AMK2] Assistant Text Response: 
                                          [HOTWORD] begins listening.
                                          Refreshed access token because it has expired. Expired at: 11:26:53 now is: 11:27:56
                                          Error while refreshing:
                                          { StatusCodeError: 404 - {"error":{"status":404,"message":"Device not found"}}
                                              at new StatusCodeError (/home/pi/MagicMirror/modules/MMM-SpotifyControl/node_modules/request-promise-core/lib/errors.js:32:15)
                                              at Request.plumbing.callback (/home/pi/MagicMirror/modules/MMM-SpotifyControl/node_modules/request-promise-core/lib/plumbing.js:104:33)
                                              at Request.RP$callback [as _callback] (/home/pi/MagicMirror/modules/MMM-SpotifyControl/node_modules/request-promise-core/lib/plumbing.js:46:31)
                                              at Request.self.callback (/home/pi/MagicMirror/modules/MMM-SpotifyControl/node_modules/request/request.js:185:22)
                                              at emitTwo (events.js:126:13)
                                              at Request.emit (events.js:214:7)
                                              at Request.<anonymous> (/home/pi/MagicMirror/modules/MMM-SpotifyControl/node_modules/request/request.js:1161:10)
                                              at emitOne (events.js:116:13)
                                              at Request.emit (events.js:211:7)
                                              at IncomingMessage.<anonymous> (/home/pi/MagicMirror/modules/MMM-SpotifyControl/node_modules/request/request.js:1083:12)
                                            name: 'StatusCodeError',
                                            statusCode: 404,
                                            message: '404 - {"error":{"status":404,"message":"Device not found"}}',
                                            error: { error: { status: 404, message: 'Device not found' } },
                                            options: 
                                             { url: 'https://api.spotify.com/v1/me/player/play',
                                               body: 
                                                { context_uri: 'spotify:artist:0N1TIXCk9Q9JbEPXQDclEL',
                                                  position_ms: 0 },
                                               qs: { device_id: 'a8caee9b12196a964f5a...' },
                                               headers: 
                                                { Authorization: 'Bearer BQDuIGXWvxdIB5T...' },
                                               json: true,
                                               method: 'PUT',
                                               callback: [Function: RP$callback],
                                               transform: undefined,
                                               simple: true,
                                               resolveWithFullResponse: false,
                                               transform2xxOnly: false },
                                            response: 
                                             IncomingMessage {
                                               _readableState: 
                                                ReadableState {
                                                  objectMode: false,
                                                  highWaterMark: 16384,
                                                  buffer: [Object],
                                                  length: 0,
                                                  pipes: null,
                                                  pipesCount: 0,
                                                  flowing: true,
                                                  ended: true,
                                                  endEmitted: true,
                                                  reading: false,
                                                  sync: true,
                                                  needReadable: false,
                                                  emittedReadable: false,
                                                  readableListening: false,
                                                  resumeScheduled: false,
                                                  destroyed: false,
                                                  defaultEncoding: 'utf8',
                                                  awaitDrain: 0,
                                                  readingMore: false,
                                                  decoder: null,
                                                  encoding: null },
                                               readable: false,
                                               domain: null,
                                               _events: 
                                                { end: [Array],
                                                  close: [Array],
                                                  data: [Function],
                                                  error: [Function] },
                                               _eventsCount: 4,
                                               _maxListeners: undefined,
                                               socket: 
                                                TLSSocket {
                                                  _tlsOptions: [Object],
                                                  _secureEstablished: true,
                                                  _securePending: false,
                                                  _newSessionPending: false,
                                                  _controlReleased: true,
                                                  _SNICallback: null,
                                                  servername: null,
                                                  npnProtocol: false,
                                                  alpnProtocol: false,
                                                  authorized: true,
                                                  authorizationError: null,
                                                  encrypted: true,
                                                  _events: [Object],
                                                  _eventsCount: 9,
                                                  connecting: false,
                                                  _hadError: false,
                                                  _handle: null,
                                                  _parent: null,
                                                  _host: 'api.spotify.com',
                                                  _readableState: [Object],
                                                  readable: false,
                                                  domain: null,
                                                  _maxListeners: undefined,
                                                  _writableState: [Object],
                                                  writable: false,
                                                  allowHalfOpen: false,
                                                  _bytesDispatched: 479,
                                                  _sockname: null,
                                                  _pendingData: null,
                                                  _pendingEncoding: '',
                                                  server: undefined,
                                                  _server: null,
                                                  ssl: null,
                                                  _requestCert: true,
                                                  _rejectUnauthorized: true,
                                                  parser: null,
                                                  _httpMessage: [Object],
                                                  read: [Function],
                                                  _consuming: true,
                                                  _idleNext: null,
                                                  _idlePrev: null,
                                                  _idleTimeout: -1,
                                                  [Symbol(asyncId)]: 7397,
                                                  [Symbol(bytesRead)]: 555 },
                                               connection: 
                                                TLSSocket {
                                                  _tlsOptions: [Object],
                                                  _secureEstablished: true,
                                                  _securePending: false,
                                                  _newSessionPending: false,
                                                  _controlReleased: true,
                                                  _SNICallback: null,
                                                  servername: null,
                                                  npnProtocol: false,
                                                  alpnProtocol: false,
                                                  authorized: true,
                                                  authorizationError: null,
                                                  encrypted: true,
                                                  _events: [Object],
                                                  _eventsCount: 9,
                                                  connecting: false,
                                                  _hadError: false,
                                                  _handle: null,
                                                  _parent: null,
                                                  _host: 'api.spotify.com',
                                                  _readableState: [Object],
                                                  readable: false,
                                                  domain: null,
                                                  _maxListeners: undefined,
                                                  _writableState: [Object],
                                                  writable: false,
                                                  allowHalfOpen: false,
                                                  _bytesDispatched: 479,
                                                  _sockname: null,
                                                  _pendingData: null,
                                                  _pendingEncoding: '',
                                                  server: undefined,
                                                  _server: null,
                                                  ssl: null,
                                                  _requestCert: true,
                                                  _rejectUnauthorized: true,
                                                  parser: null,
                                                  _httpMessage: [Object],
                                                  read: [Function],
                                                  _consuming: true,
                                                  _idleNext: null,
                                                  _idlePrev: null,
                                                  _idleTimeout: -1,
                                                  [Symbol(asyncId)]: 7397,
                                                  [Symbol(bytesRead)]: 555 },
                                               httpVersionMajor: 1,
                                               httpVersionMinor: 1,
                                               httpVersion: '1.1',
                                               complete: true,
                                               headers: 
                                                { 'content-type': 'application/json; charset=utf-8',
                                                  'cache-control': 'private, max-age=0',
                                                  'access-control-allow-origin': '*',
                                                  'access-control-allow-headers': 'Accept, Authorization, Origin, Content-Type, Retry-After',
                                                  'access-control-allow-methods': 'GET, POST, OPTIONS, PUT, DELETE, PATCH',
                                                  'access-control-allow-credentials': 'true',
                                                  'access-control-max-age': '604800',
                                                  'content-length': '76',
                                                  date: 'Fri, 15 Mar 2019 10:27:56 GMT',
                                                  via: '1.1 google',
                                                  'alt-svc': 'clear',
                                                  connection: 'close' },
                                               rawHeaders: 
                                                [ 'Content-Type',
                                                  'application/json; charset=utf-8',
                                                  'Cache-Control',
                                                  'private, max-age=0',
                                                  'Access-Control-Allow-Origin',
                                                  '*',
                                                  'Access-Control-Allow-Headers',
                                                  'Accept, Authorization, Origin, Content-Type, Retry-After',
                                                  'Access-Control-Allow-Methods',
                                                  'GET, POST, OPTIONS, PUT, DELETE, PATCH',
                                                  'Access-Control-Allow-Credentials',
                                                  'true',
                                                  'Access-Control-Max-Age',
                                                  '604800',
                                                  'Content-Length',
                                                  '76',
                                                  'Date',
                                                  'Fri, 15 Mar 2019 10:27:56 GMT',
                                                  'Via',
                                                  '1.1 google',
                                                  'Alt-Svc',
                                                  'clear',
                                                  'Connection',
                                                  'close' ],
                                               trailers: {},
                                               rawTrailers: [],
                                               upgrade: false,
                                               url: '',
                                               method: null,
                                               statusCode: 404,
                                               statusMessage: 'Not Found',
                                               client: 
                                                TLSSocket {
                                                  _tlsOptions: [Object],
                                                  _secureEstablished: true,
                                                  _securePending: false,
                                                  _newSessionPending: false,
                                                  _controlReleased: true,
                                                  _SNICallback: null,
                                                  servername: null,
                                                  npnProtocol: false,
                                                  alpnProtocol: false,
                                                  authorized: true,
                                                  authorizationError: null,
                                                  encrypted: true,
                                                  _events: [Object],
                                                  _eventsCount: 9,
                                                  connecting: false,
                                                  _hadError: false,
                                                  _handle: null,
                                                  _parent: null,
                                                  _host: 'api.spotify.com',
                                                  _readableState: [Object],
                                                  readable: false,
                                                  domain: null,
                                                  _maxListeners: undefined,
                                                  _writableState: [Object],
                                                  writable: false,
                                                  allowHalfOpen: false,
                                                  _bytesDispatched: 479,
                                                  _sockname: null,
                                                  _pendingData: null,
                                                  _pendingEncoding: '',
                                                  server: undefined,
                                                  _server: null,
                                                  ssl: null,
                                                  _requestCert: true,
                                                  _rejectUnauthorized: true,
                                                  parser: null,
                                                  _httpMessage: [Object],
                                                  read: [Function],
                                                  _consuming: true,
                                                  _idleNext: null,
                                                  _idlePrev: null,
                                                  _idleTimeout: -1,
                                                  [Symbol(asyncId)]: 7397,
                                                  [Symbol(bytesRead)]: 555 },
                                               _consuming: true,
                                               _dumped: false,
                                               req: 
                                                ClientRequest {
                                                  domain: null,
                                                  _events: [Object],
                                                  _eventsCount: 5,
                                                  _maxListeners: undefined,
                                                  output: [],
                                                  outputEncodings: [],
                                                  outputCallbacks: [],
                                                  outputSize: 0,
                                                  writable: true,
                                                  _last: true,
                                                  upgrading: false,
                                                  chunkedEncoding: false,
                                                  shouldKeepAlive: false,
                                                  useChunkedEncodingByDefault: true,
                                                  sendDate: false,
                                                  _removedConnection: false,
                                                  _removedContLen: false,
                                                  _removedTE: false,
                                                  _contentLength: null,
                                                  _hasBody: true,
                                                  _trailer: '',
                                                  finished: true,
                                                  _headerSent: true,
                                                  socket: [Object],
                                                  connection: [Object],
                                                  _header: 'PUT /v1/me/player/play?device_id=a8caee9b1219... HTTP/1.1\r\nAuthorization: Bearer BQDuIGXWvxdIB5TBbyg...\r\nhost: api.spotify.com\r\naccept: application/json\r\ncontent-type: application/json\r\ncontent-length: 71\r\nConnection: close\r\n\r\n',
                                                  _onPendingData: [Function: noopPendingOutput],
                                                  agent: [Object],
                                                  socketPath: undefined,
                                                  timeout: undefined,
                                                  method: 'PUT',
                                                  path: '/v1/me/player/play?device_id=a8caee9b12196...',
                                                  _ended: true,
                                                  res: [Circular],
                                                  aborted: undefined,
                                                  timeoutCb: null,
                                                  upgradeOrConnect: false,
                                                  parser: null,
                                                  maxHeadersCount: null,
                                                  [Symbol(outHeadersKey)]: [Object] },
                                               request: 
                                                Request {
                                                  domain: null,
                                                  _events: [Object],
                                                  _eventsCount: 5,
                                                  _maxListeners: undefined,
                                                  body: '{"context_uri":"spotify:artist:0N1TIXCk9Q9JbEPXQDclEL","position_ms":0}',
                                                  headers: [Object],
                                                  method: 'PUT',
                                                  readable: true,
                                                  writable: true,
                                                  explicitMethod: true,
                                                  _qs: [Object],
                                                  _auth: [Object],
                                                  _oauth: [Object],
                                                  _multipart: [Object],
                                                  _redirect: [Object],
                                                  _tunnel: [Object],
                                                  _rp_resolve: [Function],
                                                  _rp_reject: [Function],
                                                  _rp_promise: [Object],
                                                  _rp_callbackOrig: undefined,
                                                  callback: [Function],
                                                  _rp_options: [Object],
                                                  setHeader: [Function],
                                                  hasHeader: [Function],
                                                  getHeader: [Function],
                                                  removeHeader: [Function],
                                                  localAddress: undefined,
                                                  pool: {},
                                                  dests: [],
                                                  __isRequestRequest: true,
                                                  _callback: [Function: RP$callback],
                                                  uri: [Object],
                                                  proxy: null,
                                                  tunnel: true,
                                                  setHost: true,
                                                  originalCookieHeader: undefined,
                                                  _disableCookies: true,
                                                  _jar: undefined,
                                                  port: 443,
                                                  host: 'api.spotify.com',
                                                  url: [Object],
                                                  path: '/v1/me/player/play?device_id=a8caee9b12196...',
                                                  _json: true,
                                                  httpModule: [Object],
                                                  agentClass: [Object],
                                                  agent: [Object],
                                                  _started: true,
                                                  href: 'https://api.spotify.com/v1/me/player/play?device_id=a8caee9b12196a96...',
                                                  req: [Object],
                                                  ntick: true,
                                                  response: [Circular],
                                                  originalHost: 'api.spotify.com',
                                                  originalHostHeaderName: 'host',
                                                  responseContent: [Circular],
                                                  _destdata: true,
                                                  _ended: true,
                                                  _callbackCalled: true },
                                               toJSON: [Function: responseToJSON],
                                               caseless: Caseless { dict: [Object] },
                                               read: [Function],
                                               body: { error: [Object] } } }
                                          
                                          
                                          

                                          The result is perfect.
                                          But I get error 404, Device not found. I try while I listen to music on my laptop and my magic mirror with raspotify, and I get the same error.
                                          I have edit my deviceID and my Authorization in the code for privacy.

                                          EDIT:

                                          I think I know what is the problem.
                                          I have tried with two devices, and it don’t work. But when I try it with the device which is the deviceID that I wrote in the module code, it works.

                                          If I don’t say a command before, I get error 404.

                                          Working:

                                          [AMK2] end-of-utterance
                                          [AMK2] Transcription: para la música  --- Done: true
                                          { requestId: '5c883e4a-0000-24fa-b7be-...' } { profileFile: 'default.json', lang: 'es-ES' }
                                          [AMK2] Device Action: { requestId: '5c883e4a-0000-24fa-b7be-...' }
                                          [AMK2] Assistant Text Response: 
                                          [AMK2] Conversation Completed
                                          [HOTWORD] begins listening.
                                          Refreshed access token because it has expired. Expired at: 11:45:40 now is: 11:48:02
                                          [HOTWORD] <<  espejito  >> is detected. //My hotword
                                          [HOTWORD] stops listening
                                          [AMK2] assistant ready
                                          [AMK2] Conversation starts.
                                          [AMK2] Assistant Text Response: 
                                          [AMK2] end-of-utterance
                                          [AMK2] Transcription: Rafa Pons en Spotify  --- Done: true
                                          [AMK2] openSpotify found: https://open.spotify.com/artist/0DnmOp2SUaeavTi6a32pGY
                                          { requestId: '5c884094-0000-27db-94c8-...' } { profileFile: 'default.json', lang: 'es-ES' }
                                          [AMK2] Device Action: { requestId: '5c884094-0000-27db-94c8-...' }
                                          [AMK2] Assistant Text Response: 
                                          play on: a8caee9b12196a964f5a9b0fafaf7ef1
                                          [HOTWORD] begins listening.
                                          
                                          
                                          ejay-ibmE 1 Reply Last reply Reply Quote 0
                                          • ejay-ibmE Offline
                                            ejay-ibm Project Sponsor Module Developer @F17MC
                                            last edited by

                                            @F17MC
                                            So in your config.js you have set your device id to ; a8caee9b12196a964f5a9b0fafaf7ef1

                                            at this step
                                            Error while refreshing:
                                            { StatusCodeError: 404 - {“error”:{“status”:404,“message”:“Device not found”}}

                                            currentDeviceID variable is passed by case ‘PLAY_SPOTIFY’:
                                            payload[“deviceId”] = this.config.deviceId;

                                            "If I don’t say a command before, I get error 404. " what do you mean ? could you clarify ?

                                            “But when I try it with the device which is the deviceID that I wrote in the module code, it works.”
                                            Yes that is expected .

                                            For now you can only start playing on the device ID given in the config file as mentioned in the readme :

                                            This Module allow to control Spotify player on your Mirror . For now you can only control a single device. It could be your mirror if you are running Raspotify on it. Request to play a song it will be played on your select device in the config.js file. other command doesn’t need a device to be set. So if you are already playing a song on another device, the modules allow you to control this device from your module. But if you request a new song or playlist the set device in config file will play it on it you can not start a new song on a different device from now .

                                            Does that clarify the point ?

                                            Ejay

                                            F 1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 2 / 2
                                            • 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