Technology

RoboBouncer

robobouncer demo

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.

 

With full programmatic control of call handling, the possibilities the internet brings to traditional calling are endless.  We have set up phone IVR systems (Company Directories), Lead Transfer Systems to High Volume outbound calling.

To test out the RoboBouncer you can call our phone number (949)446-1716

After popular demand we made a commercial version that automates the deployment of a RoboBouncer. Click here to create your own RoboBouncer

For the technically inclined we have posted the code and info at BitBucket 

 

 

Creating a telephone call screening service using Twilio

The Call Flow

-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:

Press 1 (DTMF) or Say Accept (SpeechResult) -connects the call to Caller using Dial Queue Verbs -OR- Press 2 (DTMF) or say Reject (SpeechResult) ->Using REST API we notify the caller and end the call enqueue and hang up our call

Uses TWIML API and Twilio Voice API PHP SDK

Uses Queue https://www.twilio.com/docs/voice/api/queue-resource and EnQueue to place caller on hold. Could use Conference verb as well instead of Enqueue, just replace Enqueue with Conference for more options

Follow this wonderful guide to set up your free twilio account, get a phone number and your API SID and Token https://www.twilio.com/docs/voice/quickstart/php

Dont forget to assign the webhook step1.xml (or if you use TWIMLBIN select the twimlbin URL) to your twilio phone number

Setting up a webserver isnt necessary. Use Twilios TWIMLBin for the XML files and "Functions" 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

Robo-Bouncer code in my BitBucket
Check out my commercial version here

Get $10 Google AIY Version 1 working

So I bought this $10 Google Assistant from Amazon Prime.  Only to find out it doesnt work as easily as advertised.   It comes with a modified Raspian distro.  Here are the latest steps I did to get mine to work.  I spent a half a day muddling through commands,  so im not sure if previous steps might have led to it working but hope this helps someone…Note the audio volume in the navigation is disabled, but the google voice does work (when I did get the audio driver working, the google voice via python was not)

cd ~/AIY-projects-python

sudo scripts/install-alsa-config.sh

Outputted:

Renaming /home/pi/.asoundrc to /home/pi/.asoundrc.bak…
Renaming /etc/asound.conf to /etc/asound.conf.bak…
Installed voiceHAT ALSA config at /etc/asound.conf
Installed voiceHAT ALSA config at /home/pi/.asoundrc

I tried:  python checkpoints/check_audio.py

Outputted:

ImportError: No module named aiy.audio

python3 checkpoints/check_audio.py

Worked…Playing test sound….

So the module only works when you declare the Python3…..

before this i did compile the drivers by going to the /home/pi/drivers-raspi folder, and ran

sudo ./build.sh

the script appears to compile the drivers and created a boot/config.txt file….I believe the parameters in the config.txt file are run when the image boots up…here is a copy of mine in case anyone else may need to compare:

I added dtoverlay=googlevoicehat-soundcard to mine, I also added dtparam=audio=on but the driver script appears to have commented dtparam=audio=on  out to #dtparam=audio=on

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default “safe” mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display’s size minus
# overscan.
#framebuffer_width=512
#framebuffer_height=384

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=35

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
dtoverlay=googlevoicehat-soundcard

# Additional overlas and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
#dtparam=audio=on
# dtoverlay=dwc2
start_x=0
gpu_mem=128
#scaling_kernel=8
enable_uart=1
#dtoverlay=w1-gpio
start_x=1

 

 

Syncing a lot of data from a directory to Amazon S3 Cloud

In an attempt to upload a directory 40+ Gigabytes worth of files on t0 Amazons S3.

Typically I use the AWS Console, but I ran into issues, I believe my browser was timing out.  I tried a couple downloading and installing third party applications, the only success I got from that was possibly inheriting additional malware.

I did manage to find a solution, I tend to pass on the command line tools, but I was desperate, turns out in this instance command line is actually sooo much easier and stable, This is basically all I had to do.

Download AWS CLI  and Install it

Open your terminal and run

aws configure

youll need to provide it your AWS ID, AWS KEY, Region, and a format (I choose JSON). Then all i had to do was run the following command to start syncing

aws s3 sync C://Your_Local_Directory_To_SYNC s3://your_S3_bucket

if you want to see more options simply run. You can sync bi-directionally or from s3 bucket to bucket by interchanging the last two parameters accordingly

aws s3 help

You are now free to do whatever it is you do.

Note: If you step away from your computer for too long or your computer goes inactive, this will discontinue your transfer. If that happens rerun the command to continue.

8 Tips for picking a better domain name

 

Not only do these tips coincide with easier search engine indexing, They take into consideration human psychology, human memory is vital because if your end user doesn’t recall the proper address they are a lot less likely to reach there intended destination

1. Choose a .com extension

2. Use your brand name

3. Don’t use exact match domains. Partial match domains are okay, but a brand name is always preferred

4. Make it memorable

5. Make sure its easy to spell.

6. Avoid special characters.

7. Avoid misspelling

8 Under 14 Character, shorter the better.

5 Ways to help ensure your websites secure

These days web sites can expect to be attacked by web bots as soon as a search engine index’s there site. The more advanced web bots will launch every known attack in order to find a vulnerability to exploit, and report back to its attacker, whom can conduct various nefarious acts on your server, any of which could greatly affect your business, domain and/or clients. Recently a very common attack on businesses that does not get enough publicity is ransomware, which could basically criple a companies operations until they pay the attacker money, most times these attacks dont require more effort to accomplish, so even small businesses can fall victim. Here are some tips I think every site should implement to ensure there website is secure.

1. Run updates on your server and all your software frequently

Plugins are vitally important for keeping websites ahead of potential security breaches. Ensure the ability to create and utilize custom plugins to reinforce site security, such as those that block particular IP addresses. Equally important, developers must also practice up-to-date coding and development standards and should use modern versions of platforms such as PHP and Apache. WDG developers, for example, use only coding structures and syntax patterns that have been proven secure and effective in order to maintain industry best practices.

2. Require a strong password policy

Require a strong password policy anywhere a password on your site and throughout your organization anywhere a password is used. Attackers will often brute force your user passwords using scripts, which is akin to trying every common password for every username until one is found, such an attack takes a few minutes to conduct and is also typically automated.

3. Conduct a regular back-up of your applications and databases

Having a backup copy of your applications and database could potentially save your business from any damage and/or prevent the loss of important information such as customer or sales records due damage was done by an attacker or virus. Once the damage is identified, without some sort of backup copy could take a business website offline indefinitely. For e-commerce websites, this could destroy the entire business.

4. Obtain an SSL (Secure Socket Layer) Certificate and employ an Encryption Protocol

The information traveling from your website to your end-user can be intercepted by an unknowing third party, whom can capture sensitive information such as credit card information, username, and passwords. SSL or secure socket layer secures the information by encrypting it before it transmitted.

5. Only install plugins or code from trusted sources

Attackers will often disguise viruses in actual functioning plugins, thereby allowing an attacker access to your server. These attacks often go unnoticed until it’s too late.

These steps are implemented automatically whenever possible when I develop for my clients. From a development standpoint, implementing the tips become more costly and difficult to implement as a site grows,

Hosting like the big boys…on the cheap!

Amazon is out to own the web hosting space with its new lightsail space. Lightsail offers a setup of the cloud Virtual Private Server instance, and all the trimmings that typically would require an experienced IT professional to configure to make possible. Making it possible for small businesses to have a scalable private server for as low as $5 a month, and any newbie developer should be able to set it up!! If your still using Godaddy, bluehost,hostgator and sharing one IP address and server space, among hundreds (sometimes thousands) of other websites in a “shared” hosting account (which search engines can see), it would be silly not to migrate.