Machine Detection

The silence parameter is often used in conjunction with the machine_detection feature of the Call API to enable your XML to detect if a call is answered by voice mail. When silence is set to true, as soon as the voice mail finishes speaking, and there is a silence for minSilence milliseconds, the next element in the XML is processed, without waiting for the whole period of length seconds to pass.

Response

<Response>
    <Wait length="10" silence="true" minSilence="3000" />
    <Speak>Hello, welcome to the Jungle!</Speak>
</Response>

Example Request

1
2
3
4
5
6
from plivo import plivoxml

response = (plivoxml.ResponseElement().add(
    plivoxml.WaitElement(None).set_length(10).set_min_silence(3000)
    .set_silence(True)).add(plivoxml.SpeakElement('Hello')))
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
require 'rubygems'
require 'plivo'

include Plivo::XML
include Plivo::Exceptions

begin
  response = Response.new

  params = {
    length: '10',
    silence: true,
    min_silence: '3000'
  }
  response.addWait(params)

  speak_body = 'Hello, welcome to the Jungle!'
  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
var plivo = require('plivo');

var response = plivo.Response();

var params = {
        'length': "10",
        'silence': "true",
        'minSilence': "3000"
};
response.addWait(params);

var speak_body = "Hello, welcome to the Jungle!";
response.addSpeak(speak_body);

console.log(response.toXML());

/*
Sample Output
<Response>
    <Wait length="10" silence="true" minSilence="3000"/>
    <Speak>Hello, welcome to the Jungle!</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
<?php
    require '../vendor/autoload.php';
    use Plivo\XML\Response;

    $response = new Response();

    $params = array(
        'length' => "10",
        'silence' => "true",
        'minSilence' => "3000"
    );
    $response->addWait($params);

    $speak_body = "Hello, welcome to the Jungle!";
    $response->addSpeak($speak_body);

    Header('Content-type: text/xml');
    echo($response->toXML());

    /*
    Sample Output

    <Response>
        <Wait length="10" silence="true" minSilence="3000"/>
        <Speak>Hello, welcome to the Jungle!</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
// Example for wait - machine detection
package com.plivo.api.xml.samples.wait;

import com.plivo.api.exceptions.PlivoXmlException;
import com.plivo.api.xml.Response;
import com.plivo.api.xml.Speak;
import com.plivo.api.xml.Wait;


class MachineDetection {
    public static void main(String[] args) throws PlivoXmlException {
        Response response = new Response()
                .children(


                        new Wait()
                                .length(10)
                                .minSilence(3000)
                                .silence(true),


                        new Speak("Hello")

                );
        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
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.AddWait(new Dictionary<string, string>()
			{
				{"length", "10"},
             {"silence", "true"}, 
             {"minSilence", "3000"}
			});
			resp.AddSpeak("Hello, welcome to the Jungle.", 
             new Dictionary<string, string>() { });
			var output = resp.ToString();
			Console.WriteLine(output);

		}
	}
}



//<Response>
//  <Wait length = "10" silence="true" minSilence="3000" />
//  <Speak>Hello, welcome to the Jungle.</Speak>
//</Response>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Example for wait - machine detection
package main

import "github.com/plivo/plivo-go/xml"

func main() {
	response := xml.ResponseElement{
		Contents: []interface{}{

			new(xml.WaitElement).
				SetLength(10).
				SetMinSilence(3000).
				SetSilence(true),

			new(xml.SpeakElement).
				SetContents("Hello"),
		},
	}
	print(response.String())
}