我使用bot框架构建了一个小型基本Web机器人应用程序,并希望将其部署在Azure上。我已按照所有步骤操作,并且在#34;网络聊天测试" Azure门户也是如此,但是当我打开机器人的端点时
https://optlbot.azurewebsites.net/api/messages
我收到错误说
The requested resource does not support http method 'GET'
有人可以帮助我,我根本无法调试我的应用程序。我也在模拟器上进行了测试,并且它也正常工作。
答案 0 :(得分:3)
是的,网址https://optlbot.azurewebsites.net/api/messages仅适用于 POST
请求,而不适用于 GET
请求,因为您发布从用户到机器人的消息,而不是获取,您可以在MessagesController
代码中看到。
据说,如果你想在本地测试你的机器人,你必须使用模拟器。您可以查看Bot emulator相同的内容。
现在,如果您想将僵尸程序发布到全世界,以便其他人可以看到它并使用它,那么这就是频道进入的位置。将频道视为一种媒介,通过该媒介,您可以启用机器人以供其他人使用更好的用户体验。
有多个通道可用于发布机器人,是的,您可以在所有通道中发布相同的机器人。webchat只是一个通道,默认情况下启用的通道看到它是:
因此,嵌入代码实际上是一个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;
}