2017-12-07 14 views
2
IConversationUpdateActivity update = message; 
     using (var scope = Microsoft.Bot.Builder.Dialogs.Internals.DialogModule.BeginLifetimeScope(Conversation.Container, message)) 
     { 
      var client = scope.Resolve<IConnectorClient>(); 
      if (update.MembersAdded.Any()) 
      { 
       foreach (var newMember in update.MembersAdded) 
       { 
        if (newMember.Id != message.Recipient.Id) 
        { 
         var reply = message.CreateReply(); 
         reply.Text = $"Welcome {newMember.Name}!"; 
         client.Conversations.ReplyToActivityAsync(reply); 
        } 
       } 
      } 
     } 

Microsoft BotFramework를 사용하여 ChatBot 개발을 처음 사용했습니다.Webchat에서 환영 메시지가 표시되지 않지만 에뮬레이터에서 작동합니다.

에뮬레이터와 잘 작동하는 간단한 봇을 등록하고 배포했는데 (즉, 로봇이 내 간단한 봇에 오신 것을 환영합니다), WebChat을 사용하면 환영 인사말이 표시되지 않고 대신 사용자 유형 안녕 또는 그 이후의 텍스트가 표시됩니다 인사말 메시지가 표시됩니다. 은 다양한 자습서 및 솔루션을 제공했지만 정확한 원인을 파악하지 못했습니다. 나는 Microsoft.Bot.Builder를 사용하고 있습니다 .Builder v3.12

답변

3

방금 ​​코드를 테스트했고 동일한 동작을했습니다. 이상한 부분은 봇과 사용자가 아닌 봇이 조인 할 때만 대화 업데이트가 하나만있는 것 같습니다. 나는 이것을 조사하고있다. 당신이 그것을 시도주고 싶습니다 경우 다음 코드가 작동 :

IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity; 
if (iConversationUpdated != null) 
{ 
    ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl)); 

    foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty<ChannelAccount>()) 
    { 
     // if the bot is added, then 
     if (member.Id == iConversationUpdated.Recipient.Id) 
     { 
      var reply = ((Activity)iConversationUpdated).CreateReply(
       $"Hi! I'm Botty McBotface and this is a welcome message"); 
      connector.Conversations.ReplyToActivityAsync(reply); 
     } 
    } 
} 
+0

그는 @JasonSowers이 웹 채팅을 사용하여 QueryString을 일부 ExtraData를 전달할 수 있다면 지금 내가 DOUT이 됐었 작동하므로 많은 감사를 전 C#을 사용하고 webchat을 사용하여 봇을 배치했지만 기존 webiste 로그인에서 사용자 기반을 인증하려고합니다. –

+0

MessageController.cs에서 QueryString 값을 다시 가져올 수 있습니까? Request.RequestUri.Query를 사용하여 계층화했지만 에뮬레이터에서는 작동하지만 라이브 환경에서는 작동하지 않습니다. –

+0

백 채널을 사용하여 필요한 모든 데이터를 보낼 수 있습니다. 내 대답을 참조하십시오 [여기] (https://stackoverflow.com/questions/47677920/how-can-i-have-my-bot-start-in-a-different-dialog-depending-on-user/47680478# 47680478) 자세한 내용은 – JasonSowers