透過 Azure AI Bot Service 來建立整合通訊軟體的聊天機器人

  • 58
  • 0
  • 2024-05-25

過去寫了一堆 Azure OpenAI Service 的系列文章,我們已經可以透過程式來客制化出聊天機器人,但是還是需要自行開發網站 UI 或是單純整合到現有程式系統內,如果要更快速的做出聊天機器人或是要整合到企業內部常用的通訊軟體像是 Slack、Teams 等,甚至是 Line 的話,我們可以透過 Azure 上面的 Azure AI Bot Service (原名 Azure Bot Service) 來快速的整合這些通訊軟體,而且還可以做出更多豐富的聊天機器人的畫面內容。

說明

Azure AI Bot Service 原本名稱是 Azure Bot Service,是 Azure 上面一個發展已久的服務,我們可以透過這個服務快速的整合到各種常見的通訊軟體,可以省下我們要去研究各種不同通訊軟體的 API 來自行串接,在開發上微軟也有推出 Bot Framework SDK 讓協助我們開發出複雜的聊天機器人,目前已經發展到 v4 版本,支援了 C#、JavaScript、Python、Java 等程式語言。除此之外也可以透過整合 Power Virtual Agents 透過 UI 來更快速的設計和整合更多服務來建置企業內部的複雜情境聊天機器人,另外微軟也提供了本機的 Bot Framework Composer 工具可以協助來編輯和設計聊天機器人。

Java 版本 Bot Framework SDK 已在 2023 年 11 月結束長期支援。

實做

接下來我們來部署一個簡單的 EchoBot 範例到 Azure AI Bot Service 上面。 

搜尋 Azure Bot 來建立服務。

Bot 控制代碼是這個 Bot 的唯一 Id。資料落地則是可以針對特定國家的資料儲存需求作調整,會影響到建立好的服務可以串接的通道。目前定價層有兩種一個是免費一個是標準,可以針對需求選擇。Microsoft App ID 則是影響到未來存取 Bor Service 的權限以及使用的服務主體,目前可以選擇的項目有使用者指派的受控識別、單一租用戶和多租用戶,如果未來會需要存取 Tenant 或是跨 Tenant 存取資源的話才選擇單一租用戶或是多租用戶,不然可以選擇使用者指派的受控識別即可,這邊我單純要 Demo 就選擇使用者指派的受控識別,並且建立一個新的受控識別。

接下來建立一個 App Service,到時候要拿來部署開發出來實際運作邏輯的聊天機器人站台,建立過程沒特別的就不多做說明,只有在建立好之後需要調整身分識別的設定。依序來新增使用者指派的受控識別,這邊應該可以選擇到被自動建立的識別,名稱會和剛剛建立的 Bot Service 一樣。

然後回到 Bot Service 的組態設定把 App Service 網址設定上去,後面記得補上 /api/messages,這是之後開發好的 Bot Api 站台的固定位址。

接下來就是把一個 EchoBot 站台部署上去,可以到官方的 GitHub 來下載範例程式碼。

然後打開 appsettings.json 設定相關參數,因為前面我選擇使用者指派的受控識別,所以在 MicrosoftAppType 的地方就輸入 UserAssignedMSI 以及 MicrosoftAppId 和 MicrosoftAppTenantId 這兩個參數,可以再前面的 Bot Service 組態中找到這些值,好了之後就可以把站台部署到 App Service 上面。

{
  "MicrosoftAppType": "UserAssignedMSI",
  "MicrosoftAppId": "{MicrosoftAppId}",
  "MicrosoftAppPassword": "",
  "MicrosoftAppTenantId": "{MicrosoftAppTenantId}"
}

接下來可以在 Bot Service 上面測試結果,就可以看到 Bot 會回覆我們傳給他的訊息。

到這邊就完成一個簡單的聊天機器人了。後續就可以到頻道這邊來設定要串接哪些通訊軟體或是服務了。

目前可以設定的有底下這些服務,設定好之後就可以到相關的軟體測試聊天機器人了,我們就可以很輕鬆的把聊天機器人串接到想要的服務而不要另外撰寫額外程式碼,只需要專注在聊天機器人的邏輯上就好了。

前面只簡單 Demo 了一個範例,GitHub 上的範例還有很多,有興趣的朋友可以參考看看。

比如 CardBot 就展示了 Bot Framework 可以支援卡片類型的內容,它可以呈現多種卡片類型,有興趣的朋友可以試看看,但是如果有串接通道的服務的話,需要注意該種卡片類型是否可以支援,不然是無法在該服務上正確呈現卡片。

結論

本文簡單快速的介紹了 Azure AI Bot Service 這個服務,並簡單部署一個範例站台來測試,不過 Bot Framework 不只是這樣,他還支援很多豐富的聊天內容,可以參考官方的 GitHub 範例來實做自己的 Bot 邏輯和回覆的內容,當然可以再結合之前的 OpenAI 可以讓聊天的結果更好,之後針對這個服務有其它新的心得再分享給大家。

參考資料