1. Go to this page and download the library: Download amyavari/iran-sms-laravel library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
amyavari / iran-sms-laravel example snippets
'providers' => [
'trez' => [
'username' => env('SMS_TREZ_USERNAME', ''), // Previously: env('SMS_USERNAME', '')
'password' => env('SMS_TREZ_PASSWORD', ''), // Previously: env('SMS_PASSWORD', '')
'token' => env('SMS_TREZ_TOKEN', ''), // Previously: env('SMS_TOKEN', '')
'from' => env('SMS_TREZ_FROM', ''), // Previously: env('SMS_FROM', '')
],
// Repeat this structure for any other providers you want to configure
],
use AliYavari\IranSms\Facades\Sms;
// Using the default provider
$sms = Sms::otp(string $phone, string $message);
$sms = Sms::text(string|array $phones, string $message);
$sms = Sms::pattern(string|array $phones, string $patternCode, array $variables);
// Using a specific provider
$sms = Sms::provider(string $provider)->otp(...);
$sms = Sms::provider(string $provider)->text(...);
$sms = Sms::provider(string $provider)->pattern(...);
$sms->log(bool $log = true); // Log any type of SMS
$sms->logOtp(bool $log = true); // Log only OTP messages
$sms->logText(bool $log = true); // Log only text messages
$sms->logPattern(bool $log = true); // Log only pattern messages
$sms->logSuccessful(); // Log only if the message was sent successfully
$sms->logFailed(); // Log only if the message failed to send
// Example: Log all message types except OTPs, only if they are sent successfully
$sms->log()->logOtp(false)->logSuccessful();
$sms->send();
$sms->successful(); // bool
$sms->failed(); // bool
// Get the error message (returns null if successful)
$sms->error(); // string|null
namespace App\Jobs;
use AliYavari\IranSms\Contracts\Sms;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
final class SendSms implements ShouldQueue
{
use Queueable;
/**
* Create a new job instance.
*/
public function __construct(private Sms $sms) {}
/**
* Execute the job.
*/
public function handle(): void
{
$this->sms->log(true)->send();
}
}
namespace App\Notifications;
use AliYavari\IranSms\Channels\SmsChannel;
use AliYavari\IranSms\Facades\Sms;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
final class MyNotification extends Notification
{
use Queueable;
/**
* Get the notification channels.
*/
public function via(object $notifiable): array
{
return [SmsChannel::class];
}
/**
* Get the voice representation of the notification.
*/
public function toSms(object $notifiable)
{
return Sms::text($notifiable->phone, 'Hi')->logFailed();
}
}
use AliYavari\IranSms\Facades\Sms;
// Fake the default provider to return successful responses
Sms::fake();
// Fake specific providers to return successful responses
// Note: Use `default` as the provider key to target the default provider
Sms::fake([/* provider keys */]);
// Equivalent to the above (explicit success)
Sms::fake([...], Sms::successfulRequest());
// Fake providers to return failed responses (optional custom error message)
Sms::fake([...], Sms::failedRequest(string $errorMessage = 'Error Message'));
// Fake providers to throw a ConnectionException
Sms::fake([...], Sms::failedConnection());
// Define different behaviors per provider
Sms::fake([
'provider_one' => Sms::failedConnection(),
'provider_two' => Sms::failedRequest(),
'provider_three' => Sms::failedConnection(),
]);