Hubot:如何指定 robot.http 要使用的代理

Hubot: How to specify the agent to be used by robot.http

我在一个有代理的公司环境中,所以我使用 "Forwarding all HTTP requests through a proxy" 下的 Hubot documentation 中提到的节。

proxy = require 'proxy-agent'
module.exports = (robot) ->
  robot.globalHttpOptions.httpAgent  = proxy('http://my-proxy-server.internal', false)
  robot.globalHttpOptions.httpsAgent = proxy('http://my-proxy-server.internal', true)

成功了,Hubot 可以连接到 Internet。


编辑:同时出现另一个问题。 proxy(http 为 false,https 为 true)的第二个参数在做什么?我在文档和源代码中找不到这个?


但是,我也有一些无法通过代理访问的(内部)资源。所以我有咖啡脚本想要to/cannot使用代理...

Hubot documentation 的同一位(同一节)还指出:

For one-off control, use can specify an Agent to use with robot.http.

忽略我认为的错字(use 真的应该是 you,我想),我想知道 如何 可以做到?

我基本上想禁用 来自这些"internal scripts" 的请求的代理。我认为这应该可以通过指定我想使用默认值 Agent 来实现。但是怎么办?

我尝试了所有我能想出的办法,但都无济于事。

我能够通过使用 pac+http 作为指定代理的协议来使代理 "pac aware"。成功了!

proxy = require 'proxy-agent'
module.exports = (robot) ->
  robot.globalHttpOptions.httpAgent  = proxy('pac+http://my-proxy-server.internal/proxy.pac', false)
  robot.globalHttpOptions.httpsAgent = proxy('pac+http://my-proxy- server.internal/proxy.pac', true)