Code Monkey home page Code Monkey logo

yii2-sms-twilio's Introduction

Yii2 SMS Twilio

A Twilio SMS plugin for Yii2 based on base package, Yii2 SMS, to make sending SMS messages as easy as emails!

This package originaly was created by @WadeShuler but author removed it from Github and abandoned package maintenance.

Installation

The preferred way to install this extension is through composer

Either run

composer require --prefer-dist walkboy/yii2-sms-twilio

or add

"walkboy/yii2-sms-twilio": "~1.0"

to the require section of your application's composer.json file.

Then add a new sms component to your main-local.php (advanced) or web.php (basic) like so:

'sms' => [
    'class' => 'walkboy\sms\twilio\Sms',

    // Advanced app use '@common/sms', basic use '@app/sms'
    'viewPath' => '@common/sms',     // Optional: defaults to '@app/sms'

    // send all sms to a file by default. You have to set
    // 'useFileTransport' to false and configure the messageConfig['from'],
    // 'sid', and 'token' to send real messages
    'useFileTransport' => true,

    'messageConfig' => [
        'from' => '+15552221234',  // Your Twilio number (full or shortcode)
    ],

    // Find your Account Sid and Auth Token at https://twilio.com/console
    'sid' => 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
    'token' => 'your_auth_token',

    // Tell Twilio where to POST information about your message.
    // @see https://www.twilio.com/docs/sms/send-messages#monitor-the-status-of-your-message
    //'statusCallback' => 'https://example.com/path/to/callback',      // optional
],

Note: This package does not provide a route for the statusCallback. You will need to create your own route to handle this. It isn't necessary to send SMS messages with Twilio, and is used for deeper tracking of each message's status.

Usage

You can send SMS messages two ways. One uses a view file, just like how the mailer does, by passing it in the compose() call. Only difference is, you don't specify html/text array keys. Just pass the string, since text messages don't use html.

With a view file

In your controller/model use it like so:

Yii::$app->sms->compose('test-message', ['name' => 'Wade'])
    //->setFrom('12345')  // if not set in config, or to override
    ->setTo('+15558881234')
    ->send();

You will need a view file located where your viewPath points to. By default, it is @app/sms. You can see in the configuration above that we overrode it to @common/sms. This is similar to the location Yii2 Advanced uses for the email views, the "common" directory.

View File: common/sms/test-message.php (advanced) or /sms/test-message.php (basic)

Hello <?= $name ?> This is a test!

Thanks!

Without a view file

When sending a large amount of text messages quickly, you may want to skip the view file for performance reasons, or you just may find it overkill for your usage.

$name = "Wade";

Yii::$app->sms->compose()
    //->setFrom('12345')  // optional if set in main config
    ->setTo('+15558881234')
    ->setMessage("Hey {$name} this is a test!")
    ->send();

setMessage() is a nicename function, or alias, for setTextBody(). Since SMS messages only deal with text and not html, I felt this was cleaner. However, setTextBody() will work just the same if your familiar with the way the mailer handles things. Either is fine.

Determining a successful send

A boolean is returned, so it is simple:

$result = Yii::$app->sms->compose()
    ->setTo('+15558881234')
    ->setMessage("Hey {$name} this is a test!")
    ->send();

if ( $result === true ) {
    echo 'SMS was sent!';
} else {
    'Error sending SMS!';
}

How do I send an image?

After your compose() call, use ->setMediaUrl($urlToImage)

Do I have to call setFrom()?

You only have to use setFrom() if you did not specify a from number in the configuration, within the messageConfig array.

If you want to override the from address in your main configuration, then you can call setFrom() specifically.

If you only send from 1 number, just configure it and don't call it directly so you don't have to change it in a bunch of places later.

Tip: If you have multuple numbers, use the Yii2 params array for an all-in-one easy spot to modify the numbers later.

Where can I find error logs?

When an Exception is hit during sending, they will be recorded under @runtime/sms and named according to the type of exception.

yii2-sms-twilio's People

Contributors

wa1kb0y avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.