C#Bot框架 - 找不到资源错误

时间:2018-05-23 05:27:05

标签: c# asp.net botframework chatbot

我使用bot框架构建了一个小型基本Web机器人应用程序,并希望将其部署在Azure上。我已按照所有步骤操作,并且在#34;网络聊天测试" Azure门户也是如此,但是当我打开机器人的端点时

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

我收到错误说

The requested resource does not support http method 'GET'

有人可以帮助我,我根本无法调试我的应用程序。我也在模拟器上进行了测试,并且它也正常工作。

2 个答案:

答案 0 :(得分:3)

是的,网址https://optlbot.azurewebsites.net/api/messages仅适用于 POST 请求,而不适用于 GET 请求,因为您发布从用户到机器人的消息,而不是获取,您可以在MessagesController代码中看到。

据说,如果你想在本地测试你的机器人,你必须使用模拟器。您可以查看Bot emulator相同的内容。

现在,如果您想将僵尸程序发布到全世界,以便其他人可以看到它并使用它,那么这就是频道进入的位置。将频道视为一种媒介,通过该媒介,您可以启用机器人以供其他人使用更好的用户体验。

有多个通道可用于发布机器人,是的,您可以在所有通道中发布相同的机器人。webchat只是一个通道,默认情况下启用的通道看到它是:

  1. 在Azure门户中打开您的机器人,然后单击渠道刀片。
  2. 点击修改 网络聊天频道
  3. 密钥下,单击第一个键的显示 enter image description here
  4. 复制密钥嵌入代码
  5. 点击完成
  6. 因此,嵌入代码实际上是一个iframe,您可以将其置于您的网站中或与想要使用您的机器人的其他人共享。或者您也可以使用iFrame的src直接访问机器人。

    这只是一个频道。您可以查看Configure channels文档,了解在更多渠道(如Skype,Microsoft团队,电子邮件,Facebook,Slack,Telegram等)中启用机器人的步骤。

答案 1 :(得分:1)

如果您检查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;
}