Simple Twilio SMS Handler for Salesforce

Remote Site Settings:



Sample Code:

  1. public class TwilioSMSHandler {  
  2.       
  3.     public static void send( String strPhone ) {  
  4.       
  5.         ErrorResponseWrapper erw;  
  6.         String smsBody = 'Test Message';  
  7.         String strMediaURL = 'IMAGE_URL_WITH_EXTENSION';  
  8.       
  9.         final String fromNumber = 'FROM_NUMBER';   
  10.         String account = 'ACCOUNT_SID';    
  11.         String token = 'ACCESS_TOKEN';  
  12.       
  13.         HttpRequest req = new HttpRequest();  
  14.         req.setEndpoint( 'https://api.twilio.com/2010-04-01/Accounts/' + account + '/Messages' );  
  15.         req.setMethod( 'POST' );   
  16.         req.setHeader( 'Content-Type''application/x-www-form-urlencoded' );  
  17.         Blob headerValue = Blob.valueOf( account + ':' + token );  
  18.         String authorizationHeader = 'BASIC ' +  
  19.         EncodingUtil.base64Encode( headerValue );  
  20.         req.setHeader( 'Authorization', authorizationHeader );  
  21.           
  22.         if ( strPhone != null ) {  
  23.   
  24.             req.setBody( 'To=' + EncodingUtil.urlEncode( strPhone, 'UTF-8' ) + '&From=' + fromNumber + '&Body=' + smsBody + '&MediaUrl=' + strMediaURL );  
  25.             try {  
  26.               
  27.                 Http http = new Http();  
  28.                 HTTPResponse res = http.send(req);  
  29.                 System.debug( 'Response Body is ' + res.getBody() );  
  30.                 if ( res.getStatusCode() == 201 )  
  31.                   system.debug( 'Twilio Success ' + strPhone );  
  32.                 else {  
  33.                       
  34.                     system.debug( 'Twilio failed ' + strPhone );  
  35.                     erw = ( ErrorResponseWrapper )json.deserialize( res.getBody(), ErrorResponseWrapper.class );  
  36.                     system.debug( 'Twilio error ' + erw.message );  
  37.                       
  38.                 }  
  39.             } catch( Exception e ) {   
  40.               
  41.                 system.debug( 'Exception is ' + e );  
  42.                   
  43.             }   
  44.               
  45.         }  
  46.               
  47.     }  
  48.       
  49.     public class ErrorResponseWrapper {  
  50.       
  51.         String code;  
  52.         String message;  
  53.         String moreInfo;  
  54.         String status;      
  55.           
  56.     }  
  57.       
  58. }  

No comments:

Post a Comment