IncomingPhoneNumbers

An IncomingPhoneNumber instance resource represents a Restcomm phone number

The IncomingPhoneNumbers list resource represents an account’s Restcomm phone numbers. You can POST to the list resource to provision a new Restcomm number. To find a new number to provision use the subresources of the AvailablePhoneNumbers resource.

You can move phone numbers between two Restcomm accounts if you’re using subaccounts. For details, see Exchanging Numbers Between Subaccounts.

Provisioning a phone number is a two-step process. First, you must find an available phone number to provision using the subresources of the AvailablePhoneNumbers resource. Second, you must POST to the IncomingPhoneNumbers list resource, documented below.

IncomingPhoneNumber Instance Resource

Resource URI

/2012-04-24/Accounts/{AccountSid}/IncomingPhoneNumbers/{IncomingPhoneNumberSid}

Resource Properties

Property

Description

Sid

A 34 character string that uniquely identifies this resource.

DateCreated

The date that this resource was created, given as GMThttp://www.ietf.org/rfc/rfc2822.txt[RFC 2822] format.

DateUpdated

The date that this resource was last updated, given as GMThttp://www.ietf.org/rfc/rfc2822.txt[RFC 2822] format.

FriendlyName

A human readable descriptive text for this resource, up to 64 characters long. By default, the FriendlyName is a nicely formatted version of the phone number.

AccountSid

The unique id of the Account responsible for this phone number.

PhoneNumber

The incoming phone number. e.g., +16175551212 (E.164 format)

ApiVersion

Calls to this phone number will start a new RCML session with this API version.

VoiceCallerIdLookup

Look up the caller’s caller-ID name from the CNAM database ($0.01 per look up). Either true or false.

VoiceUrl

The URL Restcomm will request when this phone number receives a call.

VoiceMethod

The HTTP method Restcomm will use when requesting the above Url. Either GET or POST.

VoiceFallbackUrl

The URL that Restcomm will request if an error occurs retrieving or executing the RCML requested by Url.

VoiceFallbackMethod

The HTTP method Restcomm will use when requesting the VoiceFallbackUrl. Either GET or POST.

StatusCallback

The URL that Restcomm will request to pass status parameters (such as call ended) to your application.

StatusCallbackMethod

The HTTP method Restcomm will use to make requests to the StatusCallback URL. Either GET or POST.

VoiceApplicationSid

The 34 character sid of the application Restcomm should use to handle phone calls to this number. If a VoiceApplicationSid is present, Restcomm will ignore all of the voice urls above and use those set on the application.

VoiceApplicationName

The application name.

SmsUrl

The URL Restcomm will request when receiving an incoming SMS message to this number.

SmsMethod

The HTTP method Restcomm will use when making requests to the SmsUrl. Either GET or POST.

SmsFallbackUrl

The URL that Restcomm will request if an error occurs retrieving or executing the RCML from SmsUrl.

SmsFallbackMethod

The HTTP method Restcomm will use when requesting the above URL. Either GET or POST.

SmsApplicationSid

The 34 character sid of the application Restcomm should use to handle SMSs sent to this number. If a SmsApplicationSid is present, Restcomm will ignore all of the SMS urls above and use those set on the application.

SmsApplicationName

The application name.

UssdUrl

The URL Restcomm will request when receiving an incoming USSD request to this number.

UssdMethod

The HTTP method Restcomm will use when making requests to the UssdUrl. Either GET or POST.

UssdFallbackUrl

The URL that Restcomm will request if an error occurs retrieving or executing the RCML from UssdUrl.

UssdFallbackMethod

The HTTP method Restcomm will use when requesting the above URL. Either GET or POST.

UssdApplicationSid

The 34 character sid of the application Restcomm should use to handle USSD requests to this number. If a UssdApplicationSid is present, Restcomm will ignore all of the Ussd urls above and use those set on the application.

UssdApplicationName

The application name.

ReferUrl

The URL Restcomm will request when receiving a SIP Refer request to this number.

ReferMethod

The HTTP method Restcomm will use when making requests to the ReferUrl. Either GET or POST.

ReferApplicationSid

The 34 character sid of the application Restcomm should use to handle SIP Refer requests to this number. If a ReferApplicationSid is present, Restcomm will ignore all of the Refer urls above and use those set on the application.

ReferApplicationName

The application name.

Capabilities

This is a set of boolean properties that indicate whether a phone number can receive calls or messages. Possible capabilities are Voice, SMS, and MMS with each having a value of either true or false.

Uri

The URI for this resource, relative to https://api.Restcomm.com.

HTTP Methods

HTTP GET
HTTP POST and PUT

Tries to update the incoming phone number’s properties, and returns the updated resource representation if successful. The returned response is identical to that returned above when making a GET request.

Optional Parameters

You may specify one or more of the following parameters to update this phone number’s respective properties:

Parameter

Description

FriendlyName

A human readable description of the new incoming phone number resource, with maximum length 64 characters.

ApiVersion

Calls to this phone number will start a new RCML session with this API version - 2012-04-24

VoiceUrl

The URL that Restcomm should request when somebody dials the phone number.

VoiceMethod

The HTTP method that should be used to request the VoiceUrl. Either GET or POST.

VoiceFallbackUrl

A URL that Restcomm will request if an error occurs requesting or executing the RCML defined by VoiceUrl.

VoiceFallbackMethod

The HTTP method that should be used to request the VoiceFallbackUrl. Either GET or POST.

StatusCallback

The URL that Restcomm will request to pass status parameters (such as call ended) to your application.

StatusCallbackMethod

The HTTP method Restcomm will use to make requests to the StatusCallback URL. Either GET or POST.

VoiceCallerIdLookup

Do a lookup of a caller’s name from the CNAM database and post it to your app. Either true or false.

VoiceApplicationSid

The 34 character sid of the application Restcomm should use to handle phone calls to this number. If a VoiceApplicationSid is present, Restcomm will ignore all of the voice urls above and use those set on the application instead.

SmsUrl

The URL that Restcomm should request when somebody sends an SMS to the new phone number.

SmsMethod

The HTTP method that should be used to request the SmsUrl. Either GET or POST.

SmsFallbackUrl

A URL that Restcomm will request if an error occurs requesting or executing the RCML defined by SmsUrl.

SmsFallbackMethod

The HTTP method that should be used to request the SmsFallbackUrl. Either GET or POST.

SmsApplicationSid

The 34 character sid of the application Restcomm should use to handle SMSs sent to this number. If a SmsApplicationSid is present, Restcomm will ignore all of the SMS urls above and use those set on the application instead.

AccountSid

The unique 34 character id of the account to which you wish to transfer this phone number.

statusCallback

With IncomingPhoneNumber statusCallback, you can subscribe to receive webhooks for different events on the incoming phone number.

The statusCallback events are:

  • RINGING

  • IN_PROGRESS

  • COMPLETED

statusCallbackMethod

The statusCallbackMethod attribute allows you to specify which HTTP method Restcomm should use when requesting the URL in the statusCallback attribute. The default is POST.

Status Callback HTTP Parameters

The parameters Restcomm passes to your application in its asynchronous request to the StatusCallback URL include all parameters passed in a synchronous request to retrieve RCML when Restcomm receives a call to one of your Restcomm numbers. The full list of parameters and descriptions of each are in the RCML Voice Request documentation.

When the call progress events are fired, the Status Callback request also passes these additional parameters:

Parameter Description

CallSid

A unique identifier for this call, generated by Restcomm. You can use the CallSid to modify the child call by POSTing to Calls/{CallSid} with a new RCML URL.

InstanceId

A unique identifier for this Restcomm-Connect instance.

OutboundCallSid

optional - A unique identifier for the outbound leg of this call

AccountSid

A unique identifier of the account that this number belongs

From

A string that describes the From address

To

A string that describes the To address

CallStatus

A descriptive status for the call. The value is one of ringing, in-progress, completed.

ApiVersion

A string that describes the Restcomm-Connect REST API version

Direction

A string that describes the direction of the call

CallerName

optional A string that represents the callers name, if available

ForwardedFrom

optiona A string that represents the number that the call was forwarded from

CallTimestamp

A string the describe the timestamp of the call

ReferTarget

optional A string that describes the transfer target, if this call started by a transfer

Transferor

optional A string that describes the transferor, if this call started by a transfer

Transferee

optional A string that describes the transferee, if this call started by a transfer

DialSipCallId

optional The SIP Call-ID header value for final SIP Responses to the call

DialSipResponseCode

optional The SIP response code for final SIP Responses to the call

DialSipHeader_

optional The SIP custome headers (if any) for final SIP Responses to the call

HTTP DELETE

Release this phone number from your account. Restcomm will no longer answer calls to this number, and you will stop being billed the monthly phone number fee. The phone number will eventually be recycled and potentially given to another customer, so use with care. If you make a mistake, contact us. We may be able to give you the number back. If successful, returns an HTTP 204 response with no body.

IncomingPhoneNumbers List Resource

Resource URI

/2012-04-24/Accounts/{AccountSid}/IncomingPhoneNumbers

HTTP Methods

HTTP GET

Returns a list of IncomingPhoneNumber resource representations, each representing a phone number given to your account. The list includes paging information.

List Filters

The following query string parameters allow you to limit the list returned. Note, parameters are case-sensitive:

Parameter

Description

PhoneNumber

Only show the incoming phone number resources that match this pattern. You can specify partial numbers and use '*' as a wildcard for any digit.

FriendlyName

Only show the incoming phone number resources with friendly names that exactly match this name.

Beta

Include phone numbers new to the Restcomm platform. Possible values are either true or false. Default is true.

Example - List of phone numbers

Gets all numbers created using IncomingPhoneNumbers.json

curl -G  https://\{account_sid}:\{auth_token}@127.0.0.1/restcomm/2012-04-24/Accounts/\{account_sid}/IncomingPhoneNumbers.json

Result of the above command

[
  {
    "sid": "PN0b4201c6c87749f29367e6cf000686cb",
    "account_sid": "\{account_sid}",
    "friendly_name": "This app calls registered restcomm client Alice ",
    "phone_number": "+1238",
    "voice_url": "/restcomm/demos/dial/client/dial-client.xml",
    "voice_method": "POST",
    "voice_fallback_url": null,
    "voice_fallback_method": "POST",
    "status_callback": null,
    "status_callback_method": "POST",
    "voice_caller_id_lookup": false,
    "voice_application_sid": null,
    "date_created": "Mon, 4 Nov 2013 12:14:11 +0000",
    "date_updated": "Mon, 4 Nov 2013 12:14:11 +0000",
    "sms_url": null,
    "sms_method": "POST",
    "sms_fallback_url": null,
    "sms_fallback_method": "POST",
    "sms_application_sid": null,
    "ussd_url": null,
    "ussd_method": null,
    "ussd_fallback_url": null,
    "ussd_fallback_method": null,
    "ussd_application_sid": null,
    "refer_url": null,
    "refer_method": null,
    "refer_application_sid": null,
    "capabilities": {
      "voice_capable": true,
      "sms_capable": false,
      "mms_capable": false,
      "fax_capable": false
    },
    "api_version": "2012-04-24",
    "uri": "/restcomm/2012-04-24/Accounts/\{account_sid}/IncomingPhoneNumbers/PN0b4201c6c87749f29367e6cf000686cb.json"
  },...
HTTP POST

Purchases a new phone number for your account. If a phone number is found for your request, Restcomm will add it to your account and bill you for the first month’s cost of the phone number. If Restcomm cannot find a phone number to match your request, you will receive an HTTP 400 with Restcomm error code. To find an available phone number to POST, use the subresources of the AvailablePhoneNumbers list resource.

Required Parameters

Your request must include exactly one of the following parameters:

Parameter

Description

PhoneNumber

The phone number you want to purchase. The number should be formatted starting with a '+' followed by the country code and the number inhttp://en.wikipedia.org/wiki/E.164[E.164] format e.g., '+15105555555'. You must include either this or an AreaCode parameter to have your POST succeed.

AreaCode

The desired area code for your new incoming phone number. Any three digit, US or Canada area code is valid. Restcomm will provision a random phone number within this area code for you. You must include either this or a PhoneNumber parameter to have your POST succeed. (US and Canada only)

If you include both parameters, we will use the AreaCode parameter and ignore the PhoneNumber provided.

Optional Parameters

Your request may include the following parameters:

Parameter

Description

FriendlyName

A human readable description of the new incoming phone number. Maximum 64 characters. Defaults to a formatted version of the number.

VoiceUrl

The URL that Restcomm should request when somebody dials the new phone number.

VoiceMethod

The HTTP method that should be used to request the VoiceUrl. Must be either GET or POST. Defaults to POST.

VoiceFallbackUrl

A URL that Restcomm will request if an error occurs requesting or executing the RCML at Url.

VoiceFallbackMethod

The HTTP method that should be used to request the VoiceFallbackUrl. Either GET or POST. Defaults to POST.

StatusCallback

The URL that Restcomm will request to pass status parameters (such as call ended) to your application.

StatusCallbackMethod

The HTTP method Restcomm will use to make requests to the StatusCallback URL. Either GET or POST. Defaults to POST.

VoiceCallerIdLookup

Do a lookup of a caller’s name from the CNAM database and post it to your app. Either true or false. Defaults to false.

VoiceApplicationSid

The 34 character sid of the application Restcomm should use to handle phone calls to the new number. If a VoiceApplicationSid is present, Restcomm will ignore all of the voice urls above and use those set on the application.

SmsUrl

The URL that Restcomm should request when somebody sends an SMS to the phone number.

SmsMethod

The HTTP method that should be used to request the SmsUrl. Must be either GET or POST. Defaults to POST.

SmsFallbackUrl

A URL that Restcomm will request if an error occurs requesting or executing the RCML defined by SmsUrl.

SmsFallbackMethod

The HTTP method that should be used to request the SmsFallbackUrl. Must be either GET or POST. Defaults to POST.

SmsApplicationSid

The 34 character sid of the application Restcomm should use to handle SMSs sent to the new number. If a SmsApplicationSid is present, Restcomm will ignore all of the SMS urls above and use those set on the application.

ApiVersion

The Restcomm REST API version to use for incoming calls made to this number. If omitted, uses 2012-04-24.

If successful, Restcomm responds with a representation of the new phone number that was assigned to your account.  

HTTP PUT

Not Supported.

HTTP DELETE

Not Supported.

Local IncomingPhoneNumber Factory Resource

POSTing to this resource allows you to request a new local phone number be added to your account. This subresource represents only Local phone numbers.

Resource URI

/2012-04-24/Accounts/{YourAccountSid}/IncomingPhoneNumbers/Local

HTTP Methods

HTTP GET

Returns a list of local <IncomingPhoneNumber> elements, each representing a local (not toll-free) phone number given to your account, under an <IncomingPhoneNumbers> list element that includes paging information. Works exactly the same as the IncomingPhoneNumber resource, but filters out toll-free numbers.

HTTP POST

Adds a new phone number to your account. If a phone number is found for your request, Restcomm will add it to your account and bill you for the first month’s cost of the phone number. If Restcomm can’t find a phone number to match your request, you will receive an HTTP 400 with Restcomm error code. To find an available phone number to POST, use the subresources of the AvailablePhoneNumbers list resource.

Required Parameters

Your request must include PhoneNumber. We do not support AreaCode for this subresource:

Parameter

Description

PhoneNumber

The phone number you want to purchase. The number should be formatted starting with a '+' followed by the country code and the number inhttp://en.wikipedia.org/wiki/E.164[E.164] format e.g., '+15105555555'. You must include this to have your POST succeed.

Optional Parameters

The optional parameters for this request are exactly the same as POSTing directly to the IncomingPhoneNumbers/ resource. If successful, Restcomm responds with a representation of the new phone number that was assigned to your account.  

HTTP PUT

Not Supported.

HTTP DELETE

Not Supported.

Toll-Free IncomingPhoneNumber Factory Resource

This subresource represents only toll-free phone numbers. POSTing to this resource allows you to request a new toll-free phone number be added to your account.

Resource URI

/2012-04-24/Accounts/{YourAccountSid}/IncomingPhoneNumbers/TollFree

HTTP Methods

HTTP GET

Returns a list of local <IncomingPhoneNumber> elements, each representing a toll-free phone number given to your account, under an <IncomingPhoneNumbers> list element that includes paging information. Works exactly the same as the IncomingPhoneNumber resource, but filters out all numbers that aren’t toll-free.

HTTP POST

Adds a new phone number to your account. If a phone number is found for your request, Restcomm will add it to your account and bill you for the first month’s cost of the phone number. If Restcomm can’t find a phone number to match your request, you will receive an HTTP 400 with Restcomm error code. To find an available phone number to POST, use the subresources of the AvailablePhoneNumbers list resource.

Required Parameters

Your request must include PhoneNumber. We do not support AreaCode for this subresource:

Parameter

Description

PhoneNumber

The phone number you want to purchase. The number should be formatted starting with a '+' followed by the country code and the number in E.164 format e.g., '+15105555555'. You must include this to have your POST succeed.

Optional Parameters

The optional parameters for this request are exactly the same as POSTing directly to the IncomingPhoneNumbers/ resource. If successful, Restcomm will respond with a representation of the new phone number that was assigned to your account.  

HTTP PUT

Not Supported.

HTTP DELETE

Not Supported.

Mobile IncomingPhoneNumber Factory Resource

POSTing to this resource allows you to request a new mobile phone number be added to your account. This subresource represents only mobile phone numbers, i.e. not toll free numbers or local numbers.

Resource URI

/2012-04-24/Accounts/{YourAccountSid}/IncomingPhoneNumbers/Mobile

HTTP Methods

HTTP GET

Returns a list of local <IncomingPhoneNumber> elements, each representing a mobile phone number given to your account, under an <IncomingPhoneNumbers> list element that includes paging information. Works exactly the same as the IncomingPhoneNumber resource, but filters out local and toll free numbers.

HTTP POST

Adds a new phone number to your account. If a phone number is found for your request, Restcomm will add it to your account and bill you for the first month’s cost of the phone number. If Restcomm can’t find a phone number to match your request, you will receive an HTTP 400 with Restcomm error code. To find an available phone number to POST, use the subresources of the AvailablePhoneNumbers list resource.

Required Parameters

Your request must include PhoneNumber. We do not support AreaCode for this subresource:

Parameter

Description

PhoneNumber

The phone number you want to purchase. The number should be formatted starting with a '+' followed by the country code and the number inhttp://en.wikipedia.org/wiki/E.164[E.164] format e.g., '+15105555555'. You must include this to have your POST succeed.

Optional Parameters

The optional parameters for this request are exactly the same as POSTing directly to the IncomingPhoneNumbers/ resource. If successful, Restcomm will respond with a representation of the new phone number that was assigned to your account.  

HTTP PUT

Not Supported.

HTTP DELETE

Not Supported.  

Attach a phone number to an application

Attach a DID phone number to an application

This one uses the default application

curl -X POST  https://administrator%40company.com:77f8c12cc7b8f8423e5c38b035249166@127.0.0.1/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/IncomingPhoneNumbers.json -d "PhoneNumber=+15105555555" -d "VoiceUrl=https://127.0.0.1/restcomm/demos/hello-play.xml"

Result of the above command

{
  "sid": "PNdd7a0a0248244615978bd5781598e5eb",
  "account_sid": "ACae6e420f425248d6a26948c17a9e2acf",
  "friendly_name": "15105555555",
  "phone_number": "+15105555555",
  "voice_url": "https://127.0.0.1/restcomm/demos/hello-play.xml",
  "voice_method": "POST",
  "voice_fallback_method": "POST",
  "status_callback_method": "POST",
  "voice_caller_id_lookup": false,
  "date_created": "2013-10-04T17:42:02.500-06:00",
  "date_updated": "2013-10-04T17:42:02.500-06:00",
  "sms_method": "POST",
  "sms_fallback_method": "POST",
  "api_version": "2012-04-24",
  "uri": "/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/IncomingPhoneNumbers/PNdd7a0a0248244615978bd5781598e5eb.json"
If you are trying to attach a number that you didn’t look up previously from Restcomm API – AvailablePhoneNumbers ie if you want to attach a number that is Virtual (SIP Number) and not attached to a particular DID provider, you need to add -D "isSIP=true" as show below

Attach a SIP Virtual number to an application

This one uses the default application

curl -X POST  https://administrator%40company.com:77f8c12cc7b8f8423e5c38b035249166@127.0.0.1/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/IncomingPhoneNumbers.json -d "PhoneNumber=1234" -d "VoiceUrl=https://127.0.0.1/restcomm/demos/hello-play.xml" -d "isSIP=true"

Result of the above command

{
  "sid": "PNdd7a0a0248244615978bd5781598e5eb",
  "account_sid": "ACae6e420f425248d6a26948c17a9e2acf",
  "friendly_name": "234",
  "phone_number": "+1234",
  "voice_url": "https://127.0.0.1/restcomm/demos/hello-play.xml",
  "voice_method": "POST",
  "voice_fallback_method": "POST",
  "status_callback_method": "POST",
  "voice_caller_id_lookup": false,
  "date_created": "2013-10-04T17:42:02.500-06:00",
  "date_updated": "2013-10-04T17:42:02.500-06:00",
  "sms_method": "POST",
  "sms_fallback_method": "POST",
  "api_version": "2012-04-24",
  "uri": "/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/IncomingPhoneNumbers/PNdd7a0a0248244615978bd5781598e5eb.json"

Delete a phone number

You have to get the SID of the phone and use curl to delete as follows

curl -X DELETE https://administrator%40company.com:77f8c12cc7b8f8423e5c38b035249166@127.0.0.1/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/IncomingPhoneNumbers/PNdd7a0a0248244615978bd5781598e5eb

List of phone numbers

Gets all numbers created using IncomingPhoneNumbers.json

curl -X GET  https://administrator%40company.com:77f8c12cc7b8f8423e5c38b035249166@127.0.0.1/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/IncomingPhoneNumbers.json

Incoming Phone Number Regex Support

Logic

The following diagram depicts the main logic regarding incoming phone numbers, and regular expressions during an actual call:

Regex Logic

As we can see, the perfect match against the incoming number will be attempted first. Then, if no matching is found the regular expressions associated to the Organization will be evaluated.

Watch out, Regex has been disabled for incoming SMPP/SMS messages because SMPP is not supporting Organizations.

Regular Expression examples

The following table provides examples on how the logic is exercised depending on current contents of DB.

IncomingPhoneNumber

DB Table

Description

16508251255

"16508251255" "16.*"

Perfect match against "16508251255"

16508251255

"16508251256" "16.*"

No Perfect match found. regex "16.*" applies

16508251255

"16508251256" "16.*","16508.*"

No Perfect match found. longest regex "16508.*" applies

The following table provides examples on how a single regular expression may match different numbers.

Regex Sample

Description

7777|8888

Matches the numbers 7777 or 8888

^*77…​33#$

Matches any number that starts with *77 and and the three dots matches any character and it must end with a # sign

^[12]2233#$

Matches any number that starts with 1 or 2 and ends with 2233#

^7688[456]#$

matches any number that starts with 76884# or 76885# or 76886#

[45]234[23]

matches 42342, 42343, 52342 and 52343

^222…​*…​*500#$

the Regext (^222…​*…​*500#$) matches *222*888*999*500# or *222*444*321*500# the dots maches any character

999…​

Matches 999222, 999123, 999555 the dots matches any character

Resource URI

/2012-04-24/Accounts/{TargetAccountSid}/IncomingPhoneNumbers/migrate

HTTP Methods

HTTP POST

Migrates all numbers of TargetAccountSid’s account tree to provided destination organization. Only super admins have permission to perform this operation.

This operation will impact all child accounts in downwards hierarchy.

Required Parameters

Your request must include OrganizationSid.

Parameter

Description

OrganizationSid

Sid of destination organization, where we want to migrate numbers.

HTTP PUT

Not Supported.

HTTP DELETE

Not Supported.