Didimo Laravel - Web API
Laravel Package para enviar sms con la plataforma didimo., (*1)
, (*2)
Créditos
Eduardo Díaz, Madrid 2017, (*3)
Twitter: @eduardo_dx, (*4)
Instalación
Vía Composer
Laravel 5.2, 5.3, 5.4
``` bash
$ composer require "ssheduardo/didimo-laravel=~1.0", (*5)
Ahora debemos cargar nuestro Services Provider dentro del array **'providers'** (config/app.php)
```php
Ssheduardo\Didimo\SmsServiceProvider::class
Creamos un alias dentro del array 'aliases' (config/app.php), (*6)
'Sms' => Ssheduardo\Didimo\Facades\Sms::class,
En nuestro archivo .env debemos agregar, (*7)
DIDIMO_USER=TU_USER
DIDIMO_PASSWORD=TU_PASSWORD
Eh agregado una variable más de entorno como ayuda por si queréis configurar el environment en tu entorno de test o producción, (*8)
DIDIMO_ENVIRONMENT
Por defecto su valor es test, (*9)
Finalmente publicamos nuestro archivo de configuración por si queremos cambiar la configuración y no hacer eso de las variables de entorno, (*10)
php artisan vendor:publish --provider="Ssheduardo\Didimo\SmsServiceProvider"
Esto nos creara un archivo llamado didimo.php dentro de config,, (*11)
Uso
Enviar un sms
Imaginemos que tenemos esta ruta http://ubublog.com/sms que enlaza con SmsController@index, (*12)
Route::get('/sms', ['as' => 'sms', 'uses' => 'SmsController@index']);
Y el contenido del controlador SmsController sería este:
``` php
<?php
namespace App\Http\Controllers;, (*13)
use Illuminate\Http\Request;
use Ssheduardo\Didimo\Facades\Sms;, (*14)
class SmsController extends Controller
{, (*15)
public function index()
{
//Enviar sms desde producción
Sms::setEnvironment('live');
$response = Sms::createMessage('Test','[NUMERO_DESTINO]','Mensaje de prueba');
if($response->Status == 200) {
if($response->ResponseCode == 0 && $response->ResponseMessage == 'Operation Success') {
echo "Enviado correctamente, id status: {$response->Id}";
}
else {
echo 'Error, no se pudo enviar el sms';
}
}
else {
print_r($response);
}
}
}, (*16)
> Tener en cuenta que para enviar sms de pruebas, tenéis que contactar por vuestro proveedor para que os de de alta. Bastará con cambiar live por test
```php
Sms::setEnvironment('test');
//O podemos llamar al valor asignado en el config (test o live)
Sms::setEnvironment(config('didimo.environment'));
Nota: Podemos pasar un tercer parámetro para programar el envío del sms, dicho valor tiene que tener el siguiente formato Y-m-d\TH:i:s., (*17)
$now = date('Y-m-d H:i:s');
$newdate = date('Y-m-d\TH:i:s', strtotime('+1 hour', strtotime($now)));
Sms::createMessage('Prueba','[NUMERO_DESTINO]','Mensaje con scheduler',$newdate);
Consultar el estado de un mensaje
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Ssheduardo\Didimo\Facades\Sms;
class SmsController extends Controller
{
public function index()
{
//Consultar en producción
Sms::setEnvironment('live');
$id='c366018b-97ba-4a78-8183-0d975bd2620b';
$response = Sms::getMessageStatus($id);
if($response->Status == 200) {
if($response->ResponseCode == 0 && $response->ResponseMessage == 'Operation Success') {
echo "Estatus: ".$response->StatusDescription;
}
else {
echo 'Error al obtener estatus';
}
}
else{
print_r($response);
}
}
}
Consultar saldo disponible para enviar SMS
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Ssheduardo\Didimo\Facades\Sms;
class SmsController extends Controller
{
public function index()
{
//Consultar en producción
Sms::setEnvironment('live');
$response = Sms::getCredits();
if($response->Status == 200) {
if($response->ResponseCode == 0 && $response->ResponseMessage == 'Operation Success') {
echo "Total saldo: ".$response->Credits;
}
else {
echo 'Error al obtener saldo';
}
}
else {
print_r($response);
}
}
}
Este package se apoya de mi clase principal https://github.com/ssheduardo/didimo., (*18)
Documentación oficial
Web API Didimo SMS - Manual de Integracion, (*19)
Changelog
Please see CHANGELOG for more information about what has changed recently., (*20)
Licencia
The MIT License (MIT). Please see License File for more information., (*21)
Donación
¿Te gustaría apoyarme?
¿Aprecias mi trabajo?
¿Lo usas en proyectos comerciales?, (*22)
¡Siéntete libre de hacer una pequeña donación! :wink:, (*23)