私は非常に奇妙なバグを少し実験してきました。私はいくつかの言葉で、それは単にメッセージを返すことが分かった。これは現在Slackで動作しているボットのコードです:Microsoft Bot Framework - Botは特定の単語を返しませんでした。
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
を書き込むと、echo reply
が返されます。そして、それは動作します。ユーザーがそれを書いていない場合は、無視する必要があります。そして、それが私がそれに言う言葉の99%のためにそれを無視します。しかし、もし私が単語rus
を書くと、 `rusに返信するだけです。
私はおそらくそれがなぜそれを見つけることはできません。私はコードに間違ったことは何も見えないので、それはボットフレームワークの中にあるのでしょうか?
私はこの問題がSlackに関連していると思っていましたが、FB Messengerをボットに実装した後、私はそれも起こっていることに気付きました。奇妙なことに、私のPCのBotエミュレータでは起こりません。これは、コード関連ではないかもしれないと私に思います。