mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-25 15:00:58 +01:00
348 lines
6.8 KiB
ReStructuredText
348 lines
6.8 KiB
ReStructuredText
|
.. _usage-twiml:
|
|||
|
|
|||
|
==============
|
|||
|
TwiML Creation
|
|||
|
==============
|
|||
|
|
|||
|
TwiML creation begins with the :class:`Services_Twilio_Twiml` verb. Each
|
|||
|
succesive verb is created by calling various methods on the response, such as
|
|||
|
:meth:`say` or :meth:`play`. These methods return the verbs they create to ease
|
|||
|
the creation of nested TwiML.
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->say('Hello');
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Say>Hello</Say>
|
|||
|
<Response>
|
|||
|
|
|||
|
Primary Verbs
|
|||
|
=============
|
|||
|
|
|||
|
Response
|
|||
|
--------
|
|||
|
|
|||
|
All TwiML starts with the `<Response>` verb. The following code creates an empty response.
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response></Response>
|
|||
|
|
|||
|
Say
|
|||
|
---
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->say("Hello World");
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Say>Hello World</Say>
|
|||
|
</Response>
|
|||
|
|
|||
|
Play
|
|||
|
----
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->play("https://api.twilio.com/cowbell.mp3", array('loop' => 5));
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Play loop="5">https://api.twilio.com/cowbell.mp3</Play>
|
|||
|
<Response>
|
|||
|
|
|||
|
Gather
|
|||
|
------
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$gather = $response->gather(array('numDigits' => 5));
|
|||
|
$gather->say("Hello Caller");
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Gather numDigits="5">
|
|||
|
<Say>Hello Caller</Say>
|
|||
|
</Gather>
|
|||
|
<Response>
|
|||
|
|
|||
|
Record
|
|||
|
------
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->record(array(
|
|||
|
'action' => 'http://foo.com/path/to/redirect',
|
|||
|
'maxLength' => 20
|
|||
|
));
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Record action="http://foo.com/path/to/redirect" maxLength="20"/>
|
|||
|
</Response>
|
|||
|
|
|||
|
Message
|
|||
|
-------
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->message('Hello World', array(
|
|||
|
'to' => '+14150001111',
|
|||
|
'from' => '+14152223333'
|
|||
|
));
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Message to="+14150001111" from="+14152223333">Hello World</Message>
|
|||
|
</Response>
|
|||
|
|
|||
|
Dial
|
|||
|
----
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->dial('+14150001111', array(
|
|||
|
'callerId' => '+14152223333'
|
|||
|
));
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Dial callerId="+14152223333">+14150001111</Dial>
|
|||
|
</Response>
|
|||
|
|
|||
|
Number
|
|||
|
~~~~~~
|
|||
|
|
|||
|
Dial out to phone numbers easily.
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$dial = $response->dial(NULL, array(
|
|||
|
'callerId' => '+14152223333'
|
|||
|
));
|
|||
|
$dial->number('+14151112222', array(
|
|||
|
'sendDigits' => '2'
|
|||
|
));
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Dial callerId="+14152223333">
|
|||
|
<Number sendDigits="2">+14151112222</Number>
|
|||
|
</Dial>
|
|||
|
</Response>
|
|||
|
|
|||
|
Client
|
|||
|
~~~~~~
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$dial = $response->dial(NULL, array(
|
|||
|
'callerId' => '+14152223333'
|
|||
|
));
|
|||
|
$dial->client('client-id');
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Dial callerId="+14152223333">
|
|||
|
<Client>client-id</Client>
|
|||
|
</Dial>
|
|||
|
</Response>
|
|||
|
|
|||
|
Conference
|
|||
|
~~~~~~~~~~
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
require("Services/Twilio.php");
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$dial = $response->dial();
|
|||
|
$dial->conference('Customer Waiting Room', array(
|
|||
|
"startConferenceOnEnter" => "true",
|
|||
|
"muted" => "true",
|
|||
|
"beep" => "false",
|
|||
|
));
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Dial>
|
|||
|
<Conference startConferenceOnEnter="true" muted="true" beep="false">
|
|||
|
Customer Waiting Room
|
|||
|
</Conference>
|
|||
|
</Dial>
|
|||
|
</Response>
|
|||
|
|
|||
|
Sip
|
|||
|
~~~
|
|||
|
|
|||
|
To dial out to a Sip number, put the Sip address in the `sip()` method call.
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
require("Services/Twilio.php");
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$dial = $response->dial();
|
|||
|
$sip = $dial->sip();
|
|||
|
$sip->uri('alice@foo.com?X-Header-1=value1&X-Header-2=value2', array(
|
|||
|
"username" => "admin",
|
|||
|
"password" => "1234",
|
|||
|
));
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF‐8"?>
|
|||
|
<Response>
|
|||
|
<Dial>
|
|||
|
<Sip>
|
|||
|
<Uri username='admin' password='1234'>
|
|||
|
alice@foo.com?X-Header-1=value1&X-Header-2=value2
|
|||
|
</Uri>
|
|||
|
</Sip>
|
|||
|
</Dial>
|
|||
|
</Response>
|
|||
|
|
|||
|
|
|||
|
Secondary Verbs
|
|||
|
===============
|
|||
|
|
|||
|
Hangup
|
|||
|
------
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->hangup();
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Hangup />
|
|||
|
</Response>
|
|||
|
|
|||
|
Redirect
|
|||
|
--------
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->redirect('http://twimlets.com/voicemail?Email=somebody@somedomain.com');
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Redirect>http://twimlets.com/voicemail?Email=somebody@somedomain.com</Redirect>
|
|||
|
</Response>
|
|||
|
|
|||
|
|
|||
|
Reject
|
|||
|
------
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->reject(array(
|
|||
|
'reason' => 'busy'
|
|||
|
));
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Reject reason="busy" />
|
|||
|
</Response>
|
|||
|
|
|||
|
|
|||
|
Pause
|
|||
|
-----
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->say('Hello');
|
|||
|
$response->pause("");
|
|||
|
$response->say('World');
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Say>Hello</Say>
|
|||
|
<Pause />
|
|||
|
<Say>World</Say>
|
|||
|
</Response>
|
|||
|
|
|||
|
Enqueue
|
|||
|
-------
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
$response = new Services_Twilio_Twiml;
|
|||
|
$response->say("You're being added to the queue.");
|
|||
|
$response->enqueue('queue-name');
|
|||
|
print $response;
|
|||
|
|
|||
|
.. code-block:: xml
|
|||
|
|
|||
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<Response>
|
|||
|
<Say>You're being added to the queue.</Say>
|
|||
|
<Enqueue>queue-name</Enqueue>
|
|||
|
</Response>
|
|||
|
|
|||
|
The verb methods (outlined in the complete reference) take the body (only text)
|
|||
|
of the verb as the first argument. All attributes are keyword arguments.
|