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 Vonage CLI.

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

Key Description
VONAGE_API_KEY Your Vonage API key (see it on your dashboard).
VONAGE_API_SECRET Your Vonage API secret (also available on your dashboard).
COUNTRY_CODE The two digit country code for the number. For example: GB for the United Kingdom
VONAGE_NUMBER Your Vonage Number. E.g. 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. Vonage 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.
VONAGE_APPLICATION_ID The ID of the application that handles inbound traffic to this number.
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 Vonage to POST Voice API status updates to

Write the code

Add the following to update-number.sh:

curl -X POST \
  "https://rest.nexmo.com/number/update?api_key=$VONAGE_API_KEY&api_secret=$VONAGE_API_SECRET" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "country=$COUNTRY_CODE&msisdn=$VONAGE_NUMBER&moHttpUrl=$SMS_CALLBACK_URL" \
  -d "app_id=$VONAGE_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

npm install @vonage/server-sdk

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

const Vonage = require('@vonage/server-sdk');

const vonage = new Vonage(
    {
        apiKey: VONAGE_API_KEY,
        apiSecret: VONAGE_API_SECRET,
    },
    {
        debug: true,
    }
);

View full source

Write the code

Add the following to update.js:

vonage.number.update(
    COUNTRY_CODE,
    VONAGE_NUMBER,
    {
        messagesCallbackType: 'app',
        messagesCallbackValue: VONAGE_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

Add the following to `build.gradle`:

compile 'com.vonage:client:6.2.0'

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

VonageClient client = VonageClient.builder()
        .apiKey(VONAGE_API_KEY)
        .apiSecret(VONAGE_API_SECRET)
        .build();

View full source

Write the code

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

NumbersClient numbersClient = client.getNumbersClient();

UpdateNumberRequest request = new UpdateNumberRequest(VONAGE_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 (VonageClientException | VonageResponseParseException 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.vonage.quickstart.numbers with the package containing UpdateNumber:

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

Prerequisites

Install-Package Vonage

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

using Vonage;
using Vonage.Request;
using Vonage.Numbers;

View full source

Add the following to UpdateNumber.cs:

var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

View full source

Write the code

Add the following to UpdateNumber.cs:

var request = new UpdateNumberRequest()
{
    Country = COUNTRY_CODE,
    Msisdn = VONAGE_NUMBER,
    MoHttpUrl = SMS_CALLBACK_URL,
    AppId = VONAGE_APPLICATION_ID,
    VoiceCallbackType = VOICE_CALLBACK_TYPE,
    VoiceCallbackValue = VOICE_CALLBACK_VALUE,
    VoiceStatusCallback = VOICE_STATUS_URL
};

var response = client.NumbersClient.UpdateANumber(request);

View full source

Prerequisites

composer require vonage/client

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

$basic = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client($basic);

View full source

Write the code

Add the following to update.php:

try {
    $number = $client->numbers()->get(VONAGE_NUMBER);
    $number->setAppId(VONAGE_APPLICATION_ID);
    $client->numbers()->update($number);
    echo "Number updated" . PHP_EOL;
    
} catch (Exception $e) {
    echo "Error updating number" . PHP_EOL;
}

View full source

Run your code

Save this file to your machine and run it:

php update.php

Prerequisites

pip install vonage

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

import vonage

client = vonage.Client(key=VONAGE_API_KEY, secret=VONAGE_API_SECRET)

View full source

Write the code

Add the following to update.py:

try:
    response = client.update_number(
        {
            "msisdn": VONAGE_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

gem install vonage

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

client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

View full source

Write the code

Add the following to update.rb:

begin
  response = client.numbers.update(
    country: COUNTRY_CODE,
    msisdn: VONAGE_NUMBER,
    app_id: VONAGE_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