SlideShare une entreprise Scribd logo
1  sur  80
WHAT’S IN STORE

•
•
•
•
    •
    •
    •
•
Live Coding
Live & Semi-live Demos
MICHAEL PEACOCK
SMITH ELECTRIC VEHICLES
NO. NOT MILK FLOATS
    ALL ELECTRIC, COMMERCIAL VEHICLES.                                      (ANYMORE)




Photo courtesy of kenjonbro: http://www.flickr.com/photos/kenjonbro/4037649210/in/set-72157623026469013
ALL-ELECTRIC COMMERCIAL VEHICLES
TELEPHONY INTEGRATION

•
    •
    •
    •
    •
    •
•
    •
    •
TELEPHONY INTEGRATION

•
    •
•
    •
    •
    •
MY FIRST EXPOSURE AS A DEVELOPER

•
•
    •

    •
    •
•
    •
    •
PROVIDERS
TWILIO VS TROPO
Twilio                                      Tropo
30$ Free Credit                             Free for development
                              Incoming and outgoing calls
                           Send and receive SMS messages
                            IVR: Interactive Voice Response
                              DTMF: Record key presses
                                 Number provisioning
                      Open VBX (Twilio project, with a Tropo fork)
Twimlets                                    File hosting
Connect: for apps                           SIP: Additional Integration
iOS Integration                             W3C: Speech Recognition Grammar
Browser Integration                         IM Service integration
WHY?



•
•
WHY: CUSTOMER SERVICE
•
    •
        •
    •
    •
        •
        •
        •
•
    •

        •
WHY: LEAD TRACKING

•
    •

    •
    •

    •
    •
WHY: VERIFICATION & SECURITY

•
    •
        •
    •

•
    •
•
    •
WHY: MARKETING

•
    •
HOW? INBOUND CALLS
•

•


•



•
XML
HOW: OUTBOUND CALLS

•

•

•
Rest
POST/GET
XML
XML: HEADER AND WRAPPER

•
•
• <Response>
  •
XML: PLAY

• <Play>
   http://url-to-an-audio-file
</Play>
  • loop
PLAY / HOLD

•
•
XML: ASK

• <Gather>
  •   action
  •   method
  •   timeout
  •   numDigits
  •   finishOnKey
XML: RECORD

• <Record>
  •   action method timeout   finishOnKey
  •   maxLength
  •   transcribe
  •   transcribeCallback
  •   playBeep
TRANSCRIPTIONS

•
•
•
•
    •
    •
    •
XML: SEND A TEXT

• <SMS>
  •   to
  •   from
  •   statusCallback
  •   action    method
XML: TRANSFER THE CALL

• <Dial>
  •   action method   timeout
  •   hangupOnStar
  •   timeLimit
  •   callerId
•
• <Number>, <Client> <Conference>
MORE XML

• <Hangup>
• <Redirect>
• <Reject>
• <Pause>
XML IS GOOD...BUT...

•

•


•


•
    •         
HOW: REST

•
    •
    •
    •
    •
•
    •
•
    •
SECURITY

•

•

•

•
    •
SANDBOX

•
•
•
•
•
•
HOW MUCH?
                    Twilio          Tropo
Phone Numbers       $1/month        $3/month
Inbound minutes     1c              3c / minute
Outbound minutes    2c              3c / minute (international+)
Toll free numbers   $2/month*       $5/month*
SMS In              1c              1c
SMS Out             1c              1c
MY APPLICATIONS

•
    •

    •
    •
    •
•
    •
        •
        •
WHY YOU MIGHT WANT TO USE IT
WHAT WE ARE GOING TO BUILD

•
    •
    •

•
•
PHONE NUMBER VERIFICATION
PNV: GET THE DETAILS
PNV: CREATE THE UN-VERIFIED USER
// unverified user; default verified status of false
$user = new UnverifiedUser();

$user->setFullName( $_POST['full_name'] );
$user->setFullPhoneNumber( $_POST['number'] );

$user->generateRandomVerificationCode();

$user->save();

$userID = $user->getID();
PNV: MAKE THE CALL
$twilioClient = new Services_Twilio( $sid, $token );

$call = $twilioClient->account->calls->create(
   $ourPhoneNumber,
   $countryCode . $telephoneNumber,
   'http://my-url/verify/&user=' . $userID
);
PNV: ASK FOR MORE
// create a response / twiml object
$response = new Services_Twilio_Twiml();

$gather = $response->gather(
   array( 'numDigits' => 4,
          'action' => $url . '/verify/' .
                      $userID       ) );
$gather->say('This is the ' . $siteName . '
              telephone verification service.
              To verify your telephone number,
              please enter the four digit code
              shown on your screen now.');
print $response;
PNV: VERIFY
$code = (int) $_REQUEST['Digits'];

if( $user->getVerificationCode() == $code )
{
   $user->verify();
}
else
{
   $this->askAgain();
}
PNV: ASK AGAIN

$gather = $response->gather(
  array( 'numDigits' => 4,
         'action' => $url . /verify-
                   again/' . $userID ) );

$gather->say('Sorry, the code you entered
              was incorrect, please try
              again.');

print $response;
PNV: VERIFIED

$response->say('Thank you, your phone
                 number has been
                 verified');
print $response;
HEARTBEAT

•
    •
LEAD TRACKING
LEAD TRACKING: NUMBER PROVISIONING
$twilioClient = new Services_Twilio( $sid, $token );
// search for a local canadian number
$numbers = $twilioClient->account->available_phone_numbers->getList('CA', 'Local');
if( count( $numbers->available_phone_numbers ) > 0 )
{
     // buy the first we find
     $purchased = $twilioClient->account->incoming_phone_numbers-
     >create(array('PhoneNumber' => $numbers->available_phone_numbers[0]->phone_number
     ));

       $advert->setPhoneNumber( $numbers->available_phone_numbers[0]->phone_number );
       $advert->setPhoneNumberSid( $purchased->sid );
}
else
{
       throw new Exception('No numbers available');
}
LEAD TRACKING: POINT THE NUMBER
$purchased->update(
   array(
      'FriendlyName' => 'Lead tracking for
                          Michaels advert',
      'VoiceUrl' => 'http://my-application-
                     url',
      'VoiceMethod' => 'POST‘
   )
);
NEWLY PROVISIONED NUMBER
LEAD TRACKING: INBOUND CALLS

•

$dialledNumber = $_POST['To'];
CALLER ID?
LEAD TRACKING: MAKE A CONNECTION

•
    •
    •
    •
    •
LOOKUP THE NUMBER
LOG THE LEAD
TRANSFER THE CALL

$response = new Services_Twilio_Twiml();

$response->dial( $advertisersNumber,
array('callerId' => $ourVerifiedNumber )
);

print $response;
APP: CONFERENCE SESSION FEEDBACK

•

•
LIVE DEMO: YOUR TURN
APPS: CONNECT

•
•

•
    •
    •
    •
BROWSER: CLIENT

•
    •
    •
•
    •
MOBILE

•
•
    •
    •
•
TWIMLETS

•
    •
    •
OPEN VBX
A LOOK BACK AT TROPO

•
    •
        •
        •
    •
TROPO: W3C: SPEECH RECOGNITION
                  GRAMMAR



•
    •
    •
    •
•

•
    •
W3C SPEECH RECOGNITION GRAMMER

•
•

•
BASIC SPEECH RECOGNITION

•
TROPO: SIP INTEGRATION

•
    •
    •
WHICH TO USE

•
    •
        •
        •
        •
    •
        •
        •
•
FINAL THOUGHTS
DEMO APPLICATIONS

•


•

•
THANKS & QA

Contenu connexe

Tendances

Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and moreSymfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and moreRyan Weaver
 
Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Fabien Potencier
 
The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016Kacper Gunia
 
Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5Leonardo Proietti
 
Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!Kacper Gunia
 
News of the Symfony2 World
News of the Symfony2 WorldNews of the Symfony2 World
News of the Symfony2 WorldFabien Potencier
 
Symfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il clienteSymfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il clienteLeonardo Proietti
 
Design Patterns avec PHP 5.3, Symfony et Pimple
Design Patterns avec PHP 5.3, Symfony et PimpleDesign Patterns avec PHP 5.3, Symfony et Pimple
Design Patterns avec PHP 5.3, Symfony et PimpleHugo Hamon
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
 
Decoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICDecoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICKonstantin Kudryashov
 
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers CracowForget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers CracowKacper Gunia
 
Doctrine fixtures
Doctrine fixturesDoctrine fixtures
Doctrine fixturesBill Chang
 
Silex meets SOAP & REST
Silex meets SOAP & RESTSilex meets SOAP & REST
Silex meets SOAP & RESTHugo Hamon
 
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011Masahiro Nagano
 
Dirty Secrets of the PHP SOAP Extension
Dirty Secrets of the PHP SOAP ExtensionDirty Secrets of the PHP SOAP Extension
Dirty Secrets of the PHP SOAP ExtensionAdam Trachtenberg
 

Tendances (20)

Symfony 2.0 on PHP 5.3
Symfony 2.0 on PHP 5.3Symfony 2.0 on PHP 5.3
Symfony 2.0 on PHP 5.3
 
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and moreSymfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
 
The IoC Hydra
The IoC HydraThe IoC Hydra
The IoC Hydra
 
Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)
 
The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016
 
Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5
 
Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!
 
News of the Symfony2 World
News of the Symfony2 WorldNews of the Symfony2 World
News of the Symfony2 World
 
Perl Web Client
Perl Web ClientPerl Web Client
Perl Web Client
 
Symfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il clienteSymfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il cliente
 
Design Patterns avec PHP 5.3, Symfony et Pimple
Design Patterns avec PHP 5.3, Symfony et PimpleDesign Patterns avec PHP 5.3, Symfony et Pimple
Design Patterns avec PHP 5.3, Symfony et Pimple
 
Nubilus Perl
Nubilus PerlNubilus Perl
Nubilus Perl
 
Symfony2 revealed
Symfony2 revealedSymfony2 revealed
Symfony2 revealed
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
 
Decoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICDecoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DIC
 
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers CracowForget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers Cracow
 
Doctrine fixtures
Doctrine fixturesDoctrine fixtures
Doctrine fixtures
 
Silex meets SOAP & REST
Silex meets SOAP & RESTSilex meets SOAP & REST
Silex meets SOAP & REST
 
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
 
Dirty Secrets of the PHP SOAP Extension
Dirty Secrets of the PHP SOAP ExtensionDirty Secrets of the PHP SOAP Extension
Dirty Secrets of the PHP SOAP Extension
 

Similaire à Real time voice call integration - Confoo 2012

Getting Started with Twilio
Getting Started with TwilioGetting Started with Twilio
Getting Started with TwilioMichael Kimsal
 
Greach 2011 - Building Telephony Apps with Groovy and Grails
Greach 2011 - Building Telephony Apps with Groovy and GrailsGreach 2011 - Building Telephony Apps with Groovy and Grails
Greach 2011 - Building Telephony Apps with Groovy and Grailsgreach_es
 
VoIP Drupal Framework DrupalCon Prague
VoIP Drupal Framework DrupalCon PragueVoIP Drupal Framework DrupalCon Prague
VoIP Drupal Framework DrupalCon PragueTamer Zoubi
 
7 Principles of API Design - Waza
7 Principles of API Design - Waza7 Principles of API Design - Waza
7 Principles of API Design - WazaTwilio Inc
 
Otra forma de hacer aplicaciones de telefonía
Otra forma de hacer aplicaciones de telefoníaOtra forma de hacer aplicaciones de telefonía
Otra forma de hacer aplicaciones de telefoníaMartin Perez
 
Globe Labs - Voice API (Developer Preview)
Globe Labs - Voice API (Developer Preview)Globe Labs - Voice API (Developer Preview)
Globe Labs - Voice API (Developer Preview)globelabs
 
VoIP Drupal: building sites that send SMS, answer phone calls, and more
VoIP Drupal: building sites that send SMS, answer phone calls, and moreVoIP Drupal: building sites that send SMS, answer phone calls, and more
VoIP Drupal: building sites that send SMS, answer phone calls, and moreLeo Burd
 
Phone calls and sms from php
Phone calls and sms from phpPhone calls and sms from php
Phone calls and sms from phpDavid Stockton
 
Tech campmemphis slides_post_session
Tech campmemphis slides_post_sessionTech campmemphis slides_post_session
Tech campmemphis slides_post_sessionStewart Whaley
 
Tropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API WorkshopTropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API WorkshopAlan Quayle
 
2015 ZendCon - Do you queue
2015 ZendCon - Do you queue2015 ZendCon - Do you queue
2015 ZendCon - Do you queueMike Willbanks
 
TwilioCon 2013 - Communications Without Boundaries
TwilioCon 2013 - Communications Without BoundariesTwilioCon 2013 - Communications Without Boundaries
TwilioCon 2013 - Communications Without BoundariesAndrew Jordan
 
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016Cisco DevNet
 
Developing a Public API -- at ILTechTalks 2015
Developing a Public API -- at ILTechTalks 2015Developing a Public API -- at ILTechTalks 2015
Developing a Public API -- at ILTechTalks 2015Yonatan Maman
 
Twilio - Social App Workshop - 2010-07-24
Twilio - Social App Workshop - 2010-07-24Twilio - Social App Workshop - 2010-07-24
Twilio - Social App Workshop - 2010-07-24Twilio Inc
 
eMetrics Stockholm - What the F*** is wrong with my conversion?
eMetrics Stockholm - What the F*** is wrong with my conversion?eMetrics Stockholm - What the F*** is wrong with my conversion?
eMetrics Stockholm - What the F*** is wrong with my conversion?Craig Sullivan
 
Tropo: Telephony in the Cloud
Tropo: Telephony in the CloudTropo: Telephony in the Cloud
Tropo: Telephony in the CloudWes Gamble
 

Similaire à Real time voice call integration - Confoo 2012 (20)

Getting Started with Twilio
Getting Started with TwilioGetting Started with Twilio
Getting Started with Twilio
 
Greach 2011 - Building Telephony Apps with Groovy and Grails
Greach 2011 - Building Telephony Apps with Groovy and GrailsGreach 2011 - Building Telephony Apps with Groovy and Grails
Greach 2011 - Building Telephony Apps with Groovy and Grails
 
Ruby on the Phone
Ruby on the PhoneRuby on the Phone
Ruby on the Phone
 
VoIP Drupal Framework DrupalCon Prague
VoIP Drupal Framework DrupalCon PragueVoIP Drupal Framework DrupalCon Prague
VoIP Drupal Framework DrupalCon Prague
 
7 Principles of API Design - Waza
7 Principles of API Design - Waza7 Principles of API Design - Waza
7 Principles of API Design - Waza
 
Otra forma de hacer aplicaciones de telefonía
Otra forma de hacer aplicaciones de telefoníaOtra forma de hacer aplicaciones de telefonía
Otra forma de hacer aplicaciones de telefonía
 
Look Who's Talking
Look Who's TalkingLook Who's Talking
Look Who's Talking
 
Supermondays twilio
Supermondays twilioSupermondays twilio
Supermondays twilio
 
Globe Labs - Voice API (Developer Preview)
Globe Labs - Voice API (Developer Preview)Globe Labs - Voice API (Developer Preview)
Globe Labs - Voice API (Developer Preview)
 
VoIP Drupal: building sites that send SMS, answer phone calls, and more
VoIP Drupal: building sites that send SMS, answer phone calls, and moreVoIP Drupal: building sites that send SMS, answer phone calls, and more
VoIP Drupal: building sites that send SMS, answer phone calls, and more
 
Phone calls and sms from php
Phone calls and sms from phpPhone calls and sms from php
Phone calls and sms from php
 
Tech campmemphis slides_post_session
Tech campmemphis slides_post_sessionTech campmemphis slides_post_session
Tech campmemphis slides_post_session
 
Tropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API WorkshopTropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API Workshop
 
2015 ZendCon - Do you queue
2015 ZendCon - Do you queue2015 ZendCon - Do you queue
2015 ZendCon - Do you queue
 
TwilioCon 2013 - Communications Without Boundaries
TwilioCon 2013 - Communications Without BoundariesTwilioCon 2013 - Communications Without Boundaries
TwilioCon 2013 - Communications Without Boundaries
 
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
 
Developing a Public API -- at ILTechTalks 2015
Developing a Public API -- at ILTechTalks 2015Developing a Public API -- at ILTechTalks 2015
Developing a Public API -- at ILTechTalks 2015
 
Twilio - Social App Workshop - 2010-07-24
Twilio - Social App Workshop - 2010-07-24Twilio - Social App Workshop - 2010-07-24
Twilio - Social App Workshop - 2010-07-24
 
eMetrics Stockholm - What the F*** is wrong with my conversion?
eMetrics Stockholm - What the F*** is wrong with my conversion?eMetrics Stockholm - What the F*** is wrong with my conversion?
eMetrics Stockholm - What the F*** is wrong with my conversion?
 
Tropo: Telephony in the Cloud
Tropo: Telephony in the CloudTropo: Telephony in the Cloud
Tropo: Telephony in the Cloud
 

Plus de Michael Peacock

Immutable Infrastructure with Packer Ansible and Terraform
Immutable Infrastructure with Packer Ansible and TerraformImmutable Infrastructure with Packer Ansible and Terraform
Immutable Infrastructure with Packer Ansible and TerraformMichael Peacock
 
Test driven APIs with Laravel
Test driven APIs with LaravelTest driven APIs with Laravel
Test driven APIs with LaravelMichael Peacock
 
Symfony Workflow Component - Introductory Lightning Talk
Symfony Workflow Component - Introductory Lightning TalkSymfony Workflow Component - Introductory Lightning Talk
Symfony Workflow Component - Introductory Lightning TalkMichael Peacock
 
Alexa, lets make a skill
Alexa, lets make a skillAlexa, lets make a skill
Alexa, lets make a skillMichael Peacock
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with LaravelMichael Peacock
 
An introduction to Laravel Passport
An introduction to Laravel PassportAn introduction to Laravel Passport
An introduction to Laravel PassportMichael Peacock
 
Refactoring to symfony components
Refactoring to symfony componentsRefactoring to symfony components
Refactoring to symfony componentsMichael Peacock
 
Dance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech TalkDance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech TalkMichael Peacock
 
Powerful and flexible templates with Twig
Powerful and flexible templates with Twig Powerful and flexible templates with Twig
Powerful and flexible templates with Twig Michael Peacock
 
Introduction to OOP with PHP
Introduction to OOP with PHPIntroduction to OOP with PHP
Introduction to OOP with PHPMichael Peacock
 
Evolution of a big data project
Evolution of a big data projectEvolution of a big data project
Evolution of a big data projectMichael Peacock
 
Data at Scale - Michael Peacock, Cloud Connect 2012
Data at Scale - Michael Peacock, Cloud Connect 2012Data at Scale - Michael Peacock, Cloud Connect 2012
Data at Scale - Michael Peacock, Cloud Connect 2012Michael Peacock
 
PHP Continuous Data Processing
PHP Continuous Data ProcessingPHP Continuous Data Processing
PHP Continuous Data ProcessingMichael Peacock
 
PHP North East Registry Pattern
PHP North East Registry PatternPHP North East Registry Pattern
PHP North East Registry PatternMichael Peacock
 
PHP North East - Registry Design Pattern
PHP North East - Registry Design PatternPHP North East - Registry Design Pattern
PHP North East - Registry Design PatternMichael Peacock
 
Supermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talkSupermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talkMichael Peacock
 
Corporate Structures - September 2010
Corporate Structures - September 2010Corporate Structures - September 2010
Corporate Structures - September 2010Michael Peacock
 

Plus de Michael Peacock (20)

Immutable Infrastructure with Packer Ansible and Terraform
Immutable Infrastructure with Packer Ansible and TerraformImmutable Infrastructure with Packer Ansible and Terraform
Immutable Infrastructure with Packer Ansible and Terraform
 
Test driven APIs with Laravel
Test driven APIs with LaravelTest driven APIs with Laravel
Test driven APIs with Laravel
 
Symfony Workflow Component - Introductory Lightning Talk
Symfony Workflow Component - Introductory Lightning TalkSymfony Workflow Component - Introductory Lightning Talk
Symfony Workflow Component - Introductory Lightning Talk
 
Alexa, lets make a skill
Alexa, lets make a skillAlexa, lets make a skill
Alexa, lets make a skill
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with Laravel
 
An introduction to Laravel Passport
An introduction to Laravel PassportAn introduction to Laravel Passport
An introduction to Laravel Passport
 
Phinx talk
Phinx talkPhinx talk
Phinx talk
 
Refactoring to symfony components
Refactoring to symfony componentsRefactoring to symfony components
Refactoring to symfony components
 
Dance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech TalkDance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech Talk
 
Powerful and flexible templates with Twig
Powerful and flexible templates with Twig Powerful and flexible templates with Twig
Powerful and flexible templates with Twig
 
Introduction to OOP with PHP
Introduction to OOP with PHPIntroduction to OOP with PHP
Introduction to OOP with PHP
 
Vagrant
VagrantVagrant
Vagrant
 
Evolution of a big data project
Evolution of a big data projectEvolution of a big data project
Evolution of a big data project
 
Data at Scale - Michael Peacock, Cloud Connect 2012
Data at Scale - Michael Peacock, Cloud Connect 2012Data at Scale - Michael Peacock, Cloud Connect 2012
Data at Scale - Michael Peacock, Cloud Connect 2012
 
PHP & Twilio
PHP & TwilioPHP & Twilio
PHP & Twilio
 
PHP Continuous Data Processing
PHP Continuous Data ProcessingPHP Continuous Data Processing
PHP Continuous Data Processing
 
PHP North East Registry Pattern
PHP North East Registry PatternPHP North East Registry Pattern
PHP North East Registry Pattern
 
PHP North East - Registry Design Pattern
PHP North East - Registry Design PatternPHP North East - Registry Design Pattern
PHP North East - Registry Design Pattern
 
Supermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talkSupermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talk
 
Corporate Structures - September 2010
Corporate Structures - September 2010Corporate Structures - September 2010
Corporate Structures - September 2010
 

Dernier

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Dernier (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Real time voice call integration - Confoo 2012

Notes de l'éditeur

  1. Good morning, I’m here to talk about how you can integrate real time voice calls and mobile services into your web application.
  2. Today I’m going to talk about:Telephony integration the providers availableWhat they offer and how they tend to workSome sample applications:-verify a users phone numberTracking phone leadsAnd providing feedback on eventsI’m also going to talk about how we use it at Smith Electric
  3. I’m too much of a wimp to bring any live coding into the presentation however...
  4. There are some live and semi-live videos. There were originally three live demos, however my phone doesn’t work here – so two of them are pre-prepared, and one is for you to join in with later.
  5. For those of you who don’t know me; I’m Michael Peacock – I’m the web systems developer for Smith Electric Vehicles on their telemetry project. I’m an experienced lead developer, I spent 5 years running a small web design and development firm, writing bespoke CMS, E-Commerce and CRM solutions. I’ve written a few PHP related books, and volunteer with the PHP North-East user group in the UK.You can find me on twitter, or contact me if you have any questions later.
  6. Smith are the worlds largest manufacturer of all electric, commercial vehicles. Founded over 90 years ago to build electric delivery vehicles – both battery based and cable based. In 2009 the company opened its doors in the US, and at the start of last year the US operation bought out the European company which brings us to where we are today.
  7. Normally when I tell people I work with Electric Vehicles, they think of hybrids like the Prius, or they think about passenger electric vehicles such as the Nissan Leaf. When I tell them its COMMERCIAL electric vehicles, they think about milkfloats or airport passenger buggies.What we actually make are large scale, fully electric delivery and transport vehicles.
  8. These vehicles range from depo based delivery vehicles to home delivery vehicles to utility applications, military applications right through to the american school bus.
  9. Telephony integration gives us access to a range of features directly in our web applications. When it comes to calls we can:Make callsReceive callsRecord what a user is saying and even transcribe those callsAnd log the key pressesWith SMS and mobile integration we can send and receive text messages (a fairly common service / API now)
  10. We can also provision numbers, and work with text to speech, speech to text and different languages, accents and voices.
  11. I was first given exposure to integrating calls and texts into websites and web applications six years ago. The first was a gambling website which needed to verify their customers landline phone numbers. They used a complicated and expensive service to get the job done – and all it did was verify the number.Sending and receiving text messages was some what easier, back then it was still a clunky process – now there are many services which offer this. I’m going to be focusing more on call integration.
  12. There are two main players in the field:Twilio and tropo; both are good and both are big players – we will review them before diving into building phone powered applications.
  13. With both providers its free to get started – either with free credit or with free development environments. They both support the core features such as sending and receiving calls, text messages, IVR menus, recording key presses number provisioning. However they have some pretty key differences; Twilio has browser and mobile integration, as well as the ability to connect to other twilio accounts – allowing you to sell your app, while letting your customer pay for usage; whereas Tropo provide integration with SIP, Instant messengers and can actually process requests based on what the caller says, not just what they press.
  14. Why would you want to do this?Most people I talk to say one of two things:Phone integration – wow thats really cool there are loads of things I can do with that- Why would I want to do that?Lets look through some potential use cases.
  15. Customer service:Order dispatched- thanks for the order- rate your purchaseWould you like a call back?
  16. Tacking leadsLeads which are still based on callsCalling to arrange to look at a used car, you would want to call the owner but the site advertising the car would want to keep track on how useful it was being, while also protecting the seller by not giving out their real phone numberMany big companies use number provisioning for tracking leads. Now we can too.We could even integrate it into a CMS for A/B testing
  17. Verify phone numberTwo factor authConfirming critical actions/transaction
  18. Say something with the Say tagWe can repeat what we sayEven change the gender of the voiceThe accent of the voiceAnd even the language
  19. We can play audio files with the Play tag, supplying the Url to a file,And we can loop the file to with the loop attribute
  20. Twilio gives us a whole bunch of creative commons hold music if we want it!
  21. We can use the Gather tag to ask the caller a question, then use the appropriate attributes to set:Where to submit the response toHow to send the responseHow long we should wait for a responseHow many digits we are expecting, is this a 4 digit pin or a phone number?And/or should we wait for a specific key press to class the input as over
  22. We can also record what the caller says,Action method timeout and finish atributes as before a maximum length of the recording we can opt to have the recoding transcribed and the transcription sent to a callbackUrlWe can even control if the call should play a beep sound before the caller leaves their message.
  23. The transcription service brings some caveats:Its a paid for service the maximum duration is 2 minutesThe call back contains the text of the call, if the transcripotion succeeded or failed and the resource properties of the transcription so we can access it using the API later
  24. We can send a text message with the SMS tag, specifying:Who to send it to who to send it from (must be verified or owner)A call back for success/failure
  25. Within an active call we can dial additional numbersThis can be calling another number, a user using the twilio client, or creating a conference bridge.
  26. We also have some tags to hangup, redirect the call, reject the call and pause
  27. Being XML based makes it really easy to write apps, but XML is really tedious to write,We dont want it lying around solution: client library; it generates it for us
  28. How and why does the rest side of the service work: we use it for phone numbers to:SearchBuyUpdate and delete numbersWe use it to make a callAnd we use it to send a text (independantly, as opposed to within the flow of a call)
  29. How can we be sure its twilio communicating with us, someone could just be calling our application and pretending to be someone with a specific number?Twilio signs requests- it contains a hash of the various paramaters- read the manual, I didn;t at first and spent ages adding hacks and tokens into my apps when they wre not needed
  30. How do you debug phone apps?Powerful debugging toolLogs each time an error occursGives full output of what twilio sent and what it received.
  31. Sandbox..
  32. Field serviceFly around the world to install a GPRS unit- dont have internet access themselves to check the data comes throughSo they phone up and askDriver alertsRoute deviationRange issues as a result
  33. I’m not going to answer this one; hopefuly by now, you already have a few ideas..
  34. Let’s build some stuff:Phone number verificationLead trackingConference talk feedback
  35. Requirement: You need to verify the validity of a users phone number.Ask the user for their number and tell them an access codeCall the numberAsk for the access codeCheck the access codeVerify the number
  36. Create an unverified user object, this has a verified status property of falseUse data posted in a form to populateGenerate a random codeSave the userGet the ID
  37. Initialise the twilio client, with our secret API detailsCreate a callSet out outoing number,The incoming number,And the URL which will generate the XML for the call
  38. We need to ask for a response:Create the twilm objectRequest 4 digits and post them back to our appAsk the caller to provide the code and output the XML
  39. When processing the callback, get the digits they pressedVerify they are correctVerify or reject the verification
  40. Got the code wrong? Just ask again
  41. All OK? Lets tell them
  42. Use a JS heartbeat to look at the databasr to see if the users number is verified, when it is bounce them to a page welcoming them as opposed to the page showing the verification code.
  43. Lets walk through itUser signs upCode generatedThey receive the callEnter detailsAccount verified
  44. Advertiser signs upA number is automatically assigned to themCalls to that number route to our main tracking applicationCall is loggedCaller is transferred
  45. Find a local canadian number, grab the first one and buy it
  46. Update it to point to our App
  47. We have a new number
  48. Twilio posts the number used, so we can have multiple numbers pointing to one app
  49. We can even get caller ID data if we want
  50. We have the numberLook it up in the databaseFind the actual advertisers / lead owners numberLog the lead conversion (call)Connect the call