1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-30 09:20:58 +01:00
phorge-phorge/externals/twilio-php/docs/usage/twiml.rst
2014-05-17 15:41:12 -07:00

347 lines
6.8 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. _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="UTF8"?>
<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.