Java Alexa Skills Kit SDKはOSGi対応ではなく、サーブレットはSlingでは動作しません。ただし、APIの残りの部分(サーブレットを除く)はプレーンなJavaオブジェクトで構成されているため、Slingで使用することは可能です。これは、Java Alexa Skills Kit SDKをSling機能にラップしてサービスとDIメカニズムを使用できるalexa-skills-slingライブラリを作成した理由です。
<dependency>
<groupId>eu.zacheusz.sling.alexa</groupId>
<artifactId>alexa-skills-sling</artifactId>
<version>1.2.1</version>
</dependency>
とOSGiバンドルとしてインストール:あなたは依存関係を追加する必要があり、それを使用するには
。例:
次に、単一のインテントロジックを実装するには、実装にスリング注釈を追加するだけで、ライブラリによってピックアップされます。テントロジックの実装とyou can find more examples in this projectの
@Component
@Service(IntentHandler.class)
Here is a very basic example:
@Component
@Service(IntentHandler.class)
public class ExampleSimpleIntentHandlerService implements IntentHandler {
private static final String SLOT_NAME = "mySlot";
private static final String INTENT_NAME = "myIntent";
@Override
public boolean supportsIntent(String intentName) {
return INTENT_NAME.equals(intentName);
}
@Override
public SpeechletResponse handleIntent(final SpeechletRequestEnvelope<IntentRequest> requestEnvelope) {
final IntentRequest request = requestEnvelope.getRequest();
final Intent intent = request.getIntent();
final Slot slot = intent.getSlot(SLOT_NAME);
final String responseMessage;
if (slot == null) {
responseMessage = format(
"I got your request, but there is no slot %",
SLOT_NAME);
} else {
responseMessage = format(
"I got your request. Slot value is %s. Thanks!",
slot.getValue());
}
return newTellResponse(responseMessage);
}
private SpeechletResponse newTellResponse(final String text) {
return SpeechletResponse.newTellResponse(newPlainTextOutputSpeech(text));
}
private PlainTextOutputSpeech newPlainTextOutputSpeech(final String text) {
final PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(text);
return speech;
}
}
おかげ - これは私がまさに必要であると私は探していました。誰もそれを以前にしたことは奇妙です。 – John