Class: MessageMediaMessages::MessagesController
- Inherits:
-
BaseController
- Object
- BaseController
- MessageMediaMessages::MessagesController
- Defined in:
- lib/message_media_messages/controllers/messages_controller.rb
Overview
MessagesController
Class Attribute Summary collapse
-
.instance ⇒ Object
Returns the value of attribute instance.
Attributes inherited from BaseController
Instance Method Summary collapse
-
#cancel_scheduled_message(message_id, body) ⇒ Object
Cancel a scheduled message that has not yet been delivered.
-
#check_credits_remaining ⇒ Object
TODO: type endpoint description here.
-
#get_message_status(message_id) ⇒ Object
Retrieve the current status of a message using the message ID returned in the send messages end point.
- #instance ⇒ Object
-
#send_messages(body) ⇒ Object
Submit one or more (up to 100 per request) SMS, MMS or text to voice messages for delivery.
Methods inherited from BaseController
#execute_request, #initialize, #validate_parameters, #validate_response
Constructor Details
This class inherits a constructor from MessageMediaMessages::BaseController
Class Attribute Details
.instance ⇒ Object
Returns the value of attribute instance.
12 13 14 |
# File 'lib/message_media_messages/controllers/messages_controller.rb', line 12 def instance @instance end |
Instance Method Details
#cancel_scheduled_message(message_id, body) ⇒ Object
Cancel a scheduled message that has not yet been delivered. A scheduled message can be cancelled by updating the status of a message from “‘scheduled“` to “`cancelled“`. This is done by submitting a PUT request to the messages endpoint using the message ID as a parameter (the same endpoint used above to retrieve the status of a message). The body of the request simply needs to contain a “`status“` property with the value set to “`cancelled“`. “`json
"status": "cancelled"
“‘ *Note: Only messages with a status of scheduled can be cancelled. If an invalid or non existent message ID parameter is specified in the request, then a HTTP 404 Not Found response will be returned*
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 |
# File 'lib/message_media_messages/controllers/messages_controller.rb', line 261 def (, body) # Prepare query url. _path_url = '/v1/messages/{messageId}' _path_url = APIHelper.append_url_with_template_parameters( _path_url, 'messageId' => ) _query_builder = Configuration.base_uri.dup _query_builder << _path_url _query_url = APIHelper.clean_url _query_builder # Prepare headers. _headers = { 'accept' => 'application/json', 'content-type' => 'application/json; charset=utf-8' } # Prepare and execute HttpRequest. _request = @http_client.put( _query_url, headers: _headers, parameters: body.to_json ) AuthManager.apply(_request, _path_url, body.to_json) _context = execute_request(_request) validate_response(_context) # Return appropriate response type. decoded = APIHelper.json_deserialize(_context.response.raw_body) unless _context.response.raw_body.nil? || _context.response.raw_body.to_s.strip.empty? decoded end |
#check_credits_remaining ⇒ Object
TODO: type endpoint description here
298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 |
# File 'lib/message_media_messages/controllers/messages_controller.rb', line 298 def check_credits_remaining # Prepare query url. _path_url = '/v1/messaging/credits' _query_builder = Configuration.base_uri.dup _query_builder << _path_url _query_url = APIHelper.clean_url _query_builder # Prepare headers. _headers = { 'accept' => 'application/json' } # Prepare and execute HttpRequest. _request = @http_client.get( _query_url, headers: _headers ) AuthManager.apply(_request, _path_url) _context = execute_request(_request) validate_response(_context) # Return appropriate response type. decoded = APIHelper.json_deserialize(_context.response.raw_body) unless _context.response.raw_body.nil? || _context.response.raw_body.to_s.strip.empty? decoded end |
#get_message_status(message_id) ⇒ Object
Retrieve the current status of a message using the message ID returned in the send messages end point. A successful request to the get message status endpoint will return a response body as follows: “‘json {
"format": "SMS",
"content": "My first message!",
"metadata": {
"key1": "value1",
"key2": "value2"
},
"message_id": "877c19ef-fa2e-4cec-827a-e1df9b5509f7",
"callback_url": "https://my.callback.url.com",
"delivery_report": true,
"destination_number": "+61401760575",
"scheduled": "2016-11-03T11:49:02.807Z",
"source_number": "+61491570157",
"source_number_type": "INTERNATIONAL",
"message_expiry_timestamp": "2016-11-03T11:49:02.807Z",
"status": "enroute"
} “‘ The status property of the response indicates the current status of the message. See the Delivery Reports section of this documentation for more information on message statues. *Note: If an invalid or non existent message ID parameter is specified in the request, then a HTTP 404 Not Found response will be returned*
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/message_media_messages/controllers/messages_controller.rb', line 51 def () # Prepare query url. _path_url = '/v1/messages/{messageId}' _path_url = APIHelper.append_url_with_template_parameters( _path_url, 'messageId' => ) _query_builder = Configuration.base_uri.dup _query_builder << _path_url _query_url = APIHelper.clean_url _query_builder # Prepare headers. _headers = { 'accept' => 'application/json' } # Prepare and execute HttpRequest. _request = @http_client.get( _query_url, headers: _headers ) AuthManager.apply(_request, _path_url) _context = execute_request(_request) # Validate response against endpoint and global error codes. if _context.response.status_code == 404 raise APIException.new( 'Resource not found', _context ) end validate_response(_context) # Return appropriate response type. decoded = APIHelper.json_deserialize(_context.response.raw_body) GetMessageStatusResponse.from_hash(decoded) end |
#instance ⇒ Object
15 16 17 |
# File 'lib/message_media_messages/controllers/messages_controller.rb', line 15 def instance self.class.instance end |
#send_messages(body) ⇒ Object
Submit one or more (up to 100 per request) SMS, MMS or text to voice messages for delivery. The most basic message has the following structure: “‘json {
"messages": [
{
"content": "My first message!",
"destination_number": "+61491570156"
}
]
} “‘ More advanced delivery features can be specified by setting the following properties in a message:
-
“‘callback_url“` A URL can be included with each message to which
Webhooks will be pushed to
via a HTTP POST request. Webhooks will be sent if and when the status of
the message changes as
it is processed (if the delivery report property of the request is set
to “‘true“`) and when replies
are received. a callback URL is optional.
-
“‘content“` The content of the message. This can be a Unicode string,
up to 5,000 characters long.
Message content is required.
-
“‘delivery_report“` Delivery reports can be requested with each
message. If delivery reports are requested, a webhook
will be submitted to the ```callback_url``` property specified for the
message (or to the webhooks)
specified for the account every time the status of the changes
as it is processed. The
current status of the can also be retrieved via the Delivery
Reports endpoint of the
Messages API. Delivery reports are optional and by default will not be
requested.
-
“‘destination_number“` The destination number the message should be
delivered to. This should be specified in E.164
international format. For information on E.164, please refer to
A destination number is required.
-
“‘format“` The format specifies which format the message will be sent
as, “‘SMS“` (text message), “`MMS“` (multimedia message)
or ```TTS``` (text to speech). With ```TTS``` format, we will call the
destination number and read out the
using a computer generated voice. a format is
optional, by default “‘SMS“` will be used.
-
“‘source_number“` A source number may be specified for the message,
this will be the number that
the appears from on the handset. By default this feature is
not available and will be ignored
in the request. Please contact <support.com> for more
information. Specifying a source
number is optional and a by default a source number will be assigned to
the message.
-
“‘media“` The media is used to specify the url of the media file that
you are trying to send. Supported file formats include png, jpeg and gif. “‘format“` parameter must be set to “`MMS“` for this to work.
-
“‘subject“` The subject field is used to denote subject of the MMS
message and has a maximum size of 64 characters long. Specifying a subject is optional.
-
“‘source_number_type“` If a source number is specified, the type of
source number may also be
specified. This is recommended when using a source address type that is
not an internationally
formatted number, available are ```INTERNATIONAL```,
“‘ALPHANUMERIC“` or “`SHORTCODE“`. Specifying a
source number type is only valid when the ```source_number``` parameter
is specified and is optional.
If a source number is specified and no source number type is specified,
the source number type will be
inferred from the source number, however this may be inaccurate.
-
“‘scheduled“` A message can be scheduled for delivery in the future by
setting the scheduled property.
The scheduled property expects a date time specified in ISO 8601 format.
The scheduled time must be
provided in UTC and is optional. If no scheduled property is set, the
message will be delivered immediately.
-
“‘message_expiry_timestamp“` A message expiry timestamp can be
provided to specify the latest time
at which the should be delivered. If the cannot be
delivered before the specified
expiry elapses, the will be discarded.
Specifying a message expiry
is optional.
-
“‘metadata“` Metadata can be included with the message which will then
be included with any delivery
reports or replies matched to the . This can be used to create
powerful two-way messaging
applications without having to store persistent data in the application.
Up to 10 key / value metadata data
pairs can be specified in a . Each key can be up to 100
characters long, and each value up to
256 characters long. for a is optional.
The response body of a successful POST request to the messages endpoint will include a “‘messages“` property which contains a list of all messages submitted. The list of messages submitted will reflect the list of messages included in the request, but each message will also contain two new properties, “`message_id“` and “`status“`. The returned message ID will be a 36 character UUID which can be used to check the status of the message via the Get Message Status endpoint. The status of the message which reflect the status of the message at submission time which will always be “`queued“`. See the Delivery Reports section of this documentation for more information on message statues. *Note: when sending multiple messages in a request, all messages must be valid for the request to be successful. If any messages in the request are invalid, no messages will be sent.*
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/message_media_messages/controllers/messages_controller.rb', line 202 def (body) # Prepare query url. _path_url = '/v1/messages' _query_builder = Configuration.base_uri.dup _query_builder << _path_url _query_url = APIHelper.clean_url _query_builder # Prepare headers. _headers = { 'accept' => 'application/json', 'content-type' => 'application/json; charset=utf-8' } # Prepare and execute HttpRequest. _request = @http_client.post( _query_url, headers: _headers, parameters: body.to_json ) AuthManager.apply(_request, _path_url, body.to_json) _context = execute_request(_request) # Validate response against endpoint and global error codes. if _context.response.status_code == 400 raise SendMessages400ResponseException.new( 'Unexpected error in API call. See HTTP response body for details.', _context ) end validate_response(_context) # Return appropriate response type. decoded = APIHelper.json_deserialize(_context.response.raw_body) SendMessagesResponse.from_hash(decoded) end |