Page Summary
-
The provided code demonstrates how to send SMS messages from Google Ads Scripts using the Plivo service.
-
To use the script, you need to supply your email address for failure notifications, a registered Plivo source phone number, and your Plivo account authentication ID and token.
-
The
sendPlivoSmsfunction is used to build and send the SMS message, taking the destination phone number and message text as parameters. -
The
sendSmsfunction handles the actual sending of the request and includes basic error handling and retries for certain error codes. -
The
buildPlivoMessageRequestfunction constructs the specific request object for the Plivo API, including authentication headers and the message payload.
Send a SMS message
/** * An example of sending SMS messages from Google Ads Scripts using Plivo . * See : https : // developers . google . com / google - ads / scripts / docs / features / third - party - apis #basic_authentication_samples * for full details on configuration . */ // Supply an email address : If for some reason your Plivo account // details become invalid or change , this will be used to make sure // you are notified of failure . const EMAIL_ADDRESS = 'INSERT_EMAIL_ADDRESS' ; // The number you wish messages to appear to originate from . Must be registered // with Plivo . const PLIVO_SRC_PHONE_NUMBER = 'INSERT_SRC_PHONE_NUMBER' ; // Account details , see : https : // manage . plivo . com / dashboard / const PLIVO_ACCOUNT_AUTHID = 'INSERT_ACCOUNT_AUTHID' ; const PLIVO_ACCOUNT_AUTHTOKEN = 'INSERT_ACCOUNT_AUTHTOKEN' ; /** * Builds an SMS message for sending with Plivo and sends the message . * @ param { string } dstPhoneNumber The destination number . This is a string as * telephone numbers may contain '+' s or be prefixed with '00' etc . * @ param { string } message The text message to send . */ function sendPlivoSms ( dstPhoneNumber , message ) { const request = buildPlivoMessageRequest ( dstPhoneNumber , message ); sendSms ( request ); } /** * Send an SMS message * @ param { ! SmsRequest } request The request object to send */ function sendSms ( request ) { const retriableErrors = [ 429 , 500 , 503 ]; for ( let attempts = 0 ; attempts < 3 ; attempts ++ ) { const response = UrlFetchApp . fetch ( request . url , request . options ); const responseCode = response . getResponseCode (); if ( responseCode < 400 || retriableErrors . indexOf ( responseCode ) === - 1 ) { break ; } Utilities . sleep ( 2000 * Math . pow ( 2 , attempts )); } if ( responseCode > = 400 && EMAIL_ADDRESS ) { MailApp . sendEmail ( EMAIL_ADDRESS , 'Error sending SMS Message from Google Ads Scripts' , response . getContentText ()); } } /** * Builds a SMS request object specific for the Plivo service . * @ param { string } recipientPhoneNumber Destination number including country * code . * @ param { string } textMessage The message to send . * @ return { SmsRequest } */ function buildPlivoMessageRequest ( recipientPhoneNumber , textMessage ) { if ( ! recipientPhoneNumber ) { throw Error ( 'No "recipientPhoneNumber" specified in call to ' + 'buildPlivoMessageRequest. "recipientPhoneNumber" cannot be empty' ); } if ( ! textMessage ) { throw Error ( 'No "textMessage" specified in call to ' + 'buildPlivoMessageRequest. "textMessage" cannot be empty' ); } const plivoUri = ` https : // api . plivo . com / v1 / Account /$ { PLIVO_ACCOUNT_AUTHID } / Message / ` ; const authHeader = 'Basic ' + Utilities . base64Encode ( PLIVO_ACCOUNT_AUTHID + ':' + PLIVO_ACCOUNT_AUTHTOKEN ); const options = { muteHttpExceptions : true , method : 'POST' , headers : { 'Authorization' : authHeader , 'Content-Type' : 'application/json' }, payload : JSON . stringify ({ src : PLIVO_SRC_PHONE_NUMBER , dst : recipientPhoneNumber , text : textMessage }) }; return { url : plivoUri , options : options }; }

