Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过实现web服务向Alexa托管自定义技能_C#_Json_Web Services_Alexa_Alexa Skills Kit - Fatal编程技术网

C# 通过实现web服务向Alexa托管自定义技能

C# 通过实现web服务向Alexa托管自定义技能,c#,json,web-services,alexa,alexa-skills-kit,C#,Json,Web Services,Alexa,Alexa Skills Kit,我正在开发一个web服务,用于处理Alexa发送的请求,并在.net framework中以特定的响应进行响应。Alexa以JSON格式向您的服务发送的请求正文如下: { "version": "string", "session": { "new": true, "sessionId": "string", "application": { "applicationId": "string" }, "attributes": {

我正在开发一个web服务,用于处理Alexa发送的请求,并在.net framework中以特定的响应进行响应。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
  }
}
我在亚马逊开发者论坛上进行了研究,但我无法实现这一点,有一件事我没有使用Lambda功能,我想定制一项技能,我的位置不在美国北部


我被解雇了。来自github,用于我的web服务,但无法与此库同步,这里的任何人都可以为我提供如何执行此操作或如何启动的指导,提前感谢。

我刚刚发布了一个使用您提到的相同AlexaSkillsKit.NET包的项目。目标是帮助每个人使用.NET+Visual Studio创建Alexa自定义技能,您可以轻松地将其部署到Azure

这里有一个示例技能实现,您可以将其用作自定义技能的模式。它利用了httpClient和通常的异步模式


只需下载并启动Visual Studio即可开始

上一个答案已经写了一段时间了,再加上Azure4Alexa示例实现的示例,使用了不推荐的基类,对于您可能希望使用Alexa请求的“上下文”部分的情况,您可能希望在最终的Speechlet类中实现
SpeechletBase,ISpeechWithContext

老实说,我知道上的README.md非常密集,但是如果您给它一些时间,并通过AlexaSkillsKit.Sample项目,以及通过实现基类的定义,您将完全理解请求处理

我还想借此机会详细介绍一下我是如何理解这些类及其结构的:

SampleSessionSpeechlet
类-是记录您的请求的最后一个类,它实现了
ispechletWithContext
(它强制实现
onSessionStart()
OnLaunch()
onContent()
OnSessionEnded()
)这四个函数基本上是Alexa可以发送到Web服务的所有请求的处理程序

SpecchletBase
类-基本上围绕着
SpeechletService
类,该类实际上完成了所有繁重的工作

SpeechletService
类-基本上调用它的
GetResponseAsync()
(由
SpeechletSerive
GetResponse()
包装),它接受传递的Alexa请求,将其解析成一个可爱的小数据类,名为
SpeechletRequestEnvelope
,进行会话管理,将
SpeechletRequestEnvelope
传递给
OnSessionStarted()
OnLaunch()
OnIntent()
onsessionend()
方法的实现,获取返回的对象并将Alexa响应作为名为
speechletresponseendevelope
的类返回


希望这对快速实现有所帮助,但我强烈建议浏览Lib目录并了解工作原理。谁知道呢?贡献

Hi@Tam,感谢您的回复我有一个问题我可以在自己的IIS远程服务器而不是Azure上部署吗,如果可以,那么我需要将哪个文件设置为启动文件/页面谢谢。嘿,我已经将此项目实现为Web API,因此没有像MVC项目中那样配置启动页面。如果您想让用户了解您的自定义技能,在项目根目录中有一个名为“default.htm”的静态页面。Hi@Tam感谢您的回复,我按照您的说明步骤进行了操作,但收到错误:“调用远程端点时出错,返回HTTP 405:Method Not Allowed”你知道为什么会发生这种情况吗。当你转到-Azure4Alexa静态HTML页面加载正常吗?是的,它加载了default.htm,但当我试图在测试中输入话语“管道上是否有良好的服务”时,我得到了响应:-“调用远程端点时出错,返回了HTTP 405:Method Not Allowed”。端点url是:目前我真的不知道为什么会发生这种情况,请帮助我或共享您的id,我可以告诉您整个过程,谢谢。