Simultaneous Dialing

The following example uses multiple User and Number elements to dial two SIP users and a phone number at the same time. The first of these calls to answer will be connected to the current caller, while the rest of the connection attempts are canceled.

Simultaneous dialing is useful when there are SIP users and numbers that you want to dial. The first call that connects will cancel all other tries.

Response

<Response>
    <Dial>
      <User>sip:alice1234@phone.plivo.com</User>
      <Number>15671234567</Number>
      <User>sip:john1234@phone.plivo.com</User>
    </Dial>
</Response>

Example Request

1
2
3
4
5
6
7
8
from plivo import plivoxml

response = plivoxml.ResponseElement()
response.add(plivoxml.DialElement().add(
    plivoxml.UserElement('sip:alice1234@phone.plivo.com')).add(
        plivoxml.NumberElement('15671234567')).add(
            plivoxml.UserElement('sip:john1234@phone.plivo.com')))
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

  dial = response.addDial()
  first_user = "sip:alice1234@phone.plivo.com"
  dial.addUser(first_user)

  number = "1111111111"
  dial.addNumber(number)

  second_user = "sip:john1234@phone.plivo.com"
  dial.addUser(second_user)

  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
var plivo = require('plivo');

var response = plivo.Response();

var dial = response.addDial();

var first_user = "sip:alice1234@phone.plivo.com";
dial.addUser(first_user);

var number = "1111111111";
dial.addNumber(number);

var second_user = "sip:john1234@phone.plivo.com";
dial.addUser(second_user);

console.log(response.toXML());

/*
Sample Output
<Response>
    <Dial>
        <User>sip:alice1234@phone.plivo.com</User>
        <Number>1111111111</Number>
        <User>sip:john1234@phone.plivo.com</User>
    </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
<?php
    require '../vendor/autoload.php';
    use Plivo\XML\Response;

    $response = new Response();

    $dial = $response->addDial();
    $first_user = "sip:alice1234@phone.plivo.com";
    $dial->addUser($first_user);

    $number = "1111111111";
    $dial->addNumber($number);

    $second_user = "sip:john1234@phone.plivo.com";
    $dial->addUser($second_user);

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

    /*
    Sample Output

    <Response>
        <Dial>
            <User>sip:alice1234@phone.plivo.com</User>
            <Number>1111111111</Number>
            <User>sip:john1234@phone.plivo.com</User>
        </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
33
// Example for dial - simultaneous dialing
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;
import com.plivo.api.xml.User;


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


                        new Dial()
                                .action("http://foo.com/dial action/")
                                .timeout(20)
                                .children(
                                        new User("sip:alice1234@phone.plivo.com"),


                                        new Number("18217654321"),


                                        new User("sip:john1234@phone.plivo.com")
                                )

                );
        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
42
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>() {
				{"confirmSound", "http://foo.com/sound/"},
				{"confirmKey", "3"}
			});

			dial.AddUser("sip:alice1234@phone.plivo.com",
				new Dictionary<string, string>() { });
			dial.AddNumber("18217654321",
				new Dictionary<string, string>() { });
			dial.AddUser("sip:john1234@phone.plivo.com",
				new Dictionary<string, string>() { });
			resp.Add(dial);

			var output = resp.ToString();
			Console.WriteLine(output);

		}
	}
}



//<Response>
//  <Dial confirmSound = "http://foo.com/sound/" 
//      confirmKey="3">
//    <User>sip:alice1234 @phone.plivo.com</User>
//    <Number>18217654321</Number>
//    <User>sip:john1234 @phone.plivo.com</User>
//  </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
// Example for dial - simultaneous dialing
package main

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

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

			new(xml.DialElement).
				SetAction("http://foo.com/dial action/").
				SetTimeout(20).
				SetContents([]interface{}{
					new(xml.UserElement).
						SetContents("sip:alice1234@phone.plivo.com"),

					new(xml.NumberElement).
						SetContents("18217654321"),

					new(xml.UserElement).
						SetContents("sip:john1234@phone.plivo.com"),
				}),
		},
	}
	print(response.String())
}