2016-12-11 3 views
3

Ich habe die Aktionen auf Google mit Api.AI versucht. Ich habe einen einfachen nodejs Webhook mit ihrem Beispiel geschrieben: https://github.com/actions-on-google/apiai-silly-name-maker-webhook-nodejs.Konversation endet nach Erfüllung?

Die Sache ist, ich möchte nicht, dass der Agent Konversation nach der Erfüllung einer Anfrage zu beenden. Ich habe das Kästchen END CONVERSATION in der Intent on API.AI nicht markiert.

Eine weitere Anforderung, die ich hatte, war, wie kann ich mich an die Parameter erinnern, die während einer Absicht abgefragt wurden, so dass dieselbe für die nächste Absicht verwendet werden kann. Ist das schon möglich?

Antwort

3

Sie verwenden wahrscheinlich assistant.tell(), um die Antwort zu senden. Unabhängig von der Einstellung in api.ai wird die Konversation beendet.

Verwenden Sie stattdessen assistant.ask() - damit bleibt die Konversation geöffnet.

Um Parameter zwischen Fragen zu verwenden, möchten Sie wahrscheinlich api.ai's contexts verwenden.

1

Die Actions on Google-Clientbibliothek enthält ein Datenfeld zum Speichern von Werten während einer Benutzersitzung. Zum Beispiel können Sie Ihre Handlungslogik tun:

assistant.data.answer = 10; 

Um diese Arbeit zu machen, ist die Client-Bibliothek die API.AI Unterstützung für Kontexten, aber das Feld ‚Daten‘ ist eine Bequemlichkeit, so dass Sie müssen nicht wissen, die technischen Details. Während die nächste eingehende Anfrage an Ihre Handlungslogik, können Sie dann rufen Sie den gespeicherten Sitzungswert gleich ‚data‘ Feld mit:

let previousAnswer = assistant.data.answer; 

Wenn Sie den Benutzer wollen während eines Gesprächs reagieren, um die Client-Bibliothek verwenden ‚fragen‘ Methode:

assistant.ask('Welcome to My Action! Say a number.'); 

Wenn Sie das Gespräch beenden möchten, die Client-Bibliothek verwenden ‚sagen‘ Methode:

assistant.tell('Ok, see you next time.'); 
+0

ich das gleiche tun sah - eine API.AI ‚globalen‘ Kontext mit zu misc info speichern - aber festgestellt, dass API.AI 2 Kopien jeder Entität zu jedem Kontext hinzugefügt, so dass es ziemlich verschwenderisch wurde. Gibt es eine Möglichkeit, dieses Verhalten zu unterdrücken, oder entfernt das SDK diese überflüssigen Attribute manuell? – Tom

Verwandte Themen