簡體   English   中英

MS Teams 消息擴展在測試服務器上不起作用[雲]

[英]MS Teams Message Extension not working on test server[Cloud]

我已經使用 Java [Spring Boot] 開發了 MS Teams 消息擴展,並在 Botframework 開發門戶 [https://dev.botframework.com/] 中注冊了該機器人。 它在本地運行良好。 我使用名為 localtunnel 的隧道應用程序在本地環境中進行了測試。 我在 MS Teams 中測試了擴展。

我將代碼推送到雲 [AWS],因為它在本地運行良好,並且還更改了消息端點 URL 以指向我們的測試服務器。 但是,不幸的是我得到“機器人返回不成功的狀態碼未經授權。”[你可以看到截圖]。 測試服務器消息端點不需要 JWT 令牌,我可以從郵遞員那里成功調用它而無需提供令牌。

根據文檔,此錯誤通常發生在以下情況:

  • 在 Bot Framework Portal 中您的機器人的設置頁面上指定的消息傳遞端點不正確。 確保在 URL 的末尾包含正確的路徑(例如,/api/messages)。

  • 在 Bot Framework 門戶中為您的 bot 的設置頁面上指定的消息傳遞端點不以 https 開頭,或者不受 Bot Framework 信任。 您的機器人必須具有有效的鏈式信任證書。

  • 機器人配置了應用 ID 或密碼的缺失值或錯誤值。 驗證機器人配置設置是否為應用 ID 和密碼指定了有效值。

在我的情況下,所有觀點都是正確的。

在本文檔中,“步驟 4:在雲中測試你的機器人”的“測試你的機器人”部分提到了 Azure 機器人資源。

https://docs.microsoft.com/en-us/azure/bot-service/bot-service-troubleshoot-authentication-problems?view=azure-bot-service-4.0&tabs=csharp#step-3

那么為了在雲上測試機器人,是否需要在 Azure Bot 服務而不是 Botframework 開發門戶上進行注冊呢? 我們不能只通過在 Botframework 開發門戶上注冊來測試它嗎?

在此處輸入圖像描述

dev.botframework.com門戶已棄用,因此我建議不要繼續使用它。 Azure Bot 資源是 Bot Channels Registration 的演變和替代,因此您需要使用它在雲中測試您的 bot。 它有效地做同樣的事情,但它更好地處理舊門戶沒有的各種新的安全和租賃功能。

此外,您鏈接的文檔提到必須為非 Azure 部署采取額外的安全配置步驟,以使您的機器人使用 https。 確保在填寫 Azure Bot 配置中的消息傳遞終結點之前執行此操作。

我弄清楚了這個問題。 盡管可以在沒有我們應用程序的任何 JWT 令牌的情況下調用消息端點,但如果令牌出現在 Authorization 標頭中而不是忽略它,代碼會驗證令牌。 MS Teams 在每個請求的 Authorization 標頭中發送 JWT 令牌以驗證它是否來自團隊,但擴展應用程序正在將團隊發送的此令牌與我們的應用程序進行比較。 由於這個令牌不是由我們的應用程序創建的,而是由 bot 框架創建的,所以它在未經授權的情況下拋出 401。

因此,請確保您的應用忽略在消息端點的授權標頭中發送的令牌。

關於我的其他疑問:

  • 在 azure 中注冊 bot 以便在雲中進行測試不是強制性的,您也可以在開發門戶中注冊它。 由於開發門戶已貶值,我強烈建議使用 azure,因為它非常安全。

  • 您也可以進行非天藍色部署。 您可以在您選擇的任何雲提供商中部署您的擴展應用程序或消息 API 端點。 但是您必須在開發門戶或 azure 中注冊該機器人,這將調用您的擴展應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM