2016-07-12 13 views
0

Können wir Rest API anstelle von Lambda verwenden. Der Grund dafür ist, weil wir die Anfrage bekommen haben, wir wissen, was Alexa als Antwort akzeptiert, und wir wissen, dass es ein POST ist. Verbinden Sie alle diese Elemente mit der REST-API. Der Grund dafür ist, dass das ganze Projekt auf Jax-RS basiert, also wollen wir alles an einem Ort haben, ohne Lamda oder irgendetwas zu benutzen. Nicht das Lamda ist nicht so toll.Alexa skill Rest API

So ist die Anforderung, die alexa zu Lambda passiert ist:

{ 
    "session": { 
    "sessionId": "SessionId.a82f0b92-3650-4d45-8f12-e030ffc10894", 
    "application": { 
     "applicationId": "amzn1.echo-sdk-ams.app.8f35038e-13ac-4327-8e4f-e5df52dc1432" 
    }, 
    "attributes": {}, 
    "user": { 
     "userId": "amzn1.ask.account.AFP3ZWPOS2BGJR7OWJZ3DHPKMOMNWY4AY66FUR7ILBWANIHQN73QGGUEQZ7YXOLC7NYVD3JPUAHAGUS4ZFXJ6ZMS4EHO2CJFPWFLWLYZLDP7S227ADI54A2ZMLZLDO5CXSIB47ELNY54S2M7FDNJFHTSU67B7HB3UZUN6OUUR5BYS3UBRSIPBG4IWRLHUN36NXDYBWUM3NMQZRA" 
    }, 
    "new": true 
    }, 
    "request": { 
    "type": "IntentRequest", 
    "requestId": "EdwRequestId.bfdb3c27-028b-4224-977a-558129808e9a", 
    "timestamp": "2016-07-11T17:52:55Z", 
    "intent": { 
     "name": "HelloWorldIntent", 
     "slots": {} 
    }, 
    "locale": "en-US" 
    }, 
    "version": "1.0" 
} 

Antwort:

{ 
    "version": "1.0", 
    "response": { 
    "outputSpeech": { 
     "type": "PlainText", 
     "text": "Hello World!" 
    }, 
    "card": { 
     "content": "Hello World!", 
     "title": "Greeter", 
     "type": "Simple" 
    }, 
    "shouldEndSession": true 
    }, 
    "sessionAttributes": {} 
} 
+0

Bitte bearbeiten Sie keine Lösung in Ihre Frage. Stattdessen posten Sie es als separate Antwort unten. Weitere Informationen finden Sie unter http://stackoverflow.com/help/self-answer. – Matt

Antwort

4

Sicher Sie können. In der Tat, wenn Sie Ihre Fähigkeiten im Alexa Developer Portal erstellen, haben Sie diese Option. Der Vorbehalt ist, dass Sie Ihr eigenes TLS-Zertifikat verwalten müssen und sicherstellen müssen, dass die Latenz/Reaktionszeit basierend auf dem Standort Ihrer Benutzer angemessen ist.

Wenn Sie das weiter erkunden möchten, können Sie die Java-Code-Beispiele von Amazon verwenden. Sie finden sie unter: https://github.com/amzn/alexa-skills-kit-java.

+0

Noch ein guter Artikel, auf den verwiesen wird: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/deploying- a-sample-skill-as-a-web-service – Vladan

0

Sie können definitiv eine RESTful-Service-API für die Verwendung mit Alexa einrichten.

Und wenn Sie es in Azure einrichten, müssen Sie nicht einmal Ihr eigenes Zertifikat erstellen.

+0

Das muss ich machen. Welchen Azure-Dienst verwende ich dafür? –

+0

Sie müssen es erstellen. Sie können ein ASP.NET-Web-API-Projekt in Visual Studio erstellen und es anschließend in Azure veröffentlichen. –

0

Sie können eine Ruhe-API als Endpunkt für Alexei-Fähigkeiten verwenden. Die Apis wird auf folgende Weise aufgerufen werden

[Configured_URL]>/**alexa/[intent]** 

Wo [Configured_URL] - ist die in Amazon-Website konfiguriert URL-Endpunkt für

[intent] Aufruf - ist der Name der Absicht

Sie bewirten sollte entsprechend Ihren Dienst

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/developing-an-alexa-skill-as-a-web-service

https://iwritecrappycode.wordpress.com/2016/04/01/create-an-alexa-skill-in-node-js-and-hosting-it-on-heroku/

+0

Ich bin nicht mit dieser "konfigurierten URL" -Syntax vertraut - nicht alle Alexa-Anfragen kommen auf diese Weise zu einem Endpunkt. Tatsächlich ist der Endpunkt, an den Alexa POSTs sendet, in der Amazon-Entwicklerkonsole für diese Fähigkeit vollständig konfigurierbar. –

+0

Es gibt nur einen Endpunkt und Sie POST als Teil der Anfrage, also eine Alexa REST-URL sieht eher so aus: https: // mydomain/api/alexa Amazon Dev-Portal zeigt Ihnen, was die Struktur der Anfrage sein muss. Ich habe es in C# geschrieben, aber es kann jede Sprache sein, die json ausgibt. – smoore4