【问题标题】:The remote endpoint could not be called alexa无法调用远程端点 alexa
【发布时间】:2016-11-07 14:33:19
【问题描述】:

我正在尝试开发一种与我自己的网络服务 (tomcat) 通信的 alexa 技能。为了设置项目,我遵循了亚马逊指南 (https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/deploying-a-sample-skill-as-a-web-service)。

现在我仍然无法连接到 web 服务,只收到消息“无法调用远程端点,或者它返回的响应无效”。

该服务托管在 https://ec2-54-159-167-123.compute-1.amazonaws.com/PiaServer 上,可通过 https 访问。我使用了自签名证书。我按照文档中的说明做了所有事情,但仍然无法连接。根本没有tomcat日志。

我的端点是来自 amazon java-skill-kit 的 SpeechletServlet。

当我通过 Postman(Chrome 插件)发出请求时,我得到了一个完美的 JSON 响应(见下文):

{ "version": "1.0", "response": { "outputSpeech": {"type":"PlainText", "text": "text" }, "card": { "type": "Simple", "title":`enter code here`"Tank", "content": "text" }, "shouldEndSession": true } }

你有什么想法可以解决这个问题吗?

编辑:我在 Amazon EC2 上托管服务。

【问题讨论】:

    标签: java web-services tomcat https amazon-echo


    【解决方案1】:

    我今天遇到了同样的问题,但使用了有效的 Let's encrypt 证书:

    无法调用远程端点,或者它返回的响应无效。

    在我的情况下,“无法调用远程端点”错误的原因是 SSL 证书 配置。

    由于我的端点拥有有效的 Let's Encrypt 证书,我假设我必须选择 ? My development endpoint has a certificate from a trusted certificate authority 选项。

    但是没有用。该请求甚至没有到达网络服务器。

    当您选择 ? My development endpoint is a sub-domain of a domain that has a wildcard certificate from a certificate authority 时,它将起作用。

    我使用 Runscope 作为透明代理来调试我的 Alexa 端点。如果您将 SSL 配置更改为“我的开发端点是具有通配符证书的域的子域”,您可以在流量检查器中看到请求:

    但我无法解释为什么第一个选项不起作用而第二个选项起作用。

    起初我怀疑这与 SNI 有关,但事实并非如此。我检查了为这两个选项发送的数据包,在这两种情况下,亚马逊都在 SSL Client Hello 中发送server_name。

    【讨论】:

    • 感谢您的回答。这是一个生命的救星。在过去的两天里,我遇到了这个问题。非常感谢兽医
    【解决方案2】:

    我也遇到过同样的问题。我能够通过修改槽值来解决。 例如请求中的槽部分如下所示,

       "slots": {"<intent-slot-name>": {
          "name": "<intent-slot-name>",
          "value": "<value>"
        }}
    

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 2023-04-11
      • 2016-04-01
      • 1970-01-01
      相关资源
      最近更新 更多