如何使用symfony在url上发出请求,如http://example.com?name=john&message=hello发送短信?
发布于 2018-12-05 07:38:26
使用像口香糖这样的http客户端
为了查看与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,
]
]);
}发布于 2018-12-05 08:19:35
为了发送sms,您必须使用SMS网关/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的最新版本,那么所有新类都会自动注册为Service,因此只需在Controller操作中添加要用作参数的服务。如果要在SmsClient的构造函数中注入SmsService,则需要将其声明为服务(如果它是外部库)。
这只是一个例子,给你一个想法,如何进行,以便发送短信与Symfony。这不是一个有效的例子。
https://stackoverflow.com/questions/53626623
复制相似问题