Record a complete call session

    To record the entire call leg from start to end, set recordSession attribute of the Record XML to “true” in your Answer XML. recordSession=”true” silently initiates a recording of the call in the background.

    To record just the conversation between the A-Leg and the connected B-Leg (initiated using Dial XML), add a Record XML element with startOnDialAnswer= “true” just before the Dial XML.

    In either scenario, the call will be recorded until it is hung up or maxLength recording duration is reached. It’s best to set maxLength to an adequately high value based on the maximum duration you expect your calls to go on for.

    • If the maxLength value is not set, it will default to 60 seconds.
    • If maxLength is < 1 or an invalid integer, it will trigger an error “Record ‘maxLength’ must be a positive integer” and disconnect the call.
    • If maxLength is > 1 and valid integer, it will be set to the value.

    Response

    <Response>
      <Record action="http://foo.com/get_recording/" startOnDialAnswer="true" redirect="false" maxLength="3600" />
      <Dial>
        <Number>15551234567</Number>
      </Dial>
    </Response>
    

    Example Request

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    from plivo import plivoxml
    
    response = plivoxml.ResponseElement()
    response.add(
        plivoxml.RecordElement(
            action='http://foo.com/get_recording/',
            start_on_dial_answer=True,
            redirect=False))
    response.add(plivoxml.DialElement().add(plivoxml.NumberElement('15551234567')))
    print(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
    
    require 'rubygems'
    require 'plivo'
    
    include Plivo::XML
    include Plivo::Exceptions
    
    begin
      response = Response.new
    
      params = {
          action: 'https://www.foo.com/get_recording/',
          startOnDialAnswer: 'true',
          redirect: 'false'
      }
    
      response.addRecord(params)
    
      dial = response.addDial()
      number = '1111111111'
      dial.addNumber(number)
    
      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
    
    var plivo = require('plivo');
    
    var response = plivo.Response();
    
    var params = {
        'action': "https://www.foo.com/get_recording/",
        'startOnDialAnswer': "true",
        'redirect': "false"
    };
    response.addRecord(params);
    
    var dial = response.addDial();
    var number = "1111111111";
    dial.addNumber(number);
    
    console.log(response.toXML());
    
    /*
    Sample Output
    <Response>
        <Record action="https://www.foo.com/get_recording/" startOnDialAnswer="true" redirect="false"/>
        <Dial>
            <Number>1111111111</Number>
        </Dial>
    </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
    
    <?php
        require '../vendor/autoload.php';
        use Plivo\XML\Response;
    
        $response = new Response();
    
        $params = array(
            'action' => "https://www.foo.com/get_recording/",
            'startOnDialAnswer' => "true",
            'redirect' => "false"
        );
    
        $response->addRecord($params);
    
        $dial = $response->addDial();
        $number = "1111111111";
        $dial->addNumber($number);
    
        Header('Content-type: text/xml');
        echo($response->toXML());
    
        /*
        Sample Output
    
        <Response>
            <Record action="https://www.foo.com/get_recording/" startOnDialAnswer="true" redirect="false"/>
            <Dial>
                <Number>1111111111</Number>
            </Dial>
        </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
    
    // Example for record - record a complete call session
    package com.plivo.api.xml.samples.record;
    
    import com.plivo.api.exceptions.PlivoXmlException;
    import com.plivo.api.xml.Dial;
    import com.plivo.api.xml.Number;
    import com.plivo.api.xml.Record;
    import com.plivo.api.xml.Response;
    
    
    class RecordACompleteCallSession {
        public static void main(String[] args) throws PlivoXmlException {
            Response response = new Response()
                    .children(
    
    
                            new Record("http://foo.com/get_recording/")
                                    .redirect(false)
                                    .startOnDialAnswer(true),
    
    
                            new Dial()
                                    .children(
                                            new Number("15551234567")
                                    )
                    );
            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
    35
    36
    37
    38
    39
    40
    41
    
    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();
    			resp.AddRecord(new Dictionary<string, string>() {
    				{"action", "http://foo.com/get_recording/"},
    				{"startOnDialAnswer", "true"},
    				{"redirect", "false"}
    			});
    
    			Plivo.XML.Dial dial = new Plivo.XML.Dial(new
    				Dictionary<string, string>()
    			{ });
    
    			dial.AddNumber("15551234567",
    				new Dictionary<string, string>() { });
    			resp.Add(dial);
    
    			var output = resp.ToString();
    			Console.WriteLine(output);
    
    		}
    	}
    }
    
    
    
    //<Response>
    //  <Record action = "http://foo.com/get_recording/" 
    //    startOnDialAnswer="true" redirect="false" />
    //  <Dial>
    //    <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
    22
    23
    
    // Example for record - record session
    package main
    
    import "github.com/plivo/plivo-go/xml"
    
    func main() {
    	response := xml.ResponseElement{
    		Contents: []interface{}{
    
    			new(xml.RecordElement).
    				SetAction("http://foo.com/get_recording/").
    				SetRedirect(false).
    				SetStartOnDialAnswer(true),
    
    			new(xml.DialElement).
    				SetContents([]interface{}{
    					new(xml.NumberElement).
    						SetContents("15551234567"),
    				}),
    		},
    	}
    	print(response.String())
    }