Add AST JSON files for NotificationMobileController and manifest.json; create SmsServiceLookupOnlyTest for SMS service functionality
This commit is contained in:
@@ -10,6 +10,7 @@ use App\Sms\Provider\RanginehProvider;
|
||||
use App\Sms\Provider\SmsProviderInterface;
|
||||
use App\Sms\Repository\SmsLogRepository;
|
||||
use App\Sms\Repository\SmsMessageTemplateRepository;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\Messenger\MessageBusInterface;
|
||||
|
||||
class SmsService
|
||||
@@ -23,6 +24,7 @@ class SmsService
|
||||
private readonly MessageBusInterface $bus,
|
||||
private readonly SmsMessageTemplateRepository $messageTemplateRepo,
|
||||
private readonly SmsTextResolver $textResolver,
|
||||
private readonly LoggerInterface $logger,
|
||||
) {
|
||||
$this->providers = [
|
||||
'kavenegar' => $kavenegar,
|
||||
@@ -46,8 +48,12 @@ class SmsService
|
||||
|
||||
$message = $this->textResolver->resolve($tag, $vars);
|
||||
|
||||
// سیاست lookup-only: بدون الگوی کاوهنگار نباید با sms/send.json خام ارسال شود.
|
||||
if ($kaveTemplate === null || $tokenMap === []) {
|
||||
$this->dispatchAsync($mobile, $message, $provider, tag: $tag);
|
||||
$this->logger->error(sprintf('SMS tag "%s" has no Kavenegar template/token_map; refusing raw send', $tag), [
|
||||
'tag' => $tag, 'mobile' => $mobile,
|
||||
]);
|
||||
$this->logRepo->save(new SmsLog($mobile, $message, $provider, false, $tag));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -79,9 +85,15 @@ class SmsService
|
||||
{
|
||||
$provider = $this->resolveProvider($msg->provider);
|
||||
|
||||
$success = ($msg->templateCode !== null)
|
||||
? $provider->sendTemplate($msg->mobile, $msg->templateCode, $msg->templateVars)
|
||||
: $provider->send($msg->mobile, $msg->message);
|
||||
// سیاست lookup-only: پیام بدون templateCode نباید با sms/send.json خام برود.
|
||||
if ($msg->templateCode === null) {
|
||||
$this->logger->error('SMS refused: no templateCode (lookup-only policy)', [
|
||||
'mobile' => $msg->mobile, 'tag' => $msg->tag,
|
||||
]);
|
||||
$success = false;
|
||||
} else {
|
||||
$success = $provider->sendTemplate($msg->mobile, $msg->templateCode, $msg->templateVars);
|
||||
}
|
||||
|
||||
$log = new SmsLog($msg->mobile, $msg->message, $provider->getName(), $success, $msg->tag);
|
||||
if ($msg->templateUuid) $log->setTemplateUuid($msg->templateUuid);
|
||||
|
||||
Reference in New Issue
Block a user