2017-06-21 64 views
1

我想更好地理解botframework中的狀態是如何工作的。Botframework中的狀態

默認情況下,它表示機器人的狀態存儲在https://state.botframework.com。因此,我應該能夠從模板創建一個空白的機器人,運行fiddler,並查看它向狀態Web服務發出請求。我看不到這發生。

我從這個回購下載了Azure的botbuilder擴展(和樣本):https://github.com/Microsoft/BotBuilder-Azure。我使用示例應用程序將數據存儲在表格存儲中,並且它工作正常!我可以在Fiddler和我的存儲帳戶中看到請求,我可以看到保存的狀態/數據。

我評論了他們的示例應用程序的Azure代碼並運行它。我再也看不到任何調用state.botframework.com

我註冊了一個測試機器人,並將這些憑證作爲appId輸入到我的機器人中,然後我可以看到機器人調用webchat.botframework.com,但仍然沒有電話存儲狀態。

所以我的問題是。

  1. 默認情況下,bot商店的狀態在哪裏。
  2. 如何查看存儲位置,以便在切換到另一個存儲位置時(例如表存儲),我可以確定它不再與默認狀態存儲進行通信。
+0

https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-state –

+0

有一個閱讀,它沒有說它何時或如何決定使用哪州的位置。如果通過作爲模擬器的活動的channelid被硬編碼爲使用內部內存狀態存儲而不是Web服務,那麼我只能完成一半的工作。 – MindingData

+0

回答#2 - 此信息目前不適用於bot開發人員 – nilsw

回答

2
  1. 默認情況下,bot商店的狀態在哪裏。

IBotState REST接口由兩個服務實現。機器人連接器提供了一個雲服務,它實現了這個接口並將數據存儲在Azure中。該數據在休息時加密,並且 不會故意過期。 Bot Framework Emulator提供了一個 這個接口的內存中實現來調試你的機器人。 此數據在模擬器進程退出時到期。

https://docs.microsoft.com/en-us/bot-framework/troubleshoot-general-problems#state-and-data-storage-a-idstatea

默認StateClient的存儲路徑是在這裏的.NET SDK:https://github.com/Microsoft/BotBuilder/blob/b3fff1246348fe93ab2eb1fe654065ccfd863617/CSharp/Library/Microsoft.Bot.Connector.Shared/StateAPI/StateClient.cs#L268

編輯:如果信道,檢查的SDK代碼是模擬器:https://github.com/Microsoft/BotBuilder/blob/5367ba54b08670a714ab30035ac4316d07be5dc6/CSharp/Library/Microsoft.Bot.Connector.Shared/ActivityEx.cs#L220

2)如何查看它的存儲位置,以便在切換到另一個存儲位置時(例如表存儲),我可以確定它不再與默認狀態存儲進行通信。

你可以將頁面上的網絡聊天控制,在Visual Studio在本地運行的機器人,並使用ngrok從連接器服務將流量重定向到本地計算機:

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

然後,更改消息端點https://dev.botframework.com/bots/settings?id=[YourBotHandle]對於BOT所以不是https://[SiteName].azurewebsites.net/api/messageshttps://[ngrokpath]/api/messages有一個如何在這裏設置此一個很好的說明:https://www.robinosborne.co.uk/2016/09/19/debugging-botframework-locally-using-ngrok/

使用這種方法,你會看到在調用以小提琴手state.botframework.com。

+0

我會將您標記爲正確。但還有一件事要補充的是:https://github.com/Microsoft/BotBuilder/blob/5367ba54b08670a714ab30035ac4316d07be5dc6/CSharp/Library/Microsoft.Bot.Connector.Shared/ActivityEx.cs#L220。如果活動的channelid是仿真器,它會短路並永遠不會與狀態Web服務通話。 – MindingData

+0

謝謝@MindingData,我已經編輯了一個鏈接到你引用的源代碼的答案。 –