我使用的是Laravel 5.1,我想发送短信,所以我安装了Aloha库:https://github.com/aloha/laravel-twilio
我用以下命令编辑了.env文件:
TWILIO_SID=AC7556934234234234234uuuuuuuuuu3
TWILIO_TOKEN=ca8xxxxxb9b60e66666666666666d355cfe315
TWILIO_FROM=+555555555555现在我试着发送一条带有代码的短信:
...
use Twilio;
use Illuminate\Database\Eloquent\Model;
use Aloha\Twilio\TwilioInterface;
use Services_Twilio_RestException;
class AdminController extends Controller {
public function send() {
try {
Twilio::message('+77777777777', 'test test test');
} catch (\Services_Twilio_RestException $e) {
dd($e);
}当我运行函数send()时,什么也没有发生(空白白屏)- catch{}没有错误,但我也没有收到短信。当我查看Twilio短信日志时,也什么也没有。
如何获取错误消息?WHy此代码不发送消息吗?
发布于 2018-11-19 08:27:16
狂热的Twilio用户在这里。我推荐使用twilio的原生PHP SDK,而不是aloha/twilio。默认情况下,我相信aloha/twilio会拉入twilio/sdk,因为它依赖于它,但我会删除aloha/twilio,只使用twilio/sdk。
composer require twilio/sdk然后,我建议在Services/Twilio.php中创建一个Twilio类,您可以在其中注入twilio的客户端,创建一个新实例,并使用您的twilio配置数据对其进行实例化。
它可能看起来像这样:
请注意,我的sendSMS()实现使用了MessagingServiceSid,而不是from数字。如果您没有在他们的平台上使用Twilio CoPilot消息传递服务,您可以将'messagingServiceSid‘替换为'from’。
Services/Twilio.php
namespace App\Services;
use Twilio\Rest\Client;
class Twilio
{
/**
* @var Client
*/
protected $twilio;
public function __construct() {
try {
$this->twilio = new Client(config('twilio.SID'), config('twilio.TOKEN'));
}
catch (\Exception $e) {
//do something with the exception, client could not be instantiated.
}
}
//My sendSMS allows for the passing of an array in the $to argument, letting you send to
//multiple numbers (or just one)
public function sendSMS($to, $message)
{
if (is_array($to)) {
foreach($to as $value) {
$this->twilio->messages->create($value, ['messagingServiceSid' => config('twilio.MESSAGING_SERVICE_SID'), 'body' => $message]);
}
return true;
}
$this->twilio->messages->create($to, ['messagingServiceSid' => config('twilio.MESSAGING_SERVICE_SID'), 'body' => $message]);
}
}AdminController.php
use App\Services\Twilio;
class AdminController extends Controller {
protected $twilio;
public function __construct(Twilio $twilio)
{
$this->twilio = $twilio;
}
public function index()
{
$this->twilio->sendSMS('5551234567', 'Test message');
return 'Message was sent.';
}
}如果以这种方式实现Twilio,您将能够在控制器中使用任何Twilio逻辑,而不必重复创建新的Twilio客户端或传递任何配置数据。
我希望这能帮到你。
发布于 2018-11-19 00:22:05
转到Twilio web控制台并尝试发送消息。如果消息发送不成功,它通常会给出一条消息或错误代码。
我遇到过Twilio不发送消息的问题,因为国家特定的电信政策不接受来自未经请求的用户/帐户的消息。
https://stackoverflow.com/questions/53362939
复制相似问题