[Deprecated] Amazon Alexa Text to Speech (TTS) v0.6.2 - Direct Integration (USA, Canada, UK, Italy, Australia, & Brazil)

Thanks for detailed message. I created role to TTS as well as pushover notification for motion sensor. I got notification on pushover as text but no TTS from Echo Auto. In Alexa App, Echo Auto listed under “Accessories “ not with the group where other Echo units are listed. So, I am closing this idea for time being. Thanks again

1 Like

I installed this on my Hubitat, today. Both the App and the Device driver seemed to install just fine. I then followed the instructions on the Readme file, and grabbed the Request headers from the featureaccess-v3 file and installed it to the app, but I can't get my echo to play any test messages. I'm not sure what could be the issue. I used Chrome to copy the requests headers. Did Amazon make some updates that broke the app?

One possible issue is that you’re using a different amazon account than what the echos are using. Others have had this problem.

Woke up this morning and I could hear my Echo dot say, "Backyard door is open. Backyard door is closed". Not sure what changed, but it seems to be working now. I'm stoked! I've also been using it to mess with my kids while they're doing their school work, but typing in phrases to have Alexa say. Stuff like, "Melody, do you know the muffin man, the muffin man, the muffin man?", and "Stop farting". You know, real high-brow stuff. :wink:

Thanks for making this time of quarantine more enjoyable!

4 Likes

Anyone seeing issues with the AlexaCookieNodeJs app? It doesn't seem to refresh correctly. Today it was completely stuck. :frowning: I had to go back to the manual Chrome way of doing things.

There is a note in the instructions that you need to regularly restart it....are you seeing something like this, or has it been working for quite some time and now it stopped?

I did not read the note. Should I schedule a cron job to restart the service? How often?

I used to do it every night.

I think you can just add an exit to it (if you have to set to auto restart) ie, you don't have to have two scripts, one to autostart and one to kill it.

I added the exit

diff AlexaCookie-orig.js AlexaCookie.js
233a234

  process.exit()
1 Like

Can you provide a little more guidance? I am looking at lines 233/234 but not sure where exactly to add.

The easiest way I have found to daily restart the AlexaCookie NodeJS server is a simple entry into crontab. See the red circled entry below. This issues a 'pm2 restart' command to the 'AlexaCookie' nodejs server that is running within pm2.

2 Likes

New to this app. I am trying to setup the AlexaCookie running node.js on Windows. This is what happens:

Any suggestions?
@gabriele

Have you executed "npm install"? It completes without errors?

@gabriele Thank you for responding.

C:\Users\nadmin\AlexaCookieNodeJs>npm install
    npm ERR! code ENOENT
    npm ERR! syscall spawn git
    npm ERR! path git
    npm ERR! errno ENOENT
    npm ERR! enoent Error while executing:
    npm ERR! enoent undefined ls-remote -h -t ssh://git@github.com/Apollon77/alexa-cookie.git
    npm ERR! enoent
    npm ERR! enoent
    npm ERR! enoent spawn git ENOENT
    npm ERR! enoent This is related to npm not being able to find a file.
    npm ERR! enoent

    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\nadmin\AppData\Roaming\npm-cache\_logs\2020-05-22T07_48_58_523Z-debug.log

I have, no, I missed the error. Here is the log,

0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'install'
1 verbose cli ]
2 info using npm@6.14.4
3 info using node@v12.16.3
4 verbose npm-session 783045430dfa5b50
5 silly install runPreinstallTopLevelLifecycles
6 silly preinstall alexa-cookie-node@0.1.2
7 info lifecycle alexa-cookie-node@0.1.2~preinstall: alexa-cookie-node@0.1.2
8 silly install loadCurrentTree
9 silly install readLocalPackageData
10 timing stage:loadCurrentTree Completed in 894ms
11 silly install loadIdealTree
12 silly install cloneCurrentTreeToIdealTree
13 timing stage:loadIdealTree:cloneCurrentTree Completed in 4ms
14 silly install loadShrinkwrap
15 timing stage:loadIdealTree:loadShrinkwrap Completed in 300ms
16 silly install loadAllDepsIntoIdealTree
17 silly fetchPackageMetaData error for alexa-cookie2@github:Apollon77/alexa-cookie Error while executing:
17 silly fetchPackageMetaData undefined ls-remote -h -t ssh://git@github.com/Apollon77/alexa-cookie.git
17 silly fetchPackageMetaData
17 silly fetchPackageMetaData
17 silly fetchPackageMetaData spawn git ENOENT
18 timing stage:rollbackFailedOptional Completed in 0ms
19 timing stage:runTopLevelLifecycles Completed in 1338ms
20 silly saveTree alexa-cookie-node@0.1.2
20 silly saveTree +-- body-parser@1.19.0
20 silly saveTree | +-- bytes@3.1.0
20 silly saveTree | +-- content-type@1.0.4
20 silly saveTree | +-- debug@2.6.9
20 silly saveTree | | `-- ms@2.0.0
20 silly saveTree | +-- depd@1.1.2
20 silly saveTree | +-- http-errors@1.7.2
20 silly saveTree | | +-- inherits@2.0.3
20 silly saveTree | | +-- setprototypeof@1.1.1
20 silly saveTree | | +-- statuses@1.5.0
20 silly saveTree | | `-- toidentifier@1.0.0
20 silly saveTree | +-- iconv-lite@0.4.24
20 silly saveTree | | `-- safer-buffer@2.1.2
20 silly saveTree | +-- on-finished@2.3.0
20 silly saveTree | | `-- ee-first@1.1.1
20 silly saveTree | +-- qs@6.7.0
20 silly saveTree | +-- raw-body@2.4.0
20 silly saveTree | | `-- unpipe@1.0.0
20 silly saveTree | `-- type-is@1.6.18
20 silly saveTree |   +-- media-typer@0.3.0
20 silly saveTree |   `-- mime-types@2.1.27
20 silly saveTree |     `-- mime-db@1.44.0
20 silly saveTree +-- cookie@0.3.1
20 silly saveTree +-- express@4.17.1
20 silly saveTree | +-- accepts@1.3.7
20 silly saveTree | | `-- negotiator@0.6.2
20 silly saveTree | +-- array-flatten@1.1.1
20 silly saveTree | +-- body-parser@1.19.0
20 silly saveTree | +-- content-disposition@0.5.3
20 silly saveTree | | `-- safe-buffer@5.1.2
20 silly saveTree | +-- cookie-signature@1.0.6
20 silly saveTree | +-- cookie@0.4.0
20 silly saveTree | +-- encodeurl@1.0.2
20 silly saveTree | +-- escape-html@1.0.3
20 silly saveTree | +-- etag@1.8.1
20 silly saveTree | +-- finalhandler@1.1.2
20 silly saveTree | | `-- parseurl@1.3.3
20 silly saveTree | +-- fresh@0.5.2
20 silly saveTree | +-- merge-descriptors@1.0.1
20 silly saveTree | +-- methods@1.1.2
20 silly saveTree | +-- parseurl@1.3.3
20 silly saveTree | +-- path-to-regexp@0.1.7
20 silly saveTree | +-- proxy-addr@2.0.6
20 silly saveTree | | +-- forwarded@0.1.2
20 silly saveTree | | `-- ipaddr.js@1.9.1
20 silly saveTree | +-- range-parser@1.2.1
20 silly saveTree | +-- safe-buffer@5.1.2
20 silly saveTree | +-- send@0.17.1
20 silly saveTree | | +-- destroy@1.0.4
20 silly saveTree | | +-- mime@1.6.0
20 silly saveTree | | `-- ms@2.1.1
20 silly saveTree | +-- serve-static@1.14.1
20 silly saveTree | +-- utils-merge@1.0.1
20 silly saveTree | `-- vary@1.1.2
20 silly saveTree +-- git@0.1.5
20 silly saveTree | `-- mime@1.2.9
20 silly saveTree +-- http-proxy-middleware@0.19.2
20 silly saveTree | +-- http-proxy@1.18.1
20 silly saveTree | | +-- eventemitter3@4.0.4
20 silly saveTree | | +-- follow-redirects@1.11.0
20 silly saveTree | | | `-- debug@3.2.6
20 silly saveTree | | |   `-- ms@2.1.2
20 silly saveTree | | `-- requires-port@1.0.0
20 silly saveTree | +-- is-glob@4.0.1
20 silly saveTree | | `-- is-extglob@2.1.1
20 silly saveTree | +-- lodash@4.17.15
20 silly saveTree | `-- micromatch@3.1.10
20 silly saveTree |   +-- arr-diff@4.0.0
20 silly saveTree |   +-- array-unique@0.3.2
20 silly saveTree |   +-- braces@2.3.2
20 silly saveTree |   | +-- arr-flatten@1.1.0
20 silly saveTree |   | +-- extend-shallow@2.0.1
20 silly saveTree |   | | `-- is-extendable@0.1.1
20 silly saveTree |   | +-- fill-range@4.0.0
20 silly saveTree |   | | +-- extend-shallow@2.0.1
20 silly saveTree |   | | +-- is-number@3.0.0
20 silly saveTree |   | | | `-- kind-of@3.2.2
20 silly saveTree |   | | |   `-- is-buffer@1.1.6
20 silly saveTree |   | | +-- repeat-string@1.6.1
20 silly saveTree |   | | `-- to-regex-range@2.1.1
20 silly saveTree |   | +-- isobject@3.0.1
20 silly saveTree |   | +-- repeat-element@1.1.3
20 silly saveTree |   | +-- snapdragon-node@2.1.1
20 silly saveTree |   | | +-- define-property@1.0.0
20 silly saveTree |   | | | `-- is-descriptor@1.0.2
20 silly saveTree |   | | |   +-- is-accessor-descriptor@1.0.0
20 silly saveTree |   | | |   | `-- kind-of@6.0.3
20 silly saveTree |   | | |   +-- is-data-descriptor@1.0.0
20 silly saveTree |   | | |   `-- kind-of@6.0.3
20 silly saveTree |   | | `-- snapdragon-util@3.0.1
20 silly saveTree |   | |   `-- kind-of@3.2.2
20 silly saveTree |   | +-- snapdragon@0.8.2
20 silly saveTree |   | | +-- base@0.11.2
20 silly saveTree |   | | | +-- cache-base@1.0.1
20 silly saveTree |   | | | | +-- collection-visit@1.0.0
20 silly saveTree |   | | | | | +-- map-visit@1.0.0
20 silly saveTree |   | | | | | | `-- object-visit@1.0.1
20 silly saveTree |   | | | | | `-- object-visit@1.0.1
20 silly saveTree |   | | | | +-- component-emitter@1.2.1
20 silly saveTree |   | | | | +-- get-value@2.0.6
20 silly saveTree |   | | | | +-- has-value@1.0.0
20 silly saveTree |   | | | | | `-- has-values@1.0.0
20 silly saveTree |   | | | | |   `-- kind-of@4.0.0
20 silly saveTree |   | | | | +-- set-value@2.0.1
20 silly saveTree |   | | | | | +-- extend-shallow@2.0.1
20 silly saveTree |   | | | | | +-- is-plain-object@2.0.4
20 silly saveTree |   | | | | | `-- split-string@3.1.0
20 silly saveTree |   | | | | |   `-- extend-shallow@3.0.2
20 silly saveTree |   | | | | |     +-- assign-symbols@1.0.0
20 silly saveTree |   | | | | |     `-- is-extendable@1.0.1
20 silly saveTree |   | | | | +-- to-object-path@0.3.0
20 silly saveTree |   | | | | | `-- kind-of@3.2.2
20 silly saveTree |   | | | | +-- union-value@1.0.1
20 silly saveTree |   | | | | | `-- arr-union@3.1.0
20 silly saveTree |   | | | | `-- unset-value@1.0.0
20 silly saveTree |   | | | |   `-- has-value@0.3.1
20 silly saveTree |   | | | |     +-- has-values@0.1.4
20 silly saveTree |   | | | |     `-- isobject@2.1.0
20 silly saveTree |   | | | |       `-- isarray@1.0.0
20 silly saveTree |   | | | +-- class-utils@0.3.6
20 silly saveTree |   | | | | +-- define-property@0.2.5
20 silly saveTree |   | | | | | `-- is-descriptor@0.1.6
20 silly saveTree |   | | | | |   +-- is-accessor-descriptor@0.1.6
20 silly saveTree |   | | | | |   | `-- kind-of@3.2.2
20 silly saveTree |   | | | | |   +-- is-data-descriptor@0.1.4
20 silly saveTree |   | | | | |   | `-- kind-of@3.2.2
20 silly saveTree |   | | | | |   `-- kind-of@5.1.0
20 silly saveTree |   | | | | `-- static-extend@0.1.2
20 silly saveTree |   | | | |   +-- define-property@0.2.5
20 silly saveTree |   | | | |   `-- object-copy@0.1.0
20 silly saveTree |   | | | |     +-- copy-descriptor@0.1.1
20 silly saveTree |   | | | |     +-- define-property@0.2.5
20 silly saveTree |   | | | |     `-- kind-of@3.2.2
20 silly saveTree |   | | | +-- component-emitter@1.2.1
20 silly saveTree |   | | | +-- define-property@1.0.0
20 silly saveTree |   | | | | `-- is-descriptor@1.0.2
20 silly saveTree |   | | | |   +-- is-accessor-descriptor@1.0.0
20 silly saveTree |   | | | |   `-- is-data-descriptor@1.0.0
20 silly saveTree |   | | | +-- mixin-deep@1.3.2
20 silly saveTree |   | | | | +-- for-in@1.0.2
20 silly saveTree |   | | | | `-- is-extendable@1.0.1
20 silly saveTree |   | | | `-- pascalcase@0.1.1
20 silly saveTree |   | | +-- define-property@0.2.5
20 silly saveTree |   | | +-- extend-shallow@2.0.1
20 silly saveTree |   | | +-- map-cache@0.2.2
20 silly saveTree |   | | +-- source-map-resolve@0.5.3
20 silly saveTree |   | | | +-- atob@2.1.2
20 silly saveTree |   | | | +-- decode-uri-component@0.2.0
20 silly saveTree |   | | | +-- resolve-url@0.2.1
20 silly saveTree |   | | | +-- source-map-url@0.4.0
20 silly saveTree |   | | | `-- urix@0.1.0
20 silly saveTree |   | | +-- source-map@0.5.7
20 silly saveTree |   | | `-- use@3.1.1
20 silly saveTree |   | +-- split-string@3.1.0
20 silly saveTree |   | `-- to-regex@3.0.2
20 silly saveTree |   |   +-- define-property@2.0.2
20 silly saveTree |   |   | `-- is-descriptor@1.0.2
20 silly saveTree |   |   |   +-- is-accessor-descriptor@1.0.0
20 silly saveTree |   |   |   `-- is-data-descriptor@1.0.0
20 silly saveTree |   |   +-- regex-not@1.0.2
20 silly saveTree |   |   | `-- safe-regex@1.1.0
20 silly saveTree |   |   |   `-- ret@0.1.15
20 silly saveTree |   |   `-- safe-regex@1.1.0
20 silly saveTree |   +-- define-property@2.0.2
20 silly saveTree |   +-- extend-shallow@3.0.2
20 silly saveTree |   +-- extglob@2.0.4
20 silly saveTree |   | +-- define-property@1.0.0
20 silly saveTree |   | | `-- is-descriptor@1.0.2
20 silly saveTree |   | |   +-- is-accessor-descriptor@1.0.0
20 silly saveTree |   | |   `-- is-data-descriptor@1.0.0
20 silly saveTree |   | +-- expand-brackets@2.1.4
20 silly saveTree |   | | +-- define-property@0.2.5
20 silly saveTree |   | | +-- extend-shallow@2.0.1
20 silly saveTree |   | | `-- posix-character-classes@0.1.1
20 silly saveTree |   | +-- extend-shallow@2.0.1
20 silly saveTree |   | `-- fragment-cache@0.2.1
20 silly saveTree |   +-- fragment-cache@0.2.1
20 silly saveTree |   +-- kind-of@6.0.3
20 silly saveTree |   +-- nanomatch@1.2.13
20 silly saveTree |   | +-- is-windows@1.0.2
20 silly saveTree |   | `-- object.pick@1.3.0
20 silly saveTree |   +-- object.pick@1.3.0
20 silly saveTree |   +-- regex-not@1.0.2
20 silly saveTree |   +-- snapdragon@0.8.2
20 silly saveTree |   `-- to-regex@3.0.2
20 silly saveTree +-- http-proxy-response-rewrite@0.0.1
20 silly saveTree | +-- bufferhelper@0.2.1
20 silly saveTree | `-- concat-stream@1.6.2
20 silly saveTree |   +-- buffer-from@1.1.1
20 silly saveTree |   +-- readable-stream@2.3.7
20 silly saveTree |   | +-- core-util-is@1.0.2
20 silly saveTree |   | +-- isarray@1.0.0
20 silly saveTree |   | +-- process-nextick-args@2.0.1
20 silly saveTree |   | +-- string_decoder@1.1.1
20 silly saveTree |   | `-- util-deprecate@1.0.2
20 silly saveTree |   `-- typedarray@0.0.6
20 silly saveTree +-- http@0.0.0
20 silly saveTree +-- linkifyjs@2.1.9
20 silly saveTree +-- querystring@0.2.0
20 silly saveTree +-- socket.io@2.3.0
20 silly saveTree | +-- debug@4.1.1
20 silly saveTree | | `-- ms@2.1.2
20 silly saveTree | +-- engine.io@3.4.1
20 silly saveTree | | +-- base64id@2.0.0
20 silly saveTree | | +-- cookie@0.3.1
20 silly saveTree | | +-- debug@4.1.1
20 silly saveTree | | | `-- ms@2.1.2
20 silly saveTree | | +-- engine.io-parser@2.2.0
20 silly saveTree | | | +-- after@0.8.2
20 silly saveTree | | | +-- arraybuffer.slice@0.0.7
20 silly saveTree | | | +-- base64-arraybuffer@0.1.5
20 silly saveTree | | | +-- blob@0.0.5
20 silly saveTree | | | `-- has-binary2@1.0.3
20 silly saveTree | | |   `-- isarray@2.0.1
20 silly saveTree | | `-- ws@7.3.0
20 silly saveTree | +-- has-binary2@1.0.3
20 silly saveTree | +-- socket.io-adapter@1.1.2
20 silly saveTree | +-- socket.io-client@2.3.0
20 silly saveTree | | +-- backo2@1.0.2
20 silly saveTree | | +-- component-bind@1.0.0
20 silly saveTree | | +-- debug@4.1.1
20 silly saveTree | | | `-- ms@2.1.2
20 silly saveTree | | +-- engine.io-client@3.4.2
20 silly saveTree | | | +-- component-emitter@1.3.0
20 silly saveTree | | | +-- component-inherit@0.0.3
20 silly saveTree | | | +-- debug@4.1.1
20 silly saveTree | | | | `-- ms@2.1.2
20 silly saveTree | | | +-- has-cors@1.1.0
20 silly saveTree | | | +-- indexof@0.0.1
20 silly saveTree | | | +-- parseqs@0.0.5
20 silly saveTree | | | | `-- better-assert@1.0.2
20 silly saveTree | | | |   `-- callsite@1.0.0
20 silly saveTree | | | +-- parseuri@0.0.5
20 silly saveTree | | | +-- ws@6.1.4
20 silly saveTree | | | | `-- async-limiter@1.0.1
20 silly saveTree | | | +-- xmlhttprequest-ssl@1.5.5
20 silly saveTree | | | `-- yeast@0.1.2
20 silly saveTree | | +-- has-cors@1.1.0
20 silly saveTree | | +-- indexof@0.0.1
20 silly saveTree | | +-- object-component@0.0.3
20 silly saveTree | | +-- parseqs@0.0.5
20 silly saveTree | | +-- parseuri@0.0.5
20 silly saveTree | | +-- socket.io-parser@3.3.0
20 silly saveTree | | | `-- debug@3.1.0
20 silly saveTree | | |   `-- ms@2.0.0
20 silly saveTree | | `-- to-array@0.1.4
20 silly saveTree | `-- socket.io-parser@3.4.1
20 silly saveTree |   `-- debug@4.1.1
20 silly saveTree |     `-- ms@2.1.2
20 silly saveTree `-- uuid@3.4.0
21 verbose stack Error: spawn git ENOENT
21 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:267:19)
21 verbose stack     at onErrorNT (internal/child_process.js:469:16)
21 verbose stack     at processTicksAndRejections (internal/process/task_queues.js:84:21)
22 verbose cwd C:\Users\nadmin\AlexaCookieNodeJs
23 verbose Windows_NT 10.0.18363
24 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
25 verbose node v12.16.3
26 verbose npm  v6.14.4
27 error code ENOENT
28 error syscall spawn git
29 error path git
30 error errno ENOENT
31 error enoent Error while executing:
31 error enoent undefined ls-remote -h -t ssh://git@github.com/Apollon77/alexa-cookie.git
31 error enoent
31 error enoent
31 error enoent spawn git ENOENT
32 error enoent This is related to npm not being able to find a file.
33 verbose exit [ 1, true ]

UPDATE: I am a dummy and I wasn't putting my IP address in when trying to login. I've got this figured out. Thanks to @aaiyar and @ogiewon for helping me out!

I'm working on getting Alexa TTS setup and attempting to use the Alexacookie.js automation.

I believe I have everything installed correctly, but I am having issues getting to http://[serverip]:81 or http://[serverip]:1081. I'm attaching a few screen shots to answer the questions asked above. I have it installed and running under root. I've also changed the config.json to 1081/1082 ports. Any help would be appreciated.

Screen shots below.

Screen Shot 2020-05-27 at 9.49.11 AM

1 Like

Would retrieving the Alexa Cookie and refreshing cause any adverse impact to normal echo use? I'm getting some "I'm having trouble connecting" errors from echo.

That issue sounds like a WiFi or Internet connection problem. I have never heard of the AlexaCookie NodeJS server causing any issues with actual Echo devices. It is only called to do anything once every ~6-7 days, IIRC.

1 Like

I am having a heck of a time trying to get a daily restart of Alexa Cookie run via crontab.

Here is what my crontab setup looks like....

Screen Shot 2020-06-15 at 3.21.04 PM

Here is what it looks like when I run the "pm2 restart alexacookie.js" from the command line....

When crontab runs however, this is the output I'm writing to the log file...

Screen Shot 2020-06-15 at 3.21.54 PM

I've been looking for a solution for days and can't seem to find anything that works. I am running node on a Mac if that matters at all.

Thoughts? Thanks in advance.

Of course 20 minutes after I posted this, I finally found the answer.

This is what I crontab looks like now...

This article on stackoverflow was the solution.

Hopefully this can help someone out in the future. :slight_smile:

1 Like

You posted that just as I was typing something similar out .....!

1 Like