如何開發Teams Bot

很多朋友問我如何開發一個成功的Teams Bot,他們說Bot Framework SDK看起來簡單,但是真要的去開發一款成熟的bot,很多地方還是不知道如何使用。我從最早的bot framework還在beta的時候開始用,后來framework經歷了多次大的改動,目前版本是v4,我想通過一系列的文章來系統的介紹如何使用bot framework來開發一個功能齊全的teams bot。

這篇文章我先給大家一個總體的介紹,讓大家理解Teams,Azure Bot Service,Bot Framework,和我們自己的bot代碼是什么關系。

在過去的一二十年的互聯網和移動互聯網的發展,產生了很多的聊天工具,skype,teams,slack等等,這些聊天工具在聊天方面有一些共同模式。比如一個用戶可以參與到多個對話中,每個對話由一系列的消息組成。用戶和用戶可以一對一聊天,也可以多個用戶一起群聊。所以微軟看到了一個機會:可以抽象出一個模型,如果基于這個通用的模型進行開發bot,那這個bot就可以同時適用于所有的聊天工具。

?

Azure Bot Service就是鏈接各種聊天服務的一個服務,它把在不同平臺上抽象出一個統一的模型,并且把這個統一模型傳遞到后端的開發人員開發的bot服務,當bot服務需要發送一個消息或者事件的時候,把這個信息再傳遞給不同的聊天服務。

明白了Azure Bot Service后,我們來看一下Bot Framework SDK,剛才我們說了Azure Bot Service把各種聊天服務的統一模型傳遞到大家開發的bot服務,雖然我們可以完全自己去處理這種統一模型,但是事實證明,這個處理會非常的繁瑣,這個時候我們就需要使用Bot Framework SDK。這個SDK把這個統一模型進一步處理,抽象出了turn等概念,并且做了一整套處理bot的framework(adapter, middleware, state等等)。目標是把整個bot服務可以標準化,流程化。我之后的文章將針對整個bot framework進行詳細的講解。

理解了上面這兩個概念后,我們來看一下Teams,Teams app實際上包含很多方面,bot只是teams app里面的一種,或者說是一個teams app能提供的眾多能力中的一種,當然也是最重要的一種能力。teams app出了這種,還可以是一個tab應用,connector等等。

希望上面的說明能夠給大家提供一個teams和azure bot service的大局觀。我后繼文章會慢慢具體解釋所有的細節。我去年自己開發的teams app:LuckyDraw,實際上并沒有使用全套的bot framework,只是用了一些activity的模型,在實際開發中完全自己來處里各種復雜的具體細節,比較繁瑣,導致后期增加功能的時候維護成本增大。我今年的目標是全面使用bot framework出一版的新LuckyDraw。

最后我想說一下我自己對于Azure Bot Service的看法,雖然Azure Bot service的初衷是統一各類聊天平臺,讓開發人員可以一次開發,就把bot用于所有平臺。這個有點像當年.net的初衷(一套代碼,支持各種操作系統),但是.net可是走了多少年才走到這一步。bot service雖然不會像.net這么復雜龐大,但是各個聊天平臺的差異性不是這么容易統一的。可以看一下?這篇文檔,大家就能知道有多少差異性了,為了把這些差異性盡量統一并同時支持平臺特有的一些功能,實際上bot framework已經變得有點臃腫了。

Bot framework路還很長,而且bot的功能發展也很快,希望它能一步步走踏實。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277951.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[CF903G]Yet Another Maxflow Problem

[CF903G]Yet Another Maxflow Problem 題目大意: 有\(A\)類點和\(B\)類點各\(n(n\le2\times10^5)\)個,所有\(A_i\)到\(A_{i1}\)有一條權值為\(a_i\)的有向邊,所有\(B_i\)到\(B_{i1}\)有一條權值為\(b_i\)的有向邊,另有\(m(m\le2\t…

P1579哥德巴赫猜想

寫來自己學習用~ 題目內容: 1742年6月7日哥德巴赫寫信給當時的大數學家歐拉,正式提出了以下的猜想:任何一個大于9的奇數都可以表示成3個質數之和。質數是指除了1和本身之外沒有其他約數的數,如2和11都是質數,而6不是質…

在VSCode Remote環境下開發Teams Bot

我使用VS Code開發已經有蠻長一段時間了,時間長了,越來越喜歡VS Code,雖然有些時候會沒有傳統的VS方便,比如開發Azure Function時你需要編寫一下launch.json,而且你需要手動啟動StorageEmulator,但是也正是…

查看安卓APK源碼破解

原文:查看安卓APK源碼破解工具準備&#xff1a; <1>.android4me的AXMLPrinter2工具 <2>dex2jar <3>jd-gui 工具下載&#xff1a;http://download.csdn.net/detail/catshitone/8491347 開始&#xff1a; 第一步&#xff1a; 首先用解壓軟件&#xff08;如好…

實驗六:類的封裝

一、實驗代碼如下&#xff1a; 1 package 實驗6;2 3 import java.util.Scanner;4 5 6 public class Account {7 8 public int id;9 public String name;10 public long number;11 public long time;12 public int money;13 14 //方法Account()…

Teams Bot開發系列:初識Bot

上次我們講了Teams Bot開發的概述&#xff0c;講了Azure Bot Service&#xff0c;Bot Framework SDK和我們自己的bot服務的概念&#xff0c;這篇文章就帶大家看看Azure Bot Service和我們的bot是如何發生關系的。 我們自己開發的bot服務實際上就是一個api service&#xff0c;…

[環境搭建]SDN網絡感知服務與最短路徑應用

1.安裝python模塊networkxpip install networkx2.給Network_Awareness.py加修改權限chmod 777 Network_Awareness.py3.下載安裝ryugit clone git://github.com/osrg/ryu.gitcd ryu sudo python ./setup.py install#若已安裝ryu,刪了再裝&#xff0c; pip uninstall ryu4.修改“…

我需要別人承認才快樂嗎?

關于生命的感悟兩個故事第一個故事&#xff0c;一個尖子生考上了麻省理工學院&#xff0c;在那里所有同學都很優秀&#xff0c;競爭非常強烈&#xff0c;她發現再也不能出類拔萃&#xff0c;在各方面贏過別人&#xff0c;于是覺得生活看不到希望&#xff0c;郁郁寡歡&#xff0…

Teams Bot開發系列:Activity和Turn

這篇文章我們來說一下Activity和Turn這兩個bot framework中最重要的兩個概念&#xff0c;同時也介紹一下TurnContext和BotAdapter Activity 一個activity是聊天雙方的一個信息載體&#xff0c;它可以是一條消息&#xff0c;也可以是一個動作。比如用戶給bot發送一條文字消息&…

ubuntu16.04下安裝opencv出現libgtk2.0-dev配置失敗問題解決方法

第一次在ubuntu下安裝opencv&#xff0c;遇到很多問題&#xff0c;特別是libgtk2.0-dev總是配置失敗的問題&#xff0c;在網上也看到一些解決方法&#xff0c;自己也遇到一些比較奇葩的問題&#xff0c;故整理于此。 網上大部分的解決方案就是更改下載源&#xff0c;我看到一些…

03|模型I/O:輸入提示、調用模型、解析輸出

03&#xff5c;模型I/O&#xff1a;輸入提示、調用模型、解析輸出 從這節課開始&#xff0c;我們將對 LangChain 中的六大核心組件一一進行詳細的剖析。 模型&#xff0c;位于 LangChain 框架的最底層&#xff0c;它是基于語言模型構建的應用的核心元素&#xff0c;因為所謂 …

selenuim自動化爬取汽車在線谷米愛車網車輛GPS數據爬蟲

#為了實時獲取車輛信息&#xff0c;以及為了后面進行行使軌跡繪圖&#xff0c;寫了一個基于selelnium的爬蟲爬取了車輛gps數據。 #在這里發現selenium可以很好的實現網頁解析和處理js處理 #導包 import timefrom selenium import webdriverfrom selenium.webdriver.support.wai…

Teams Bot開發系列:Activity處理流程

上篇文章介紹了什么是Activity&#xff0c;Turn&#xff0c;TurnContext和BotAdapter&#xff0c;這篇文章我們看看這些東西是如何竄起來的&#xff0c;他們是如何處理用戶發給bot的消息的。 我們以一個最簡單的bot&#xff0c;echo bot為例子&#xff0c;所謂的echo bot就是用…

寫單元測試的好處(轉)

許多開發者都有個習慣&#xff0c;常常不樂意去寫個簡單的單元測試程序來驗證自己的代碼。對自己的程序一直非常有自信&#xff0c;或存在僥幸心理每次運行通過后就直接扔給測試組測試了。然而每次測試組的BUG提交過來后就會發現自己的程序還存在許多沒有想到的漏洞。但是每次修…

linux下搭建go環境--問題記錄

記錄自己在linux上搭建go環境的經歷。&#xff08;因為各種版本&#xff0c;linux系統問題掙扎了幾天&#xff09; 安裝vmware-tools,把我要運行代碼拷進來。這個網上方法很多&#xff0c;我的電腦抽風不能安裝&#xff0c;后面重裝的虛擬機確定Ubuntu版本、位數。很重要&#…

Teams Bot開發系列:Teams的Activity處理

上一篇文章講了activity處理的流程&#xff0c;我們bot的核心處理邏輯放在ActivityHandler的子類里&#xff0c;通過重載OnMessageActivityAsync()方法來實現。 這篇文章我來講一下對于Teams的bot來說&#xff0c;整個處理的邏輯會有哪些不同點。 通過之前的文章&#xff0c;…

取球博弈

兩個人玩取球的游戲。一共有N個球&#xff0c;每人輪流取球&#xff0c;每次可取集合{n1,n2,n3}中的任何一個數目。 如果無法繼續取球&#xff0c;則游戲結束。 此時&#xff0c;持有奇數個球的一方獲勝。 如果兩人都是奇數&#xff0c;則為平局。 假設雙方都采用最聰明的取法…

MySQL修改字符集

MySQL數據庫修改字符集,介紹一下修改的方法 1&#xff09;系統工具iconv #file filename #mysqldump --default-character-setutf8 >20180523xxx.sql #file 20180523xxx.sql #iconv -t utf8mb4 -c 20180523xxx.sql>20180523xxxutf8mb4.sql #file 20180523xxxutf8mb4.sql…

Teams Bot開發系列:Bot驗證

我們今天來說一下authentication&#xff0c;authentication一直是一個復雜的問題。bot里的authentication也不簡單。我們先來看一個概念&#xff1a;Bot Framework Token Service&#xff0c;根據官方定義&#xff0c;這個token service主要是&#xff1a; Facilitating the u…

堆排序

目錄 一、定義二、算法分析三、代碼地址一、定義 1.1 堆 ? 此處的堆&#xff0c;指數據結構中的堆。而不是內存中的那種內存堆&#xff0c;內存堆是基于數據結構的一種實現。堆的數據結構是一棵完全二叉樹&#xff0c;它有如下特點&#xff1a;&#xff08;具體參考下文鏈接&a…