2017-12-07 1 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); 
        } 
       } 
      } 
     } 

Ich bin neu in der ChatBot-Entwicklung mit Microsoft BotFramework.Willkommensnachricht nicht sichtbar in Webchat, aber in Emulator arbeiten

Ich habe registrieren und einen einfachen bot, der gut mit Emulator funktionierte (dh Bot sagt Willkommen zu meinem einfachen Bot), aber wenn ich WebChat keine Begrüßung verwendet wurde, statt Benutzer Hi oder einen beliebigen Text danach angezeigt Die Begrüßungsnachricht wird angezeigt. war zu verschiedenen Tutorial und Lösung gegangen, aber nicht die genaue Ursache. Ich benutze Microsoft.Bot.Builder v3.12

Antwort

3

Ich habe gerade Ihren Code getestet und bekam das gleiche Verhalten. Der seltsame Teil ist, dass es anscheinend nur ein Konversationsupdate für den Zeitpunkt gibt, an dem der Bot beitritt, und nicht nur einen für den Bot und einen für den Benutzer. Ich untersuche das. Der folgende Code funktioniert, wenn Sie es ausprobieren möchte:

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

Er @JasonSowers Sie danken so viel, jetzt funktioniert es fine.but ich habe eine dout wenn einige Extradata in Abfrage-Zeichenfolge passieren kann Webchat mit, i benutze C# und ich habe den Bot mit dem Webchat implementiert, möchte aber die Benutzerbasis auf der Bestehenden Webseite anmelden. –

+0

Konnte ich in der Lage sein, QueryString-Wert zurück an meine MessageController.cs zu bekommen, habe ich Tiered mit Request.RequestUri.Query funktioniert es mit Emulator, aber nicht in Live-Environment. –

+0

Sie können den Backchannel verwenden, um alle erforderlichen Daten zu senden. Bitte sehen Sie meine Antwort [hier] (https://stackoverflow.com/questions/47677920/how-can-i-have-my-bot-start-in-a-different-dialog-depending-on-user/47680478# 47680478) das wird mehr erklären – JasonSowers

Verwandte Themen