PHP code example of kambasms / php-sdk

1. Go to this page and download the library: Download kambasms/php-sdk 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/ */

    

kambasms / php-sdk example snippets



KambaSMS\KambaSMS;
use KambaSMS\Exceptions\KambaAPIException;
use KambaSMS\Exceptions\KambaValidationException;

$client = new KambaSMS(
	apiKey: 'kamba_sua_chave_aqui', // A tua chave (ex: kamba_xxxxx...)
	// baseUrl: 'http://localhost:3001' // Opcional: para testes locais
);

try {
	$response = $client->sms->send([
		'to' => '+244923456789',
		'text' => 'O seu código de verificação é 1234. Não partilhe com ninguém.',
		'sender_id' => 'KAMBA' // Opcional: se omitido, usa o Sender ID da tua API Key
	]);

	echo "✅ SMS Enviado com sucesso!\n";
	echo "ID da Mensagem: " . $response['message_id'] . "\n";
	echo "Saldo Restante: " . $response['remaining_balance'] . "\n";
} catch (KambaValidationException $e) {
	echo "Dados inválidos: " . $e->getMessage();
} catch (KambaAPIException $e) {
	echo "Erro da API (" . $e->getStatusCode() . "): " . $e->getMessage();
}

try {
	$response = $client->sms->sendBulk([
		'name' => 'Campanha Natal 2024',
		'sender_id' => 'PROMO',
		'text' => 'Feliz Natal! Aproveite 20% de desconto na sua próxima compra.',
		'recipients' => [
			'+244923456789',
			'+244933123456',
			'+244943987654'
		]
	]);

	echo "✅ Job de envio em massa criado!\n";
	echo "ID do Job: " . $response['job_id'] . "\n";
	echo "Total de destinatários: " . $response['total'] . "\n";

} catch (Exception $e) {
	echo "Falha no envio em massa: " . $e->getMessage() . "\n";
}


try {
    // Agendar para daqui a 2 horas
    $dataFutura = new DateTime('+2 hours');

    $response = $client->sms->schedule([
        'to' => '+244923456789',
        'text' => 'Lembrete: A sua consulta está marcada para amanhã.',
        'sender_id' => 'CLINICA',
        'scheduled_at' => $dataFutura
    ]);

    echo "✅ SMS agendado com sucesso!\n";
    echo "ID da Mensagem: " . $response['message_id'] . "\n";

} catch (Exception $e) {
    echo "Falha ao agendar o SMS: " . $e->getMessage() . "\n";
}




// Verificar saldo
$balance = $client->account->getBalance();

echo "Saldo atual: " . $balance['balance'] . " SMS\n";

// Ver histórico de envios
// Retorna os últimos 100 registos por padrão
$history = $client->account->getHistory(limit: 10);

print_r($history);

$otp = $client->otp->send([
    'phone' => '+244912345678',
]);

echo 'Expira em: ' . $otp['expires_in'] . ' segundos';
// → Expira em: 300 segundos

$result = $client->otp->verify([
    'phone' => '+244912345678',
    'code'  => '123456',
]);

if ($result['success']) {
    echo "✅ Código válido!";
} else {
    echo "❌ Código inválido ou expirado.";
}

use KambaSMS\KambaSMS;
use KambaSMS\Exceptions\KambaValidationException;
use KambaSMS\Exceptions\KambaAPIException;

$client = new KambaSMS('kamba_...');

try {
    $client->sms->send([
        'to' => '923456789', // Erro: Falta o +244
        'text' => 'Acesse www.kambasms.ao 🚀', // Erro: Tem URL e Emoji
        'sender_id' => 'KAMBA'
    ]);
} catch (KambaValidationException $e) {
    // Erro de validação do SDK (o desenvolvedor precisa corrigir os dados)
    echo "🚫 Dados inválidos: " . $e->getMessage() . "\n";

} catch (KambaAPIException $e) {
    // Erro retornado pelo servidor da KambaSMS (ex: saldo insuficiente, rate limit)
    echo "🔌 Erro da API (" . $e->getStatusCode() . "): " . $e->getMessage() . "\n";
    // echo "Detalhes: " . print_r($e->getDetails(), true) . "\n";

} catch (Exception $e) {
    // Erro de rede (cURL) ou inesperado do PHP
    echo "💥 Erro inesperado: " . $e->getMessage() . "\n";
}

// app/Providers/AppServiceProvider.php
public function register()
{
    $this->app->singleton(\KambaSMS\KambaSMS::class, function () {
        return new \KambaSMS\KambaSMS(
            config('services.kambasms.api_key')
        );
    });
}
bash
composer