私はVUIとAlexaにはかなり新しいです。私はAlexa Voice Servicesの優れたスキルを開発しました。今では第二言語を追加したいと思います。私は the develop documationのチュートリアルを見つけましたが、EclipseとJavaを使ってこのようなラムダ関数を作成しています。walkthrough 問題は、ラムダ関数で第2言語オプションを有効にする方法がわかりません。私は両方の言語に同じラムダ関数を使用する必要があります。Javaを使用して多言語Alexaスキルを作成するには?
私のStreamRequestHandler:
public class ApiOmatBlogSpeechletStreamRequestHandler extends SpeechletRequestStreamHandler {
private static final Set<String> supportedApplicationIds = new HashSet<String>();
static {
/*
* This Id can be found on https://developer.amazon.com/edw/home.html#/ "Edit" the relevant
* Alexa Skill and put the relevant Application Ids in this Set.
*/
supportedApplicationIds.add("amzn1.ask.skill.xxxxxxxx");
}
public ApiOmatBlogSpeechletStreamRequestHandler() {
super(new ApiOmatBlogSkillSpeechlet(), supportedApplicationIds);
System.out.println("Super ApiOmatBlogSpeechletStreamRequestHandler");
}
}
マイSpechlet:
public SpeechletResponse onIntent(IntentRequest intentRequest, Session session) {
Intent intent = intentRequest.getIntent();
String intentName = (intent != null) ? intent.getName() : null;
System.out.println("onIntent requestId={ " + intentRequest.getRequestId() + " }, sessionId={ "
+ session.getSessionId() + " } ");
Integer step = (Integer) session.getAttribute("step");
System.out.println("IntentName= " + intentName + " | step = " + step);
if ("AMAZON.HelpIntent".equals(intentName)) {
return getHelpResponse();
} else if ("AMAZON.StopIntent".equals(intentName)) {
return getStopResponse();
} else if (step != null) {
return testing(intent, session, step);
} else {
if ("TestIntent".equals(intentName)) {
step = 1;
session.setAttribute("step", step);
return testing(intent, session, step);
} else {
SsmlOutputSpeech speechText = new SsmlOutputSpeech();
speechText.setSsml("<speak> " + "The intent is invalid." + "Please repeat your demand. "
+ "<break time='0.5s'/> " + " </speak>");
// Create reprompt
PlainTextOutputSpeech speech2 = new PlainTextOutputSpeech();
speech2.setText("I'm sorry. Please repeat your statement.");
Reprompt reprompt = new Reprompt();
reprompt.setOutputSpeech(speech2);
return SpeechletResponse.newAskResponse(speechText, reprompt);
}
}
}
/**
* This function will be called if you say 'start'
*/
public SpeechletResponse onLaunch(final LaunchRequest request, final Session session) throws SpeechletException {
System.out.println(
"onLaunch requestId={ " + request.getRequestId() + " }, sessionId={ " + session.getSessionId() + " } ");
return getHelpResponse();
}
はあなたがそれぞれの言語をサポートするために、異なるラムダロジックを必要としないあなたに
私は英語のスキルを作成しているので、そうではありません。回答テキストも英語です。今、私は第二言語、ドイツ語を追加しました。開発者のポータルでは、2番目のラムダ関数を使用できませんでした。私は英語とドイツ語の同じ機能を使用する必要があります。私はドイツ語のモードで英語の回答を得たくないので、スキルがドイツ語か英語かを決定する必要があります。 –
私が提供したドキュメントのリンクを読んだ場合、「コードはサポートしているすべての言語を処理する必要があります」というメッセージが表示されている可能性があります。 –
これはまさにポイントです!しかし、JavaのドキュメンテーションとJavaのドキュメンテーションはありません。ラムダ関数で言語を分割するにはどうすればよいですか。質問には次のような質問があります: "問題は、ラムダ機能... " –