2022-06-09 01:57:34 +12:00
|
|
|
<?php
|
|
|
|
|
|
|
|
use Appwrite\Auth\Phone;
|
2022-06-14 00:43:17 +12:00
|
|
|
use Appwrite\Auth\Phone\Mock;
|
|
|
|
use Appwrite\Auth\Phone\Telesign;
|
|
|
|
use Appwrite\Auth\Phone\TextMagic;
|
|
|
|
use Appwrite\Auth\Phone\Twilio;
|
2022-06-09 01:57:34 +12:00
|
|
|
use Appwrite\Resque\Worker;
|
|
|
|
use Utopia\App;
|
|
|
|
use Utopia\CLI\Console;
|
|
|
|
|
|
|
|
require_once __DIR__ . '/../init.php';
|
|
|
|
|
|
|
|
Console::title('Messaging V1 Worker');
|
|
|
|
Console::success(APP_NAME . ' messaging worker v1 has started' . "\n");
|
|
|
|
|
|
|
|
class MessagingV1 extends Worker
|
|
|
|
{
|
|
|
|
protected ?Phone $phone = null;
|
|
|
|
protected ?string $from = null;
|
|
|
|
|
|
|
|
public function getName(): string
|
|
|
|
{
|
|
|
|
return "mails";
|
|
|
|
}
|
|
|
|
|
|
|
|
public function init(): void
|
|
|
|
{
|
|
|
|
$provider = App::getEnv('_APP_PHONE_PROVIDER');
|
|
|
|
$user = App::getEnv('_APP_PHONE_USER');
|
|
|
|
$secret = App::getEnv('_APP_PHONE_SECRET');
|
|
|
|
|
|
|
|
$this->from = App::getEnv('_APP_PHONE_FROM');
|
|
|
|
$this->phone = match ($provider) {
|
|
|
|
'mock' => new Mock('', ''), // used for tests
|
|
|
|
'twilio' => new Twilio($user, $secret),
|
|
|
|
'text-magic' => new TextMagic($user, $secret),
|
|
|
|
'telesign' => new Telesign($user, $secret),
|
|
|
|
default => null
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
public function run(): void
|
|
|
|
{
|
|
|
|
if (empty(App::getEnv('_APP_PHONE_PROVIDER'))) {
|
|
|
|
Console::info('Skipped sms processing. No Phone provider has been set.');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
$recipient = $this->args['recipient'];
|
|
|
|
$message = $this->args['message'];
|
|
|
|
|
|
|
|
try {
|
|
|
|
$this->phone->send($this->from, $recipient, $message);
|
|
|
|
} catch (\Exception $error) {
|
|
|
|
throw new Exception('Error sending message: ' . $error->getMessage(), 500);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function shutdown(): void
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|