craigh/alexa-request-validator

验证来自亚马逊Alexa的请求

1.0.4 2019-08-05 16:02 UTC

This package is auto-updated.

Last update: 2024-09-12 02:12:41 UTC


README

这是PHP实现的Alexa请求验证,用于使用Alexa技能的Web服务时,如Alexa文档所述

安装

通过Composer安装,执行以下命令:

composer require craigh/alexa-request-validator

如何使用

安装完成后,您可以在类中实例化AlexaRequestValidator,如下所示:

$validator = new \Humps\AlexaRequest\AlexaRequestValidator('YOUR_ALEXA_SKILL_ID', file_get_contents('php://input'), $_SERVER['HTTP_SIGNATURECERTCHAINURL'], $_SERVER['HTTP_SIGNATURE']);

然后简单地这样做(理想情况下,您可以在中间件中添加此操作)

try {
  if($validator->validateRequest()){
    // Accept request to your service
  }
  
  // Reject request with a 500 error, hopefully this shouldn't happen!
}catch(\Humps\AlexaRequest\Exceptions\AlexaValidationException $e) { 
  // Reject the request with a 400 error or the given error code (via $e->getCode()) with the returned message ($e->getMessage())
}

超时容忍度

默认的超时容忍度为120秒(在亚马逊要求的150秒内)。如果您想调整这个值,可以在构造函数中传递第五个参数

$validator = new AlexaRequestValidator('YOUR_ALEXA_SKILL_ID', file_get_contents('php://input'), $_SERVER['HTTP_SIGNATURECERTCHAINURL'], $_SERVER['HTTP_SIGNATURE'], 150);

提示:如果您正在通过亚马逊Alexa技能的“测试”部分进行测试,您可能想在开发期间增加这个容忍度,以便您可以在服务器上重新播放请求。只是别忘了在认证前将其重置!