Как использовать symfony la сделать запрос на получение URL, например http://example.com? Name = john & message = hello для отправки смс - PullRequest
0 голосов
/ 05 декабря 2018

Как использовать symfony для отправки GET-запроса по URL-адресу, например http://example.com? Name = john & message = hello для отправки SMS?

  1. У меня есть API типа http://example.com? Name = john & message = hello поставщику SMS
  2. Я не знаю, как использовать в Symfony 4 для отправки SMS
  3. Я уже заполнилимя и сообщение

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Для отправки смс вы должны использовать SMS Gateway / API, например Nexmo или Twilio.Они оба имеют библиотеку PHP, в большинстве случаев вам нужно будет купить (виртуальный) номер телефона, и вы получите свои ключи API, которые необходимы при использовании библиотеки.

Так что отправка смс с помощью symfony не очень сложна, я думаю.

Предполагается, что у вас есть такой контроллер:

<?php

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class SmsController extends AbstractController
{
    public function smsAction(Request $request, SmsService $smsService)
    {
        $fromNumber = $this->getParameter('sms_number_sender');
        $toNumber = $request->query->get('recipient');
        $message = $request->query->get('message')
        $smsService->sendMessage($fromNumber, $toNumber, $message)
    }
}

И SmsService, определенный ниже:

<?php

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class SmsService
{
    // Can be any Sms client like TwilioClient for example
    private $smsClient;

    public function __construct(SmsClient $smsClient)
    {
        $this->smsClient = $smsClient;
    }

    public function sendSms(int $fromPhoneNumber, int $toPhoneNumber, string $messageBody)
    {
        $this->smsClient->sendMessage(
            $int $toPhoneNumber,
            [
                'from' => $fromPhoneNumber,
                'body' => $messageBody
            ]
        );

    }
}

Если вы используете последние версии Symfony, все новые классы автоматически регистрируются как Сервис, так что вам просто нужно добавить сервис, который вы хотите использовать в качестве параметра в вашем действии Контроллера.Если вы хотите внедрить SmsClient в конструктор вашего SmsService, вам нужно будет объявить его как сервис, если это внешняя библиотека.

Это просто пример, чтобы дать вам представление о том, как вы могли бы продолжитьзаказать отправку смс с Symfony.Это не рабочий пример.

Так TwilioClient работает с Symfony

0 голосов
/ 05 декабря 2018

используйте http-клиент, такой как guzzle

, вы должны рассказать нам больше об этом, чтобы увидеть отношение к Symfony, но пример контроллера может быть чем-то вроде

/**
 * @Route("/test/sms")
 */
public function smsAction()
{
    $name = 'john';
    $msg = 'hello';
    $guzzleClient = new Client(['base_uri' => 'http://example.com']);
    $response = $guzzleClient->get('/', [
        'query' => [
            'name' => $name,
            'message' => $msg,
        ]
    ]);
}
...