2016-06-25 20 views
3

私は非常に奇妙なバグを少し実験してきました。私はいくつかの言葉で、それは単にメッセージを返すことが分かった。これは現在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エミュレータでは起こりません。これは、コード関連ではないかもしれないと私に思います。

答えて

2

ボットフレームワークの翻訳サービスを無効にすることで問題を解決できました。私はまだそれがなぜそれらの言葉を返すか分からない。私はそれが彼らの側のバグだと思う。

関連する問題