середу, 21 жовтня 2015 р.

Twilio Сервіс для відправлення смсок


Минулого місяця колеги розповіли про такий цікавий сервіс Твіліо, за допомогою якого можна відсилати смски на верифіковані номери.
Додати номер до списку верифікованих можна на своєму профайлі, після чого клацнути веріфай - щоб на вказаний номер подзвонили чи відправили смс з кодом, який треба ввести для підтвердження верифікації.
При реєстрації треба верифікувати хоча б один номер.
Глобальні налаштування містять країни, куди дозволяється відсилати смски, якщо не вибрати там України, буде видавати помилку "Permission to send an SMS has not been enabled for the region indicated by the 'To' number:" 
Можливо комусь буде цікаво.
Там я не давав посилання на реалізацію свою, ось сторінка, з якої можна мені відправляти смски
У своїй версії я не сильно змінив реалізацію, єдине що, то це змінив едітбокс на дропдаун, оскільки у пробній безкоштовній версії можна відправляти смски лише на верифіковані номери, а не на всі.
При налаштуванні цього сервісу буде потрібно пройти усі кроки, що подані на сторінці з кодом, тобто:
  1. Зареєструвати безкоштовну пробну версію сервісу, створити номер, з якого будуть відправлятися смс, верифікувати усі номери, на які збираєтесь відправляти смски.
  2. Додати віддалений сайт (<ваш інстанс>/0rp/e)  https://api.twilio.com
  3. Створити клас Sendsms
    public class Sendsms {
        public String phNumber{get;set;}
        public String smsBody{get;set;}
        String accountSid;
        string token;
        String fromPhNumber;
        errorResponseWrapper erw;
        public sendsms(){
            phNumber ='+'+Apexpages.currentpage().getparameters().get('phNumber');
            accountSid = 'xxxxxxxxxxxxxxxxxxxxxxxxxx';
            token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
            fromPhNumber = 'xxxxxxxx';
        }
        public void processSms(){
            HttpRequest req = new HttpRequest();
            req.setEndpoint('https://api.twilio.com/2010-04-01/Accounts/'+accountSid+'/SMS/Messages.json');
            req.setMethod('POST');
            String VERSION  = '3.2.0';
            req.setHeader('X-Twilio-Client', 'salesforce-' + VERSION);
            req.setHeader('User-Agent', 'twilio-salesforce/' + VERSION);
            req.setHeader('Accept', 'application/json');
            req.setHeader('Accept-Charset', 'utf-8');
            req.setHeader('Authorization','Basic '+EncodingUtil.base64Encode(Blob.valueOf(accountSid+':' +token)));
            req.setBody('To='+EncodingUtil.urlEncode(phNumber,'UTF-8')+'&From='+EncodingUtil.urlEncode(fromPhNumber,'UTF-8')+'&Body='+smsBody);
            Http http = new Http();
            HTTPResponse res = http.send(req);
            if(res.getStatusCode()==201)
                ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO,'SMS Sent Successfully'));
            else{
                erw =(errorResponseWrapper)json.deserialize(res.getBody(),errorResponseWrapper.class);
                ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,erw.message));
            }
        }
        public class errorResponseWrapper{
            String code;
            String message;
            String moreInfo;
            String status;    
        }
    }
  4. Створити сторінку
    <apex:page controller="Sendsms" sidebar="false" showHeader="false" title="Send SMS">
    <apex:pagemessages />
    <apex:form >
    <br/>
    <center><b>Send SMS</b> <br/><br/>
    <b>To</b> &nbsp;&nbsp;&nbsp;&nbsp;<apex:inputtext value="{!phNumber}"/> <br/><br/><br/>
    <b>Body</b>&nbsp;<apex:inputtext value="{!smsBody}"  /> &nbsp;<br/>(160 Char Max)<br/><br/><br/>
    <apex:commandButton value="Send Sms" action="{!processSms}"/>
    </center>
    </apex:form>
    </apex:page>
  5. Перейти на дану сторінку або створити додаткову кнопку для відправлення смс.
  6. Профіт!!!
От тільки з останнім пунктом проблема. Не зрозуміло, як це можна монетизувати, і як можна отримати з цього прибуток?
Можна було б заплатити за платну версію, щоб зробити доступним відправлення смс на всі номери, але що з того? Тільки витрати, і жодного прибутку. Може, хтось має якусь ідею для монетизації?

2 коментарі: