Custom Caller Tone

    When you make an outbound call and then connect that call to a different number using Dial element, you can play a custom caller tone using thedialMusic attribute.

    Plivo will request the dialMusic URL using the POST HTTP method for a valid Play, Speak or a Wait XML.

    To play a message on the call while its being connected, you should return the second XML as shown.

    Response

    <Response>
        <Dial dialMusic="http://foo.com/dial_music/">
            <Number>15671234567</Number>
        </Dial>
    </Response>
    

    Return the following XML to play the message.

    <Response>
        <Speak>Your call is being connected</Speak>
    </Response>
    

    Example Request

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    from plivo import plivoxml
    
    response = plivoxml.ResponseElement()
    response.add(
        plivoxml.DialElement(dial_music='http://foo.com/dial_music/').add(
            plivoxml.NumberElement('15671234567')))
    print(response.to_string())
    
    # XML to play the message
    play_message_response = plivoxml.ResponseElement()
    play_message_response.add(
        plivoxml.SpeakElement('Your call is being connected'))
    print(play_message_response.to_string())
    
    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
    32
    33
    34
    
    require 'rubygems'
    require 'plivo'
    
    include Plivo::XML
    include Plivo::Exceptions
    
    begin
      response = Response.new
    
      params = {
          'dialMusic' => "https://www.foo.com/dial_music/"
      }
    
      dial = response.addDial(params)
      first_number = "1111111111"
      dial.addNumber(first_number)
    
      xml = PlivoXML.new(response)
      puts xml.to_xml
    rescue PlivoXMLError => e
      puts 'Exception: ' + e.message
    end
    
    begin
      response = Response.new
    
      speak_body = "Your call is being connected"
      response.addSpeak(speak_body)
    
      xml = PlivoXML.new(response)
      puts xml.to_xml
    rescue PlivoXMLError => 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
    var plivo = require('plivo');
    
    var response = plivo.Response();
    
    var params = {
        'dialMusic': "https://www.foo.com/dial_music/"
    };
    var dial = response.addDial(params);
    
    var first_number = "1111111111";
    dial.addNumber(first_number);
    
    console.log(response.toXML());
    
    /*
    Sample Output
    <Response>
        <Dial dialMusic="https://www.foo.com/dial_music/">
            <Number>1111111111</Number>
        </Dial>
    </Response>
    */
    
    
    /* Code to generate XML to be returned from url at dialMusic */
    
    var plivo = require('plivo');
    
    var response = plivo.Response();
    
    var speak_body = "Your call is being connected";
    response.addSpeak(speak_body);
    
    console.log(response.toXML());
    
    /*
    Sample Output
    <Response>
        <Speak>Your call is being connected</Speak>
    </Response>
    */
    
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    
    <?php
        require '../vendor/autoload.php';
        use Plivo\XML\Response;
    
        $response = new Response();
    
        $params = array(
            'dialMusic' => "https://www.foo.com/dial_music/"
        );
    
        $dial = $response->addDial($params);
        $number = "1111111111";
        $dial->addNumber($number);
    
        Header('Content-type: text/xml');
        echo($response->toXML());
    
        /*
        Sample Output
    
        <Response>
            <Dial dialMusic="https://www.foo.com/dial_music/">
                <Number>1111111111</Number>
            </Dial>
        </Response>
        */
    ?>
    
    <?php
        /* XML to be returned by dialMusic */
        require '../vendor/autoload.php';
        use Plivo\XML\Response;
    
        $response = new Response();
    
        $speak_body = "Your call is being connected";
        $response->addSpeak($speak_body);
    
        Header('Content-type: text/xml');
        echo($response->toXML());
    
        /*
        Sample Output
    
        <Response>
            <Speak>Your call is being connected</Speak>
        </Response>
        */
    ?>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    // Example for dial - custom caller tone
    package com.plivo.api.xml.samples.dial;
    
    import com.plivo.api.exceptions.PlivoXmlException;
    import com.plivo.api.xml.Dial;
    import com.plivo.api.xml.Number;
    import com.plivo.api.xml.Response;
    
    
    class CustomCallerTone {
        public static void main(String[] args) throws PlivoXmlException {
            Response response = new Response()
                    .children(
    
    
                            new Dial()
                                    .dialMusic("http://foo.com/dial_music/")
                                    .children(
                                            new Number("15671234567")
                                    )
                    );
            System.out.println(response.toXmlString());
        }
    }
    
    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
    32
    33
    34
    
    using System;
    using System.Collections.Generic;
    using Plivo.XML;
    
    namespace Plivo
    {
    	class MainClass
    	{
    		public static void Main(string[] args)
    		{
    			Plivo.XML.Response resp = new Plivo.XML.Response();
    			Plivo.XML.Dial dial = new Plivo.XML.Dial(new
    				Dictionary<string, string>() {
    				{"dialMusic", "http://foo.com/dial_music/"}
    			});
    
    			dial.AddNumber("15551234567",
    				new Dictionary<string, string>() { });
    			resp.Add(dial);
    
    			var output = resp.ToString();
    			Console.WriteLine(output);
    
    		}
    	}
    }
    
    
    
    //<Response>
    //  <Dial dialMusic = "http://foo.com/dial_music/" >
    //    < Number > 15551234567 </ Number >
    //  </ Dial >
    //</ Response >
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    // Example for dial - caller tone
    package main
    
    import "github.com/plivo/plivo-go/xml"
    
    func main() {
    	response := xml.ResponseElement{
    		Contents: []interface{}{
    
    			new(xml.DialElement).
    				SetDialMusic("http://foo.com/dial_music/").
    				SetContents(
    					[]interface{}{
    						new(xml.NumberElement).
    							SetContents("15671234567"),
    					},
    				),
    		},
    	}
    	print(response.String())
    }