2017-06-06 61 views
4

我有一个PowerShell HTTP触发器连接到Slack命令。如果PS触发器在3秒内响应<一切都很好。我有这个工作如何从Azure功能PowerShell HTTP触发器立即响应,然后响应“带外到另一个Url”?

如果需要更长时间,Slack需要两件事情,立即响应,然后在response_url的带外响应。

这工作。如果我在set-content之后放置了sleep 10,则返回和Slack都表示超时。

有没有办法在PowerShell中实现这一点?

@" 
{ 
    "response_type": "ephemeral", 
    "text": "Checking $(get-date) ..." 
} 
"@ | set-content $res -Encoding Ascii 

带外工作。

$b = @" 
{ 
    "response_type": "in_channel", 
    "text": "It's 80 degrees right now.", 
    "attachments": [ 
     { 
      "text":"Partly cloudy today and tomorrow" 
     } 
    ] 
} 
"@ 

Invoke-RestMethod $responseUrl -Method post -Body $b -ContentType "application/json" 
+0

“简单”的方法是始终返回即时响应,然后在带外执行,即使它在3秒内完成。否则,您需要将您正在进行的操作和时间设置为背景,以便在2 - 2.5秒后您可以返回即时响应。如果您可以在Azure函数中运行空间(异步调用)以及等待超时,那么这是可行的。 – briantist

回答

3

做,在Azure中函数的正确方式是让你的HTTP触发功能只是在队列推送消息,然后立即返回。然后让另一个正在该队列上侦听的Azure函数,然后在那里运行你的逻辑。

相关问题