我正在开发一个用于处理Alexa发送的请求的Web服务,并在.net框架中回复特定的响应。 Alexa以JSON格式向您的服务发送请求正文,如下所示:
{
"version": "string",
"session": {
"new": true,
"sessionId": "string",
"application": {
"applicationId": "string"
},
"attributes": {
"string": {}
},
"user": {
"userId": "string",
"accessToken": "string"
}
},
"context": {
"System": {
"application": {
"applicationId": "string"
},
"user": {
"userId": "string",
"accessToken": "string"
},
"device": {
"supportedInterfaces": {
"AudioPlayer": {}
}
}
},
"AudioPlayer": {
"token": "string",
"offsetInMilliseconds": 0,
"playerActivity": "string"
}
},
"request": {}
}
以下Json格式的和响应正文语法:
{
"version": "string",
"sessionAttributes": {
"string": object
},
"response": {
"outputSpeech": {
"type": "string",
"text": "string",
"ssml": "string"
},
"card": {
"type": "string",
"title": "string",
"content": "string",
"text": "string",
"image": {
"smallImageUrl": "string",
"largeImageUrl": "string"
}
},
"reprompt": {
"outputSpeech": {
"type": "string",
"text": "string",
"ssml": "string"
}
},
"directives": [
{
"type": "string",
"playBehavior": "string",
"audioItem": {
"stream": {
"token": "string",
"url": "string",
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession": boolean
}
}
我研究过亚马逊开发者论坛Hosting a Custom Skill as a Web Service,Handling Requests Sent by Alexa,但我无法实现这一点,有一件事我没有使用 Lambda 功能我想制作一个自定义技能和我的位置不在北美。
我得到了自由党。来自github here并在我的网络服务中使用但无法与此库同步,此处的任何人都可以指导我如何做到这一点,或者我如何才能提前感谢。
答案 0 :(得分:2)
我刚刚发布了一个使用你提到的相同AlexaSkillsKit.NET包的项目。目标是帮助每个人使用.NET + Visual Studio创建Alexa自定义技能,您可以轻松地将其部署到Azure。
https://github.com/tamhinsf/Azure4Alexa
您可以使用示例技能实现作为自定义技能的模式。它使用了httpClient和通常的异步模式。
只需下载并启动Visual Studio即可开始使用!
答案 1 :(得分:1)
写最后一个答案已经有一段时间了,再加上Azure4Alexa示例实现的示例,使用不推荐使用的基类,对于您可能希望使用Alexa请求的“上下文”部分的情况,您可能想要实现SpeechletBase, ISpeechWithContext
在您最后的Speechlet课程中。
说实话,我知道AlexaSkillsKit.net上的README.md非常密集,但是如果您花一点时间,请遍历AlexaSkillsKit.Sample项目,并遍历已实现的库的定义。类,您将不断了解请求处理。
让我也借此机会细分一下我对类及其结构的理解:
SampleSessionSpeechlet
类-只是记录您的请求并实现ISpecchletWithContext
(这是强制执行OnSessionStarted()
,OnLaunch()
,{{1} }和OnIntent()
)这四个函数基本上是Alexa可以发送到您的Web服务的所有请求的处理程序。
OnSessionEnded()
类-基本上围绕SpecchletBase
类进行包装,而实际上,这些类实际上可以完成所有繁重的工作。
SpeechletService
类-您基本上称呼它的SpeechletService
(GetResponseAsync()
的{{1}}包装),它接受传递的Alexa请求,将其解析为一个可爱的小dataClass称为SpeechletSerive
的会话管理,将GetResponse()
传递给您的SpeechletRequestEnvelope
,SpeechletRequestEnvelope
,OnSessionStarted()
或OnLaunch()
方法的实现,您返回的对象并以称为OnIntent()
希望对快速实施有所帮助,但我强烈建议您遍历Lib目录并了解其工作原理。谁知道呢?贡献!