maxbeckers / amazon-alexa-php
用于亚马逊Echo (alexa) 技能开发的PHP库。
1.13.0
2023-03-13 08:19 UTC
Requires
- php: >=7.0
- guzzlehttp/guzzle: >=6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: >=2.8
- phpunit/phpunit: >=6.0
- dev-master
- 1.13.0
- 1.12.0
- 1.11.0
- 1.10.0
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.0
- 1.6.0
- 1.5.x-dev
- 1.5.0
- 1.4.x-dev
- 1.4.0
- 1.3.x-dev
- 1.3.0
- 1.2.x-dev
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.x-dev
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- dev-feature/playback
- dev-feature/version_2.0
This package is auto-updated.
Last update: 2024-09-10 10:42:02 UTC
README
亚马逊alexa PHP库
这个库是亚马逊Echo (alexa) 技能的PHP辅助工具。使用这个库,在PHP应用中处理alexa请求非常简单。你只需为你的alexa技能请求创建一些处理器并将它们添加到注册表中。
通过Composer安装
使用Composer要求这个包
composer require maxbeckers/amazon-alexa-php
使用方法
处理请求
- 将请求数据映射到请求对象
- 验证请求
- 处理请求数据
- 创建响应
- 发送响应
将请求数据映射到请求对象
将所需的请求头和请求体映射到 Request
。
use MaxBeckers\AmazonAlexa\Request\Request; ... $requestBody = file_get_contents('php://input'); $alexaRequest = Request::fromAmazonRequest($requestBody, $_SERVER['HTTP_SIGNATURECERTCHAINURL'], $_SERVER['HTTP_SIGNATURE']);
验证请求
RequestValidator
将处理亚马逊请求验证。
use MaxBeckers\AmazonAlexa\Validation\RequestValidator; ... $validator = new RequestValidator(); $validator->validate($alexaRequest);
注册请求处理器
对于不同的请求,创建不同的 RequestHandlers 很有帮助。
use MaxBeckers\AmazonAlexa\RequestHandler\RequestHandlerRegistry; ... $requestHandlerRegistry = new RequestHandlerRegistry(); $requestHandlerRegistry->addHandler($myRequestHandler);
使用注册表处理请求
use MaxBeckers\AmazonAlexa\RequestHandler\RequestHandlerRegistry; ... $requestHandler = $requestHandlerRegistry->getSupportingHandler($alexaRequest); $response = $requestHandler->handleRequest($alexaRequest);
渲染响应
header('Content-Type: application/json'); echo json_encode($response); exit();
创建新的请求处理器
新的请求处理器必须扩展 AbstractRequestHandler
。在构造函数中设置 supportedApplicationIds
为你的技能ID。
public function __construct() { $this->supportedApplicationIds = ['my_amazon_skill_id']; }
然后实现抽象的 supportsRequest
方法。
public function supportsRequest(Request $request): bool { return $request->request instanceOf MaxBeckers\AmazonAlexa\Request\Request\Standard\IntentRequest && 'MyTestIntent' === $request->request->intent->name; }
然后实现 handleRequest
方法。对于简单的响应,有一个 ResponseHelper
。
use MaxBeckers\AmazonAlexa\Helper\ResponseHelper; ... public function handleRequest(Request $request): Response { return $this->responseHelper->respond('Success :)'); }
检查设备地址信息
要从客户那里获取“完整地址”或“国家 & 邮编”,你需要用户API调用的权限。有关调用更多信息,请参阅device-address-api。
$helper = new DeviceAddressInformationHelper(); $fullAddress = $helper->getAddress($request); $countryAndPostalCode = $helper->getCountryAndPostalCode($request);
生成SSML
对于SSML输出,你可以使用 SsmlGenerator
。使用此辅助工具将生成有效的SSML以供alexa使用。在 SsmlGenerator
中所有已知的alexa SSML标签类型都有一个函数。你可以将所需的全部SSML添加到生成器中,并通过调用 getSsml
获取完整的字符串。
$ssmlGenerator = new SsmlGenerator(); $ssmlGenerator->say('one'); $ssmlGenerator->pauseStrength(SsmlGenerator::BREAK_STRENGTH_MEDIUM); $ssmlGenerator->say('two'); $ssml = $ssmlGenerator->getSsml(); // $ssml === '<speak>one <break strength="medium" /> two</speak>'
Symfony集成
在 maxbeckers/amazon-alexa-bundle 上也有一个symfony包。