最近在整理書稿時,發現我在2017年7月份寫的這篇 Office 365 機器人(Bot)開發入門 的內容,由於相關平臺的升級,已經徹底不能體現當前的開發過程,因此我再專門寫一篇新的開發入門指南給有興趣的你們參考。git
此次平臺升級的具體開始時間我不得而知,可是若是你如今繼續訪問 https://dev.botframework.com/ ,你將會看到一個明確的提示,要求將早先建立好的Bot在2018年3月31日以前遷移到新的Azure Bot Service:github
若是你此時點擊了「Create a bot」按鈕的話,你也將被要求經過Azure Portal來操做:web
這將意味着,如今要進行機器人的開發,你必須首先擁有一個Azure的訂閱,不論是試用版的,仍是正式版的。本文將假定你已經擁有這些條件。瀏覽器
值得注意的是,目前Azure的國內版尚未Bot Service的功能。bash
你能夠在Azure Portal中搜索Bot Service,或者快速經過 這個地址 定位到目前支持的三種Bot Service類型,以下圖所示:app
它們分別的使用場景以下編輯器
在開發階段,不論是上述哪種類型的Bot,咱們均可以選擇「免費」的價格進行開發和調試(普通訊道無限量消息,高級信道每個月10000次消息調用)。"免費」的服務是沒有SLA保障的,但對於開發階段來講已經足夠了。工具
雖然咱們知道建立Bot並不難,本文後半部分也將再次以一個實例來介紹如何開發和測試基於Azure Bot Service的機器人。但在此以前,我仍是摘錄三種常見的Azure機器人服務方案給你們參考,瞭解這些業界流行的作法和流程,可能會對你後續開發有借鑑意義。測試
Azure 機器人服務和語言理解服務結合可以使開發人員可以建立針對各類場景的對話接口,如銀行、旅遊和娛樂。例如,酒店禮賓員可使用機器人加強傳統的電子郵件和電話呼叫交互,方法是經過 Azure Active Directory 驗證客戶,並使用認知服務更好地根據實際情景利用文字和語音處理客戶請求。能夠添加語音識別服務來支持語音命令。ui
此信息機器人可回答知識集中定義的問題或使用認知服務 QnA Maker 回答常見問題,以及使用 Azure 搜索回答更加開放的問題。
Azure 機器人服務可輕鬆與語言理解結合以生成強大的企業效率機器人,讓組織能夠經過集成外部系統(如 Office 365 日曆、Dynamics CRM 中存儲的客戶事例等)來簡化常見工做活動。
下面我將以一個實例來演示如何開發和調試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。經過它來進行調試的好處是能夠清晰地看到消息發送和接收的細節,以下圖所示
上面咱們演示瞭如何開發、測試和調試機器人,默認狀況下,Azure Bot Service會將這個機器人鏈接到一個Web Chat的信道(Channel),這樣的話,咱們既能夠經過以前屢次演示的「Test in web chat」界面進行使用,但也能夠將這個界面整合到本身的業務應用中來,爲此咱們須要獲取機器人嵌入代碼,以下圖所示
你能夠配置多個站點,而且爲每一個站點都生成一個單獨的密鑰以進行區分,而後點擊「複製」按鈕,實際上你會獲得一串HTML代碼,裏面是一個iframe。請注意用你的密鑰替換掉代碼中的「使用此處的密鑰」,請將代碼保存爲一個HTML文件,以下圖所示
請注意,我這裏添加了一個Style的設置,這是爲了讓它在瀏覽器中看起來更加美觀一些。接下來你能夠在任意瀏覽器中打開這個本地網頁,輸入消息後你會獲得跟此前一致的使用體驗。
既然這篇文章講的是「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 的說明。
與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, 你也能夠經過掃描如下二維碼進行訪問