Lets have some fun with twilio open tok

Preview:

Citation preview

Lets have some fun with - Twilio & OpenTok API

– Mizanur Rahman

Twilio: Twilio is a web-service API that lets you use your existing web languages and skills to build voice and SMS applications. It enables you to focus on building a simple, powerful, pay-as-you-go communications platform with very basic programming knowledge

OpenTok: The OpenTok API is a free and flexible cloud-based API, making it easy to add video chat to your applications without having to worry about infrastructure and scale—build your app using our simple JavaScript or ActionScript libraries.

What are these unfamiliar words and what does they do?

Appointment reminder Business lead managing IVR Phone Poll Online ordering notifications SMS Contest Speech to text service and vice versa Group video chat Private (One to one) chat session Talk show Conferences and many more……

What can we build using these services?

Voice & SMS service with ease of use No hardware hassle Pay as you go – no up front cost Build on the Amazon cloud Options to call forwarding, recording,

conferences, send & receive SMS Call all over the world Voice option for Male & Female voice

Twilio – overview

Very simple registration process. A sandbox credit of $30 to test out your

application with real calls and SMS A well documented REST API library with

examples and active community of more than 60,000 developers

Can build and run your first application with few lines of codes.

Getting started with Twilio

How does it work

A User calls or sends an SMS to your Twilio phone number

Twilio receives the call or SMS and makes a request to your application

Your app receives that information and sends XML back to Twilio

Twilio executes those instructions and interacts with the user

Connect your twilio # to your application at your server

Primary Verbs <Say> some text <Play> an audio file <Gather> input from the caller <Record> the caller's audio <Dial> another phone number <Sms> send a textSecondary Verbs <Hangup>end a call <Redirect> redirect a call <Reject> reject a call <Pause> Put delay on words.

Verbs

<Say>Hello Everyone. Welcome to PHPXperts seminar 2011</Say>

<Play>http://myserver.com/welcome.mp3</Play>

<Dial>415-867-5309</Dial>

<Gather action=‘handleMenu.php’ />

<Record action=‘handleVoiceMessage.php’ />

<Sms>Please send us payment.</Sms>

Verbs useage

TwiML examples – Dialing a Number<?xml version="1.0" encoding="utf-8" ?><Response>

<Say>Your confirmation code for "PHPXperts Seminar

2011" is "1010101010"</Say><Dial>888-777-1234</Dial>

</Response>

<?xml version="1.0" encoding="utf-8" ?><Response>

<Say>Please leave your feedback for "PHPXperts

Seminar 2011".</Say><Record action="http://myapplication.com/recordMessage.php" />

</Response>

TwiML examples – Record a Call

<?xml version="1.0" encoding="utf-8" ?><Response>

<Play>http://myapplication.com/welcome.mp3</Play><Say>

Thank for participating in "PHPXperts Seminar 2011". Press 1 to listen the topics. Press 2 to repeat.

</Say><Gather action="http://myapplication.com/handleInput.php" />

</Response>

TwiML examples – Interactive Call

<?php

require "Services/Twilio.php";

/* Set our AccountSid and AuthToken */$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";$token = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY";

/* Outgoing Caller ID you have previously validated with Twilio */$CallerID = 'NNNNNNNNNN';

/* Instantiate a new Twilio Rest Client */$client = new Services_Twilio($sid, $token);

$url = "http://myapplication.com/welcome.php";

$callingNumber = "888-777-6666";

/* make Twilio REST request to initiate outgoing call */$call = $client->account->calls

->create($CallerID, $callingNumber, $url);

Lets work with PHP-REST API for Twilio

Let your web browser do the dialing for you Use twilio.js to perform client side

programming Make calls from the browser Receive calls in the browser Make calls between two browsers

Twilio Client – the new way of making a phone call

<?phpinclude 'Services/Twilio/Capability.php';

$accountSid = 'ACxxxxxxxxxxxxxxx';$authToken = 'xxxxxxxxxxxxxxxxx';$clientName = "PHPXperts";

$token = new Services_Twilio_Capability($accountSid, $authToken);$token->allowClientOutgoing('APxxxxxxxxxxxxxxx');$token->allowClientIncoming($clientName);$activeToken = $token->generateToken();?><script type="text/javascript" src="http://static.twilio.com/libs/twiliojs/1.0/twilio.js"></script><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></

script><script type="text/javascript">$(document).ready(function(){

Twilio.Device.setup("<?php echo $activeToken;?>");params = { "client" : "<?php echo $clientName;?>" };Twilio.Device.connect(params);Twilio.Device.incoming(function (conn) {

conn.accept();});

});</script>

Twilio Client – Browser to Browser call

Private Chats(Unlimited one-to-one chat sessions)

Broadcasts (Up to 2500 viewers) Talk Shows (Have multiple hosts

broadcasting) Conferences (With up to 50 people

together)

OpenTok – broadcast yourself for free!!!

Easy sign up process Easy to follow documentation Simple Javascript & actionscript library for

client side PHP, .NET, Ruby, Java, Node.js, Pythod

library for server side Already build in plugins for your need

Getting started

<?php require_once 'SDK/API_Config.php'; require_once 'SDK/OpenTokSDK.php'; require_once 'SDK/SessionPropertyConstants.php';

$apiObj = new OpenTokSDK(API_Config::API_KEY, API_Config::API_SECRET); $session = $apiObj->create_session($_SERVER["REMOTE_ADDR"]); $sessionId = $session->getSessionId();?>

<html><head>

<title>OpenTok - PHPXpert Sample App</title><script src="http://staging.tokbox.com/v0.91/js/TB.min.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript" charset="utf-8">var session = TB.initSession("<?php echo $sessionId?>"); // Session ID.

session.addEventListener("sessionConnected", sessionConnectedHandler);session.addEventListener("streamCreated", streamCreatedHandler);session.connect(1127, "devtoken"); // OpenTok sample API key and sample token

string.

Simple Example

function sessionConnectedHandler(event) { subscribeToStreams(event.streams); session.publish();

}

function streamCreatedHandler(event) {subscribeToStreams(event.streams);

}

function subscribeToStreams(streams) {for (i = 0; i < streams.length; i++) {

var stream = streams[i];if (stream.connection.connectionId != session.connection.connectionId) {

session.subscribe(stream);}

}}

</script> </head> <body> </body></html>

Simple Example - Continues

Thanks everyone

Questions?

M. Mizanur RahmanFounder & C.T.O

Informatix Technologies

C.EOEschool Project

ZCE, CSM & Moderator PHPXperts Grouphttp://booleandreams.wordpress.com

About me