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函數,然後在那裏運行你的邏輯。

相關問題