我是網絡服務器的初學者,並試圖從Amazon Echo執行一些PHP腳本。發送來自亞馬遜Alexa的技巧套件的HTTP POST請求
基本上我有一個運行的apache web服務器(可通過443端口從互聯網訪問)。我的web服務器中也有一個PHP腳本https://web-server.mine/script.php
我已經使用基本Web身份驗證從Web瀏覽器成功運行PHP腳本。
現在我試圖從亞馬遜Alexa技能套件發出POST請求,但我不知道如何傳遞憑據,以便可以調用URL。
我是網絡服務器的初學者,並試圖從Amazon Echo執行一些PHP腳本。發送來自亞馬遜Alexa的技巧套件的HTTP POST請求
基本上我有一個運行的apache web服務器(可通過443端口從互聯網訪問)。我的web服務器中也有一個PHP腳本https://web-server.mine/script.php
我已經使用基本Web身份驗證從Web瀏覽器成功運行PHP腳本。
現在我試圖從亞馬遜Alexa技能套件發出POST請求,但我不知道如何傳遞憑據,以便可以調用URL。
我不完全清楚你在問什麼,所以我會盡力回答我所有的解釋。
如果你想確保它是試圖訪問您的網址,我發現從POST數據檢查的applicationID進行身份驗證的最簡單方法Alexa的技能:
// 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
如果你想使一個POST請求到另一個URL從內部的腳本,請嘗試使用file_get_contents()
如下所述:How to post data in PHP using file_get_contents?
在一個側面說明,它可能是值得探討使用已製作Alexa的技能更容易的創建制定了一套PHP類的,像這樣的:https://github.com/develpr/alexa-app
我個人在Raspberry Pi上運行Node.js,並且使用節點包alexa-app-server
和alexa-app
來更容易地創建和託管多種技能。如果這是您感興趣的內容,只需使用Google「nodejs alexa-app-server」獲取這些軟件包的最新鏈接。
我實際上發現了一個開源的PHP代碼,可以處理我的Web服務器上的話語,並且它也使用了類似於你所提到的驗證方法。我實際上對nodejs也很感興趣,謝謝 – Casper
順便說一句,你如何使用nodejs在apache web服務器上創建API端點? – Casper
@Casper如果你想用一個腳本處理多個「好看」的端點,使用$ _SERVER ['REQUEST_URI']可以相對簡單: 'echo「請求的API端點:」。 htmlspecialchars($ _SERVER ['REQUEST_URI']);' 保存爲「alexa.php」,然後訪問https://web-server.mine/alexa.php/my-skill-1和https:/ /web-server.mine/alexa.php/my-skill-2 – dale3h