Join us in San Francisco on the 29/30th of October for two days of developer workshops and technical talks

Update a Number

This page shows you how to programmatically update the configuration settings for one of your numbers.

You can also update these settings online, using the developer dashboard. Select the "Your Applications" option from either the "Voice" or "Messages and Dispatch" menu. Or, you can use the Nexmo CLI.

Replace the following variables in the sample code with your own values:

Name Description
NEXMO_API_KEY Your Nexmo API key
NEXMO_API_SECRET Your Nexmo API secret
COUNTRY_CODE The two digit country code for the number you want to cancel. For example: GB for the United Kingdom.
NEXMO_NUMBER The Nexmo virtual number you want to update. Omit the leading zero but include the international dialing code. For example: 447700900000.
SMS_CALLBACK_URL An URL-encoded URI to the webhook endpoint that handles inbound messages. Your webhook endpoint must be active before you make this request. Nexmo makes a GET request to the endpoint and checks that it returns a 200 OK response. Set this parameter's value to an empty string to remove the webhook.
MESSAGES_APPLICATION_ID The ID associated with your Messages API application
VOICE_CALLBACK_TYPE The Voice API webhook type: sip, tel or app
VOICE_CALLBACK_VALUE A SIP URI, telephone number or Application ID, depending on VOICE_CALLBACK_TYPE
VOICE_STATUS_URL A webhook URL for Nexmo to post Voice API status updates to

Write the code

Add the following to update-number.sh:

Copy to Clipboard
curl -X POST \
  "https://rest.nexmo.com/number/update?api_key=$NEXMO_API_KEY&api_secret=$NEXMO_API_SECRET" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "country=$COUNTRY_CODE&msisdn=$NEXMO_NUMBER&moHttpUrl=$SMS_CALLBACK_URL" \
  -d "&messagesCallbackType=app&messagesCallbackValue=$MESSAGES_APPLICATION_ID" \
  -d "&voiceCallbackType=$VOICE_CALLBACK_TYPE&voiceCallbackValue=$VOICE_CALLBACK_VALUE&voiceStatusCallback=$VOICE_STATUS_URL"

View full source

Run your code

Save this file to your machine and run it:

sh update-number.sh

Prerequisites

Install dependencies

npm install nexmo
Initialize your dependencies

Create a file named update.js and add the following code:

Copy to Clipboard
const Nexmo = require('nexmo')

const nexmo = new Nexmo(
  {
    apiKey: NEXMO_API_KEY,
    apiSecret: NEXMO_API_SECRET
  },
  {
    debug: true
  }
)

View full source

Write the code

Add the following to update.js:

Copy to Clipboard
nexmo.number.update(
  COUNTRY_CODE,
  NEXMO_NUMBER,
  {
    messagesCallbackType: 'app',
    messagesCallbackValue: MESSAGES_APPLICATION_ID,
    voiceCallbackType: VOICE_CALLBACK_TYPE,
    voiceCallbackValue: VOICE_CALLBACK_VALUE,
    voiceStatusCallback: VOICE_STATUS_URL,
    moHttpUrl: SMS_CALLBACK_URL
  },
  (err, res) => {
    if (err) {
      console.error(err)
    }
    else {
      console.log(JSON.stringify(res, null, 2))
    }
  }
)

View full source

Run your code

Save this file to your machine and run it:

node update.js

Prerequisites

Install dependencies

Add the following to build.gradle:

compile 'com.nexmo:client:5.1.0'
Initialize your dependencies

Create a class named UpdateNumber and add the following code to the main method:

Copy to Clipboard
NexmoClient client = NexmoClient.builder()
        .apiKey(NEXMO_API_KEY)
        .apiSecret(NEXMO_API_SECRET)
        .build();

View full source

Write the code

Add the following to the main method of the UpdateNumber class:

Copy to Clipboard
NumbersClient numbersClient = client.getNumbersClient();

UpdateNumberRequest request = new UpdateNumberRequest(NEXMO_NUMBER, COUNTRY_CODE);
request.setVoiceCallbackType(VOICE_CALLBACK_TYPE);
request.setVoiceCallbackValue(VOICE_CALLBACK_VALUE);
request.setVoiceStatusCallback(VOICE_STATUS_URL);
request.setMoHttpUrl(SMS_CALLBACK_URL);

try {
    numbersClient.updateNumber(request);
} catch (NexmoClientException | NexmoResponseParseException e) {
    System.out.println("Error updating number.");
}

System.out.println("Number updated.");

View full source

Run your code

We can use the application plugin for Gradle to simplify the running of our application. Update your build.gradle with the following:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Run the following gradle command to execute your application, replacing com.nexmo.quickstart.numbers with the package containing UpdateNumber:

gradle run -Pmain=com.nexmo.quickstart.numbers.UpdateNumber

Prerequisites

Install dependencies

Install-Package Nexmo.Csharp.Client
Initialize your dependencies

Create a file named NumbersController.cs and add the following code:

Copy to Clipboard
const string API_KEY = "NEXMO_API_KEY";
const string API_SECRET = "NEXMO_API_SECRET";

var client = new Client(creds: new Nexmo.Api.Request.Credentials(
    nexmoApiKey: API_KEY, nexmoApiSecret: API_SECRET));

View full source

Write the code

Add the following to NumbersController.cs:

Copy to Clipboard
var updatednumber = Client.Number.Update(new Number.NumberUpdateCommand
{
    country = COUNTRY_CODE,
    msisdn = NEXMO_NUMBER,
    voiceCallbackType = "tel"
});

View full source

Prerequisites

Install dependencies

composer require nexmo/client
Initialize your dependencies

Create a file named update.php and add the following code:

Copy to Clipboard
$basic = new \Nexmo\Client\Credentials\Basic(NEXMO_API_KEY, NEXMO_API_SECRET);
$client = new \Nexmo\Client($basic);

View full source

Write the code

Add the following to update.php:

Copy to Clipboard
try {
    $client->numbers()->update([
        "messagesCallbackType" => "app",
        "messagesCallbackValue" => MESSAGES_APPLICATION_ID,
        "voiceCallbackType" => VOICE_CALLBACK_TYPE,
        "voiceCallbackValue" => VOICE_CALLBACK_VALUE,
        "voiceStatusCallback" => VOICE_STATUS_URL,
        "moHttpUrl" => SMS_CALLBACK_URL,
    ], NEXMO_NUMBER);
    echo "Number updated";
    
} catch (Exception $e) {
    echo "Error updating number";
}

View full source

Run your code

Save this file to your machine and run it:

php update.php

Prerequisites

Install dependencies

pip install nexmo
Initialize your dependencies

Create a file named update.py and add the following code:

Copy to Clipboard
import nexmo

client = nexmo.Client(key=NEXMO_API_KEY, secret=NEXMO_API_SECRET)

View full source

Write the code

Add the following to update.py:

Copy to Clipboard
try:
    response = client.update_number(
        {
            "msisdn": NEXMO_NUMBER,
            "country": COUNTRY_CODE,
            "messagesCallbackType": "app",
            "messagesCallbackValue": MESSAGES_APPLICATION_ID,
            "voiceCallbackType": VOICE_CALLBACK_TYPE,
            "voiceCallbackValue": VOICE_CALLBACK_VALUE,
            "voiceStatusCallback": VOICE_STATUS_URL,
            "moHttpUrl": SMS_CALLBACK_URL,
        }
    )
    print("Number updated")
except Exception as exc:
    print("Error updating number", exc)

View full source

Run your code

Save this file to your machine and run it:

python update.py

Prerequisites

Install dependencies

gem install nexmo
Initialize your dependencies

Create a file named update.rb and add the following code:

Copy to Clipboard
client = Nexmo::Client.new(
  api_key: NEXMO_API_KEY,
  api_secret: NEXMO_API_SECRET
)

View full source

Write the code

Add the following to update.rb:

Copy to Clipboard
begin
  response = client.numbers.update(
    country: COUNTRY_CODE,
    msisdn: NEXMO_NUMBER,
    messagesCallbackType: 'app',
    messagesCallbackValue: MESSAGES_APPLICATION_ID,
    voiceCallbackType: VOICE_CALLBACK_TYPE,
    voiceCallbackValue: VOICE_CALLBACK_VALUE,
    voiceStatusCallback: VOICE_STATUS_URL,
    moHttpUrl: SMS_CALLBACK_URL
  )
  puts "Number updated"
rescue
  puts "Error updating number"
end

View full source

Run your code

Save this file to your machine and run it:

ruby update.rb

See also