Office 365 機器人(Bot)開發入門指南 (新篇)


最近在整理書稿時,發現我在2017年7月份寫的這篇 Office 365 機器人(Bot)開發入門 的內容,因為相關平台的升級,已經完全不能體現當前的開發過程,所以我再專門寫一篇新的開發入門指南給有興趣的大家參考。

這次平台升級的具體開始時間我不得而知,但是如果你現在繼續訪問 https://dev.botframework.com/ ,你將會看到一個明確的提示,要求將早先創建好的Bot在2018年3月31日之前遷移到新的Azure Bot Service:

如果你此時點擊了“Create a bot”按鈕的話,你也將被要求通過Azure Portal來操作:

這將意味着,現在要進行機器人的開發,你必須首先擁有一個Azure的訂閱,不管是試用版的,還是正式版的。本文將假定你已經擁有這些條件。

值得注意的是,目前Azure的國內版還沒有Bot Service的功能。

三種不同類型的Bot

你可以在Azure Portal中搜索Bot Service,或者快速通過 這個地址 定位到目前支持的三種Bot Service類型,如下圖所示:

它們分別的使用場景如下

  1. Web App Bot。這種類型將在Azure中創建一個App Service來運行你的Bot,並且通過模板和自動化的配置極大地簡化你的開發過程。
  2. Function Bot。這種類型將在Azure中創建一個Azure Function App來運行你的Bot,同樣也是會有模板和自動化配置來簡化開發,它與Web App Bot的區別在於,它的計費是按照具體的使用次數,而不是虛擬機的啟用時間——事實上,這也正是Azure Function App和web App的本質區別。我個人覺得,這種形式應該是更加符合機器人的特點的——它是按需調用的,並不見得要一直運行在后台。
  3. Bot Channels Registration。這種類型是支持你將Bot應用部署到你自己選擇的其他位置(可能是你的數據中心,也可以是其他的雲平台),然后通過Azure來做Channel的注冊和對接。如果你看過我上一篇文章,你應該會對Bot,Bot Framework,Channel有一些概念,如果還不太明白,我下面會繼續做一些解釋。

在開發階段,不管是上述哪一種類型的Bot,我們都可以選擇“免費”的價格進行開發和調試(普通信道無限量消息,高級信道每月10000次消息調用)。"免費”的服務是沒有SLA保障的,但對於開發階段來說已經足夠了。

三種常見的Azure 機器人服務方案

雖然我們知道創建Bot並不難,本文后半部分也將再次以一個實例來介紹如何開發和測試基於Azure Bot Service的機器人。但在此之前,我還是摘錄三種常見的Azure機器人服務方案給大家參考,了解這些業界流行的做法和流程,可能會對你后續開發有借鑒意義。

商務聊天機器人

Azure 機器人服務和語言理解服務結合可使開發人員能夠創建針對各種場景的對話接口,如銀行、旅游和娛樂。例如,酒店禮賓員可以使用機器人增強傳統的電子郵件和電話呼叫交互,方法是通過 Azure Active Directory 驗證客戶,並使用認知服務更好地根據實際情景利用文字和語音處理客戶請求。可以添加語音識別服務來支持語音命令。

信息聊天機器人

此信息機器人可回答知識集中定義的問題或使用認知服務 QnA Maker 回答常見問題,以及使用 Azure 搜索回答更加開放的問題。

企業效率聊天機器人

Azure 機器人服務可輕松與語言理解結合以生成強大的企業效率機器人,讓組織可以通過集成外部系統(如 Office 365 日歷、Dynamics CRM 中存儲的客戶事例等)來簡化常見工作活動。

Function Bot 開發和調試

下面我將以一個實例來演示如何開發和調試Function Bot。在下圖的向導中,你需要指定一個唯一的名稱,並且選擇存儲位置,定價層(我選擇F0,是指免費的定價),宿主計划我選擇的是“消耗計划”指的是按調用次數付費,Application insights選擇“打開”以便后期可以通過一個儀表盤來看到機器人被調用的統計數據。

你已經看到了,Azure Bot Service默認提供了兩種語言(C#和Node.js)的五種模板。我先以Basic為例創建一個應用。創建成功后,請在下面的界面中點擊“Test in Web Chat”來進行測試。

在線修改代碼並且進行測試

這就是Basic模板默認提供的功能,它就像是一個回聲筒一樣,將你發送過去的話再返回過來。如果你覺得這樣太無聊了,你當然可以修改代碼讓它變得有趣一些。請點擊“機器人管理”中的“內部版本”這個菜單。

點擊“在Azure Functions中打開此機器人”鏈接,在接下來的界面中,找到EchoDialog.csx這個文件,按照下面紅色框示意修改代碼

點擊“保存”按鈕,然后回到此前的"Test in Web Chat”頁面,再次輸入你的消息,觀察其返回的內容,現在在回復消息中多了一個時間戳了。

本地修改機器人代碼並實現持續整合

以上演示了如何在線修改代碼並進行測試的方法。只要你願意,你隨時可以將代碼下載到本地,然后使用你喜歡的編輯器進行本地開發,最后提交給Azure Bot Service。請在下圖中點擊“下載zip文件”鏈接。

你需要使用Visual Studio 2017打開這個解決方案文件

將上面這一行代碼稍作修改,例如:await context.PostAsync($"{this.count++}: You said {message.Text} at {DateTime.Now},Modify by Visual Studio");

接下來,我們要將本地這個目錄進行git配置,以便后續可以跟Azure Bot Service 進行持續整合(通過git的代碼提交,自動替換Azure Bot Serivce代碼並觸發編譯,更新Bot應用)。請確保你的本地計算機上面安裝了git工具。

以上通過git init命令初始化當前目錄的git倉庫。然后通過git add .命令和git commit -m命令提交本地更新。接下來我們配置Bot Service以便它能使用本地git倉庫進行持續整合。

請點擊上圖的“所有應用服務設置”菜單,並且接下來的“部署選項”中選擇“本地Git存儲庫”選項

點擊“保存”按鈕后,設置“部署憑據”。請牢記這個用戶名和密碼,並且不要泄露給其他人。

在“概述”頁面中,此時會多出來一個Git的克隆Url,如下圖所示

請將這個地址復制下來,接下來回到git bash的窗口。通過git remote add origin 你的url 命令添加遠程存儲庫綁定,並且通過git push origin master命令來完成代碼推送。

推送成功后稍等片刻,再次回到Azure Bot Service的“Test in Web Chat”菜單,你會發現剛才我們在Visual Studio中進行的代碼修改已經起了作用,如下圖所示。

使用Bot Framework Emulator進行調試

如果你想進行更加細節的調試,我推薦你下載和安裝 Bot Framework Emulator。通過它來進行調試的好處是可以清晰地看到消息發送和接收的細節,如下圖所示

在你的業務應用中整合這個機器人

上面我們演示了如何開發、測試和調試機器人,默認情況下,Azure Bot Service會將這個機器人連接到一個Web Chat的信道(Channel),這樣的話,我們既可以通過之前多次演示的“Test in web chat”界面進行使用,但也可以將這個界面整合到自己的業務應用中來,為此我們需要獲取機器人嵌入代碼,如下圖所示

你可以配置多個站點,並且為每個站點都生成一個單獨的密鑰以進行區分,然后點擊“復制”按鈕,實際上你會得到一串HTML代碼,里面是一個iframe。請注意用你的密鑰替換掉代碼中的“使用此處的密鑰”,請將代碼保存為一個HTML文件,如下圖所示

請注意,我這里添加了一個Style的設置,這是為了讓它在瀏覽器中看起來更加美觀一些。接下來你可以在任意瀏覽器中打開這個本地網頁,輸入消息后你會得到跟此前一致的使用體驗。

將機器人連接到Microsoft Teams

既然這篇文章講的是“Office 365 機器人(Bot)開發入門”,自然要提到如何跟Office 365的結合。這個話題有兩層含義,首先在Bot Service中可以通過Microsoft Graph調用Office 365的服務來完成一些工作,其次是我們可以將機器人連接到Office 365的組件中來,目前支持Microsoft Teams和Skype for Business兩個信道,如下圖所示

添加到Microsoft Teams相對容易一些,你只需要點擊上圖中的Microsoft Teams圖標,並且接受協議,在下圖中點擊“完成”即可。

回到信道主界面,點擊“Microsoft Teams”的鏈接,即可為自己的Microsoft Teams客戶端添加當前這個機器人。

如果不出意外的話,你的聯系人中會出現一個機器人,你可以像跟同事聊天一樣與它進行互動了。

如果你的同事也需要使用這個機器人,在你沒有將這個應用提交給微軟官方的市場之前,他們需要通過機器人的編號進行搜索,如下圖所示

添加聯系人后,后續的聊天形式是一樣的

關於如何將你開發的這個機器人提交到微軟的官方市場,請參考 https://docs.microsoft.com/zh-cn/microsoftteams/platform/publishing/apps-publish 的說明。

將機器人連接到Skype for Business

與Microsoft Teams相比,將機器人連接到Skype for Business的體驗正好相反——它的安裝配置過程比較復雜(需要Office 365管理員權限),但一旦配置完成,則整個公司的用戶都能直接搜索到這個機器人,而無需發布到微軟的應用市場。

添加Skype for Business這個信道只是第一步,接下來要根據一個文檔的說明,使用Office 365管理員身份以及幾個PowerShell的命令來完成這個機器人的注冊和配置。通常的指令形式如下圖所示

在我的Office 365測試環境中,我執行的命令如下圖所示(請注意,第二個命令的執行可能需要幾分鍾時間)

完成上面的配置后,任何一個用戶,都可以直接在Skype for Business中搜索中這個機器人並且跟它聊天了。

請注意,我前面已經提到了,因為當前這個機器人是托管在免費的模式下,所以可能你在測試過程中偶爾會遇到一些錯誤。

結語

新年新氣象,這篇文章給大家完整地介紹了全新的Azure Bot Service提供的服務。我們可以利用它快速地完成機器人的開發、測試,根據自己的需要將其連接到包括Microsoft Teams和Skype for Business在內的多個信道中去,真正實現“一次編寫、處處運行”,我相信這種平台級別的創新,結合Office 365的龐大用戶群體,以及海量的有價值的信息,使得機器人(Bot)不再是一個實驗室中的花骨朵,而是我們現實工作和生活中可以觸手可及的應用。

順便預告一下,第三屆Office 365開發者大會將於3月17-18日在北京將隆重舉辦,我將做關於機器人開發的主題演講。這一屆大會規模比之前兩屆大,精彩內容除了Office 365, 還有Windows 10的最新開發場景。歡迎踴躍報名,希望現場可以看到你。活動詳情和報名請訪問 https://aka.ms/M365DevDays, 你也可以通過掃描以下二維碼進行訪問


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM