2017-07-12 17 views
0

Ich möchte, dass mein Bot eine einführende Nachricht anzeigt, wenn ein Benutzer eine neue Konversation beginnt. Ich habe gesehen, dass dies mit Bots in Skype funktioniert, wo der Bot eine Nachricht sendet, bevor der Benutzer etwas eingibt.Bot Framework - Bot initiiert die Konversation über Skype

Ich habe diese Arbeit bekam den Bot Framework-Channel-Emulator mit diesem Code in der MessagesController-Klasse: 'Hallo Welt!'

public async Task<HttpResponseMessage> Post([FromBody]Activity activity) 
    { 
     if (activity.Type == ActivityTypes.Message) 
     { 
      await Conversation.SendAsync(activity,() => new Dialogs.RootDialog()); 
     } 
     else 
     { 
      await this.HandleSystemMessage(activity); 
     } 
     var response = Request.CreateResponse(HttpStatusCode.OK); 
     return response; 
    } 

    private async Task HandleSystemMessage(Activity message) 
    { 
     if (message.Type == ActivityTypes.ConversationUpdate) 
     { 
      var reply = message.CreateReply("Hello World!"); 

      var connector = new ConnectorClient(new Uri(message.ServiceUrl)); 

      await connector.Conversations.SendToConversationAsync(reply); 
     } 
    } 

Zeigt am Anfang einer neuen Konversation. Keine Eingabe erforderlich. Auf Skype erscheint diese einleitende Nachricht jedoch nicht. Was ich hier falsch verstehe? Ich weiß, dass es möglich ist.

+0

haben bitte einen Blick auf https://stackoverflow.com/questions/42749982/initiate-a-message-from-bot-to-user-on-botframework – Artem

+0

Danke, das ist interessant. Die angenommene Antwort unten beantwortet genau meine Frage obwohl – usefulcat

Antwort

1

Skype wirft verschiedene ACTIVITY der Situation gegeben:

  • Sie ein contactRelationUpdate nach dem Hinzufügen des Bot in Ihren Kontakten erhalten. Dann wir Sie zu den Bot zu sprechen beginnen, gibt es keine besondere Aktivität ist

  • Wenn Sie eine Gesprächsgruppe beginnen mit der Bot enthalten, erhalten Sie conversationUpdate

Also, wenn Sie möchten, dass Ihre Benutzer begrüßen,

private async Task HandleSystemMessage(Activity message) 
{ 
    if (message.Type == ActivityTypes.ConversationUpdate || message.Type == ActivityTypes.ContactRelationUpdate) 
    { 
     var reply = message.CreateReply("Hello World!"); 

     var connector = new ConnectorClient(new Uri(message.ServiceUrl)); 

     await connector.Conversations.SendToConversationAsync(reply); 
    } 
} 

Auszug aus dem Inhalt der Nachricht, die Sie erhalten, wenn der bot das hinzufügen: Sie sollten die contactRelationUpdate Leistungsart in Ihrem Test, wie hinzufügen

Skype contact added sample

Hier From ist mein Benutzer und ist Bot. Sie können sehen, dass der Action Wert add

+1

Ausgezeichnet, danke. Das ist eine gute Antwort – usefulcat

Verwandte Themen