Fix SMS delivery receipt functionality #394
This commit is contained in:
parent
434cedf206
commit
d189b8eb18
6 changed files with 109 additions and 1 deletions
|
|
@ -30,6 +30,10 @@ security:
|
|||
pattern: ^\/api\/
|
||||
security: false
|
||||
|
||||
sms:
|
||||
pattern: ^/sms\/
|
||||
security: false
|
||||
|
||||
rider_api:
|
||||
pattern: ^\/rapi\/
|
||||
security: false
|
||||
|
|
|
|||
6
config/routes/sms.yaml
Normal file
6
config/routes/sms.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# sms handling - rising tide
|
||||
|
||||
sms_delivery_receipt:
|
||||
path: /sms/delivery_receipt
|
||||
controller: App\Controller\SMSController::deliveryReceipt
|
||||
methods: [POST]
|
||||
|
|
@ -74,7 +74,7 @@ services:
|
|||
$pass: "%env(RT_PASS)%"
|
||||
$usage_type: "%env(RT_USAGE_TYPE)%"
|
||||
$shortcode: "%env(RT_SHORTCODE)%"
|
||||
$dr_url: ""
|
||||
$dr_url: "https://resqapi.jankstudio.com/sms/delivery_receipt"
|
||||
|
||||
App\Service\MQTTClient:
|
||||
arguments:
|
||||
|
|
|
|||
71
src/Controller/SMSController.php
Normal file
71
src/Controller/SMSController.php
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
||||
|
||||
use App\Entity\SMSMessage;
|
||||
|
||||
use DateTime;
|
||||
|
||||
|
||||
class SMSController extends Controller
|
||||
{
|
||||
public function deliveryReceipt(Request $req, EntityManagerInterface $em)
|
||||
{
|
||||
$content = $req->getContent();
|
||||
|
||||
error_log($content);
|
||||
|
||||
$data = json_decode($content, true);
|
||||
error_log(print_r($data, true));
|
||||
|
||||
// data has id?
|
||||
if (!isset($data['id']))
|
||||
{
|
||||
error_log('SMSDR: no id sent');
|
||||
$resp = new Response();
|
||||
$resp->setStatusCode(400);
|
||||
return $resp;
|
||||
}
|
||||
|
||||
// check structure
|
||||
if (!isset($data['delivered']) ||
|
||||
!isset($data['reason_code']) ||
|
||||
!isset($data['reason_description'])
|
||||
)
|
||||
{
|
||||
error_log('SMSDR: bad data structure');
|
||||
$resp = new Response();
|
||||
$resp->setStatusCode(400);
|
||||
return $resp;
|
||||
}
|
||||
|
||||
// find sms
|
||||
$sms = $em->getRepository(SMSMessage::class)->find($data['id']);
|
||||
if ($sms == null)
|
||||
{
|
||||
error_log('SMSDR: no sms found');
|
||||
$resp = new Response();
|
||||
$resp->setStatusCode(202);
|
||||
return $resp;
|
||||
}
|
||||
|
||||
$sms->setReasonCode($data['reason_code']);
|
||||
if ($data['delivered'])
|
||||
$sms->setStatus('delivered');
|
||||
else
|
||||
$sms->setStatus('not_delivered');
|
||||
$em->flush();
|
||||
|
||||
$resp = new Response();
|
||||
$resp->setStatusCode(202);
|
||||
return $resp;
|
||||
}
|
||||
}
|
||||
|
|
@ -48,6 +48,11 @@ class SMSMessage
|
|||
*/
|
||||
protected $status;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer", length=5)
|
||||
*/
|
||||
protected $reason_code;
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
|
@ -57,6 +62,13 @@ class SMSMessage
|
|||
$this->to = '';
|
||||
$this->message = '';
|
||||
$this->status = 'created';
|
||||
$this->reason_code = 0;
|
||||
|
||||
// status are:
|
||||
// created
|
||||
// sent
|
||||
// delivered
|
||||
// not_delivered
|
||||
}
|
||||
|
||||
public function getID()
|
||||
|
|
@ -123,4 +135,15 @@ class SMSMessage
|
|||
{
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
public function setReasonCode($code)
|
||||
{
|
||||
$this->reason_code = $code;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getReasonCode()
|
||||
{
|
||||
return $this->reason_code;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ class RisingTideGateway
|
|||
$date_string = $date->format('Y-m-d') . 'T' . $date->format('H:m:s');
|
||||
|
||||
$data = [
|
||||
'id' => $sms->getID(),
|
||||
'from' => $this->shortcode,
|
||||
'from_alias' => $mask,
|
||||
'to' => $mobile_num,
|
||||
|
|
@ -58,7 +59,10 @@ class RisingTideGateway
|
|||
'body' => $message,
|
||||
'date' => $date_string,
|
||||
'usagetype' => $this->usage_type,
|
||||
'delivery_receipt_url' => $dr_url,
|
||||
];
|
||||
error_log(print_r($data, true));
|
||||
|
||||
$data_json = json_encode($data);
|
||||
|
||||
$userpwd = $this->user . ':' . $this->pass;
|
||||
|
|
|
|||
Loading…
Reference in a new issue