如何使用Azure Bot Services建立聊天機器人的逐步說明

王林
發布: 2023-04-11 18:34:04
轉載
1827 人瀏覽過

譯者 | 李睿

審校 | 孫淑娟

信使、網路服務和其他軟體都離不開機器人(bot)。而在軟體開發和應用中,機器人是一種應用程序,旨在自動執行(或根據預設腳本執行)響應用戶請求創建的操作。在本文中, NIX United公司的.NET開發人員Daniil Mikhov介紹了使用微軟Azure Bot Services創建聊天機器人的一個例子。本文將對想要使用該服務開發聊天機器人的開發人員有所幫助。

為什麼使用Azure Bot Services?

在Azure Bot Services上開發聊天機器人的優點在於微軟公司對其產品的高度支援。該公司的專家積極與技術社群溝通,並迅速識別和修復服務中的漏洞。此外,微軟公司提供了創建自訂JSON檔案的能力,以配合一些信使的API,讓開發人員在創建聊天機器人時有很多可能性。

記住Azure Bot Services的其他優點也很重要:

  • Azure Bot Services允許開發人員使用開源SDK工具(軟體開發工具包)來創建、測試和部署聊天機器人。
  • 與認知服務的整合是指在工作中使用機器學習工具來解決典型任務的服務。認知服務確保了聊天機器人和使用者之間更好的互動過程。
  • 多平台是指將聊天機器人連接到多個通道而無需更改原始程式碼的能力。
  • 大量的開源範例以促進開發過程和快速啟動(GitHub上有很多現成的程式碼範例)。

開發人員可以透過新增功能來擴展Azure平台上的聊天機器人基礎設施。例如,可以新增更多通道並使用每個通道進行測試。可以使用Cosmos DB服務來儲存對話狀態和使用者輸入的資訊。要訓練聊天機器人,可以加入語言理解 (LUIS)。它使用機器學習演算法來更好地與用戶交流。然而,LUIS並不是免費的,也不是每個客戶都想分配額外的資金。

Azure Bot Services中的聊天機器人剖析

在Azure上建立的聊天機器人的功能結構可以表示為:

如何使用Azure Bot Services建立聊天機器人的逐步說明

可以在右側看到連接到聊天機器人的可能通道清單。這個清單會隨著新的平台不斷更新。其底部是Azure平台可以使用的Microsoft認知服務。這些服務允許透過語音請求、面部表情、手勢等與聊天機器人交流。

Bot Builder SDK用於在Azure上開發聊天機器人。該產品處於公共領域,其主要優勢是開發人員的持續支持。在GitHub上的一個單獨的分支中,可以獲得關於該服務的最新信息,或向其開發人員提問。

建立聊天機器人

在編寫程式碼之前,分析一下在Azure Bot Service上建立聊天機器人之前應該考慮的細微差別:

##
  • 破壞功能的更新。微軟公司正在不斷更新其產品。新的更新經常會破壞以前可以工作的部分程式碼。所以一定要了解新的Bot Builder SDK版本的補丁列表,而用來開發聊天機器人的其他手冊可能會變得無關緊要。
  • 不明顯的解決方案。在使用Bot Builder SDK時,應該始終對實驗持開放態度,並願意以不同於以往的方式進行操作。
  • 多功能性。同一個聊天機器人可以上傳到不同的頻道(Telegram、Skype、Slack等等),而不需要更改原始碼。在開發聊天機器人時應該記住,每個平台都有細微差別,這需要開發人員在創建應用程式的工作邏輯時採用不同的方法。

(1)聊天機器人能正確理解人們的問題嗎?

#與聊天機器人的交流是透過使用者介面進行的。使用者介面允許開發人員採用聊天機器人能理解的語言與它溝通。為此,微軟Azure使用了一個對話框系統,它遵循特定的層次結構:

如何使用Azure Bot Services建立聊天機器人的逐步說明

在這裡可以看到與聊天機器人建立對話的三種基本方法:

  • #提示-聊天機器人透過提示和回答與使用者互動。例如,以數位提示的形式給予聊天機器人資訊。 Prompt檢查使用者是否正確地回答了提示。如果成功,與聊天機器人的對話將繼續進行。如果從使用者那裡收到不正確的回答,他將被提示輸入有效的資料。
  • 瀑布-瀑布是一種透過一系列連續任務/問題從使用者收集資訊的方法。瀑布對話框的每個步驟都是作為非同步函數實現的。在每個階段,聊天機器人要求使用者輸入數據,等待回應,然後將結果傳遞到下一步。第一個函數的結果作為參數傳遞給下一個函數,以此類推,直到傳遞完整個問題循環。
  • 元件-元件是將龐大的對話方塊分解成更小的、易於管理的部分的一種方法。元件允許開發人員創建一個可重複使用的對話框,並在以後的各種獨立場景中使用它。例如,可以使用它來建立一個對話框,該對話框將依序向使用者詢問街道名稱/地址/郵遞區號。

在最下面的一行,可以看到為聊天機器人建立自訂請求的允許方法:

  • #文字查詢(文字)
  • #號碼查詢(數量)
  • ##日期/時間請求(日期時間)
  • 確認請求(確認)

#選擇請求(選擇)

附件要求(附件)

##本質上,查詢是分階段的對話方塊:在第一個階段,聊天機器人要求輸入資料;

###########################################在第二個階段,它會向使用者傳回有效值,或在收到無效值時重新啟動資料查詢循環。 ##################(2)控制器與範本##################以下看## ####Daniil Mikhov######創建的「稍後提醒我」聊天聊天機器人範例中的程式碼,它的主要任務是提醒他將來需要採取的任何行動。 ############

為了創建聊天機器人,Mikhov使用了Visual Studio提供的Empty Template,它包含幾種類型的控制器:BotController和NotifyController。

BotController為聊天機器人接收訊息並將它們傳遞給聊天機器人框架。聊天機器人還包含幾個部署模板,用於更輕鬆地將應用程式部署到Azure平台。

如何使用Azure Bot Services建立聊天機器人的逐步說明

Notify Controller決定何時傳送訊息給使用者。將在後面更詳細地討論這個問題。

(3)啟動功能和填充ToDoDialog選項卡

#轉到Startup.cs選項卡,查看它的內容。這裡可以看到註冊的錯誤處理程序AdapterWithErrorHandler。如果錯誤發生在程式中,應用程式對錯誤的反應是必要的。注意註冊ConversationState——使用它來讓聊天機器人了解正在與哪個用戶交流,以及在對話的哪個階段。

如何使用Azure Bot Services建立聊天機器人的逐步說明

以下看看ToDoDialog.cs標籤的內容。 Mikhov宣告了waterfallSteps,這是瀑布對話框的一組步驟,已經在上面提到過了。在waterfallSteps中,指定在每個步驟中使用哪些非同步函數來建立使用者和聊天機器人之間的對話。

如何使用Azure Bot Services建立聊天機器人的逐步說明

以下可以看到聊天機器人將使用什麼類型的輸入提示。這裡的內容是相當標準的:聊天機器人會問人們一些關於事件的問題,然後提供安排提醒。

如何使用Azure Bot Services建立聊天機器人的逐步說明

現在運行聊天機器人,並使用Bot Framework Emulator介面測試它的操作。

(4)在聊天機器人框架模擬器中首次啟動和測試

#當執行這個應用程式時,會出現一個連結到聊天機器人將等待用戶訊息的URL。

如何使用Azure Bot Services建立聊天機器人的逐步說明

在開始測試之前,在聊天機器人框架模擬器中指定這個連結:

如何使用Azure Bot Services建立聊天機器人的逐步說明

#在第一個通訊步驟中,聊天機器人要求使用者輸入需要提醒的事件名稱。為此,請呼叫以下程式碼

如何使用Azure Bot Services建立聊天機器人的逐步說明

現在,當呼叫聊天機器人時,它將返回以下文字:請輸入事件描述。在宣告想要進行提醒的事件(例如買牛奶)後,呼叫第二步驟的程式碼,在這裡,聊天機器人將提供三個提醒時間選項中的一個:

如何使用Azure Bot Services建立聊天機器人的逐步說明

注意stepContext的使用。它保存關於對話框的所有信息,記錄中間值。為了實現可能的提醒時間列表,使用了ChoicePrompt。這個方法將為使用者提供三個選項和一個可能的提醒時間(2分鐘,5分鐘,或第二天的同一時間)。本來可以有更多的選擇,但只選了三個。

採用選擇來表示每個新的選擇時間,可以得到:

如何使用Azure Bot Services建立聊天機器人的逐步說明

在聊天機器人框架模擬器中,這段程式碼將像這樣呈現:

如何使用Azure Bot Services建立聊天機器人的逐步說明

可以使用Parse對結果進行解析。在此提醒的是,解析是一個自動收集資料並對其進行結構化的過程。然後聊天機器人會詢問用戶是否確定所選的提醒時間,使用ConfirmPrompt來確認協議:

如何使用Azure Bot Services建立聊天機器人的逐步說明#從視覺上看,這個方法如下所示:

如何使用Azure Bot Services建立聊天機器人的逐步說明#最後一步是從stepContext中取出之前填寫的信息,並產生一個SavedNotificationModel,必須在其上新增一個conversationReference。如果沒有它,聊天機器人將無法恢復與用戶的對話,也無法確定是哪個用戶專門解決了這個問題。

如何使用Azure Bot Services建立聊天機器人的逐步說明Mikhov

使用字典方法作為這些事件的暫存庫,多虧採用它,聊天機器人將其唯一的instanceId分配給每個特定的對話框:

如何使用Azure Bot Services建立聊天機器人的逐步說明#這將結束與聊天機器人的對話。可以向使用者顯示文本,指示對話框的結束並建立相應的提醒請求:「謝謝。通知已成功儲存」。

如何使用Azure Bot Services建立聊天機器人的逐步說明(5)聊天機器人如何穿越時間

為了及時定位聊天機器人,

Mikhov創建了notiffiedcontroller方法NotifyTimeCheck()。這種方法允許系統地輪詢應用程序,如果某個事件即將發生,聊天機器人將從字典中檢索該事件並向用戶發送通知。

如何使用Azure Bot Services建立聊天機器人的逐步說明為了取得通知,將呼叫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中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板