我想設置一個簡單的Azure函數來與Slack「斜槓」命令集成。似乎除了Slack發送內容類型爲'application/x-www-form-urlencoded'這似乎是連接,這顯然Azure函數不知道如何處理。無法使用Azure函數獲得Slack「slash命令」
我會讓它變成「un-doable」,除非Azure爲「Slack」設置了特定的Web鉤子設置,這使得我相信它應該能夠工作。
關於如何讓這個工作的任何提示?
我想設置一個簡單的Azure函數來與Slack「斜槓」命令集成。似乎除了Slack發送內容類型爲'application/x-www-form-urlencoded'這似乎是連接,這顯然Azure函數不知道如何處理。無法使用Azure函數獲得Slack「slash命令」
我會讓它變成「un-doable」,除非Azure爲「Slack」設置了特定的Web鉤子設置,這使得我相信它應該能夠工作。
關於如何讓這個工作的任何提示?
Azure函數確實支持Slack WebHooks。我不知道你碰到了,因爲這不是什麼具體錯誤,但這裏是一個斜槓命令功能,將回顯信息返回給用戶的一個簡單的例子:
代碼:
using System.Collections.Specialized;
public static async Task<string> Run(HttpRequestMessage req, TraceWriter log)
{
NameValueCollection data = await req.Content.ReadAsFormDataAsync();
return data["text"];
}
功能配置(注意網絡掛接式):
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"webHookType": "slack",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
],
"disabled": false
}
提示:有一兩件事值得一提的是,驗證將在鬆弛的要求進行,以確保它確實來自懈怠。由於Slack不允許您將函數密碼作爲標記,所以您希望做相反的操作(將Slack標記帶入您的函數,以便用作祕密)。爲了做到這一點,抓住你的Slack令牌,打開你的功能的「按鍵」面板,刪除你的功能級別「默認」鍵,並通過粘貼你從Slack獲得的令牌重新創建(將其命名爲「默認」) 。
我試着法比奧的方法,但無法讓它工作,因爲我不知道如果我們應該給鬆懈一個新的URL發送帖子(試圖變種的網址,但不斷得到客戶端錯誤信息)。我最終只是手動解析表單數據。這似乎每次都很好。
string responseURL = "";
string command = "";
string content = await req.Content.ReadAsStringAsync();
string formdata = content.Split(';')[0];
string[] namevalues = formdata.Split('&');
NameValueCollection col = new NameValueCollection();
foreach (string value in namevalues)
{
string[] nameValueItem = value.Split('=');
col.Add(nameValueItem[0], nameValueItem[1]);
log.Info(nameValueItem[0] + " - " + nameValueItem[1]);
if(nameValueItem[0] == "response_url")
{
responseURL = System.Web.HttpUtility.UrlDecode(nameValueItem[1]);
}
else if(nameValueItem[0] == "command")
{
command = System.Web.HttpUtility.UrlDecode(nameValueItem[1]);
}
}
添加標籤以確保很容易找到。希望下面的答案有所幫助。 –