Saltar para o conteúdo
Navegar na documentação

Guias

Receitas de integração

Frameworks e provedores de identidade

Já tens uma chave? Personaliza os exemplos temporariamente

Opcional. A chave ficará visível nos exemplos de código. Fica apenas na memória desta página: sem guardar nem enviar. Limpa-a antes de partilhar o ecrã ou capturas.

Os exemplos usam valores ilustrativos. Para enviar, cria uma conta e uma chave API e aguarda a aprovação do Sender ID.

$ Gerar Chave

Receitas de Integração

Liga a KambaSMS aos teus provedores de identidade, frameworks de backend e lojas virtuais em minutos com snippets prontos a usar.

Keycloak / Authelia (SSO & 2FA)

Dispara códigos OTP de segundo fator ou alertas de segurança para números +244 no login ou recuperação.

OIDC / Webhook

Configura o teu Keycloak SMS SPI ou webhook de notificação do Authelia para fazer POST na KambaSMS com o número de destino e o código de segurança:

curl -X POST https://api.kambasms.ao/messages/send \
  -H "X-API-Key: ${KAMBASMS_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+244923000000",
    "sender_id": "MINHAMARCA",
    "text": "Código de segurança: 849201. Válido por 5 minutos."
  }'

Laravel (Notification Channel / Service)

Envio de SMS transacional ou OTP usando o cliente HTTP nativo e o sistema de filas do Laravel.

PHP / Laravel 10+

Define a tua KAMBASMS_API_KEY no .env e envia mensagens diretamente nas tuas notificações ou serviços:

php
use Illuminate\Support\Facades\Http;

// Envio rápido de SMS ou OTP transacional
$response = Http::withHeaders([
    'X-API-Key' => config('services.kambasms.key'),
    'Content-Type' => 'application/json',
])->post('https://api.kambasms.ao/messages/send', [
    'to' => $user->phone, // Formato: +2449XXXXXXXX
    'sender_id' => 'MINHAMARCA',
    'text' => "Olá {$user->name}, a tua encomenda foi despachada com sucesso.",
    'auto_gsm7' => true,
]);

if ($response->successful()) {
    $messageId = $response->json('message_id');
}

WordPress & WooCommerce

Notifica clientes automaticamente quando o estado da encomenda é alterado ou processado.

WooCommerce 8+

Adiciona este hook ao functions.php do teu tema ou num plugin personalizado para avisar compradores em Angola:

php
add_action('woocommerce_order_status_processing', function($order_id) {
    $order = wc_get_order($order_id);
    $phone = $order->get_billing_phone();

    // Normaliza para +244 se necessário
    if (!str_starts_with($phone, '+244')) {
        $phone = '+244' . ltrim($phone, '0');
    }

    wp_remote_post('https://api.kambasms.ao/messages/send', [
        'headers' => [
            'X-API-Key' => getenv('KAMBASMS_API_KEY'),
            'Content-Type' => 'application/json',
        ],
        'body' => wp_json_encode([
            'to' => $phone,
            'sender_id' => 'MINHALOJA',
            'text' => "Encomenda #{$order_id} confirmada. Estamos a preparar o envio.",
            'auto_gsm7' => true,
        ]),
        'timeout' => 10,
    ]);
});

Node.js / TypeScript (Next.js, Express, NestJS)

Função assíncrona moderna usando fetch nativo com tratamento de erros e otimização GSM-7.

Node 18+ / TS

Snippet universal com suporte a X-API-Key e remoção automática de acentos:

javascript
export async function sendKambaSms(to: string, text: string, senderId = 'MINHAMARCA') {
  const response = await fetch('https://api.kambasms.ao/messages/send', {
    method: 'POST',
    headers: {
      'X-API-Key': process.env.KAMBASMS_API_KEY!,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      to,
      text,
      sender_id: senderId,
      auto_gsm7: true,
    }),
  });

  if (!response.ok) {
    const error = await response.json();
    throw new Error(error.error || 'Falha ao enviar SMS');
  }

  return response.json();
}