Transfer a call

This API enables an in-progress or ongoing call to fetch and execute a XML from a different URL. If the call (the A leg) is in a Dial, you can also transfer the other party (the B leg) at the same time or only transfer the B leg to an URL. This is useful for many applications where you want to asynchronously change the behavior of a live call. For example, you can play music while the call is on hold, queue calls, transfer calls etc.

API Endpoint

POST https://api.plivo.com/v1/Account/{auth_id}/Call/{call_uuid}/

Arguments

legs optional

Valid values are aleg, bleg or both. aleg will transfer calluuid. bleg will transfer the bridged leg of calluuid. both will transfer both aleg and bleg.

aleg_url optional

The URL to fetch XML from for the aleg. This need to be specified in case the legs parameter is either aleg or both

aleg_method optional

The HTTP verb to invoke the aleg_url. This defaults to POST

bleg_url optional

The URL to fetch XML from for the bleg. This need to be specified in case the legs parameter is either bleg or both

bleg_method optional

The HTTP verb to invoke the bleg_url. This defaults to POST

Returns

Returns an acknowledgement that the call is transferred.

Response

HTTP Status Code: 202

{
"message": "call transfered",
"api_id": "08c94608-58bd-11e1-86da-adf28403fe48"
}

Example Request

1
2
3
4
5
6
7
8
9
import plivo

client = plivo.RestClient()

response = client.calls.transfer(
    legs='aleg',
    aleg_url='http://aleg.url',
    call_uuid='1ed7fd89-df77-4ebf-8196-d5cf7222c918', )
print(response)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#
# Example for Call Update
#
require 'rubygems'
require 'plivo'

include Plivo
include Plivo::Exceptions

api = RestClient.new("YOUR_AUTH_ID", "YOUR_AUTH_TOKEN")

begin
  response = api.calls.update(
    'eba53b9e-8fbd-45c1-9444-696d2172fbc8',
    legs: 'aleg',
    aleg_url: 'http://aleg.url'
  )
  puts response
rescue PlivoRESTError => e
  puts 'Exception: ' + e.message
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Example for Call update

var plivo = require('plivo');

(function main() {
    'use strict';
    
    // As the auth_id and auth_token are unspecified, Plivo will fetch them from the PLIVO_AUTH_ID and PLIVO_AUTH_TOKEN environment variables.
    var client = new plivo.Client();
    client.calls.transfer(
        "eba53b9e-8fbd-45c1-9444-696d2172fbc8", // call uuid
        {
            legs: "aleg",
            alegUrl: "http://aleg.url",
        },
    ).then(function (response) {
        console.log(response);
    }, function (err) {
        console.error(err);
    });
})();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
/**
 * Example for Call update
 */
require 'vendor/autoload.php';
use Plivo\RestClient;
use Plivo\Exceptions\PlivoRestException;
$client = new RestClient("YOUR_AUTH_ID", "YOUR_AUTH_TOKEN");

try {
    $response = $client->calls->transfer(
        'eba53b9e-8fbd-45c1-9444-696d2172fbc8',
        [
        	'legs' => 'aleg',
        	'aleg_url' => 'http://ALEG.URL'
        ]
    );
    print_r($response);
}
catch (PlivoRestException $ex) {
    print_r(ex);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.plivo.api.samples.call;

import java.io.IOException;
import com.plivo.api.Plivo;
import com.plivo.api.exceptions.PlivoRestException;
import com.plivo.api.models.call.Call;
import com.plivo.api.models.call.CallUpdateResponse;
import com.plivo.api.models.call.LegSpecifier;

/**
* Example for Call update
*/
class CallUpdate {
    public static void main(String [] args) {
        Plivo.init();
        try {
            CallUpdateResponse response = Call.updater("eba53b9e-8fbd-45c1-9444-696d2172fbc8")
                .legs(LegSpecifier.ALEG)
                .alegUrl("http://aleg.url")
                .update();

            System.out.println(response);
        } catch (PlivoRestException | IOException e) {
            e.printStackTrace();
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
 * Example for Call Update
 */
using System;
using System.Collections.Generic;
using Plivo;
using Plivo.Exception;

namespace PlivoExamples
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            var api = new PlivoApi("YOUR_AUTH_ID", "YOUR_AUTH_TOKEN");
            try
            {
                var response = api.Call.Update(
                    alegUrl:"http://aleg.url",
                    callUuid:"eba53b9e-8fbd-45c1-9444-696d2172fbc8",
                    legs:"aleg"
                );
                Console.WriteLine(response);
            }
            catch (PlivoRestException e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
        }
    }
}
1
2
3
4
curl -i --user AUTH_ID:AUTH_TOKEN \
    -H "Content-Type: application/json" \
    -d '{"legs": "optional_param"}' \
    https://api.plivo.com/v1/Account/{auth_id}/Call/{call_uuid}/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Example for Call update
package main

import "fmt"
import "github.com/plivo/plivo-go"
 
func main() {
	client, err := plivo.NewClient("", "", &plivo.ClientOptions{})
	if err != nil {
		panic(err)
	}
	response, err := client.Calls.Update(
		"eba53b9e-8fbd-45c1-9444-696d2172fbc8",
		plivo.CallUpdateParams{
			Legs: "aleg",
			AlegURL: "http://aleg.url",
		},
	)
	if err != nil {
		panic(err)
	}
	fmt.Printf("Response: %#v\n", response)
}