Giter Club home page Giter Club logo

assistant-relay's Introduction

Looking For Maintainers

Unfortunately I no longer have time to continue supporting Assistant Relay, and I have personally migrated to Home Assistant where I no longer have a personal need for Assistant Relay. V3 and V4 will remain in their current state, however if you would like to maintain, please create a fork and let me know so I can add to the ReadMe

Home Assistant 2023.1

Starting with Home Assistant 2023.1 you are able to use the Google Assistant SDK directly to broadcast and send commands from Home Assistant: https://rc.home-assistant.io/integrations/google_assistant_sdk/#service-notifygoogle_assistant_sdk

GitHub release (latest by date including pre-releases) GitHub All Releases GOSPB

Assistant Relay v3!

Please visit https://assistantrelay.com/ for documentation

Join the Facebook Group!

discord GitHub code size in bytes GitHub stars

Credit

This project uses the google-assistant repository from endoplasmic

Donations

Whilst donations are appreciated, they are not expected, nor required. If you want to buy me a drink, you can do so here:

ko-fi

or directly to my bank

assistant-relay's People

Contributors

aidy avatar apipa169 avatar bendews avatar dependabot[bot] avatar derousse avatar gabe565 avatar greghesp avatar jwvance avatar kierandrewett avatar mathisto avatar mattiaskagstrom avatar ryancasler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

assistant-relay's Issues

error when use npm run build-config

I am getting the following error after I do the command npm run build-config.

npm run build-config

[email protected] build-config /home/naseemr/Documents/assistant-relay
node configBuilder.js

module.js:549
throw err;
^

Error: Cannot find module 'prompt'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object. (/home/naseemr/Documents/assistant-relay/configBuilder.js:2:16)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build-config: node configBuilder.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build-config script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?

npm ERR! A complete log of this run can be found in:
npm ERR! /home/naseemr/.npm/_logs/2018-05-23T22_45_45_123Z-debug.log

Here is the detail log:
05-23T22_45_45_123Z-debug.log
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'build-config' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prebuild-config', 'build-config', 'postbuild-config' ]
5 info lifecycle [email protected]prebuild-config: [email protected]
6 info lifecycle [email protected]
build-config: [email protected]
7 verbose lifecycle [email protected]build-config: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]
build-config: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/naseemr/Documents/assistant-relay/node_modules/.bin:/home/naseemr/bin:/home/naseemr/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
9 verbose lifecycle [email protected]build-config: CWD: /home/naseemr/Documents/assistant-relay
10 silly lifecycle [email protected]
build-config: Args: [ '-c', 'node configBuilder.js' ]
11 silly lifecycle [email protected]build-config: Returned: code: 1 signal: null
12 info lifecycle [email protected]
build-config: Failed to exec build-config script
13 verbose stack Error: [email protected] build-config: node configBuilder.js
13 verbose stack Exit status 1
13 verbose stack at EventEmitter. (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:283:16)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at EventEmitter.emit (events.js:214:7)
13 verbose stack at ChildProcess. (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at ChildProcess.emit (events.js:214:7)
13 verbose stack at maybeClose (internal/child_process.js:925:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid [email protected]
15 verbose cwd /home/naseemr/Documents/assistant-relay
16 verbose Linux 4.13.0-43-generic
17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "build-config"
18 verbose node v8.11.2
19 verbose npm v6.0.1
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] build-config: node configBuilder.js
22 error Exit status 1
23 error Failed at the [email protected] build-config script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

no application type other

in the readme it says in bold:

Note: When creating an Oauth Client ID, make sure you use the "Other" application type

But there is no option 'other' to be found in the list.

Downloads

Hello Downloading and installing assitant-relay.
but failing at npm install.

what could be the problem ?

Thx.

pi@rasppi:~/Downloads/assistant-relay-master $ sudo npm install

[email protected] install /home/pi/Downloads/assistant-relay-master/node_modules/speaker
node-gyp rebuild

gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/10.10.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/home/pi/Downloads/assistant-relay-master/node_modules/speaker/.node-gyp"
gyp WARN install got an error, rolling back install
gyp WARN install got an error, rolling back install
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/home/pi/Downloads/assistant-relay-master/node_modules/speaker/.node-gyp'
gyp ERR! System Linux 4.14.50-v7+
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/Downloads/assistant-relay-master/node_modules/speaker
gyp ERR! node -v v10.10.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok

[email protected] install /home/pi/Downloads/assistant-relay-master/node_modules/grpc
node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp ERR! Tried to download(403): https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.8.0/node-v64-linux-arm-glibc.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v64 ABI, glibc) (falling back to source compile with node-gyp)
node-pre-gyp ERR! Tried to download(undefined): https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.8.0/node-v64-linux-arm-glibc.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v64 ABI, glibc) (falling back to source compile with node-gyp)
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/10.10.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/home/pi/Downloads/assistant-relay-master/node_modules/grpc/.node-gyp"
gyp WARN install got an error, rolling back install
gyp WARN install got an error, rolling back install
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/home/pi/Downloads/assistant-relay-master/node_modules/grpc/.node-gyp'
gyp ERR! System Linux 4.14.50-v7+
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--library=static_library" "--module=/home/pi/Downloads/assistant-relay-master/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc/grpc_node.node" "--module_name=grpc_node" "--module_path=/home/pi/Downloads/assistant-relay-master/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc"
gyp ERR! cwd /home/pi/Downloads/assistant-relay-master/node_modules/grpc
gyp ERR! node -v v10.10.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --library=static_library --module=/home/pi/Downloads/assistant-relay-master/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc/grpc_node.node --module_name=grpc_node --module_path=/home/pi/Downloads/assistant-relay-master/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc' (1)
node-pre-gyp ERR! stack at ChildProcess. (/home/pi/Downloads/assistant-relay-master/node_modules/grpc/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:182:13)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:962:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:251:5)
node-pre-gyp ERR! System Linux 4.14.50-v7+
node-pre-gyp ERR! command "/usr/bin/node" "/home/pi/Downloads/assistant-relay-master/node_modules/grpc/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--library=static_library"
node-pre-gyp ERR! cwd /home/pi/Downloads/assistant-relay-master/node_modules/grpc
node-pre-gyp ERR! node -v v10.10.0
node-pre-gyp ERR! node-pre-gyp -v v0.6.39
node-pre-gyp ERR! not ok
Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --library=static_library --module=/home/pi/Downloads/assistant-relay-master/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc/grpc_node.node --module_name=grpc_node --module_path=/home/pi/Downloads/assistant-relay-master/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc' (1)
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/10.10.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/home/pi/Downloads/assistant-relay-master/node_modules/grpc/.node-gyp"
gyp WARN install got an error, rolling back install
gyp WARN install got an error, rolling back install
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/home/pi/Downloads/assistant-relay-master/node_modules/grpc/.node-gyp'
gyp ERR! System Linux 4.14.50-v7+
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--library=static_library" "--module=/home/pi/Downloads/assistant-relay-master/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc/grpc_node.node" "--module_name=grpc_node" "--module_path=/home/pi/Downloads/assistant-relay-master/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc"
gyp ERR! cwd /home/pi/Downloads/assistant-relay-master/node_modules/grpc
gyp ERR! node -v v10.10.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/speaker):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] install: node-gyp rebuild
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: node-pre-gyp install --fallback-to-build --library=static_library
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-09-07T11_24_59_474Z-debug.log
r

"/broadcast" endpoint requires valid user

The broadcast endpoint requires a user to be defined in order to successfully use a preset broadcast.

The SmartThings device type does not allow a user to be specified.

For now I have removed the checkUser() IF statement (which falls back to using the first defined user, per sendTextInput()) to workaround the requirement.

greg_client_secret.json still being referenced

Test platform: MacBook Air on OS X Sierra (10.12.6)

Despite running the build-config script, I still get an error due to the code looking for your credentials file

I just removed it and now it works but I thought you might want to update your code.

$npm run build-config

> [email protected] build-config /Users/frak/git/assistant-relay
> node configBuilder.js

What do you want to do? (Enter 1 or 2):
1) Add User
2) Change port
Number: 1
prompt: Name:  AssRelay
prompt: Client Secret File Name:  client_secret_xxxxx.apps.googleusercontent.com.json

            Your config file has now been saved!
            When needed, use the username assrelay to send Google Assistant commands from this users account

$npm run start

> [email protected] start /Users/frak/git/assistant-relay
> node index.js

internal/modules/cjs/loader.js:550
    throw err;
    ^

Error: Cannot find module 'C:\Users\Greg\Documents\Projects\assistant-relay\greg_client_secret.json'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:548:15)
    at Function.Module._load (internal/modules/cjs/loader.js:475:25)
    at Module.require (internal/modules/cjs/loader.js:598:17)
    at require (internal/modules/cjs/helpers.js:11:18)
    at new Auth (/Users/frak/git/assistant-relay/node_modules/google-assistant/components/auth.js:26:15)

$grep -rnIw --color=always ./ -e "greg_client_secret.json"

.//config.json:1:{"language":"en-US","users":{"greg":{"keyFilePath":"C:\\Users\\Greg\\Documents\\Projects\\assistant-relay\\greg_client_secret.json","savedTokensPath":"C:\\Users\\Greg\\Documents\\Projects\\assistant-relay\\greg-tokens.json"},"assrelay":{"keyFilePath":"/Users/frak/git/assistant-relay/client_secret_xxxxx.apps.googleusercontent.com.json","savedTokensPath":"/Users/frak/git/assistant-relay/assrelay-tokens.json"}},"port":"3000"}

Readme Update

Someone should probably update the readme. Looks like it is duplicated, i.e. the same lines appear twice for some reason.

I would love to do it if that's ok. Have been itching to learn working with (making changes to) github repos for a while now. Completely ok if that is not something you prefer too!

Relay Just stopped issuing commands

Has something changed with the assistant SDK? Because commands that worked an hour ago are no longer working and the console shows that the commands are being issued correctly by assistant relay. What's the deal?

custom commands will not work when playing music to GH

I'm able to ask what the weather is as well as broadcast messages on my LAN, but custom commands will not work when requesting to play music (i.e. nothing happens). Please see below. When will this be fixed?

Thanks
James

Fired up the SSDP Server for network discovery...
Firing up the Web Server for communication on address 192.168.1.138:3000
Assistant Relay is now setup and running for assistantgateway-assistantgateway-s0vh5u
Received command broadcast Assistant Relay is now setup and running for assistantgateway-assistantgateway-s0vh5u
No user specified, using assistantgateway-assistantgateway-s0vh5u
Received command play jazz on office home
No user specified, using assistantgateway-assistantgateway-s0vh5u
Received command what is the weather
No user specified, using assistantgateway-assistantgateway-s0vh5u
Google Assistant: Looks kind of cloudy
Currently in 45245 it's 70 and cloudy. Today, there'll be scattered thunderstorms, with a forecasted high of 81 and a low of 65.
( More on weather.com )
Received command broadcast Looks kind of cloudy
No user specified, using assistantgateway-assistantgateway-s0vh5u
Received command play jazz on office home
No user specified, using assistantgateway-assistantgateway-s0vh5u

More changes to broadcast or commands?

I will admit I am new to this, but it seems as though my google home ignores everything.

I have setup the assistant relay and have been using curl to run the commands. When i view my activity in Google Home App, I see the assistant showing up and the commands, but nothing happens.

So if I use customBroadcast?text=blah&user=me&converse=true I do see a broadcast request in my activity but the Google Home speaker does nothing. If I type it into Google Assistant app on my phone she does speak.

Similarly
custom?Command="Play+some+band+it+recognizes"
gets me I don't know how to help with that message from Assistant relay, meanwhile speaking the same words Google responds.

So is this an issue with Google? Or is it possible something on my setup is wrong.
FWIW, when I setup the node.js server Google Home never acknowledged it.

Working good

Working pretty good ... I have it announce when our heat comes on and has been working flawlessly.

If we could get it to work more like a "location Send and SMS message" it may make it easier to integrate into webcore stuff instead of a switch.

Good job so far !

Looking into it a bit.

broadcast variable value

Hi, I am trying to broadcast BEDROOM's thermostats setpoint. But it is not broadcasting, what I am doing wrong? can someone help me?
image

commands are identical to voice but don't work with API

I'm seeing an issue where if I issue a custom command like "play spotify" the api responds with "Sorry I don't know how to help with that" but if I talk to my google home and say that it works perfectly.

Even when going to myactivity.google.com I'm seeing that the service is picking them both up identically but providing different responses. I assume I messed something up with my credentials, but I'm able to use broadcast messages fine, ask some basic questions, but things like paying media don't work. Do i need to change app configs to expose additional permissions?

Unable to get google connected when doing test query.

Not sure if im doing something wrong or google is down but when I try to connect with my dev project id and model is i get

INFO:root:Connecting to embeddedassistant.googleapis.com Traceback (most recent call last): File "/home/pi/env/bin/googlesamples-assistant-pushtotalk", line 11, in <modul e> sys.exit(main()) File "/home/pi/env/lib/python3.5/site-packages/click/core.py", line 722, in __ call__ return self.main(*args, **kwargs) File "/home/pi/env/lib/python3.5/site-packages/click/core.py", line 697, in ma in rv = self.invoke(ctx) File "/home/pi/env/lib/python3.5/site-packages/click/core.py", line 895, in in voke return ctx.invoke(self.callback, **ctx.params) File "/home/pi/env/lib/python3.5/site-packages/click/core.py", line 535, in in voke return callback(*args, **kwargs) File "/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/grpc/pu shtotalk.py", line 351, in main flush_size=audio_flush_size File "/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/grpc/au dio_helpers.py", line 190, in __init__ blocksize=int(block_size/2), # blocksize is in number of frames. File "/home/pi/env/lib/python3.5/site-packages/sounddevice.py", line 1263, in __init__ **_remove_self(locals())) File "/home/pi/env/lib/python3.5/site-packages/sounddevice.py", line 680, in _ _init__ samplerate) File "/home/pi/env/lib/python3.5/site-packages/sounddevice.py", line 2489, in _get_stream_parameters info = query_devices(device) File "/home/pi/env/lib/python3.5/site-packages/sounddevice.py", line 487, in q uery_devices raise PortAudioError('Error querying device {0}'.format(device)) sounddevice.PortAudioError: Error querying device -1

IFFTT /customBroadcast text is always undefined

Not sure if this is a bug in relay or in IFTTT.

Sending a POST request from Postman works fine. However, if you create a Webhook in IFTTT, the server receives the request but the text is always "undefined".

This is how I am setting it up in IFTTT:

URL: http://MY_IP:3000/customBroadcast
Method: POST
Content-Type: application/json
Body:
{"user": "danny", "text": "hello"}

I also tried:

URL: http://MY_IP:3000/customBroadcast
Method: POST
Content-Type: application/x-www-form-urlencoded
Body:
user=danny&text=hello

If I console.log() the request inside the customBroadcast closure, the query property is always empty, no matter what you put in the body.

The only way I managed to get this to work, is to simply enter the params in the URL field and leave the body empty. Not sure how the body is being sent from IFTTT or if they are sending it at all.

Can get it to work with a second user

I have two user setup on my google home.

I have set both the users up using npm run build-config

when i issue a command as a second user, it always reverts to the main user.

Received command "Whats my name?"
User specified was sarah
Google Assistant: Your name is Dave
Received command broadcast Your name is Dave
No user specified, using dave

Am I missing somthing please?

Quiet hours does not work

Setting the quietHours start to a number less than current hour will always end up in quiet hours because start <= now.
i.e. start = 0, end = 8, now = 21. This should not be quiet hours but it currently is.

I can open a PR to fix this if you want.

fatal error: alsa/asoundlib.h: No such file or directory

Hi,

I've had this working in the past, but I'm now trying to install it on a new server and I'm getting the following when running npm install.

I've tried npm versions v8.10.0 and v7.10.1.

Any ideas?

root@openhab2:/opt/assistant-relay# npm install
npm WARN deprecated [email protected]: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)

> [email protected] install /opt/assistant-relay/node_modules/speaker
> node-gyp rebuild

make: Entering directory '/opt/assistant-relay/node_modules/speaker/build'
  CC(target) Release/obj.target/output/deps/mpg123/src/output/alsa.o
../deps/mpg123/src/output/alsa.c:19:10: fatal error: alsa/asoundlib.h: No such file or directory
 #include <alsa/asoundlib.h>
          ^~~~~~~~~~~~~~~~~~
compilation terminated.

converse=true doesn't seem to work.

Test platform: MacBook Air on OS X Sierra (10.12.6)

When I try the command with converse=true, I still see the response in the console window instead of hearing the response from Google Assistant.

$http POST http://127.0.0.1:3000/custom?command=what+time+is+it&user=xxxx&converse=true
[1] 9240
[2] 9241
[2]+  Done                    user=xxxx
$HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 65
Content-Type: application/json; charset=utf-8
Date: Tue, 24 Apr 2018 03:19:54 GMT
ETag: W/"...."
X-Powered-By: Express

{
    "command": "what time is it",
    "message": "Custom command executed"
}

On the window running the npm run start command, I see this response:

Received command what time is it
No user specified, using xxxx
Google Assistant: The time is 11:19 PM.

For some reason, it doesn't acknowledge my supplied username, although it uses it anyway.

Google down again!??!?

Several folks, including me, over at the ST community are reporting that broadcasts have stopped again. Have you heard anything?

How to run always

everything is working I now wonder how do I run it when my raspberry start, do I have to do the "Paste your code" evrytime it starts?

Add ability to set volume of the announcement

Request (once API supports it) for ability to set the volume of the announcement. Ideally the volume setting affects the announcement only, and the volume on the GH is not changed for existing music streaming, etc.

v2 TypeError: Cannot read property 'client_id' of undefined

I was able to run assistant-relay once and it it startup up, opened the browser and I did the authorization, and it was working, I was able to ask it to broadcast but nothing was happening.

I realized the account I used was not the main account that my Google Home's are linked to, so I created a new secret file for that user and copied it to secrets, then assistant-relay would no longer startup . So I deleted everything and started from scratch, but still get this error.

pi@rpi3-2:~/assistant-relay $ ls -l server/configurations/secrets/
total 4
-rwxr--r-- 1 pi pi 364 Aug 24 20:35 jna.json
pi@rpi3-2:~/assistant-relay $ npm run start

> [email protected] start /home/pi/assistant-relay
> node server/app.js

TypeError: Cannot read property 'client_id' of undefined
    at new Auth (/home/pi/assistant-relay/node_modules/google-assistant/components/auth.js:27:38)
    at new GoogleAssistant (/home/pi/assistant-relay/node_modules/google-assistant/index.js:21:16)
    at /home/pi/assistant-relay/server/assistant.js:33:39
    at replenish (/home/pi/assistant-relay/node_modules/async/dist/async.js:1011:17)
    at /home/pi/assistant-relay/node_modules/async/dist/async.js:1016:9
    at Object.eachOfLimit (/home/pi/assistant-relay/node_modules/async/dist/async.js:1041:24)
    at Promise (/home/pi/assistant-relay/server/assistant.js:30:13)
    at new Promise (<anonymous>)
    at setupAssistant (/home/pi/assistant-relay/server/assistant.js:28:12)
    at configureUsers.then (/home/pi/assistant-relay/server/app.js:27:10)

Stopping Nest stream command doesn't work

The command to stop a Nest stream doesn't work and neither does using a custom command to ask Google to "stop .

Using voice on any Google Home and saying "stop " does stop the Nest cam stream though??

presets not working using the given format

To get the presets to work I have to use
{"command": "lunch time", "user": "user", "broadcast": "true"}

Using this doesn't work, or I'm missing something else.
{"preset": "lunch time", "user": "user"}

edit: Using v2

Updated my mac OS to High Sierra and suddenly the relay doesn't work..

When i want to start the server i go in the assistant relay directory and run node index.js like below..
But i no longer hear the sound "assistant relay is now setup and running" there is no error message as can be seen below

i can even send the custom broadcast message and the server running receives it.. just that no sound on my google home.

Uraforclain:assistant-relay-master Uraforclain$ node index.js Fired up the SSDP Server for network discovery... Firing up the Web Server for communication on port 3000 Received command broadcast Assistant Relay is now setup and running No user specified, using uraforclain Google Assistant: Conversation Complete

Issue with index.js at first launch

I get the following error when I attempt to install now which i never got before:

Paste your code: (node:19205) UnhandledPromiseRejectionWarning: Error: Exited with code 3
    at ChildProcess.cp.once.code (/home/pi/assistant-relay/node_modules/opn/index.js:84:13)
    at Object.onceWrapper (events.js:317:30)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Socket.stream.socket.on (internal/child_process.js:346:11)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at Pipe._handle.close [as _onclose] (net.js:557:12)
(node:19205) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:19205) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Dunno what is causing that. Could it be the version of Node that I'm trying to use? I'm using 8.11.3. Also, all of my activity is showing up in My Activity in google but not getting any broadcasts.

issue setting up latest version of the relay

I was working with an older version of the relay till today. I downloaded the latest version of the relay and ran build-config. but it gives me following error:

pi@raspberrypi:~/GoogleRelay/assistant-relay-master $ npm run build-config

[email protected] build-config /home/pi/GoogleRelay/assistant-relay-master
node configBuilder.js

/home/pi/GoogleRelay/assistant-relay-master/configBuilder.js:30
let secret = result['Client Secret File Name'];
^^^
SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

Any help is appreciated. Thanks!

Message Un defined

hi there...

i only get un define message from the google speaker how ever i post or what ever i post
why is that?

Is there still an issue with google?

For some people there is no issues and for some I see they are still not able to hear the broadcast.
I am not sure what is the real issue here, I even see PM2 logs that shows below but google home does not broadcast it.
0|index | Fired up the SSDP Server for network discovery...
0|index | Firing up the Web Server for communication on address 192.168.1.97:3000
0|index | Assistant Relay is now setup and running for naseemra
0|index | Received command broadcast Assistant Relay is now setup and running for naseemra
0|index | No user specified, using naseemra

Broadcasts are not played on devices

For my setup broadcasts are not working. When sending a broadcast command to the assistant-relay, I get a success response and I can even see the correct command in my Google Assistant activity feed, but the message is not played on the device.

Does anybody has an idea, what causes this issue? Did I miss any configuration option?

Cannot GET /customBroadcast

Any hints?

`pi@raspi:~/assistant-relay $ npm run start

[email protected] start /home/pi/assistant-relay
node index.js

Fired up the SSDP Server for network discovery...
Firing up the Web Server for communication on address 10.10.10.53:3000
Assistant Relay is now setup and running for zap
Received command broadcast Assistant Relay is now setup and running for zap
No user specified, using zap
`

Add option to get an audio response for custom commands

Hi, Would it be possible to add the option to get an audio response for custom commands.
I like the "converse" function, but for requests like "Tell me a Joke" it cuts off the punchline and sounds a little robotic. It also broadcasts the response to the entire house.
It would be awesome if I could send a POST request to http://127.0.0.1:4000/custom?command=tell+me+a+joke&user=chase and get back an mp3 file with the assistant's response. That would mean I could just tell WebCORE to "Play Track: http://127.0.0.1:4000/custom?command=tell+me+a+joke&user=chase" on my kitchen speaker.

I was able to add the audio functionality to assistant relay and get it to play through the speakers of the computer I'm running it on as a test. However, I don't know NodeJS and I can't seem to figure out how to convert the audio buffer to a mp3 stream. Any help would be greatly appreciated.

Thanks,
Chase

Delay in Brodcasts

Hi, I really like your project it's very useful, keep up good work!
The only issue I face is that I have 3 Google Homes and very often I get a delay before each one of them give anouncement. Is there any thing that I can do to minimise the lag?
Thank You

tip for modify code

Hi Greg, thanks fot sharing this fantastic project!!

I would like to dig inside the sources and hack it in order to test sending commands to a specific google home devices group (instead of all). Do you know where I should starting to look for?

I’m not asking for code, I know you’re busy and you already written than possible support for groups will be added in the future :)
I’m just curious for a hint maybe you’re already figure where to start looking for (your project? some modifications inside the dependencies library?)

Thanks for your time in advance

repeat after me command not working

Hi,

I'm trying to use the repeat after me command to make google assistant say something but it's not working even with the converse attribute.
I know I can use the broadcast command, but I was trying this as an alternative way.

I can see the command on my history but I don't get a response. Everything it's working for other commands like tell me a joke.

Conversation Error: { Error: 16 UNAUTHENTICATED: Request had invalid authentication credentials.

Thank you for this app, I love it! I've been using assistant-relay for a couple days for a few home automation tasks but get an occasional error. Once it throws the error it repeats every 9th request over the course of a couple hours. I am unable to duplicate the issue by spamming requests over a short period of time. It seems every ninth request over an undetermined extended period of time triggers the error. I can work around the issue but if you have any insights as to the source of the problem I would greatly appreciate it. Thanks

Received command set thermostat to 70 degrees
User specified was myhomecontrols
Conversation Error: { Error: 16 UNAUTHENTICATED: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
    at Object.exports.createStatusError (C:\assistant-relay-master\node_modules\grpc\src\common.js:87:15)
    at ClientDuplexStream._emitStatusIfDone (C:\assistant-relay-master\node_modules\grpc\src\client.js:235:26)
    at ClientDuplexStream._receiveStatus (C:\assistant-relay-master\node_modules\grpc\src\client.js:213:8)
    at Object.onReceiveStatus (C:\assistant-relay-master\node_modules\grpc\src\client_interceptors.js:1290:15)
    at InterceptingListener._callNext (C:\assistant-relay-master\node_modules\grpc\src\client_interceptors.js:564:42)
    at InterceptingListener.onReceiveStatus (C:\assistant-relay-master\node_modules\grpc\src\client_interceptors.js:614:8)
    at C:\assistant-relay-master\node_modules\grpc\src\client_interceptors.js:1110:18
  code: 16,
  metadata: Metadata { _internal_repr: { 'www-authenticate': [Array] } },
  details: 'Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.' }

install

I am very new to Raspberry Pi , and I have spent the past few days trying to resolve this via google, However I am having some issues and would appreciate a point in the right direction.

During Install I get this error

`pi@pi:~/Assistant-relay $ npm install

[email protected] install /home/pi/Assistant-relay/node_modules/speaker
node-gyp rebuild

make: Entering directory '/home/pi/Assistant-relay/node_modules/speaker/build'
CC(target) Release/obj.target/output/deps/mpg123/src/output/alsa.o
../deps/mpg123/src/output/alsa.c:19:28: fatal error: alsa/asoundlib.h: No such file or directory
#include <alsa/asoundlib.h>
^
compilation terminated.
deps/mpg123/output.target.mk:108: recipe for target 'Release/obj.target/output/deps/mpg123/src/output/alsa.o' failed
make: *** [Release/obj.target/output/deps/mpg123/src/output/alsa.o] Error 1
make: Leaving directory '/home/pi/Assistant-relay/node_modules/speaker/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack at ChildProcess.emit (events.js:182:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:237:12)
gyp ERR! System Linux 4.14.52-v7+
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/Assistant-relay/node_modules/speaker
gyp ERR! node -v v10.6.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok

[email protected] install /home/pi/Assistant-relay/node_modules/grpc
node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp ERR! Tried to download(403): https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.8.0/node-v64-linux-arm-glibc.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v64 ABI, glibc) (falling back to source compile with node-gyp)
node-pre-gyp ERR! Tried to download(undefined): https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.8.0/node-v64-linux-arm-glibc.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v64 ABI, glibc) (falling back to source compile with node-gyp)
make: Entering directory '/home/pi/Assistant-relay/node_modules/grpc/build'
CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/init.o
make: Entering directory '/home/pi/Assistant-relay/node_modules/grpc/build'
CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/init.o
rm: cannot remove './Release/.deps/Release/obj.target/grpc/deps/grpc/src/core/lib/surface/init.o.d.raw': No such file or directory
grpc.target.mk:384: recipe for target 'Release/obj.target/grpc/deps/grpc/src/core/lib/surface/init.o' failed
make: *** [Release/obj.target/grpc/deps/grpc/src/core/lib/surface/init.o] Error 1
make: Leaving directory '/home/pi/Assistant-relay/node_modules/grpc/build'
CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/backoff/backoff.o
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack at ChildProcess.emit (events.js:182:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:237:12)
gyp ERR! System Linux 4.14.52-v7+
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--library=static_library" "--module=/home/pi/Assistant-relay/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc/grpc_node.node" "--module_name=grpc_node" "--module_path=/home/pi/Assistant-relay/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc"
gyp ERR! cwd /home/pi/Assistant-relay/node_modules/grpc
gyp ERR! node -v v10.6.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --library=static_library --module=/home/pi/Assistant-relay/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc/grpc_node.node --module_name=grpc_node --module_path=/home/pi/Assistant-relay/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc' (1)
node-pre-gyp ERR! stack at ChildProcess. (/home/pi/Assistant-relay/node_modules/grpc/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:182:13)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:961:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:5)
node-pre-gyp ERR! System Linux 4.14.52-v7+
node-pre-gyp ERR! command "/usr/bin/node" "/home/pi/Assistant-relay/node_modules/grpc/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--library=static_library"
node-pre-gyp ERR! cwd /home/pi/Assistant-relay/node_modules/grpc
node-pre-gyp ERR! node -v v10.6.0
node-pre-gyp ERR! node-pre-gyp -v v0.6.39
node-pre-gyp ERR! not ok
Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --library=static_library --module=/home/pi/Assistant-relay/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc/grpc_node.node --module_name=grpc_node --module_path=/home/pi/Assistant-relay/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc' (1)
CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_args.o
CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_stack.o
In file included from ../deps/grpc/src/core/lib/channel/channel_stack.cc:19:0:
../deps/grpc/src/core/lib/channel/channel_stack.h:38:23: fatal error: grpc/grpc.h: No such file or directory
#include <grpc/grpc.h>
^
compilation terminated.
grpc.target.mk:384: recipe for target 'Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_stack.o' failed
make: *** [Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_stack.o] Error 1
make: Leaving directory '/home/pi/Assistant-relay/node_modules/grpc/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack at ChildProcess.emit (events.js:182:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:237:12)
gyp ERR! System Linux 4.14.52-v7+
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--library=static_library" "--module=/home/pi/Assistant-relay/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc/grpc_node.node" "--module_name=grpc_node" "--module_path=/home/pi/Assistant-relay/node_modules/grpc/src/node/extension_binary/node-v64-linux-arm-glibc"
gyp ERR! cwd /home/pi/Assistant-relay/node_modules/grpc
gyp ERR! node -v v10.6.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/speaker):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] install: node-gyp rebuild
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: node-pre-gyp install --fallback-to-build --library=static_library
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /home/pi/.npm/_logs/2018-07-19T12_43_22_670Z-debug.log
pi@pi:~/Assistant-relay $
`

Unable to start assistant relay

I am getting the following error

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'start' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle [email protected]~prestart: [email protected]
6 info lifecycle [email protected]~start: [email protected]
7 verbose lifecycle [email protected]~start: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~start: PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/home/pi/assistant-relay/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9 verbose lifecycle [email protected]~start: CWD: /home/pi/assistant-relay
10 silly lifecycle [email protected]~start: Args: [ '-c', 'node index.js' ]
11 silly lifecycle [email protected]~start: Returned: code: 132  signal: null
12 info lifecycle [email protected]~start: Failed to exec start script
13 verbose stack Error: [email protected] start: `node index.js`
13 verbose stack Exit status 132
13 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:280:16)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid [email protected]
15 verbose cwd /home/pi/assistant-relay
16 verbose Linux 4.4.48+
17 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "start"
18 verbose node v8.9.0
19 verbose npm  v5.5.1
20 error code ELIFECYCLE
21 error errno 132
22 error [email protected] start: `node index.js`
22 error Exit status 132
23 error Failed at the [email protected] start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 132, true ]

> [email protected] start /home/pi/assistant-relay
> node index.js

Illegal instruction
npm ERR! code ELIFECYCLE
npm ERR! errno 132
npm ERR! [email protected] start: `node index.js`
npm ERR! Exit status 132
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-05-13T23_02_11_255Z-debug.log```

Can you issue tasks?

I can ask it to broadcast things, I can ask to tell me things such as the time.

Is there any way to action things? Such as "Set the volume to 20"

Cannot GET /customBroadcast

When I try to perform the test as listed in the instructions, I am receiving an error in my browser window:
Cannot GET /customBroadcast
The service is working (installed on my Ubuntu server) because when I execute it, it plays the audio stating that it's operational. I simply can not make calls to the api.
Any help would be appreciated.

Update instructions - lower case required when user name is used

Update instructions to inform users that when a user name is used in a command, the name must be all lower case. E.g., below in the Custom Broadcast and Custom Command sections.

Custom Broadcast

with the following parameters:

text: hello world
user:
user name must be lower case

Custom commands
If you want to send a custom command to the Google Home (anything that would follow 'OK Google'), use the following request:

http://<ip_address>:3000/custom?command=&user=
user name must be lower case

How do i do the POST of a broadcast message?

In your README there is a section
Issuing a command>Custom Broadcast

And the command is:
http://<ip_address>:3000/customBroadcast?text=hello+world&user=>user in config>

So my assumptions made are,

  1. ip_address to be replaced with my google home's ip address
  2. user inconfig replaced with my user account
  3. The POST request done has to be in the same network as the google home if not i cant see its IP address

However when i do a POST http://<ip_address>:3000/customBroadcast?text=hello+world&user=>user in config> in POSTMAN i get error:

Any ideas what I'm doing wrong?

There was an error connecting to http://192.168.1.107:3000/customBroadcast?text=hello+world&user=uraforclain.
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Client certificates are required for this server:
Fix this by adding client certificates in Settings > Certificates
Request timeout:
Change request timeout in Settings > General

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.