rocketchat / hubot-rocketchat Goto Github PK
View Code? Open in Web Editor NEWRocket.Chat Hubot adapter
License: MIT License
Rocket.Chat Hubot adapter
License: MIT License
Currently implementation fails when there is interesting characters, like '@' signs, in passwords.
apending a , [room-id]
doesn't work
Hi. I'm trying to setup rocketchat/hubot-rocketchat
and rocketchat/rocket.chat
to work together with docker-compose. My docker-compose.yml
:
db:
image: mongo
volumes:
- ./data/runtime/db:/data/db
- ./data/dump:/dump
command: mongod --smallfiles
rocketchat:
image: rocketchat/rocket.chat
environment:
- MONGO_URL=mongodb://db:27017/rocketchat
- ROOT_URL=http://localhost:8818
links:
- db:db
ports:
- 8818:3000
hubot:
image: rocketchat/hubot-rocketchat
links:
- rocketchat:rocketchat
environment:
- ROCKETCHAT_URL=http://rocketchat:3000
- ROCKETCHAT_ROOM=GENERAL
- ROCKETCHAT_USER=bot
- ROCKETCHAT_PASSWORD=bot
- BOT_NAME=bot
- EXTERNAL_SCRIPTS=hubot-pugme,hubot-help
But it seem to not work for me. hubot container shows me only:
hubot_1 | [email protected] node_modules/hubot-help
hubot_1 |
hubot_1 | [email protected] node_modules/hubot-pugme
...
hubot_1 | [Sat Oct 31 2015 13:40:22 GMT+0000 (UTC)] INFO Starting Rocketchat adapter...
hubot_1 | [Sat Oct 31 2015 13:40:22 GMT+0000 (UTC)] INFO Once connected to rooms I will respond to the name: bot
hubot_1 | [Sat Oct 31 2015 13:40:22 GMT+0000 (UTC)] INFO Connecting To: http://rocketchat:3000
I also tried to run boot service from shell (using docker-compose.yml
listed before):
$ docker-compose run --service-ports hubot bash
hubot@6924d55fb96d:~$ bin/hubot -n $BOT_NAME -a rocketchat
It shows all the same:
[Sat Oct 31 2015 14:08:28 GMT+0000 (UTC)] INFO Starting Rocketchat adapter...
[Sat Oct 31 2015 14:08:28 GMT+0000 (UTC)] INFO Once connected to rooms I will respond to the name: bot
[Sat Oct 31 2015 14:08:28 GMT+0000 (UTC)] INFO Connecting To: http://rocketchat:3000
Pinging rocketchat
and curl http://rocketchat:3000
from hubot container works well.
Also I created bot user with the same password via user registration form.
Note: all other chat functions and chat itself works just fine. Only hubot is not working. I don't see any message from it and new commands are not appear after I type /
What am I doing wrong?..
doing a npm install hubot-rocketchat
does not have this commit bb55a88, which means the adapter will not work. Npm needs to be updated with master or potentially start using tags on this repo.
Just wondering how you guys are keeping Hubot alive and running as a daemon? My first thought was to use Forever, but it looks like Forever expects javascript.
Currently when you invite the rocketchat hubot to a room, he will not respond to any commands; I am assuming this is because he doesn't have a meteor subscription. In slack, if you invite hubot to a room, he automatically is available to chat with, you do not need to modify the configuration file to add those rooms.
Use travis-ci to create a delivery pipeline that will, upon the push of a tagged commit:
Stopping at any of the above steps and break pipeline on failure.
Additional feature (separate ticket later):
Integrate status webhooks with bots in DEMO.
The current implementation has a serious bug.
Currently, if the bot is asked to join 15 rooms - it will:
BUT - server side, the subscriptions are actually merged.
This means you end up with 15 handlers all going through the same merged subscription. CPU exhaustion is observed with increased number of rooms.
The code needs to be modified to:
Thanks to john.sinteur from the RC community for reporting this subtle problem.
hubot?
The RocketChat core team is rapidly restructuring core code - especially the Meteor pub-sub internals.
hubot-rocketchat depends on a server-side Meteor messages publication, ordered by timestamp, to work.
Even before the first pull request has been merged down, the original 'dashboardRoom' publication has already disappeared. In its place, a new 'messages' publication is now available. This may change again (?) as restructuring continues.
The reference to this publication is around line 5 of src/rocketchat_driver.coffee.
_msgsubtopic = 'dashboardRoom'
I run the docker container and it successfully connects to the room but the "subscription ready" message is never logged and the bot won't respond.
My full output looks like this:
$ docker run -it --rm -v $PWD:/home/hubot/node_modules/hubot-rocketchat -v $PWD/scripts:/home/hubot/scripts -e ROCKETCHAT_URL=192.168.X.X:3000 -e ROCKETCHAT_PASSWORD=password -e ROCKETCHAT_ROOM=general -e ROCKETCHAT_USER=hubot singli/hubot-rocketchat
[email protected] node_modules/hubot-maps
[email protected] node_modules/hubot-help
[email protected] node_modules/hubot-shipit
[email protected] node_modules/hubot-diagnostics
[email protected] node_modules/hubot-google-images
[email protected] node_modules/hubot-pugme
[email protected] node_modules/hubot-rules
[email protected] node_modules/hubot-google-translate
[Tue Sep 22 2015 19:51:42 GMT+0000 (UTC)] INFO running rocketchat
[Tue Sep 22 2015 19:51:43 GMT+0000 (UTC)] INFO first room general
[Tue Sep 22 2015 19:51:43 GMT+0000 (UTC)] INFO login
[Tue Sep 22 2015 19:51:43 GMT+0000 (UTC)] INFO logged in
[Tue Sep 22 2015 19:51:43 GMT+0000 (UTC)] INFO joined room
[Tue Sep 22 2015 19:51:43 GMT+0000 (UTC)] INFO prepare meteor subscriptions
[Tue Sep 22 2015 19:51:43 GMT+0000 (UTC)] INFO data.roomid == general
I can see the bot has entered the room. I also put some additional logging inside the message handler and I can't see any output.
Ideal for a contributor who fully understands the internals and has some 'say' or vote over schema/methods evolution.
I'm running the bot via command line: bin\hubot -a rocketchat.
I've got DEBUG enabled, so I can get as much output as possible.
Here's the output during startup, which just hangs at the end.
[Mon Sep 21 2015 11:41:30 GMT-0500 (CDT)] INFO logged in
[Mon Sep 21 2015 11:41:30 GMT-0500 (CDT)] INFO joining room
[Mon Sep 21 2015 11:41:30 GMT-0500 (CDT)] INFO joined room
[Mon Sep 21 2015 11:41:30 GMT-0500 (CDT)] INFO Preparing Subscriptions
[Mon Sep 21 2015 11:41:30 GMT-0500 (CDT)] INFO prepare meteor subscriptions
[Mon Sep 21 2015 11:41:30 GMT-0500 (CDT)] INFO data.roomid == general
I expect to see "subscription ready" output from
https://github.com/RocketChat/hubot-rocketchat/blob/master/src/rocketchat.coffee#L33
but it never comes out as it's the very next line in the code??
Thanks!
Hi,
Whenever i am running hubot with rocket chat adapter, it is giving the following output, and also not going to cli prompt. and if i am ping from Rocket chat url , it is just telling change received with the corresponding ID. There is no reply is coming back to chat window. I have put some external scripts to hear my command.
If i run without the rocket adapter , i am able to hear the command and respond back via Emit or reply.
Please help me to resolve the issue.
D:\webshot\myhubot>bin\hubot -a rocketchat
[Thu Oct 08 2015 17:02:55 GMT+0530 (India Standard Time)] INFO Starting Rocketchat adapter...
[Thu Oct 08 2015 17:02:55 GMT+0530 (India Standard Time)] INFO Once connected to rooms I will respond to the name: GroceryOps
[Thu Oct 08 2015 17:02:55 GMT+0530 (India Standard Time)] INFO Connecting To: 172.28.135.145:3000
[Thu Oct 08 2015 17:02:55 GMT+0530 (India Standard Time)] INFO Successfully Connected!
[Thu Oct 08 2015 17:02:55 GMT+0530 (India Standard Time)] INFO GENERAL
[Thu Oct 08 2015 17:02:55 GMT+0530 (India Standard Time)] INFO Logging In
[Thu Oct 08 2015 17:02:55 GMT+0530 (India Standard Time)] INFO D:\webshot\myhubot\scripts\example.coffee is using deprecated documentation syntax
[Thu Oct 08 2015 17:02:55 GMT+0530 (India Standard Time)] INFO D:\webshot\myhubot\scripts\router.coffee is using deprecated documentation syntax
[Thu Oct 08 2015 17:02:56 GMT+0530 (India Standard Time)] INFO Successfully Logged In
[Thu Oct 08 2015 17:02:56 GMT+0530 (India Standard Time)] INFO Joining Room: GENERAL
[Thu Oct 08 2015 17:02:56 GMT+0530 (India Standard Time)] INFO all rooms joined
[Thu Oct 08 2015 17:02:56 GMT+0530 (India Standard Time)] INFO Successfully joined room: GENERAL
[Thu Oct 08 2015 17:02:56 GMT+0530 (India Standard Time)] INFO Preparing Meteor Subscriptions..
[Thu Oct 08 2015 17:02:56 GMT+0530 (India Standard Time)] INFO Subscribing to Room: GENERAL
[Thu Oct 08 2015 17:02:56 GMT+0530 (India Standard Time)] INFO all subscriptions ready
[Thu Oct 08 2015 17:02:56 GMT+0530 (India Standard Time)] INFO Successfully subscribed to room: GENERAL
[Thu Oct 08 2015 17:02:56 GMT+0530 (India Standard Time)] INFO Setting up reactive message list...
[Thu Oct 08 2015 17:03:02 GMT+0530 (India Standard Time)] INFO Change received on ID hrJtvGtMEYGpwf9ng
Some users are testing with self-signed certs
Add an explicit environment variable, to bypass the SSL cert validity check, and enable use of self-signed SSL cert
Are we able to get the user``email address
while in the script? So far, I can see in the message
object we have:
message:
{ user:
{ id: 'ozCSNcrfcNJb2b7',
name: 'johndoe',
room: 'h7PdcWSubYw2zQy' },
text: '@R2Z2: get circuit 61011',
id: 'jMSMw4WtzvGQs9b',
done: false,
room: 'h7PdcWSubYw2zQy' },
match:
[ '@R2Z2: get circuit 61011',
'61011',
index: 0,
input: '@R2Z2: get circuit 61011' ],
envelope:
{ room: 'h7PdcWSubYw2zQy',
user:
{ id: 'ozCSNcrfcNJb2b7',
name: 'johndoe',
room: 'h7PdcWSubYw2zQy' },
message:
{ user: [Object],
text: '@R2Z2: get circuit 61011',
id: 'jMSMw4WtzvGQs9b',
done: false,
room: 'h7PdcWSubYw2zQy' } } }
I can get the User
name
but now wondering if there is a way to pull the email address either from rocket.chat or the LDAP instance using the name
?
Current login try once and fails, making login problem difficult to debug.
Include more extensive logging. Help to identify as much as possible, the cause of the failure.
Include details (if available) of networking stack failure - for example, invalid SSL certs.
I'm no expert in Javascript programming but a user of Atlassians toolset and would like to gain practical experience with RocketChat.
Currently there's no error if login doesn't succeed, although I've tried to include some try/catch + error callback while learning Coffeescript it still doesn't return anything helpful to understand why it doesn't login.
The call itself stops here and no code inside gets executed and no error is returned to its promise hence 'catch' doesn't get executed:
@chatdriver.login(RocketChatUser, RocketChatPassword).then (userid) =>
Any error callback or something that can expose what went wrong is more than helpful.
I thought the issue was with the password containing special characters like '@' but even if I changed to a simple one 'password12' it didn't work.
That's the loginWithPassword function in Asteroid that I found so far but couldn't make much progress with Coffeescript here:
https://github.com/mondora/asteroid/blob/master/src/core/login.js
PS: Tried running RocketChat locally without SSL and didn't work either
Tks a lot
I have two Hubot instances running and they are joining channels that I have not specified in their ROCKETCHAT_ROOM
env variable. Even though they sit in the incorrect public channels, they reply/respond according to what is defined in ROCKETCHAT_ROOM
.
Use the optimized streams based subscriptions for hubot
while the bot is able to login via the webinterface
[Fri Oct 09 2015 14:17:55 GMT+0200 (CEST)] WARNING No services ROCKETCHAT_URL provided to Hubot, using localhost:3000 [Fri Oct 09 2015 14:17:55 GMT+0200 (CEST)] INFO Connecting To: localhost:3000 [Fri Oct 09 2015 14:17:55 GMT+0200 (CEST)] INFO Successfully Connected! [Fri Oct 09 2015 14:17:55 GMT+0200 (CEST)] INFO testbot [Fri Oct 09 2015 14:17:55 GMT+0200 (CEST)] INFO Logging In [Fri Oct 09 2015 14:17:55 GMT+0200 (CEST)] ERROR hubot-heroku-alive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. `heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s | grep web_url | cut -d= -f2)` [Fri Oct 09 2015 14:17:56 GMT+0200 (CEST)] INFO hubot-redis-brain: Using default redis on localhost:6379 [Fri Oct 09 2015 14:17:56 GMT+0200 (CEST)] ERROR Unable to Login: [object Object] Reason: User has no password set
and this is what I capture via tcpdump
{"error":403,"reason":"User has no password set","message":"User has no password set [403]","errorType":"Meteor.Error"}}
It is difficult to set up the environment for hubot integration development. Multiple subsystems and their complex dependencies need to be installed and configured precisely, with exact matching configuration from a running Rocket.Chat instance for things to work.
This problem is not unique to the Rocket.Chat integration, but common to all hubot <-> chat integrations - and is a 'classic' use case for Docker.
Create Docker image(s) and matching docs to eliminate the need for complex setup.
This is a tough one.
This also depends heavily on the eventual security model / vision (and channels grouping / ownership hierarchy strategy) that the core team has in mind.
For the time being, it is probably wise to err on the permissive side.
What do you guys think?
Hey guys,
I tried to use the docker images of RocketChat (0.5.0) with the latest hubot-rocketchat.
In the logs of RocketChat I see the following:
[functions] RocketChat.sendMessage -> arguments: { '0': { _id: 'vc23ZEswYR5hu9q8q', username: 'timo.litzius' },
'1': { rid: '4K5xMvFttPTGKiNse', msg: 'try' },
'2': { _id: '4K5xMvFttPTGKiNse', t: 'c', name: 'botty' } }
{ rid: '4K5xMvFttPTGKiNse',
msg: 'try',
ts: Sun Oct 04 2015 15:17:26 GMT+0000 (UTC),
u: { _id: 'vc23ZEswYR5hu9q8q', username: 'timo.litzius' },
_id: 'bLczJQMam4p3xR2xn' }
ROCKETCHATADAPTER -> send
send 4K5xMvFttPTGKiNse: Trying is the first step towards failure. (timo.litzius)
Looks like the bot can pickup my messages but the response never appears in the channel.
Any ideas?
Cheers
Timo
Enable users to specify a room (or an array of rooms) by name. Currently implementation requires room IDs - which are no longer easy to find.
I am unable to find anything that allows Hubot to respond to direct messages. This is useful so that users can interact with him without spamming the chat.
It should still work if you have http:// at the beginning of your ROCKETCHAT_URL, or at least tell you why it's not working
Hubot needs to be able to get on enter events. For things like hubot-tell that needs to be able to tell someone something when it sees them next.
Can be stupid but I lost 5 min to understand that ROCKETCHAT_URL
is not asking an URL
as defined on spec https://url.spec.whatwg.org/#url-syntax because absolute URL
should have a scheme
.
-e ROCKETCHAT_URL=http://my-instance.local:3000
does not work!
It can be renamed by ROCKETCHAT_INSTANCE
or something else
Looking at some other ddp libraries. We're missing some important events like disconnect and reconnect. Our current one the maintainers haven't updated in a while. So might be worth looking at some more complete alternatives. Or at least something we can work with.
Here's one:
https://www.npmjs.com/package/ddp
I'll update with others I find.
I get the following error
ERROR hubot-heroku-alive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s | grep web_url | cut -d= -f2)
however removing
npm uninstall hubot-heroku-keepalive
causes the bot not to start at all
ERROR Error loading scripts from npm package - Error: Cannot find module 'hubot-heroku-keepalive'
After a clean clone of both chat and bot, the bot will not response to anything
[Tue Jul 28 2015 15:11:53 GMT+0000 (UTC)] WARNING No services ROCKETCHAT_URL provided to Hubot, using 10.0.0.121:3000
[Tue Jul 28 2015 15:11:53 GMT+0000 (UTC)] WARNING No services ROCKETCHAT_ROOM provided to Hubot, using general
[Tue Jul 28 2015 15:11:53 GMT+0000 (UTC)] WARNING No services ROCKETCHAT_USER provided to Hubot, using rocketbot
[Tue Jul 28 2015 15:11:53 GMT+0000 (UTC)] INFO running rocketchat
[Tue Jul 28 2015 15:11:53 GMT+0000 (UTC)] INFO login
[Tue Jul 28 2015 15:11:54 GMT+0000 (UTC)] INFO logged in
[Tue Jul 28 2015 15:11:54 GMT+0000 (UTC)] INFO joined room
[Tue Jul 28 2015 15:11:54 GMT+0000 (UTC)] INFO prepare meteor subscriptions
Need to respect other bots. In a multi-bots environment. Bots 'chatter' can ping-pong for minutes ! ๐ฎ
Read the currently 'hard coded' configuration parameters from the process's environment variables.
It may be helpful to have an additional capability to read these from a file (since execution environments such as Docker container can mount volumes).
When I the docker image the output is
[Tue Jun 09 2015 15:41:01 GMT+0000 (UTC)] INFO running rocketchat
[Tue Jun 09 2015 15:41:01 GMT+0000 (UTC)] INFO login
I try creating a user bot and rocketbot but is still not working
this are my configs
_meteorurl = "192.168.0.11:3000"
_hubotuser = "rocketbot"
_hubotpassword = "demodemo"
_roomid = "57om6EQCcFami9wuT"
to run the container I copy/paste the same command from inside the clones repo
Bot now has no memory of which message has been processed.
Robot.Chat's current design may cause the same message to be repeatedly presented to the bot.
Quick fix is for bot to remember the Msg ID of the most current 'threshold' number of messages processed. Threshold can be set to 100 or so for now?
Another possible 'fix' is to have an actual FLAG on the message to indicate 'bot processed'.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.