Plivo

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 
 }; 
 } 
Create a Mobile Website
View Site in Mobile | Classic
Share by: