Sample code for 30+ languages & platforms
Xbase++

Twilio Send SMS (using Chilkat HTTP)

See more Twilio Examples

Send an outgoing SMS message.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oHttp
LOCAL oReq
LOCAL oResp
LOCAL oSbResponseBody
LOCAL oJResp
LOCAL nRespStatusCode
LOCAL cAccount_sid
LOCAL cApi_version
LOCAL cBody
LOCAL cDate_created
LOCAL cDate_sent
LOCAL cDate_updated
LOCAL cDirection
LOCAL cError_code
LOCAL cError_message
LOCAL cFrom
LOCAL cMessaging_service_sid
LOCAL cNum_media
LOCAL cNum_segments
LOCAL cPrice
LOCAL cPrice_unit
LOCAL cSid
LOCAL cStatus
LOCAL cSubresource_urisMedia
LOCAL cV_to
LOCAL cUri

nSuccess := 0

//  This example assumes the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

oHttp := CreateObject("Chilkat.Http")

//  Implements the following CURL command:

//  (See information about using test credentials and phone numbers:  https://www.twilio.com/docs/iam/test-credentials)

//  curl -X POST https://api.twilio.com/2010-04-01/Accounts/TWILIO_ACCOUNT_SID/Messages.json \
//  --data-urlencode "From=+15005550006" \
//  --data-urlencode "Body=body" \
//  --data-urlencode "To=+15005551212" \
//  -u TWILIO_ACCOUNT_SID:TWILIO_AUTH_TOKEN

//  Use the following online tool to generate HTTP code from a CURL command
//  Convert a cURL Command to HTTP Source Code

oHttp:Login := "TWILIO_ACCOUNT_SID"
oHttp:Password := "TWILIO_AUTH_TOKEN"

oReq := CreateObject("Chilkat.HttpRequest")
oReq:HttpVerb := "POST"
oReq:Path := "/2010-04-01/Accounts/TWILIO_ACCOUNT_SID/Messages.json"
oReq:ContentType := "application/x-www-form-urlencoded"
oReq:AddParam("From", "+15005550006")
oReq:AddParam("Body", "body")
oReq:AddParam("To", "+15005551212")

oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpReq("https://api.twilio.com/2010-04-01/Accounts/TWILIO_ACCOUNT_SID/Messages.json", oReq, oResp)
IF (nSuccess == 0)
    ? oHttp:LastErrorText
    oHttp:destroy()
    oReq:destroy()
    oResp:destroy()
    RETURN
ENDIF

oSbResponseBody := CreateObject("Chilkat.StringBuilder")
oResp:GetBodySb(oSbResponseBody)
oJResp := CreateObject("Chilkat.JsonObject")
oJResp:LoadSb(oSbResponseBody)
oJResp:EmitCompact := 0

? "Response Body:"
? oJResp:Emit()

//  A 201 status code indicates success.
nRespStatusCode := oResp:StatusCode
? "Response Status Code = " + Str(nRespStatusCode)
IF (nRespStatusCode >= 400)
    ? "Response Header:"
    ? oResp:Header
    ? "Failed."
    oHttp:destroy()
    oReq:destroy()
    oResp:destroy()
    oSbResponseBody:destroy()
    oJResp:destroy()
    RETURN
ENDIF

//  Sample JSON response:
//  (Sample code for parsing the JSON response is shown below)

//  {
//    "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
//    "api_version": "2010-04-01",
//    "body": "body",
//    "date_created": "Thu, 30 Jul 2015 20:12:31 +0000",
//    "date_sent": "Thu, 30 Jul 2015 20:12:33 +0000",
//    "date_updated": "Thu, 30 Jul 2015 20:12:33 +0000",
//    "direction": "outbound-api",
//    "error_code": null,
//    "error_message": null,
//    "from": "+15017122661",
//    "messaging_service_sid": "MGXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
//    "num_media": "0",
//    "num_segments": "1",
//    "price": null,
//    "price_unit": null,
//    "sid": "MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
//    "status": "sent",
//    "subresource_uris": {
//      "media": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Media.json"
//    },
//    "to": "+15558675310",
//    "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json"
//  }

//  Sample code for parsing the JSON response...
//  Use the following online tool to generate parsing code from sample JSON:
//  Generate Parsing Code from JSON

cAccount_sid := oJResp:StringOf("account_sid")
cApi_version := oJResp:StringOf("api_version")
cBody := oJResp:StringOf("body")
cDate_created := oJResp:StringOf("date_created")
cDate_sent := oJResp:StringOf("date_sent")
cDate_updated := oJResp:StringOf("date_updated")
cDirection := oJResp:StringOf("direction")
cError_code := oJResp:StringOf("error_code")
cError_message := oJResp:StringOf("error_message")
cFrom := oJResp:StringOf("from")
cMessaging_service_sid := oJResp:StringOf("messaging_service_sid")
cNum_media := oJResp:StringOf("num_media")
cNum_segments := oJResp:StringOf("num_segments")
cPrice := oJResp:StringOf("price")
cPrice_unit := oJResp:StringOf("price_unit")
cSid := oJResp:StringOf("sid")
cStatus := oJResp:StringOf("status")
cSubresource_urisMedia := oJResp:StringOf("subresource_uris.media")
cV_to := oJResp:StringOf("to")
cUri := oJResp:StringOf("uri")

oHttp:destroy()
oReq:destroy()
oResp:destroy()
oSbResponseBody:destroy()
oJResp:destroy()