You can use the silence
parameter in conjunction with the machine_detection
feature of the Call API to enable your XML to detect whether a call is answered by voice mail. When silence
is set to true
, as soon as the voice mail finishes speaking, and there is silence for minSilence
milliseconds, the next element in the XML is processed, without waiting for the whole period of length
seconds to pass.
<Response>
<Wait length="10" silence="true" minSilence="3000" />
<Speak>Hello, welcome to the jungle.</Speak>
</Response>
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/v7/xml"
func main() {
response := xml.ResponseElement{
Contents: []interface{}{
new(xml.WaitElement).
SetLength(10).
SetMinSilence(3000).
SetSilence(true),
new(xml.SpeakElement).
AddSpeak("Hello"),
},
}
print(response.String())
}