{"id":1449,"date":"2019-01-02T19:51:08","date_gmt":"2019-01-03T03:51:08","guid":{"rendered":"https:\/\/www.nicknguyen.com\/?p=1449"},"modified":"2019-11-16T15:32:37","modified_gmt":"2019-11-16T23:32:37","slug":"robobouncer","status":"publish","type":"post","link":"https:\/\/nicknguyen.com\/old\/robobouncer\/","title":{"rendered":"RoboBouncer"},"content":{"rendered":"\n<div class=\"epyt-video-wrapper\"><div  style=\"display: block; margin: 0px auto;\"  id=\"_ytid_82910\"  width=\"480\" height=\"360\"  data-origwidth=\"480\" data-origheight=\"360\" data-facadesrc=\"https:\/\/www.youtube.com\/embed\/k5R8WC8Kjms?enablejsapi=1&origin=https:\/\/nicknguyen.com&autoplay=1&cc_load_policy=0&cc_lang_pref=&iv_load_policy=3&loop=0&rel=0&fs=1&playsinline=1&autohide=2&theme=light&color=red&controls=1&disablekb=0&\" class=\"__youtube_prefs__ epyt-facade no-lazyload\" data-epautoplay=\"1\" ><img decoding=\"async\" data-spai-excluded=\"true\" class=\"epyt-facade-poster skip-lazy\" loading=\"lazy\"  alt=\"robobouncer demo\"  src=\"https:\/\/i.ytimg.com\/vi\/k5R8WC8Kjms\/maxresdefault.jpg\"  \/><button class=\"epyt-facade-play\" aria-label=\"Play\"><svg data-no-lazy=\"1\" height=\"100%\" version=\"1.1\" viewBox=\"0 0 68 48\" width=\"100%\"><path class=\"ytp-large-play-button-bg\" d=\"M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z\" fill=\"#f00\"><\/path><path d=\"M 45,24 27,14 27,34\" fill=\"#fff\"><\/path><\/svg><\/button><\/div><\/div>\n<p>In this case study we bring our internet skills to traditional telecommunications, in a project we dubbed the RoboBouncer. RoboBouncer is a bot that screens your phone voice phone calls by asking for the user to speak there name, it then calls you plays the recording and provides you with an option to accept or reject the call.<\/p>\n<p>&nbsp;<\/p>\n<p>With full programmatic control of call handling, the possibilities the internet brings to traditional calling are endless.&nbsp; We have set up phone IVR systems (Company Directories), Lead Transfer Systems to High Volume outbound calling.<\/p>\n<p>To test out the RoboBouncer you can call our phone number (949)446-1716<\/p>\n<p>After popular demand we made a commercial version that automates the deployment of a RoboBouncer.&nbsp;<a href=\"http:\/\/connect.internettechnologyservices.com\/onestepsignup.php\" target=\"_blank\" rel=\"noopener noreferrer\">Click here to create your own RoboBouncer<\/a><\/p>\n<p>For the technically inclined we have posted the code and info at&nbsp;<a href=\"https:\/\/bitbucket.org\/nicknguyenzrd\/robobouncer\/\">BitBucket&nbsp;<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Creating a telephone call screening service using Twilio<\/p>\n<p>The Call Flow<\/p>\n<p>-Caller calls your Twilio Number. The agent will ask the caller to speak there name and record it. Then place the caller in enquene (Inbound Call) -Using Twilio REST API initiate an (outbound call), from your Twilio Number to your personal phone number. Plays the recording, and presents you with the following options:<\/p>\n<p>Press 1 (DTMF) or Say Accept (SpeechResult) -connects the call to Caller using Dial Queue Verbs -OR- Press 2 (DTMF) or say Reject (SpeechResult) -&gt;Using REST API we notify the caller and end the call enqueue and hang up our call<\/p>\n<p>Uses TWIML API and Twilio Voice API PHP SDK<\/p>\n<p>Uses Queue&nbsp;<a href=\"https:\/\/www.twilio.com\/docs\/voice\/api\/queue-resource\" rel=\"nofollow\">https:\/\/www.twilio.com\/docs\/voice\/api\/queue-resource<\/a>&nbsp;and EnQueue to place caller on hold. Could use Conference verb as well instead of Enqueue, just replace Enqueue with Conference for more options<\/p>\n<p>Follow this wonderful guide to set up your free twilio account, get a phone number and your API SID and Token&nbsp;<a href=\"https:\/\/www.twilio.com\/docs\/voice\/quickstart\/php\" rel=\"nofollow\">https:\/\/www.twilio.com\/docs\/voice\/quickstart\/php<\/a><\/p>\n<p>Dont forget to assign the webhook step1.xml (or if you use TWIMLBIN select the twimlbin URL) to your twilio phone number<\/p>\n<p>Setting up a webserver isnt necessary. Use Twilios TWIMLBin for the XML files and &#8220;Functions&#8221; for the PHP files (convert logic to Javascript the IVR Menu example is a good starting blueprint) -I would suggest loading the XML files into TWIMLBIN let Twilio host the files so you dont have too, and if your capable Twilio Functions for the server side Code<\/p>\n<p><a href=\"https:\/\/bitbucket.org\/nicknguyenzrd\/robobouncer\/\" target=\"_blank\" rel=\"noopener noreferrer\">Robo-Bouncer code in my BitBucket <\/a><br \/>\n<a href=\"http:\/\/connect.internettechnologyservices.com\/onestepsignup.php\" target=\"_blank\" rel=\"noopener noreferrer\">Check out my commercial version here <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this case study we bring our internet skills to traditional telecommunications, in a project we dubbed the RoboBouncer. RoboBouncer is a bot that screens your phone voice phone calls by asking for the user to speak there name, it then calls you plays the recording and provides you with an option to accept or&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1577,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"RoboBouncer","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[151,158,162],"tags":[172,175,46,174,156,77],"class_list":["post-1449","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to","category-personal-projects","category-technology","tag-mysql","tag-open-source","tag-php","tag-rest","tag-twilio","tag-video"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/media.nicknguyen.com\/wp-content\/uploads\/2019\/01\/12185027\/robocall-og.fw_1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/posts\/1449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/comments?post=1449"}],"version-history":[{"count":4,"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/posts\/1449\/revisions"}],"predecessor-version":[{"id":1798,"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/posts\/1449\/revisions\/1798"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/media\/1577"}],"wp:attachment":[{"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/media?parent=1449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/categories?post=1449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nicknguyen.com\/old\/wp-json\/wp\/v2\/tags?post=1449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}