mirror of
https://github.com/appwrite/appwrite
synced 2026-05-24 09:28:40 +00:00
Merge pull request #7520 from appwrite/feat-sms-metric
Add count for messages(sms) metric
This commit is contained in:
commit
6a5defb91c
2 changed files with 21 additions and 9 deletions
|
|
@ -195,6 +195,7 @@ const FUNCTION_ALLOWLIST_HEADERS_RESPONSE = ['content-type', 'content-length'];
|
||||||
// Usage metrics
|
// Usage metrics
|
||||||
const METRIC_TEAMS = 'teams';
|
const METRIC_TEAMS = 'teams';
|
||||||
const METRIC_USERS = 'users';
|
const METRIC_USERS = 'users';
|
||||||
|
const METRIC_MESSAGES = 'messages';
|
||||||
const METRIC_SESSIONS = 'sessions';
|
const METRIC_SESSIONS = 'sessions';
|
||||||
const METRIC_DATABASES = 'databases';
|
const METRIC_DATABASES = 'databases';
|
||||||
const METRIC_COLLECTIONS = 'collections';
|
const METRIC_COLLECTIONS = 'collections';
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ namespace Appwrite\Platform\Workers;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
use Utopia\CLI\Console;
|
use Utopia\CLI\Console;
|
||||||
|
use Utopia\Database\Document;
|
||||||
use Utopia\DSN\DSN;
|
use Utopia\DSN\DSN;
|
||||||
use Utopia\Messaging\Messages\SMS;
|
use Utopia\Messaging\Messages\SMS;
|
||||||
use Utopia\Messaging\Adapters\SMS\Mock;
|
use Utopia\Messaging\Adapters\SMS\Mock;
|
||||||
|
|
@ -15,6 +16,7 @@ use Utopia\Messaging\Adapters\SMS\Twilio;
|
||||||
use Utopia\Messaging\Adapters\SMS\Vonage;
|
use Utopia\Messaging\Adapters\SMS\Vonage;
|
||||||
use Utopia\Platform\Action;
|
use Utopia\Platform\Action;
|
||||||
use Utopia\Queue\Message;
|
use Utopia\Queue\Message;
|
||||||
|
use Appwrite\Event\Usage;
|
||||||
|
|
||||||
class Messaging extends Action
|
class Messaging extends Action
|
||||||
{
|
{
|
||||||
|
|
@ -43,35 +45,39 @@ class Messaging extends Action
|
||||||
$this
|
$this
|
||||||
->desc('Messaging worker')
|
->desc('Messaging worker')
|
||||||
->inject('message')
|
->inject('message')
|
||||||
->callback(fn($message) => $this->action($message));
|
->inject('queueForUsage')
|
||||||
|
->callback(fn(Message $message, Usage $queueForUsage) => $this->action($message, $queueForUsage));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Message $message
|
* @param Message $message
|
||||||
|
* @param Usage $queueForUsage
|
||||||
* @return void
|
* @return void
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function action(Message $message): void
|
public function action(Message $message, Usage $queueForUsage): void
|
||||||
{
|
{
|
||||||
$payload = $message->getPayload() ?? [];
|
$payload = $message->getPayload() ?? [];
|
||||||
|
|
||||||
|
if (empty($payload)) {
|
||||||
|
throw new Exception('Missing payload');
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($payload['project'])) {
|
if (empty($payload['project'])) {
|
||||||
throw new Exception('Project not set in payload');
|
throw new Exception('Project not set in payload');
|
||||||
}
|
}
|
||||||
|
|
||||||
Console::log($payload['project']['$id']);
|
$project = new Document($payload['project'] ?? []);
|
||||||
|
|
||||||
|
Console::log('Project: ' . $project->getId());
|
||||||
|
|
||||||
$denyList = App::getEnv('_APP_SMS_PROJECTS_DENY_LIST', '');
|
$denyList = App::getEnv('_APP_SMS_PROJECTS_DENY_LIST', '');
|
||||||
$denyList = explode(',', $denyList);
|
$denyList = explode(',', $denyList);
|
||||||
if (in_array($payload['project']['$id'], $denyList)) {
|
if (in_array($project->getId(), $denyList)) {
|
||||||
Console::error("Project is in the deny list. Skipping ...");
|
Console::error("Project is in the deny list. Skipping ...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($payload)) {
|
|
||||||
Console::error('Payload arg not found');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($payload['recipient'])) {
|
if (empty($payload['recipient'])) {
|
||||||
Console::error('Recipient arg not found');
|
Console::error('Recipient arg not found');
|
||||||
return;
|
return;
|
||||||
|
|
@ -112,6 +118,11 @@ class Messaging extends Action
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$sms->send($message);
|
$sms->send($message);
|
||||||
|
|
||||||
|
$queueForUsage
|
||||||
|
->setProject($project)
|
||||||
|
->addMetric(METRIC_MESSAGES, 1)
|
||||||
|
->trigger();
|
||||||
} catch (\Exception $error) {
|
} catch (\Exception $error) {
|
||||||
throw new Exception('Error sending message: ' . $error->getMessage(), 500);
|
throw new Exception('Error sending message: ' . $error->getMessage(), 500);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue