从 Amazon Alexa 技能包发送 HTTP post 请求

Send HTTP post request from Amazon Alexa skills kit

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

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

中也有一个 PHP 脚本

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

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

我不是很清楚你在问什么,所以我会尽量回答我所有的解释。

  1. 如果您要确保是 Alexa Skill 正在尝试访问您的 URL,我发现最简单的验证方法是检查 applicationId来自 POST 数据:

    // 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

我个人 运行 Node.js 在 Raspberry Pi 上,我使用 Node 包 alexa-app-serveralexa-app 创建和托管多项技能容易多了。如果您对此感兴趣,只需 Google "nodejs alexa-app-server" 即可获取这些软件包的最新链接。