47 lines
1.3 KiB
Markdown
47 lines
1.3 KiB
Markdown
|
discord-interactions-php
|
||
|
---
|
||
|
|
||
|
Types and helper functions that may come in handy when you implement a Discord Interactions webhook.
|
||
|
|
||
|
# Installation
|
||
|
|
||
|
Install from [packagist](https://packagist.org/packages/discord/interactions):
|
||
|
|
||
|
```
|
||
|
composer require discord/interactions
|
||
|
```
|
||
|
|
||
|
Validating request signatures requires the [`simplito/elliptic-php`](https://github.com/simplito/elliptic-php) package to be installed, which requires the `php-gmp` extension to be enabled:
|
||
|
|
||
|
```
|
||
|
composer require simplito/elliptic-php
|
||
|
```
|
||
|
|
||
|
# Usage
|
||
|
|
||
|
Use `InteractionType` and `InteractionResponseType` to interpret and respond to webhooks.
|
||
|
|
||
|
Use `InteractionResponseFlags` to make your response special.
|
||
|
|
||
|
Use `verifyKey` to check a request signature. Note you must install the `simplito/elliptic-php` package first. For example:
|
||
|
|
||
|
```php
|
||
|
use Discord\Interaction;
|
||
|
use Discord\InteractionResponseType;
|
||
|
|
||
|
$CLIENT_PUBLIC_KEY = getenv('CLIENT_PUBLIC_KEY');
|
||
|
|
||
|
$signature = $_SERVER['HTTP_X_SIGNATURE_ED25519'];
|
||
|
$timestamp = $_SERVER['HTTP_X_SIGNATURE_TIMESTAMP'];
|
||
|
$postData = file_get_contents('php://input');
|
||
|
|
||
|
if (Interaction::verifyKey($postData, $signature, $timestamp, $CLIENT_PUBLIC_KEY)) {
|
||
|
echo json_encode(array(
|
||
|
'type' => InteractionResponseType::PONG
|
||
|
));
|
||
|
} else {
|
||
|
http_response_code(401);
|
||
|
echo "Not verified";
|
||
|
}
|
||
|
```
|