2017-02-17 2 views
3

Ich habe zwei Konversationsknoten definiert. Der erste wird bei conversation_start ausgelöst und fragt den Namen des Benutzers. Die zweite speichert den Benutzernamen von input.text in einer Kontextvariablen und fragt, ob der Benutzer eine kurze Umfrage machen oder etwas anderes machen möchte. Der zweite wird nie ausgeführt. Was sollte der Auslöser auf dem zweiten sein, um das Gespräch voranzubringen? Es gibt noch keine Absicht oder Bedingung. Im Grunde möchte ich nur einem Perlenschnurmuster folgen, bei dem jede Frage gestellt wird und der Benutzer einige der Fragen ablehnen kann.Bluemix Conversation, die Konversation voranzutreiben

+0

Wenn Sie nur wollen, dass es ausgelöst wird. Auf den Auslöser setzen – Dudi

Antwort

0

Bluemix Conversation kann als eine Zustandsmaschine angesehen werden. Jeder Übergang wird im Werkzeug dargestellt, aber jeder Knoten kann nur durch eine Bedingung ausgelöst werden. Wenn Sie also auf einem Knoten eine Frage stellen und die Antwort, die zurückkommt, keinen der untergeordneten Knoten auslöst, wird der Status nicht auf ein untergeordnetes Element übertragen. Antworten, die in einen Knoten eingegeben werden, werden von Watson verarbeitet, der "Absichten" bereitstellt, die im Wesentlichen Schlüsselwörter sind, die in dem gerade analysierten Satz gefunden werden. Eine Möglichkeit, die Konversation voranzutreiben, besteht darin, benannte "Intents" mit dem Präfix # dem Trigger von einem untergeordneten Knoten zuzuordnen. Eine andere Möglichkeit, die benannten "Entitäten" mit dem @ prefex zu vergleichen, obwohl es weniger klar ist, wie Watson Entitäten erstellt. Die dritte Möglichkeit besteht darin, Kontextvariablen mit dem Präfix $ und einfachen Bedingungsoperatoren wie == zu vergleichen. Kontextvariablen werden vollständig von Ihnen, dem Entwickler, verwaltet. Sie dürfen an jedem Knoten eine Kontextvariable setzen. Und dann können Sie damit einen untergeordneten Knoten auslösen. Dies scheint ein guter Ansatz zum Verwalten der Art der Konversation zu sein, die ich implementieren möchte. Die vierte Möglichkeit besteht darin, den Eingabewert des vorherigen Elternknotens zusammen mit einfachen Bedingungsoperatoren zu verwenden.

+0

Wenn Ihre Antwort ist, was für Sie arbeitete, können Sie Ihre eigene Antwort annehmen. –

0

Es gibt zwei Möglichkeiten, dies zu erreichen. Die eine, die ich empfehle, ist eine Absicht für jeden möglichen Weg zu erstellen. Beispielsweise könnten Sie eine Absicht namens #affirmative mit Werten wie "Ja", "Ja", "Sicher", "Ok" usw. erstellen. Sie müssen lediglich die Absicht erstellen und dann im Bedingungsfeld verwenden .

Sie können die Benutzereingabe aber auch direkt mit input.text überprüfen. Sie könnten beispielsweise input.text.toLowerCase() == 'yes' als Bedingung verwenden. Beachten Sie, dass dies nur verwendet werden sollte, wenn Sie die Eingabe kontrollieren und nur einige mögliche Werte zulassen. Wenn nicht, verwenden Sie eine Absicht und lassen Sie Watson Conversation das Eingabe-Parsing für Sie durchführen.

Eine weitere wirklich coole Funktion, die Watson Conversation bietet, ist, dass Sie einen Knoten mit einer Bedingung wie intents[0].confidence < 0.6 und eine Antwort wie "Sorry, ich habe das nicht bekommen" haben. Auf diese Weise stellen Sie sicher, dass Ihr Flow nur eine Bedingung mit einem hohen Vertrauen in die Absicht auslöst.

Hoffe es hilft!

0

Sie können die Funktion jump to verwenden, um das System an einen beliebigen dialog_node zu leiten. Dies ist ideal zum Erstellen von gerichteten Dialogen. Wenn Sie also mit der nächsten Frage fortfahren möchten (der Benutzer hat die vorherige Frage beantwortet), können Sie vom Knoten, der die Antwort zur vorherigen Frage verarbeitet, springen, um dem Benutzer eine andere Frage zu stellen (zum Körperteil des nächsten Dialogknotens springen) neue Frage stellen).

Nun für den Anwendungsfall "get name" möchten Sie, dass der zweite Knoten den Namen der Benutzereingabe erfasst, die am conference_start-Knoten hängt. Wenn die Konversation auf einen Knoten mit untergeordneten Objekten trifft, beginnt die Verarbeitung der nächsten Dialogrunde am ersten Kind dieses Dialogknotens - auf diese Weise werden die kontextabhängigen Dialoge in der Konversation definiert.

Verwandte Themen