譯者 | 李睿
審校 | 孫淑娟
信使、網路服務和其他軟體都離不開機器人(bot)。而在軟體開發和應用中,機器人是一種應用程序,旨在自動執行(或根據預設腳本執行)響應用戶請求創建的操作。在本文中, NIX United公司的.NET開發人員Daniil Mikhov介紹了使用微軟Azure Bot Services創建聊天機器人的一個例子。本文將對想要使用該服務開發聊天機器人的開發人員有所幫助。
在Azure Bot Services上開發聊天機器人的優點在於微軟公司對其產品的高度支援。該公司的專家積極與技術社群溝通,並迅速識別和修復服務中的漏洞。此外,微軟公司提供了創建自訂JSON檔案的能力,以配合一些信使的API,讓開發人員在創建聊天機器人時有很多可能性。
記住Azure Bot Services的其他優點也很重要:
開發人員可以透過新增功能來擴展Azure平台上的聊天機器人基礎設施。例如,可以新增更多通道並使用每個通道進行測試。可以使用Cosmos DB服務來儲存對話狀態和使用者輸入的資訊。要訓練聊天機器人,可以加入語言理解 (LUIS)。它使用機器學習演算法來更好地與用戶交流。然而,LUIS並不是免費的,也不是每個客戶都想分配額外的資金。
在Azure上建立的聊天機器人的功能結構可以表示為:
可以在右側看到連接到聊天機器人的可能通道清單。這個清單會隨著新的平台不斷更新。其底部是Azure平台可以使用的Microsoft認知服務。這些服務允許透過語音請求、面部表情、手勢等與聊天機器人交流。
Bot Builder SDK用於在Azure上開發聊天機器人。該產品處於公共領域,其主要優勢是開發人員的持續支持。在GitHub上的一個單獨的分支中,可以獲得關於該服務的最新信息,或向其開發人員提問。
在編寫程式碼之前,分析一下在Azure Bot Service上建立聊天機器人之前應該考慮的細微差別:
##(1)聊天機器人能正確理解人們的問題嗎?
#與聊天機器人的交流是透過使用者介面進行的。使用者介面允許開發人員採用聊天機器人能理解的語言與它溝通。為此,微軟Azure使用了一個對話框系統,它遵循特定的層次結構:
在這裡可以看到與聊天機器人建立對話的三種基本方法:
在最下面的一行,可以看到為聊天機器人建立自訂請求的允許方法:
#選擇請求(選擇)
附件要求(附件)
##本質上,查詢是分階段的對話方塊:在第一個階段,聊天機器人要求輸入資料;
###########################################在第二個階段,它會向使用者傳回有效值,或在收到無效值時重新啟動資料查詢循環。 ##################(2)控制器與範本##################以下看## ####Daniil Mikhov######創建的「稍後提醒我」聊天聊天機器人範例中的程式碼,它的主要任務是提醒他將來需要採取的任何行動。 ############為了創建聊天機器人,Mikhov使用了Visual Studio提供的Empty Template,它包含幾種類型的控制器:BotController和NotifyController。
BotController為聊天機器人接收訊息並將它們傳遞給聊天機器人框架。聊天機器人還包含幾個部署模板,用於更輕鬆地將應用程式部署到Azure平台。
Notify Controller決定何時傳送訊息給使用者。將在後面更詳細地討論這個問題。
(3)啟動功能和填充ToDoDialog選項卡
#轉到Startup.cs選項卡,查看它的內容。這裡可以看到註冊的錯誤處理程序AdapterWithErrorHandler。如果錯誤發生在程式中,應用程式對錯誤的反應是必要的。注意註冊ConversationState——使用它來讓聊天機器人了解正在與哪個用戶交流,以及在對話的哪個階段。
以下看看ToDoDialog.cs標籤的內容。 Mikhov宣告了waterfallSteps,這是瀑布對話框的一組步驟,已經在上面提到過了。在waterfallSteps中,指定在每個步驟中使用哪些非同步函數來建立使用者和聊天機器人之間的對話。
以下可以看到聊天機器人將使用什麼類型的輸入提示。這裡的內容是相當標準的:聊天機器人會問人們一些關於事件的問題,然後提供安排提醒。
現在運行聊天機器人,並使用Bot Framework Emulator介面測試它的操作。
(4)在聊天機器人框架模擬器中首次啟動和測試
#當執行這個應用程式時,會出現一個連結到聊天機器人將等待用戶訊息的URL。
在開始測試之前,在聊天機器人框架模擬器中指定這個連結:
#在第一個通訊步驟中,聊天機器人要求使用者輸入需要提醒的事件名稱。為此,請呼叫以下程式碼:
現在,當呼叫聊天機器人時,它將返回以下文字:請輸入事件描述。在宣告想要進行提醒的事件(例如買牛奶)後,呼叫第二步驟的程式碼,在這裡,聊天機器人將提供三個提醒時間選項中的一個:
注意stepContext的使用。它保存關於對話框的所有信息,記錄中間值。為了實現可能的提醒時間列表,使用了ChoicePrompt。這個方法將為使用者提供三個選項和一個可能的提醒時間(2分鐘,5分鐘,或第二天的同一時間)。本來可以有更多的選擇,但只選了三個。
採用選擇來表示每個新的選擇時間,可以得到:
在聊天機器人框架模擬器中,這段程式碼將像這樣呈現:
可以使用Parse對結果進行解析。在此提醒的是,解析是一個自動收集資料並對其進行結構化的過程。然後聊天機器人會詢問用戶是否確定所選的提醒時間,使用ConfirmPrompt來確認協議:
#從視覺上看,這個方法如下所示:
#最後一步是從stepContext中取出之前填寫的信息,並產生一個SavedNotificationModel,必須在其上新增一個conversationReference。如果沒有它,聊天機器人將無法恢復與用戶的對話,也無法確定是哪個用戶專門解決了這個問題。
Mikhov
使用字典方法作為這些事件的暫存庫,多虧採用它,聊天機器人將其唯一的instanceId分配給每個特定的對話框:
#這將結束與聊天機器人的對話。可以向使用者顯示文本,指示對話框的結束並建立相應的提醒請求:「謝謝。通知已成功儲存」。
(5)聊天機器人如何穿越時間
為了及時定位聊天機器人,
Mikhov創建了notiffiedcontroller方法NotifyTimeCheck()。這種方法允許系統地輪詢應用程序,如果某個事件即將發生,聊天機器人將從字典中檢索該事件並向用戶發送通知。
為了取得通知,將呼叫BotAdapter的ContinueConversationAsync()方法,並將ConversationReference傳遞給它。 ContinueConversationAsync()的第一個參數必須始終是聊天機器人服務的appId(應用ID),否則,它將無法運作。
此外,還需要提醒聊天機器人,當某個時間到達時,必須將事件提醒給特定的使用者。開發人員可以使用Azure Function(BotTimerFunction),它將由一個時間觸發器(TimerTrigger)觸發。
每隔一分鐘,函數將會向這個端點發送一個請求,並開始檢查指定的事件。如果它到達了正確的時間框架,聊天機器人將通知用戶預定的事件即將發生。
如今,WhatsApp、Facebook Messenger、Telegram和其他通訊工具不僅是交流平台,也是業務平台。聊天機器人幫助企業有效地在線上銷售和推廣商品和服務。實現日常流程的自動化,及時向客戶提供必要的產品訊息,接收和處理請求——所有這些適當配置的聊天機器人的功能將有助於將用戶轉化為客戶。因此,作為開發人員,應該記住這個工具現在是多麼流行,能夠創建這樣的應用程式並因此成為受歡迎的專家是多麼酷的事。
原文標題:#How to Create a Chatbot Using Azure Bot Service: Step-by-Step Instruction#,##作者:Daniil Mikhov
以上是如何使用Azure Bot Services建立聊天機器人的逐步說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!