【问题标题】:Send HTTP post request from Amazon Alexa skills kit从 Amazon Alexa 技能包发送 HTTP 发布请求
【发布时间】:2016-03-19 11:24:35
【问题描述】:

我是 Web 服务器的初学者,正在尝试从 Amazon Echo 执行一些 PHP 脚本。

基本上我有一个 apache Web 服务器正在运行(可通过端口 443 从 Internet 访问)。我的网络服务器中还有一个 PHP 脚本https://web-server.mine/script.php

我已通过基本的网络身份验证从网络浏览器成功运行 PHP 脚本。

现在我正在尝试从 Amazon Alexa 技能包发出 POST 请求,但我不知道如何传递凭据,以便它可以调用 URL。

【问题讨论】:

    标签: php amazon-appstore alexa-skills-kit


    【解决方案1】:

    我不完全清楚你在问什么,所以我会尝试回答我的所有解释。

    1. 如果您尝试确保是 Alexa Skill 尝试访问您的 URL,我发现通过检查 POST 数据中的 applicationId 来进行身份验证的最简单方法:

      // Get raw POST data
      $post = file_get_contents( 'php://input' );
      
      // Decode the JSON into a stdClass object
      $post = json_decode( $post );
      
      // Check the applicationId to make sure it's your Alexa Skill
      if ( 'amzn1.echo-sdk-ams.app.[your-unique-value-here]' == $post->session->application->applicationId ) {
          // Insert code to run if the applicationId matches
          echo 'The applicationId matches!';
      } else {
          // Insert code to run if the applicationId does NOT match
          echo 'The applicationId does NOT match!';
      }
      

      如果走这条路,您需要确保创建一个有效的 SSL 证书,如下所述:Create a Private Key and Self-Signed Certificate for Testing

    2. 如果您尝试从脚本中向另一个 URL 发出 POST 请求,请尝试使用file_get_contents(),如下所述:How to post data in PHP using file_get_contents?

    附带说明一下,使用一组 PHP 类可能值得研究,这些类已开发用于更轻松地创建 Alexa Skills,例如:https://github.com/develpr/alexa-app

    我个人在 Raspberry Pi 上运行 Node.js,并使用 Node 包 alexa-app-serveralexa-app 来更轻松地创建和托管多种技能。如果您对此感兴趣,只需谷歌“nodejs alexa-app-server”即可获得这些软件包的最新链接。

    【讨论】:

    • 我实际上找到了一个开源 PHP 代码,它可以处理我的 Web 服务器上的话语,它也使用了与您提到的类似的验证方法。我其实也对nodejs感兴趣,谢谢
    • 顺便说一句,您如何使用 nodejs 在 apache Web 服务器上创建 API 端点?
    • @Casper 如果你想用一个脚本处理多个“好看”的端点,使用 $_SERVER['REQUEST_URI'] 相对简单:echo "Requested API endpoint: " . htmlspecialchars( $_SERVER['REQUEST_URI'] ); 将此保存为类似“alexa .php”然后访问web-server.mine/alexa.php/my-skill-1web-server.mine/alexa.php/my-skill-2
    • 我喜欢 Node.js。有很多可用的软件包,而且它们安装起来非常快速和容易! Node.js 几乎可以在任何平台上轻松安装,并且可以用 JavaScript 编写脚本。无论您是否将其用于您的技能,这绝对值得一试!关于 Node.js 的更多信息可以在 nodejs.org/en 找到@
    • 我不制作应用程序来销售,只是为了我的家庭自动化。但我实际上试图创建一个 nodejs 服务器,这很容易,但我实际上还有其他东西在 apache 上运行 SSL 等等,所以我决定暂时继续使用 PHP 和 apache,因为它可以满足我的需要,不过谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多