使用 ngrok 從任何通道進行 Bot 偵錯Debug a bot from any channel using ngrok

適用于: SDK v4APPLIES TO: SDK v4

當您的 bot 正在開發時,您可以 使用 IDE (例如 Visual Studio 或 Visual Studio Code)在本機上進行 bot 的偵錯工具。When your bot is in development, you can debug your bot locally using an IDE such as Visual Studio or Visual Studio Code. 您也可以在本機與 bot 聊天,並檢查 bot 傳送和接收的訊息,以 使用 Bot Framework Emulator 來對 bot 進行偵錯工具。You can also debug a bot using the Bot Framework Emulator by chatting with your bot locally and inspect the messages your bot sends and receives. 您甚至可以對 bot 的程式碼進行輕微的更新,並啟用此功能以 使用檢查中介軟體來對 bot 進行 debug。You can even make slight updates of your bot's code and enable the feature to debug a bot with inspection middleware.

當您的 bot 已在生產環境中時,您可以使用 ngrok 從任何 通道進行 bot 的偵測。When your bot is already in production, you can debug your bot from any channel using ngrok. 您的 bot 與多個通道的無縫連線是 Bot Framework 中提供的重要功能。The seamless connection of your bot to multiple channels is a key feature available in Bot Framework. 在本文中,我們將示範如何使用 ngrok,從您的生產 bot 所設定的任何通道,在本機對 bot 進行程式性的偵錯工具。In this article, we will show you how to locally debug your bot from any channel your production bot is configured for, using ngrok. 我們在本文中使用了連線到Microsoft 團隊頻道EchoBot範例,以取得指示。We used an EchoBot sample connected to Microsoft Teams Channel throughout the article for instruction.

必要條件Prerequisites

執行 ngrokRun ngrok

ngrok 是一種跨平臺的應用程式,可讓您將在本機電腦上執行的 web 伺服器公開到網際網路。」ngrok is a cross-platform application that "allows you to expose a web server running on your local machine to the internet." 基本上,我們要做的是使用 ngrok 將訊息從網路上的外部通道直接轉送到本機電腦,以允許進行偵錯工具,而不是在 Azure 入口網站中設定的標準訊息端點。Essentially, what we'll be doing is using ngrok to forward messages from external channels on the web directly to our local machine to allow debugging, as opposed to the standard messaging endpoint configured in the Azure portal.

  1. 開啟終端機,並流覽至 ngrok 可執行檔所在的資料夾。Open a terminal and navigate to the folder where your ngrok executable is.

  2. 使用下列命令執行 ngrok ,以建立新的通道。Run ngrok with the following command to create a new tunnel.

    ngrok http 3978 -host-header="localhost:3978"
    

    注意

    請注意,指定的埠是您的 bot 執行所在的埠。Please note that the port specified is the port your bot is running on. 您可以使用任何您想要的 localhost 埠。You may use any localhost port you'd like.

  3. ngrok 啟動時,請複製並儲存公用轉送 URL 以供稍後之用。When ngrok starts, copy and save the public forwarding URL for later.

    ngrok 轉送 urlngrok forwarding url

在 Azure 入口網站中設定Configure in Azure portal

Ngrok 正在執行時,請登入您的 Azure 入口網站並查看您的 bot 設定,以進行某些設定。While ngrok is running, login to your Azure portal and view your bot settings to do some configuration.

  1. 選取連接到本機 bot 的 Bot 通道註冊Select your Bot Channels Registration connected to your local bot.

  2. 向下滾動至設定Scroll down to Configuration. 在 [訊息端點] 欄位中複製並貼上 ngrok 轉送 URL。Copy and paste the ngrok forwarding URL in the Messaging endpoint field. 確定您在 URL 的結尾處維持 "/api/messages"。Ensure that you maintain "/api/messages" at the end of the URL.

    訊息端點messaging endpoint

  3. 向上快移,然後選取 [ 儲存]。Scroll up and select Save.

測試Test

此時,來自外部通道的連入訊息會傳送至您的 bot,現在會傳送至您的本機 bot。At this point, incoming messages from to your bot from external channels will now be sent to your local bot. 我們將用來示範這項工作的範例 bot 已針對 Microsoft 小組 即時設定。The sample bot we'll use to demonstrate this is already configured live for Microsoft Teams. 閱讀 將 bot 連線到 Microsoft 小組,以 連接本機 Bot 與 microsoft 小組 頻道。Read Connect a bot to Microsoft Teams about connecting a local bot with Microsoft Teams channel.

小組頻道teams channel

在本機,您可以在 Visual Studio 中設定中斷點。Locally, you can set breakpoints in Visual Studio. 從傳入的活動物件展開 text 屬性,您將會看到您從小組傳送 bot 的訊息正在本機攔截,讓您可以進行調試。Expanding the text property from the incoming activity object, you will see that the message you sent the bot from teams is being intercepted locally for you to debug.

設定中斷點set breakpoints

您可以從這裡正常地進行偵測,並逐步執行程式碼。From here you can debug normally, and run your code step by step. 您可以使用此從任何通道來對 bot 進行程式。You can use this to debug your bot from any channel.

debug continuedebug continue

其他資訊Additional information