dadadev / amazonalexaservice
这是一个用于创建响应和解析请求的库,用于亚马逊Alexa技能
v2.0.1
2019-12-20 05:20 UTC
Requires
- php: >=7.1.0
- ext-json: *
- ext-openssl: *
- jms/serializer: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15
- phpmd/phpmd: ^2.7
- phpstan/phpstan: ^0.11.14
- phpstan/phpstan-phpunit: ^0.11.2
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-23 20:05:48 UTC
README
这是一个简单的服务,用于解析和创建请求和响应,用于亚马逊Web服务和您的应用程序之间的通信,基于亚马逊Alexa技能功能。
添加到您的项目
composer require dadadev/amazonalexaservice
简单用法
完整示例
<?php
use DaDaDev\AmazonAlexa\AmazonAlexaService;
use DaDaDev\AmazonAlexa\Exceptions\ValidationException;
use DaDaDev\AmazonAlexa\Request;
use DaDaDev\AmazonAlexa\RequestHandling\AbstractIntentHandler;
use DaDaDev\AmazonAlexa\Response;
use DaDaDev\AmazonAlexa\Service\RequestValidationService;
use JMS\Serializer\SerializerBuilder;
class SampleIntentHandler extends AbstractIntentHandler
{
/** @var AmazonAlexaService */
private $amazonAlexaService;
public function __construct(AmazonAlexaService $amazonAlexaService)
{
$this->amazonAlexaService = $amazonAlexaService;
}
public function getIntentName(): string
{
return 'myIntent';
}
public function handleIntent(Request $request): ?Response
{
return $this->amazonAlexaService->createOutputSpeechResponse('Hello World!');
}
}
$serializer = SerializerBuilder::create()->build();
$requestValidationService = new RequestValidationService();
$amazonAlexaService = new AmazonAlexaService($serializer);
$jsonRequest = file_get_contents('php://input');
$request = $amazonAlexaService->getAlexaRequest($jsonRequest);
try {
$requestValidationService->validateIncomingRequest(
'YOUR APP ID HERE',
$_SERVER['HTTP_SIGNATURECERTCHAINURL'],
$_SERVER['HTTP_SIGNATURE'],
$jsonRequest,
$request
);
} catch (\Exception | ValidationException $exception) {
http_response_code(404);
exit(json_encode([
'status' => 'failed',
'message' => $exception->getMessage(),
'code' => $exception->getCode(),
]));
}
$response = $amazonAlexaService->handleIntents($request, new SampleIntentHandler($amazonAlexaService));
if ($response) {
header('Content-Type: application/json');
echo $amazonAlexaService->createJsonFromResponse($response);
exit();
}
http_response_code(404);
exit(json_encode([
'status' => 'failed',
'message' => 'Request was not handled, or returned empty reponse.',
'code' => '404',
]));