ouvinte hubot http

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.