अतीत में, मैंने जावा में लिखे गए दो अलग-अलग एडब्ल्यूएस लैम्बडा सेट किए हैं। एलेक्सा के साथ उपयोग करने के लिए एक और Api.ai के साथ उपयोग के लिए एक। वे बस प्रत्येक सहायक एपीआई को "हैलो वर्ल्ड" लौटते हैं। तो हालांकि वे सरल हैं वे काम करते हैं। जैसे-जैसे मैंने प्रत्येक के लिए अधिक से अधिक कोड लिखना शुरू किया, मैंने यह देखना शुरू कर दिया कि मेरा जावा कोड कैसा था और मैं दो अलग-अलग भेड़ के बच्चे बनकर खुद को दोहरा रहा था।एलेक्सा कौशल किट और API.AI दोनों के लिए एक एकल AWS Lambda का उपयोग कैसे करें?
आज के लिए तेज़ आगे।
क्या मैं अब काम कर रहा हूँ एक एकल एडब्ल्यूएस लैम्ब्डा कि दोनों एलेक्सा और Api.ai से इनपुट संभाल कर सकते हैं चल रहा है, लेकिन मैं कुछ समस्या हो रही है। वर्तमान में, मेरे विचार है कि जब लैम्ब्डा चलाया जाता है, तो इसे आसानी हो सकता है अगर बयान इसलिए की तरह है:
निम्नलिखित, वास्तविक कोड नहीं है मैं तो बस क्या लगता है कि मैं मेरे सिर में क्या कर सकते हैं
if (figureOutIfInputType.equals("alexa")){
runAlexaCode();
} else if (figureOutIfInputType.equals("api.ai")){
runApiAiCode();
}
बात यह है कि अब मुझे किसी भी तरह यह बताने की ज़रूरत है कि फ़ंक्शन को एलेक्स या api.ai द्वारा बुलाया जा रहा है या नहीं।
यह मेरा वास्तविक जावा अभी है:
public class App implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
System.out.println("myLog: " + input.toString());
return "Hello from AWS";
}
मैं तो एलेक्सा और Api.ai से लैम्ब्डा दौड़ा देखने के लिए क्या वस्तु इनपुट जावा में उत्पन्न हो जाएगा।
API.ai
{id=asdf-6801-4a9b-a7cd-asdffdsa, timestamp=2017-07-
28T02:21:15.337Z, lang=en, result={source=agent, resolvedQuery=hi how
are you, action=, actionIncomplete=false, parameters={}, contexts=[],
metadata={intentId=asdf-3a2a-49b6-8a45-97e97243b1d7,
webhookUsed=true, webhookForSlotFillingUsed=false,
webhookResponseTime=182, intentName=myIntent}, fulfillment=
{messages=[{type=0, speech=I have failed}]}, score=1}, status=
{code=200, errorType=success}, sessionId=asdf-a7ac-43c8-8ae8-
bc1bf5ecaad0}
एलेक्सा
{version=1.0, session={new=true, sessionId=amzn1.echo-api.session.asdf-
7e03-4c35-9d98-d416eefc5b23, application=
{applicationId=amzn1.ask.skill.asdf-a02e-4938-a747-109ea09539aa}, user=
{userId=amzn1.ask.account.asdf}}, context={AudioPlayer=
{playerActivity=IDLE}, System={application=
{applicationId=amzn1.ask.skill.07c854eb-a02e-4938-a747-109ea09539aa},
user={userId=amzn1.ask.account.asdf}, device=
{deviceId=amzn1.ask.device.asdf, supportedInterfaces={AudioPlayer={}}},
apiEndpoint=https://api.amazonalexa.com}}, request={type=IntentRequest,
requestId=amzn1.echo-api.request.asdf-5de5-4930-8f04-9acf2130e6b8,
timestamp=2017-07-28T05:07:30Z, locale=en-US, intent=
{name=HelloWorldIntent, confirmationStatus=NONE}}}
तो अब मैं दोनों मेरे एलेक्सा और Api.ai उत्पादन है, और वे अलग हैं। तो यह अच्छा है। मैं यह बताने में सक्षम हूं कि कौन सा है। लेकिन मैं अटक गया हूँ। मुझे वास्तव में यकीन नहीं है कि मुझे एक AlexaInput ऑब्जेक्ट और एक एपीआईआईपूट ऑब्जेक्ट बनाने का प्रयास करना चाहिए।
क्या मैं यह सब गलत कर रहा हूं? क्या मैं एक लैम्ब्डा को एक से अधिक सेवा (एलेक्सा और एपीआईएआई) से अपने "सहायक" अनुरोधों को पूरा करने की कोशिश करने में गलत हूं?
किसी भी मदद की सराहना की जाएगी। निश्चित रूप से, किसी और को एडब्ल्यूएस में उनकी सहायक कार्यक्षमता लिखनी होगी और दोनों "सहायक" प्लेटफ़ॉर्म के लिए अपना कोड पुन: उपयोग करना चाहता है।
तो तुम दोनों एलेक्सा और api.ai के लिए एडब्ल्यूएस (जावा) का उपयोग करते हैं? इस बिंदु पर, मैं एक साझा लाइब्रेरी के साथ दो अलग-अलग कोड अड्डों के साथ ठीक हूं, जिसे मैं शायद बनाऊंगा, लेकिन मुझे नहीं पता कि वास्तव में इनपुट को कैसे पार्स/प्राप्त करना है। – EGHDK
शायद मैं आपके प्रश्न को गलत समझ रहा हूं। क्या आप यह जानने का प्रयास कर रहे हैं कि 'अनुरोध' पैरामीटर को कैसे पार्स करें और दो मामलों के लिए इसे अलग तरीके से इलाज करें? – Prisoner
मुझे लगता है कि आपने मेरे मूल प्रश्न का सही उत्तर दिया है, लेकिन मुझे इस बिंदु पर ज्यादातर फॉलो अप किया गया था। मुझे यकीन नहीं है कि api.ai से परिणामों में कैसे पढ़ा जाए। आउटपुट (ऊपर दिखाया गया है) जो कि api.ai से है, आने वाले "ऑब्जेक्ट" प्रकार पर toString() को कॉल करके बस है। क्या आने वाली बस जेसन है? यदि हां, तो मैं इसे कैसे प्राप्त करूं ताकि मैं केवल 'if (input.lang.equals ("en")) को कॉल कर सकूं? – EGHDK