簡體   English   中英

C#Bot框架-找不到資源錯誤

[英]C# Bot framework - Resource not found Error

我使用bot框架構建了一個小型的基本Web bot應用程序,並希望將其部署在Azure上。 我已經按照所有步驟操作,並且在Azure Portal的“在Web聊天中測試”下也可以正常工作,但是當我打開機器人的端點時

https://optlbot.azurewebsites.net/api/messages

我說錯了

The requested resource does not support http method 'GET'

有人可以幫我嗎,我根本無法調試我的應用程序。 我也在模擬器上進行了測試,它也可以正常工作。

是的,URL https://optlbot.azurewebsites.net/api/messages僅適用於POST請求而不是一個GET請求,因為你從用戶到機器人而不是一個GET 發布一條消息,你可以看到,在MessagesController代碼。

話雖如此,如果您想在本地測試您的機器人,則必須使用模擬器。 您可以同樣查看Bot模擬器

現在,如果您想將Bot發布給全世界,以便其他人可以看到並使用它,那么渠道就在這里。考慮將Channel作為一種媒介,您可以通過它使您的Bot供其他人使用,以提供更好的用戶體驗。

該機器人有多個發布渠道,是的,您可以在所有渠道中發布同一機器人。 webchat只是一個頻道,默認情況下已啟用該頻道,查看方式是:

  1. 在Azure門戶中打開您的漫游器,然后單擊“ 通道”刀片。
  2. 單擊編輯以訪問網絡聊天頻道
  3. “密鑰”下 ,單擊“ 顯示第一個密鑰” 在此處輸入圖片說明
  4. 復制密鑰嵌入代碼
  5. 點擊完成

因此,嵌入代碼實際上是一個iframe,您可以將其放置在您的網站中或與其他想使用您的漫游器的人共享。 或者,您也可以使用iFrame的src直接訪問該機器人。

同樣,這只是一個通道。 您可以查看“ 配置渠道”文檔,了解在更多渠道(如Skype,Microsoft Teams,電子郵件,Facebook,Slack,Telegram等)中啟用漫游器的步驟。

如果檢查MessagesController的代碼,則會在控制器中找到以下定義的操作,它僅接受POST請求並從請求正文中讀取activity的值,它不支持http方法GET

/// <summary>
/// POST: api/Messages
/// Receive a message from a user and reply to it
/// </summary>
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
    if (activity.Type == ActivityTypes.Message)
    {
        await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
    }
    else
    {
        HandleSystemMessage(activity);
    }
    var response = Request.CreateResponse(HttpStatusCode.OK);
    return response;
}

暫無
暫無

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

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