4

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

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

我已经从具有基本 Web 身份验证的 Web 浏览器成功运行了 PHP 脚本。

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

4

1 回答 1

2

我对您的要求并不完全清楚,因此我将尝试回答我的所有解释。

  1. 如果您要确保尝试访问您的 URL 的是 Alexa Skill,我发现通过检查 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 证书,如下所述:创建用于测试的私钥和自签名证书

  2. 如果您尝试从脚本中向另一个 URL 发出 POST 请求,请尝试file_get_contents()按照此处所述使用:如何使用 file_get_contents 在 PHP 中发布数据?

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

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

于 2015-12-16T12:48:09.317 回答