我有一个 Hubot 插件,它监听 JIRA webhook,并在创建新票证时在房间内宣布:
module.exports = (robot) ->
robot.router.post '/hubot/tickets', (req, res) ->
data = if req.body.payload? then JSON.parse req.body.payload else req.body
if data.webhookEvent = 'jira:issue_created'
console.dir("#{new Date()} New ticket created")
shortened_summary = if data.issue.fields.summary.length >= 20 then data.issue.fields.summary.substring(0, 20) + ' ...' else data.issue.fields.summary
shortened_description = if data.issue.fields.description.length >= 50 then data.issue.fields.description.substring(0, 50) + ' ...' else data.issue.fields.description
console.log("New **#{data.issue.fields.priority.name.split ' ', 1}** created by #{data.user.name} (**#{data.issue.fields.customfield_10030.name}**) - #{shortened_summary} - #{shortened_description}")
robot.messageRoom "glados-test", "New **#{data.issue.fields.priority.name.split ' ', 1}** | #{data.user.name} (**#{data.issue.fields.customfield_10030.name}**) | #{shortened_summary} | #{shortened_description}"
res.send 'OK'
我想扩展它,对远程 API 执行查找 - 基本上,我想要查找额外的信息,然后添加到我传递给的消息中room.messageRoom
。我正在使用请求,因为我需要摘要支持。
因此,以下代码段本身就可以正常工作。
request = require('request')
company_lookup = request.get('https://example.com/clients/api/project?name=FOOBAR', (error, response, body) ->
contracts = JSON.parse(body)['contracts']
console.log contracts
).auth('johnsmith', 'johnspassword', false)
这就是我的 JS/Node 新手出现的地方……哈哈。
我可以在回调中处理响应 - 但我真的确定如何在回调之外访问它?
我应该如何将它集成到 webhook 处理代码中 - 我是否只需将代码段移动到 if 块中,并将其分配给一个变量?