2016-09-27 2 views
1

ボットフレームワークを使用して(あるアカウントから別のアカウントに)メッセージをルーティングしようとしています。残念ながら、メッセージが送信されてから配信されるまでの時間は、実際のボットで約3秒(エミュレータで約1.5秒)です。それを増やす能力はありますか? 1.5秒は受け入れられますが、3秒の遅れは本当に面倒です。 ここには、Postメソッドとダイアログのコードがあります。メッセージルーティングとその速度

public async Task<HttpResponseMessage> Post([FromBody] Activity message) 
    { 
     if (message.Type == ActivityTypes.Message) 
     { 
      await Conversation.SendAsync(message,() => new SendingTestDialog()); 
     } 
     return new HttpResponseMessage(System.Net.HttpStatusCode.Accepted); 
    } 

[Serializable] 
public class SendingTestDialog : IDialog 
{ 
    public async Task StartAsync(IDialogContext context) 
    { 
     context.Wait(MessageReceivedAsync); 

    } 

    public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument) 
    { 
     var messageReceived = await argument; 
     var message = context.MakeMessage(); 
     message.Type = messageReceived.Type; 
     message.From = new ChannelAccount("MyBotId", "MyBotName"); 
     message.ChannelId = "telegram"; //doesn't really matter 
     message.Recipient = new ChannelAccount("RoutedToAccId", "RoutedAccName"); 
     message.Text = "**Test**: " + messageReceived.Text;    
     message.Conversation = new ConversationAccount(false, "RoutedToAccId", "RoutedAccName");    

     var connector = new ConnectorClient(new Uri("https://telegram.botframework.com/")); 
     await connector.Conversations.SendToConversationAsync((Activity)message); 
     context.Done(new HttpResponseMessage(System.Net.HttpStatusCode.Accepted)); 
    } 
} 

答えて

2

Azureの配置場所をWest USに変更することで、Direct Line APIのスピードの問題を解決しました。

+0

お返事ありがとうございます(と@Jim Lewallen)。サーバーの場所を変更すると、約1.5倍の速度向上が得られました! – Sovan

1

あなたのボットがどこに配置されているか、どこにいるのか確認できますか? (大陸は私が必要なすべてです)。私は海洋の潜伏期間があるかどうかを調べようとしています。

+0

私のボットは西ヨーロッパの標準で配備されています:1小規模サービスプラン。私たちはサンクトペテルブルク(ロシア)にあります。 – Sovan

+0

それはそれの大きな部分かもしれません。ボット・フレームワーク・サーバーは現在、米国東部と西部に配置されています。これに対して、今年後半には西ヨーロッパとアジアにデータセンターを拡大する飛行機があります。 –