question

ak avatar image
ak asked ak answered

Can I retrieve the contents of an inbound text message via Push Notifications using the Subscription API ?

This question comes from one of our awesome RingCentral Developer's working on an application.

"We have an application where we set up event filters to listen to Message-Store events. Every time we get an Inbound message, we use the timestamp from the push notification to filter for the message contents from the Message-Store API. Can we read the contents of the message from the Push notification directly ?"


getting started
1 |1500 characters needed characters left characters exceeded

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

1 Answer

ak avatar image
ak answered

Yes. This is now possible using the following event filters :

/restapi/v1.0/account/~/extension/' + extension_number + '/message-store/instant?type=SMS


Consider the following subscription creation request:

POST .../restapi/v1.0/subscription  {
                 
    "eventFilters": [
        "/restapi/v1.0/account/~/extension/' + extension_number + '/message-store/instant?type=SMS
    ],
    "deliveryMode": {
      "transportType": "PubNub"
    }
}    

In response to this request the client application will get all the required information to subscribe to a certain PubNub channel (see PubNub section below to get more information about PubNub subscribing) and receive push notifications for the selected event (message-store/instant in this case):

HTTP/1.1 200 OK
 {
  "uuid": "8dd3801a-334c-43bf-ac41-97371b1a22de",
  "event": "/restapi/v1.0/account/~/extension/131074004/message-store/instant?type=SMS",
  "timestamp": "2016-08-16T02:52:29.561Z",
  "subscriptionId": "c342f21b-edae-4f33-85ce-3ef56ed8b5ad",
  "body": {
    "id": "1941536005",
    "to": [
      {
        "phoneNumber": "101",
        "name": Sample_User"
      }
    ],
    "from": {
      "phoneNumber": XXXXXXXXXXX"
    },
    "type": "SMS",
    "creationTime": "2016-08-16T02:52:29.522Z",
    "lastModifiedTime": "2016-08-16T02:52:29.522Z",
    "readStatus": "Unread",
    "priority": "Normal",
    "attachments": [
      {
        "id": "1941536005",
        "type": "Text",
        "contentType": "text/plain"
      }
    ],
    "direction": "Inbound",
    "availability": "Alive",
    "subject": "This is an Inbound Message",
    "messageStatus": "Received"
  }
}


From above, the parameter subject could be used to read the contents off of the push notification for any inbound messages. 

P.S : This event filter could be used to retrieve the contents of Inbound Messages Only. 

Advantages:

1.) You would not have to listen to the timestamp from the Push notification anymore.

2.) You would not have to make an API call to message-store endpoint to filter using the timestamp to retrieve the contents.


For more information on Subscription, please refer to our API Documentation here : 

Subscription API: https://developer.ringcentral.com/api-docs/latest/index.html#!#Notifications.html

SDKs: https://developers.ringcentral.com/library/sdks.html

1 |1500 characters needed characters left characters exceeded

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

Developer sandbox tools

Using the RingCentral Phone for Desktop, you can dial or receive test calls, send and receive test SMS or Fax messages in your sandbox environment.

Download RingCentral Phone for Desktop:

Tip: switch to the "sandbox mode" before logging in the app:

  • On MacOS: press "fn + command + f2" keys
  • On Windows: press "Ctrl + F2" keys