通过实现web服务,为Alexa托管自定义技能
本文关键字:自定义 Alexa 实现 web 服务 | 更新日期: 2023-09-27 18:08:23
我正在开发一个web服务,用于处理由Alexa发送的请求,并在。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
}
}
我研究了亚马逊开发者论坛托管自定义技能作为Web服务,处理Alexabut发送的请求,我无法实现这一目标,有一件事我不使用Lambda函数,我想制作自定义技能,我的位置不在北美。
我得到了自由。从github这里,在我的web服务中使用,但无法与此库同步,任何人在这里给我一个方向,我怎么能做到这一点,或者我怎么能开始提前感谢。
我刚刚发布了一个使用相同AlexaSkillsKit的项目。. NET包。目标是帮助每个人使用。net + Visual Studio创建Alexa自定义技能,您可以轻松地将其部署到Azure。
https://github.com/tamhinsf/Azure4Alexa 这里有一个示例技能实现,您可以将其用作您自己的自定义技能的模式。它使用httpClient和常用的异步模式。下载并启动Visual Studio就可以开始了!
已经有一段时间了,最后的答案是写的,再加上Azure4Alexa示例实现的例子,使用弃用的基类,对于你可能想要使用Alexa请求的'上下文'部分的情况,你会想在你的最终语音类中实现SpeechletBase, ISpeechWithContext
。
老实说,我知道README。md在AlexaSkillsKit.net上是非常密集的,但如果你给它一些时间,并通过alexaskillskit.com。示例项目,并通过实现基类的定义,您将彻底理解请求处理。
让我也借此机会详细说明我是如何理解类和它们的结构的:
SampleSessionSpeechlet
类-只是最后一个类,记录您的请求,并实现ISpecchletWithContext
(它要求实现OnSessionStarted()
, OnLaunch()
, OnIntent()
&OnSessionEnded()
)这四个函数基本上是Alexa可以发送到您的Web服务的所有请求的处理程序。
SpecchletBase
类-基本上包裹着SpeechletService
类,后者实际上完成了所有繁重的工作。
SpeechletService
类-你基本上叫它的GetResponseAsync()
(SpeechletSerive
的GetResponse()
包装),它接受传递的Alexa请求,解析成一个可爱的小数据类称为SpeechletRequestEnvelope
,做会话管理,传递SpeechletRequestEnvelope
到你的OnSessionStarted()
, OnLaunch()
, OnIntent()
或OnSessionEnded()
方法的实现,得到你返回的对象,并返回你的Alexa响应作为一个类称为SpeechletResponseEnvelope
希望这有助于一些快速实现,但我强烈建议通过Lib目录并了解事情是如何工作的。谁知道呢?贡献!