首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不能发送短信与Twilio和Aloha库

我不能发送短信与Twilio和Aloha库
EN

Stack Overflow用户
提问于 2018-11-19 00:15:50
回答 2查看 515关注 0票数 0

我使用的是Laravel 5.1,我想发送短信,所以我安装了Aloha库:https://github.com/aloha/laravel-twilio

我用以下命令编辑了.env文件:

代码语言:javascript
复制
TWILIO_SID=AC7556934234234234234uuuuuuuuuu3
TWILIO_TOKEN=ca8xxxxxb9b60e66666666666666d355cfe315
TWILIO_FROM=+555555555555

现在我试着发送一条带有代码的短信:

代码语言:javascript
复制
...
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此代码不发送消息吗?

EN

回答 2

Stack Overflow用户

发布于 2018-11-19 08:27:16

狂热的Twilio用户在这里。我推荐使用twilio的原生PHP SDK,而不是aloha/twilio。默认情况下,我相信aloha/twilio会拉入twilio/sdk,因为它依赖于它,但我会删除aloha/twilio,只使用twilio/sdk。

代码语言:javascript
复制
composer require twilio/sdk

然后,我建议在Services/Twilio.php中创建一个Twilio类,您可以在其中注入twilio的客户端,创建一个新实例,并使用您的twilio配置数据对其进行实例化。

它可能看起来像这样:

请注意,我的sendSMS()实现使用了MessagingServiceSid,而不是from数字。如果您没有在他们的平台上使用Twilio CoPilot消息传递服务,您可以将'messagingServiceSid‘替换为'from’。

Services/Twilio.php

代码语言:javascript
复制
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

代码语言:javascript
复制
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客户端或传递任何配置数据。

我希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2018-11-19 00:22:05

转到Twilio web控制台并尝试发送消息。如果消息发送不成功,它通常会给出一条消息或错误代码。

我遇到过Twilio不发送消息的问题,因为国家特定的电信政策不接受来自未经请求的用户/帐户的消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53362939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档