天天看點

使用AzureFunction開發最簡單的Teams Outgoing Webhook

上篇文章講了teams app的serverless架構,這篇主要講如何真正使用Azure Function來開發一個最最簡單的Teams Outgoing Webhook。

我們先登入azure的portal,建立一個azure function。我這裡建立了一個名字叫outgoing-webhook的azure function。完成後如下圖,記住這個azure function的URL,我這裡是 

https://outgoing-webhook.azurewebsites.net

使用AzureFunction開發最簡單的Teams Outgoing Webhook

在左邊菜單裡選擇”Functions”,點選”Add”建立一個新的function

使用AzureFunction開發最簡單的Teams Outgoing Webhook

選擇Trigger,我們使用HTTP Trigger

使用AzureFunction開發最簡單的Teams Outgoing Webhook

輸入我們function的名字,我這裡叫HandleMessage,有一點需要注意,Authorization level需要選擇”Anonymous”,然後點選Create Function

使用AzureFunction開發最簡單的Teams Outgoing Webhook

完成後就可以看到我們有了HandleMessage這個函數。

使用AzureFunction開發最簡單的Teams Outgoing Webhook

輸入我們的outgoing webhook代碼。

使用AzureFunction開發最簡單的Teams Outgoing Webhook
#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;

public class Message
{
    public string Text { get; set; }
}

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    var message = JsonConvert.DeserializeObject<Message>(requestBody);
    return new OkObjectResult(new Message { Text = "Echo: " + message.Text });
}
           

回到Teams,先選擇需要添加outgoing webhook的一個team,選擇”Manage team”

使用AzureFunction開發最簡單的Teams Outgoing Webhook

進入”Apps”頁面,在右下方,點選 “Create an outgoing webhook”,你有可能看不到這個選項,如果看不到,你需要用管理者賬号按照下面的步驟到office365背景進行設定

使用AzureFunction開發最簡單的Teams Outgoing Webhook

使用你的Office365管理者賬号登入”https://portal.office.com”,點選”Admin”菜單

使用AzureFunction開發最簡單的Teams Outgoing Webhook

在左側找到”Teams”菜單

使用AzureFunction開發最簡單的Teams Outgoing Webhook

然後找到 “Teams app”,點選”Permission policies”,點選你所在policy組,我這裡是預設的”Global (Org-wide default)”

使用AzureFunction開發最簡單的Teams Outgoing Webhook

確定Custom apps是Allow all apps

使用AzureFunction開發最簡單的Teams Outgoing Webhook

再到Setup policies,確定 “Upload custom apps”是打開的狀态

使用AzureFunction開發最簡單的Teams Outgoing Webhook

回到Teams,重新整理頁面,或者重新登入,現在你應該可以看到 “Create an outgoing webhook”的連接配接了,點選它。

使用AzureFunction開發最簡單的Teams Outgoing Webhook

在彈出的頁面裡輸入你的webhook名字,和URL。 

使用AzureFunction開發最簡單的Teams Outgoing Webhook

我這裡使用名字”OutgoingWebhookTest”,URL是

https://outgoing-webhook.azurewebsites.net/api/HandleMessage

。這個URL就是我們前面建立的azure function的URL,加上function的名字。

{azure function url}/api/{http-triggered function name}
           
使用AzureFunction開發最簡單的Teams Outgoing Webhook

建立完後進入一個channel,at這個webhook,我這裡是 @outgoingWebhookTest

使用AzureFunction開發最簡單的Teams Outgoing Webhook

後面跟上你想發給這個webhook的文字。

使用AzureFunction開發最簡單的Teams Outgoing Webhook

發送後,等幾秒鐘後,你就可以收到我們function發回來的回複了。

使用AzureFunction開發最簡單的Teams Outgoing Webhook

如果你點開Azure Function的log,可以實時的看到我們function被teams調用的記錄

使用AzureFunction開發最簡單的Teams Outgoing Webhook

使用Azure Function開發的好處是代碼簡單,不需要ngrok之類的工具,而且當你webhook隻是用來自己測試玩玩,基本是免費的,這也是Azure serverless的一大優勢!

繼續閱讀