Instala, configura y usa los SDK de servidor de OneSignal para enviar notificaciones push, emails y SMS desde tu backend en Node.js, Python, Java, Go, PHP, Ruby, C# y Rust.
Todos los SDK de servidor de OneSignal se generan a partir de la misma especificación OpenAPI, por lo que comparten una interfaz consistente independientemente del lenguaje. Cada SDK envuelve la OneSignal REST API y proporciona modelos tipados para solicitudes y respuestas.
Cada SDK requiere autenticación mediante claves API. Hay dos tipos de clave disponibles:
REST API Key — requerida para la mayoría de los endpoints (envío de notificaciones, gestión de usuarios, etc.). Se encuentra en Configuración > Claves e IDs de tu app.
Organization API Key — solo requerida para endpoints a nivel de organización como crear o listar apps. Se encuentra en Configuración de Organización.
use onesignal\client\api\DefaultApi;use onesignal\client\Configuration;use GuzzleHttp;$config = Configuration::getDefaultConfiguration() ->setRestApiKeyToken('YOUR_REST_API_KEY') ->setOrganizationApiKeyToken('YOUR_ORGANIZATION_API_KEY');$client = new DefaultApi( new GuzzleHttp\Client(), $config);
using OneSignalApi.Api;using OneSignalApi.Client;var config = new Configuration();config.BasePath = "https://api.onesignal.com";config.AccessToken = "YOUR_REST_API_KEY";var client = new DefaultApi(config);
use onesignal::apis::configuration::Configuration;fn create_configuration() -> Configuration { let mut config = Configuration::new(); config.rest_api_key_token = Some("YOUR_REST_API_KEY".to_string()); config.organization_api_key_token = Some("YOUR_ORGANIZATION_API_KEY".to_string()); config}
Almacena tus claves API en variables de entorno o en un gestor de secretos. Nunca las incluyas en el control de versiones.
Envía notificaciones push a Suscripciones web y móviles segmentando un segmento. Estos ejemplos muestran el camino feliz — agrega manejo de errores (try/catch, callbacks de error) para uso en producción.
use onesignal\client\model\Notification;use onesignal\client\model\StringMap;$content = new StringMap();$content->setEn('Hello from OneSignal!');$headings = new StringMap();$headings->setEn('Push Notification');$notification = new Notification();$notification->setAppId('YOUR_APP_ID');$notification->setContents($content);$notification->setHeadings($headings);$notification->setIncludedSegments(['Subscribed Users']);$response = $client->createNotification($notification);echo 'Notification ID: ' . $response->getId();
using OneSignalApi.Model;var notification = new Notification(appId: "YOUR_APP_ID"){ Contents = new StringMap(en: "Hello from OneSignal!"), Headings = new StringMap(en: "Push Notification"), IncludedSegments = new List<string> { "Subscribed Users" }};var response = client.CreateNotification(notification);Console.WriteLine("Notification ID: " + response.Id);
Nota: El SDK de .NET no normaliza automáticamente los caracteres de nueva línea. Si tu contenido contiene \r\n, normalízalo antes de pasarlo a Contents:
const notification = new OneSignal.Notification();notification.app_id = 'YOUR_APP_ID';notification.email_subject = 'Important Update';notification.email_body = '<h1>Hello!</h1><p>This is an HTML email.</p>';notification.included_segments = ['Subscribed Users'];notification.channel_for_external_user_ids = 'email';const response = await client.createNotification(notification);
notification = onesignal.Notification( app_id='YOUR_APP_ID', email_subject='Important Update', email_body='<h1>Hello!</h1><p>This is an HTML email.</p>', included_segments=['Subscribed Users'], channel_for_external_user_ids='email',)response = client.create_notification(notification)
Notification notification = new Notification();notification.setAppId("YOUR_APP_ID");notification.setEmailSubject("Important Update");notification.setEmailBody("<h1>Hello!</h1><p>This is an HTML email.</p>");notification.setIncludedSegments(Arrays.asList("Subscribed Users"));notification.setChannelForExternalUserIds("email");var response = client.createNotification(notification);
notification := *onesignal.NewNotification("YOUR_APP_ID")notification.SetEmailSubject("Important Update")notification.SetEmailBody("<h1>Hello!</h1><p>This is an HTML email.</p>")notification.SetIncludedSegments([]string{"Subscribed Users"})notification.SetChannelForExternalUserIds("email")response, _, err := apiClient.DefaultApi .CreateNotification(orgAuth) .Notification(notification) .Execute()
$notification = new Notification();$notification->setAppId('YOUR_APP_ID');$notification->setEmailSubject('Important Update');$notification->setEmailBody('<h1>Hello!</h1><p>This is an HTML email.</p>');$notification->setIncludedSegments(['Subscribed Users']);$notification->setChannelForExternalUserIds('email');$response = $client->createNotification($notification);
notification = OneSignal::Notification.new({ app_id: 'YOUR_APP_ID', email_subject: 'Important Update', email_body: '<h1>Hello!</h1><p>This is an HTML email.</p>', included_segments: ['Subscribed Users'], channel_for_external_user_ids: 'email'})response = client.create_notification(notification)
var notification = new Notification(appId: "YOUR_APP_ID"){ EmailSubject = "Important Update", EmailBody = "<h1>Hello!</h1><p>This is an HTML email.</p>", IncludedSegments = new List<string> { "Subscribed Users" }, ChannelForExternalUserIds = "email"};var response = client.CreateNotification(notification);
let mut notification = Notification::new("YOUR_APP_ID".to_string());notification.email_subject = Some("Important Update".to_string());notification.email_body = Some("<h1>Hello!</h1><p>This is an HTML email.</p>".to_string());notification.included_segments = Some(vec!["Subscribed Users".to_string()]);notification.channel_for_external_user_ids = Some("email".to_string());let response = default_api::create_notification(&config, notification).await;
Cada SDK de servidor admite el mismo conjunto de endpoints de la API. Consulta la documentación de la API de tu SDK para la lista completa de métodos, incluyendo usuarios, suscripciones, segmentos, plantillas y más.
Usa el SDK que coincida con el lenguaje de tu backend. Todos los SDK de servidor se generan a partir de la misma especificación OpenAPI y soportan los mismos endpoints, por lo que la funcionalidad es idéntica entre lenguajes.
¿Cuál es la diferencia entre la REST API Key y la Organization API Key?
La REST API Key tiene alcance para una sola app y es necesaria para la mayoría de las operaciones como enviar notificaciones y gestionar usuarios. La Organization API Key tiene alcance para tu organización y solo se necesita para crear o listar apps. La mayoría de las integraciones solo necesitan la REST API Key.
¿Puedo usar la REST API directamente en lugar de un SDK?
Sí. Los SDK de servidor son envoltorios de conveniencia alrededor de la OneSignal REST API. Puedes llamar a la API directamente usando cualquier cliente HTTP con el esquema de autenticación key (Authorization: key YOUR_REST_API_KEY).
Sí. Todos los SDK de servidor son generados a partir de la especificación OpenAPI de OneSignal usando OpenAPI Generator. Esto asegura cobertura de API consistente en todos los lenguajes.