通过实现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服务中使用,但无法与此库同步,任何人在这里给我一个方向,我怎么能做到这一点,或者我怎么能开始提前感谢。

通过实现web服务,为Alexa托管自定义技能

我刚刚发布了一个使用相同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() (SpeechletSeriveGetResponse()包装),它接受传递的Alexa请求,解析成一个可爱的小数据类称为SpeechletRequestEnvelope,做会话管理,传递SpeechletRequestEnvelope到你的OnSessionStarted(), OnLaunch(), OnIntent()OnSessionEnded()方法的实现,得到你返回的对象,并返回你的Alexa响应作为一个类称为SpeechletResponseEnvelope

希望这有助于一些快速实现,但我强烈建议通过Lib目录并了解事情是如何工作的。谁知道呢?贡献!