Interface Amazon Skill Kit, Interface but method in other class?

dummy2k

Mitglied
hier findet ihr die dateien auf die ich mich beziehe:
http://programtalk.com/vs/?source=a...rc/com/amazon/speech/speechlet/Speechlet.java

ich versuche die methode "setShouldEndSession" in der Datei SpeechletResponse.java zu nützen. Jedoch benutzten Tutorials von Amazon wie helloworld (https://github.com/amzn/alexa-skills-kit-java/tree/master/samples/src/main/java/helloworld) als "initialisierung" das interface ("speechlet.java"). Leider habe ich keine Ahnung wie man richtig die gewünschte Methode jetzt nützt. Wie soll ich am besten die Methode "setShouldEndSession" verwenden? Soll ich einfach das Interface auslassen? Wäre das nicht "unsauber" ?
 
Also zunächst mal weiß ich nicht ob es noch andere Möglichkeiten gibt, aber ich mache meine Versuche genauso wie die Samples es tun. Meine Klasse, die die ganze Arbeit macht implementiert Speechlet. Das muss so sein, weil meine andere Klasse, die SpeechletRequestStreamHandler erweitert eben ein Speechlet im Kontruktoraufruf erwartet.

Wenn du in das Speechlet des helloworld Samples schaust, siehst du, dass immer wenn eine SpeechletResponse zurückgegeben werden soll, diese per statischen Methodenaufruf erzeugt wird. (SpeechletResponse.newAskResonse oder Speechlet.newTellResponse)
Diese statischen Methoden machen nichts anderes als jeweis ein neues SpeechletResonse Objekt zu bauen, den OutputSpeech hineinzusetzen und eben das Flag "shouldEndSession" entsprechend zu setzen. Das SpeechletResponse.newAskResponse setzt zusätzlich noch ein Reprompt hinein. Das ist wohl ein Container für ein erneutes stellen einer Frage an den Benutzer.

Also entweder du nutzt eben diese statischen Methoden (wie das helloworld Sample) oder du baust die SpeechletResponse Objekte selber und setzt an ihnen das "shouldEndSession" Flag per meinResponse.setShouldEndSession(...).
 
Danke mal für die Antwort. Ja, im großen und ganzen hab ichs mir so gedacht. Na ja, die Klassen jetzt selbst erstellen, werde ich jetzt nicht machen. Werds wohl über den Umweg newaskresponse machen. Was ich nicht verstehe, weshalb setShouldEndSession non-static ist. Könnte der Sinn der Sache sein, weil man damit mehrere Session gleichzeitig führen kann?
 
Kann ich dir so nicht genau beantworten. Aber ich denke mal schon dass es mit den mehreren möglichen gleichzeitigen Sessions zu tun hat. Der Code kann ja von vielen verschiedenen Benutzern angesprochen werden. Wenn jetzt für einen die Session beendet werden soll, sollen ja alle anderen nicht gleich mit geschlossen werden. Darum halt nicht static. Zumindest reime ich mir das so zusammen.
 

Zurück
Oben