我是 Web 服务器的初学者,正在尝试从 Amazon Echo 执行一些 PHP 脚本。
基本上我有一个 apache web 服务器正在运行(可通过端口 443 从互联网访问)。我的网络服务器中还有一个 PHP 脚本https://web-server.mine/script.php
我已经从具有基本 Web 身份验证的 Web 浏览器成功运行了 PHP 脚本。
现在我正在尝试从 Amazon Alexa 技能工具包发出 POST 请求,但我不知道如何传递凭据,以便它可以调用 URL。
我是 Web 服务器的初学者,正在尝试从 Amazon Echo 执行一些 PHP 脚本。
基本上我有一个 apache web 服务器正在运行(可通过端口 443 从互联网访问)。我的网络服务器中还有一个 PHP 脚本https://web-server.mine/script.php
我已经从具有基本 Web 身份验证的 Web 浏览器成功运行了 PHP 脚本。
现在我正在尝试从 Amazon Alexa 技能工具包发出 POST 请求,但我不知道如何传递凭据,以便它可以调用 URL。
我对您的要求并不完全清楚,因此我将尝试回答我的所有解释。
如果您要确保尝试访问您的 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 证书,如下所述:创建用于测试的私钥和自签名证书
如果您尝试从脚本中向另一个 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-server来alexa-app更轻松地创建和托管多种技能。如果您对此感兴趣,只需谷歌“nodejs alexa-app-server”即可获得这些软件包的最新链接。