Se você tem um hubot funcionando, tornando sua vida melhor, pode ser útil ouvi-lo ouvir mensagens de fontes externas. Você pode fazer com que o hubot execute um ouvinte HTTP e defina as rotas que acionam ações personalizadas (como as rotas em um aplicativo de nó expresso ou um aplicativo de Backbone).
A primeira coisa que você precisa fazer é certificar-se de que seu hubot está escutando as solicitações HTTP. Para fazer isso, basta definir a variável PORT env em sua configuração bin / hubot para qualquer porta desejada.
export PORT=8080
Agora você tem que criar um script de café no diretório de script do hubot que escuta as rotas ou caminhos de URL e faz algo por você. Aqui está um exemplo bastante genérico de um script que é acionado quando “/ flybot / message” é atingido e passa uma mensagem para um usuário ou canal. Ele procura por dois parâmetros de string de consulta, o usuário ou canal para o qual retransmitir a mensagem e a própria mensagem.
url = require('url')
querystring = require('querystring')
module.exports = (robot) ->
robot.router.get "/flybot/message", (req, res) ->
query = querystring.parse(url.parse(req.url).query)
user = {}
user.room = query.room if query.room
try
robot.send user, "INCOMING MESSAGE: " + query.message
res.end "message sent: #{query.message}"
catch error
console.log "message-listner error: #{error}."
robot.router.get “/ flybot / message” é o que diz ao hubot para ouvir as solicitações GET para “/ flybot / message”. Você também pode ouvir POSTs por meio do robot.router.get e a carga útil do POST está disponível em req.body.payload
robot.send envia a mensagem para o objeto Usuário (que pode ser um usuário ou um canal). Para um usuário, você pode usar algo como “jsolis” e para um canal, você teria que enviar algo como “#mychannel” (lembre-se de codificar URLEn o # em sua querystring% 23mychannel).
res.end encerrará sua resposta e enviará o parâmetro de string de volta ao chamador.