2016-04-26 5 views
10

Ich versuche, die FormBuilder in Kombination mit meinen Absichten zu verwenden, wie ich sie in Luis. Ich kann einfach nicht die Dokumentation dafür finden.So integrieren Sie Luis in Bot Builder

Ich möchte die folgenden Dinge tun:

  1. Ein Benutzer einen Begriff eingeben würde, die mit Luis interpretiert wird.
  2. Wenn nicht alle Entitäten in der Phrase angegeben sind, füllt der Formularbuilder die Lücken aus.

Wie mache ich das? Gibt es ein Tutorial? Ich sehe Leute reden über LuisDialogs, aber ich weiß einfach nicht wo ich anfangen soll.

+0

Ich fand, das ist ein guter Artikel: http://www.c-sharpcorner.com/article/an-interactive-bot-application-with-luis-using-microsoft-bot/ – PhuocLe

Antwort

16

Auf den Punkt gebracht:

Hier einige Schritte sind (aber Sie sollten auf jeden Fall die Anleitung folgen I verknüpft):

Grundsätzlich

es ist eine Klasse, die LuisDialog<object> erbt und Sie müssen ein Attribut oben drauf setzen mit Luis ID und geheime

[LuisModel("c413b2ef-382c-45bd-8ff0-f76d60e2a821", "6d0966209c6e4f6b835ce34492f3e6d9")] 
[Serializable] 
public class SimpleAlarmDialog : LuisDialog<object> 
{ [...] 

Dann fügen Sie eine Methode zu Ihrer Klasse hinzu und dekorieren sie mit dem Attribut LuisIntent(...).

[LuisIntent("builtin.intent.alarm.turn_off_alarm")] 
public async Task TurnOffAlarm(IDialogContext context, LuisResult result) 
{ [...] 

Innerhalb der Methode können Sie, wenn ein Unternehmen suchen einen Code wie folgt verwendet wurde gefunden:

EntityRecommendation title; 
if (result.TryFindEntity(Entity_Alarm_Title, out title)) 
{ 
    what = title.Entity; 
} 
else 
{ 
    what = DefaultAlarmWhat; 
} 

schließlich den Dialog zu starten, haben Sie dieses Bild Innerhalb des Controllers zu nennen:

public async Task<Message> Post([FromBody]Message message) 
    { 
     if (message.Type == "Message") 
     { 
      // return our reply to the user 
      return await Conversation.SendAsync(message,() => new EchoDialog()); 
     } 
     else 
     { 
      return HandleSystemMessage(message); 
     } 
    } 
+0

Vielen Dank! Ich habe mir das Beispiel von PizzaBot angesehen und es geschafft, dass mein Code funktioniert :-) – Aldentev

+0

Perfekt! Können Sie die Antwort als nützlich markieren, damit sich andere mit derselben Frage darauf verlassen können? :) –

+0

Wenn die Entity nicht bereitgestellt wird, wie kann ich den Benutzer auffordern, nur die Entitätsinformationen im zweiten Schritt anzugeben? Muss ich das Luis-Modell aktualisieren, um nur ein Wort als Entität zu verwenden und es mit der Absicht zu verknüpfen? – Vikram