Eric
Eric

Reputation: 646

Drupal 7 Not Recognizing Twilio Client in Custom Module

I have a Twilio account and I am writing a mass text message module for my Drupal site. At the beginning of the module I have set up the Twilio client with the following code:

$path = drupal_get_path("library", "twilio");
require($path . "twilio/Services/Twilio.php");
$accountSID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$authToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$client = new Services_Twilio($accountSID, $authToken);
$from = "xxxxxxxxxx";

The myModule_submit() queries the database for phone numbers and sends them out via the Twilio PHP libraries referenced above. I am using code found on the Twilio site for something similar here(http://www.twilio.com/docs/howto/sms-notifications-and-alerts). The problem is when I fill in the forms for the SMS message to be sent out and press submit I get the following error message:

Notice: Undefined variable: client in myModule_submit() (line 128 of /var/www/erosas/anysite.com/sites/all/modules/myModule/myModule.module). Notice: Trying to get property of non-object in myModule_submit() (line 128 of /var/www/erosas/anysite.com/sites/all/modules/myModule/myModule.module). Notice: Trying to get property of non-object in myModule_submit() (line 128 of /var/www/erosas/anysite.com/sites/all/modules/myModule/myModule.module).

The submit function is:

function myModule_submit($form, &$form_state){

// Retrieve the values from the fields of the custom form
$values = $form_state['values'];


// Use Database API to retrieve current posts.
$query = db_select('field_data_field_phone_number', 'n');
$query->fields('n', array('field_phone_number_value'));

// Place queried data into an array
$phone_numbers = $query->execute();

$body = $values['sms_message'];

// Iterate over array and send SMS 
foreach($phone_numbers as $number){
    $client->account->sms_messages->create($from, $number, $body); // This is line 128
}

}

Any thoughts/help would be greatly appreciated, I tried searching this site and Google for an answer, but nothing specific to Drupal came up.

Upvotes: 1

Views: 360

Answers (1)

AKS
AKS

Reputation: 4658

$client object is n/a to the submit function. Try putting the same code

$path = drupal_get_path("library", "twilio");
require($path . "twilio/Services/Twilio.php");
$accountSID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$authToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$client = new Services_Twilio($accountSID, $authToken);
$from = "xxxxxxxxxx";

in the beginning of the submit function.

   function pulsesurf_submit($form, &$form_state){
     $path = drupal_get_path("library", "twilio");
     require($path . "twilio/Services/Twilio.php");
     $accountSID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
     $authToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
     $client = new Services_Twilio($accountSID, $authToken);
     $from = "xxxxxxxxxx";

    // Retrieve the values from the fields of the custom form
    $values = $form_state['values'];


    // Use Database API to retrieve current posts.
    $query = db_select('field_data_field_phone_number', 'n');
    $query->fields('n', array('field_phone_number_value'));

    // Place queried data into an array
    $phone_numbers = $query->execute();

    $body = $values['sms_message'];

    // Iterate over array and send SMS 
    foreach($phone_numbers as $number){
        $client->account->sms_messages->create($from, $number, $body); // This is line 128
    }
...

Better making some include function without arguments the simply includes the library files and sets the tokens/sid for ease of use.

and btw, your site's domain is in the error message.

Upvotes: 2

Related Questions