Microsoft Bot Framework - Bot returns 未要求时的特定词
Microsoft Bot Framework - Bot returns specific words when not asked to
我一直在试验一个非常奇怪的错误。我发现在某些单词上,它只是 returns 返回消息。所以这是目前在 Slack 上 运行 的机器人的代码:
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.Http;
using Microsoft.Bot.Builder.Dialogs;
using System.Web.Http.Description;
using Microsoft.Bot.Connector;
using Newtonsoft.Json;
namespace SharpBot
{
[BotAuthentication]
public class MessagesController : ApiController
{
/// <summary>
/// POST: api/Messages
/// Receive a message from a user and reply to it
/// </summary>
public async Task<Message> Post([FromBody] Message message)
{
if (message.Type == "Message")
{
// return our reply to the user
message.BotPerUserInConversationData = null;
return await Conversation.SendAsync(message, () => new EchoDialog());
}
return null;
}
}
[Serializable]
public class EchoDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> argument)
{
var message = await argument;
if (message.Text.ToLowerInvariant().Contains("echo request"))
{
await context.PostAsync("echo reply");
}
context.Wait(MessageReceivedAsync);
}
}
}
如您所见,它非常简单。当用户写 echo request
时,它会 returns echo reply
。那行得通。如果用户不写那个,它应该忽略它,对吧?它确实忽略了我对它说的 99% 的话。但是如果我写 rus
这个词,它只会回复 `rus.
我不可能找出它为什么这样做。我看不出代码有什么问题,所以它可以是 Bot Framework 中的 but 吗?
起初我以为问题与 Slack 有关,但在我的机器人上安装了 FB Messenger 之后,我发现它也发生在那里。奇怪的是,我电脑上的 Bot Emulator 并没有发生这种情况,这让我觉得这可能与代码无关。
我已经通过关闭 Bot Framework 的翻译服务解决了这个问题。我仍然不知道为什么 returns 这些话。我怀疑这是他们那边的一个错误
我一直在试验一个非常奇怪的错误。我发现在某些单词上,它只是 returns 返回消息。所以这是目前在 Slack 上 运行 的机器人的代码:
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.Http;
using Microsoft.Bot.Builder.Dialogs;
using System.Web.Http.Description;
using Microsoft.Bot.Connector;
using Newtonsoft.Json;
namespace SharpBot
{
[BotAuthentication]
public class MessagesController : ApiController
{
/// <summary>
/// POST: api/Messages
/// Receive a message from a user and reply to it
/// </summary>
public async Task<Message> Post([FromBody] Message message)
{
if (message.Type == "Message")
{
// return our reply to the user
message.BotPerUserInConversationData = null;
return await Conversation.SendAsync(message, () => new EchoDialog());
}
return null;
}
}
[Serializable]
public class EchoDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> argument)
{
var message = await argument;
if (message.Text.ToLowerInvariant().Contains("echo request"))
{
await context.PostAsync("echo reply");
}
context.Wait(MessageReceivedAsync);
}
}
}
如您所见,它非常简单。当用户写 echo request
时,它会 returns echo reply
。那行得通。如果用户不写那个,它应该忽略它,对吧?它确实忽略了我对它说的 99% 的话。但是如果我写 rus
这个词,它只会回复 `rus.
我不可能找出它为什么这样做。我看不出代码有什么问题,所以它可以是 Bot Framework 中的 but 吗?
起初我以为问题与 Slack 有关,但在我的机器人上安装了 FB Messenger 之后,我发现它也发生在那里。奇怪的是,我电脑上的 Bot Emulator 并没有发生这种情况,这让我觉得这可能与代码无关。
我已经通过关闭 Bot Framework 的翻译服务解决了这个问题。我仍然不知道为什么 returns 这些话。我怀疑这是他们那边的一个错误