Twilio phone calls by Dropbox phone book
Dependencies: EthernetInterface HTTPClient mbed-rtos mbed-src
twilio.cpp@0:30641b73b139, 2014-07-21 (annotated)
- Committer:
- wolfSSL
- Date:
- Mon Jul 21 11:31:19 2014 +0000
- Revision:
- 0:30641b73b139
Twilio phone calls by Dropbox phone book, FRDM-K64F board;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wolfSSL | 0:30641b73b139 | 1 | /* twilio.cpp */ |
wolfSSL | 0:30641b73b139 | 2 | /* Copyright (C) 2014 wolfSSL, MIT License |
wolfSSL | 0:30641b73b139 | 3 | * |
wolfSSL | 0:30641b73b139 | 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
wolfSSL | 0:30641b73b139 | 5 | * and associated documentation files (the "Software"), to deal in the Software without restriction, |
wolfSSL | 0:30641b73b139 | 6 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, |
wolfSSL | 0:30641b73b139 | 7 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is |
wolfSSL | 0:30641b73b139 | 8 | * furnished to do so, subject to the following conditions: |
wolfSSL | 0:30641b73b139 | 9 | * |
wolfSSL | 0:30641b73b139 | 10 | * The above copyright notice and this permission notice shall be included in all copies or |
wolfSSL | 0:30641b73b139 | 11 | * substantial portions of the Software. |
wolfSSL | 0:30641b73b139 | 12 | * |
wolfSSL | 0:30641b73b139 | 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
wolfSSL | 0:30641b73b139 | 14 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
wolfSSL | 0:30641b73b139 | 15 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
wolfSSL | 0:30641b73b139 | 16 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
wolfSSL | 0:30641b73b139 | 17 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
wolfSSL | 0:30641b73b139 | 18 | */ |
wolfSSL | 0:30641b73b139 | 19 | #include "mbed.h" |
wolfSSL | 0:30641b73b139 | 20 | #include "HTTPClient.h" |
wolfSSL | 0:30641b73b139 | 21 | |
wolfSSL | 0:30641b73b139 | 22 | extern HTTPClient http; |
wolfSSL | 0:30641b73b139 | 23 | |
wolfSSL | 0:30641b73b139 | 24 | static char str[1500] ; |
wolfSSL | 0:30641b73b139 | 25 | |
wolfSSL | 0:30641b73b139 | 26 | void twilio_main(const char *phone) |
wolfSSL | 0:30641b73b139 | 27 | { |
wolfSSL | 0:30641b73b139 | 28 | int ret ; |
wolfSSL | 0:30641b73b139 | 29 | |
wolfSSL | 0:30641b73b139 | 30 | #define ALLOWANCE 100 |
wolfSSL | 0:30641b73b139 | 31 | #define SAFIX 10 |
wolfSSL | 0:30641b73b139 | 32 | |
wolfSSL | 0:30641b73b139 | 33 | static char twilio_AccountSid[] = "TWILIO_ACCOUNT_SID" ; |
wolfSSL | 0:30641b73b139 | 34 | static char twilio_AuthToken[] = "AUTH_TOKEN" ; |
wolfSSL | 0:30641b73b139 | 35 | static const char twilio_From[] = "PHONE_NUMBER_FROM" ; |
wolfSSL | 0:30641b73b139 | 36 | static const char twilio_Url[] = "http://twimlbin.com/TWIML_PATH" ; |
wolfSSL | 0:30641b73b139 | 37 | |
wolfSSL | 0:30641b73b139 | 38 | static const char *twilio_To = phone ; |
wolfSSL | 0:30641b73b139 | 39 | static const char twilio_api[] = "https://api.twilio.com/2010-04-01/Accounts/%s/%s.%s" ; |
wolfSSL | 0:30641b73b139 | 40 | static const char twilio_Method[] = "GET" ; |
wolfSSL | 0:30641b73b139 | 41 | static const char twilio_FBMethod[] = "GET" ; |
wolfSSL | 0:30641b73b139 | 42 | static const char twilio_StatusCBM[]= "GET" ; |
wolfSSL | 0:30641b73b139 | 43 | static const char twilio_Record[] = "false" ; |
wolfSSL | 0:30641b73b139 | 44 | |
wolfSSL | 0:30641b73b139 | 45 | static char twilio_request[] = "Calls" ; |
wolfSSL | 0:30641b73b139 | 46 | static char twilio_twiML[] = "xml" ; |
wolfSSL | 0:30641b73b139 | 47 | |
wolfSSL | 0:30641b73b139 | 48 | static char uri[ |
wolfSSL | 0:30641b73b139 | 49 | sizeof(twilio_AccountSid) |
wolfSSL | 0:30641b73b139 | 50 | +sizeof(twilio_AuthToken) |
wolfSSL | 0:30641b73b139 | 51 | +sizeof(twilio_api) |
wolfSSL | 0:30641b73b139 | 52 | +SAFIX+ALLOWANCE] ; |
wolfSSL | 0:30641b73b139 | 53 | static char HeaderLines[] = |
wolfSSL | 0:30641b73b139 | 54 | "User-Agent: CyaSSL-Twilio,1.0\n" |
wolfSSL | 0:30641b73b139 | 55 | "Host: api.twilio.com\n" |
wolfSSL | 0:30641b73b139 | 56 | "Accept: */*\n" ; |
wolfSSL | 0:30641b73b139 | 57 | |
wolfSSL | 0:30641b73b139 | 58 | //POST data |
wolfSSL | 0:30641b73b139 | 59 | HTTPMap params; |
wolfSSL | 0:30641b73b139 | 60 | HTTPText inText(str, 1500); |
wolfSSL | 0:30641b73b139 | 61 | |
wolfSSL | 0:30641b73b139 | 62 | params.put("From", twilio_From); |
wolfSSL | 0:30641b73b139 | 63 | params.put("To", twilio_To); |
wolfSSL | 0:30641b73b139 | 64 | params.put("Url", twilio_Url); |
wolfSSL | 0:30641b73b139 | 65 | params.put("Method", twilio_Method); |
wolfSSL | 0:30641b73b139 | 66 | params.put("FaulbackMethod", twilio_FBMethod); |
wolfSSL | 0:30641b73b139 | 67 | params.put("StatusCallbackMethod", twilio_StatusCBM); |
wolfSSL | 0:30641b73b139 | 68 | params.put("Record", twilio_Record); |
wolfSSL | 0:30641b73b139 | 69 | |
wolfSSL | 0:30641b73b139 | 70 | printf("\nCalling %s\n", twilio_To); |
wolfSSL | 0:30641b73b139 | 71 | sprintf(uri, twilio_api, twilio_AccountSid, twilio_request, twilio_twiML) ; |
wolfSSL | 0:30641b73b139 | 72 | |
wolfSSL | 0:30641b73b139 | 73 | http.basicAuth(twilio_AccountSid, twilio_AuthToken); |
wolfSSL | 0:30641b73b139 | 74 | http.setHeader(HeaderLines) ; |
wolfSSL | 0:30641b73b139 | 75 | http.setSSLversion(1) ; /* TLSv1.0 */ |
wolfSSL | 0:30641b73b139 | 76 | |
wolfSSL | 0:30641b73b139 | 77 | ret = http.post(uri, params, &inText); |
wolfSSL | 0:30641b73b139 | 78 | if (ret == HTTP_OK) { |
wolfSSL | 0:30641b73b139 | 79 | printf("Executed POST successfully - read %d characters\n", strlen(str)); |
wolfSSL | 0:30641b73b139 | 80 | printf("Result: %s\n", str); |
wolfSSL | 0:30641b73b139 | 81 | } else { |
wolfSSL | 0:30641b73b139 | 82 | printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode()); |
wolfSSL | 0:30641b73b139 | 83 | } |
wolfSSL | 0:30641b73b139 | 84 | } |