用AzureFunction开发最简单的Teams Bot
之前我有一篇文章講了如何在azure function上開發最簡單的outgoing webhook,收到一些反饋,建議我介紹一下如果在azure function上開發teams bot,那這篇文章就來講一下如何用function來快速開發bot。
我們先創建一個azure function資源,然后創建一個由http觸發的Function。具體步驟和上次outgoing webhook的步驟類似,我就不再重復。
為了調試方便,我這里允許匿名訪問這個function。
創建完function后,我們就可以輸入下面的代碼:
#r "Newtonsoft.Json"using System; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Microsoft.Bot.Connector; using Microsoft.Bot.Connector.Authentication; using Microsoft.Bot.Schema;public static async Task<IActionResult> Run(HttpRequest req, ILogger log) {string requestBody = await new StreamReader(req.Body).ReadToEndAsync();log.LogInformation(requestBody);var activity = JsonConvert.DeserializeObject<Activity>(requestBody);var reply = activity.CreateReply("Echo: " + activity.Text);log.LogInformation(JsonConvert.SerializeObject(reply));MicrosoftAppCredentials.TrustServiceUrl(activity.ServiceUrl, DateTime.UtcNow.AddDays(7));var botId = "2a820a1c-1111-2222-3333-e8864ad6ff54"; // your bot idvar botPassword = Environment.GetEnvironmentVariable("BotPassword"); // your bot passwordvar connector = new ConnectorClient(new Uri(activity.ServiceUrl), botId, botPassword);connector.Conversations.SendToConversationAsync(reply);return new OkResult(); }上面的代碼先從http請求的request body里反序列化出?Activity?對象。
var activity = JsonConvert.DeserializeObject<Activity>(requestBody);然后從這個activity對象,創建出回復的消息。
var reply = activity.CreateReply("Echo: " + activity.Text);接著,創建?connector?對象,然后用這個對象來發送回復的消息:
var connector = new ConnectorClient(new Uri(activity.ServiceUrl), botId, botPassword); connector.Conversations.SendToConversationAsync(reply);在發送回復消息之前,我們需要trust teams的serive url。
MicrosoftAppCredentials.TrustServiceUrl(activity.ServiceUrl, DateTime.UtcNow.AddDays(7));當我們保存上面的代碼的時候,azure function 就會自動進行編譯,但是編譯失敗,原因是?Microsoft.Bot.*?命名空間找不到,因為我們還沒有引用對應的庫。我們進入 App Service Editor (目前還是preview版本),在我們的function的目錄下創建一個?function.proj?文件。
function.proj?文件內容如下:
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netstandard2.0</TargetFramework></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.Bot.Schema" Version="4.10.3" /><PackageReference Include="Microsoft.Bot.Connector" Version="4.10.3" /></ItemGroup> </Project>回到function后,重新執行,就可以成功編譯執行了。
完成了function后,我們就可以和普通的bot一樣的在teams里創建一個bot app,然后填入azure function的url,就可以測試我們的bot了。 :D
總結
以上是生活随笔為你收集整理的用AzureFunction开发最简单的Teams Bot的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ 万能头文件
- 下一篇: 微信24小时客服热线电话/如何转到人工服