Twilio

Kirim pesan SMS

/**
 * An example of sending SMS messages from Google Ads Scripts using Twilio.
 * 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 Twilio 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 Twilio phone number or short code, as per the Phone Numbers Dashboard
// https://www.twilio.com/console/phone-numbers/incoming
const TWILIO_SRC_PHONE_NUMBER = 'INSERT_TWILIO_SRC_PHONE_NUMBER';

// Your Twilio Account SID, see: https://www.twilio.com/console
const TWILIO_ACCOUNT_SID = 'INSERT_TWILIO_ACCOUNT_SID';

// Your Twilio API Auth Token, see: https://www.twilio.com/console
const TWILIO_ACCOUNT_AUTHTOKEN = 'INSERT_TWILIO_ACCOUNT_AUTHTOKEN';

/**
 * Builds an SMS message for sending with Twilio 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 sendTwilioSms(dstPhoneNumber, message) {
 
const request =
      buildTwilioMessageRequest
(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 Twilio service.
 * @param {string} recipientPhoneNumber Destination number including country
 *     code.
 * @param {string} textMessage The message to send.
 * @return {SmsRequest}
 */

function buildTwilioMessageRequest(recipientPhoneNumber, textMessage) {
 
if (!recipientPhoneNumber) {
   
throw Error('No "recipientPhoneNumber" specified in call to ' +
       
'buildTwilioMessageRequest. "recipientPhoneNumber" cannot be empty');
 
}
 
if (!textMessage) {
   
throw Error('No "textMessage" specified in call to ' +
       
'buildTwilioMessageRequest. "textMessage" cannot be empty');
 
}
 
const twilioUri = `https://api.twilio.com/2010-04-01/Accounts/${TWILIO_ACCOUNT_SID}/Messages`;
 
const authHeader = 'Basic ' +
     
Utilities.base64Encode(
          TWILIO_ACCOUNT_SID
+ ':' + TWILIO_ACCOUNT_AUTHTOKEN);
 
const options = {
    muteHttpExceptions
: true,
    method
: 'POST',
    headers
: {Authorization: authHeader},
    payload
: {
     
From: TWILIO_SRC_PHONE_NUMBER,
     
To: recipientPhoneNumber,
     
// Twilio only accepts up to 1600 characters
     
Body: textMessage.substr(0, 1600)
   
}
 
};
 
return {url: twilioUri, options: options};
}