Giter VIP home page Giter VIP logo

client-acd's Introduction

client-acd

Twilio ACD example - written with Ruby and HTML, Javascript, websockets on the front end. Deployable to Heroku. Embeddable in Salesforce Open CTI.

TwilioSoftphone

For a one minute video demo: YouTube

##Features

  • Agent presence (ready/not ready buttons)
  • Twilio Queues
  • Automatic Call Distribution (ACD) - Delivering call from Twilio Queues to the longest availible agent
  • Twilio Client - delivery to calls in the broswer
  • Realtime notifications of calls in queue, ready agents
  • Outbound calls, click2call from Salesforce
  • Hold
  • Mute

##Todo - future features:

  • Transfer
  • Allow agent to choose to accept calls on a external number (mobile or desk), not just in-browser
  • Queue timeout to voicemail - give callers an option to leave a voicemail after X time
  • Reporting

Pre requisites:

  • Twilio Account, Account SID, Auth Token
  • Heroku account, heroku installed
  • Git, account set up

For Salesforce OpenCTI:

  • Salesforce instance, ability to create a Call Center

Install:

To get your configuration variables:

Twilio Config

  • Create a Twilio Appid

    • you will need this for subseqent steps to set the twilio_app_id.
  • Create a Twilio App in Devtool -> TwimlApps -> Create App (note the app id created)

    • Set name - for example- "Client-acd".
    • Note the app id created here. You will need it for later.
      • After you create a Heroku app below, you will need to come back to this Twilio Application, and set the Voice URL to point to your newely created Heroku URL + /dial.
  • Buy a Twilio phone number - you will need this for subseqent steps.

    • Note the Phone number created here. You will need it for later for the twilio_caller_id parameter.
    • You will also use this phone number to accept new calls once you create a Heroku (or local tunnel) deploy. You will add to your Twilio voice url: http://myapp.herokuapp.com/voice to accept new calls.

Deploy to Heroku

To deploy to Heroku:

Install option 1 - use Heroku button Recommended option

Deploy

  • Fill out the Config variables - this will create a new Heroku app and produce a new Heroku URL for the app
  • Complete the Twilio Config steps above with your new Heroku URL
  • After creating the Heroku app, note the URL.
    -- Go back in your Twilio Account, and set the voice URL for your Twilio app that was created in the pre-requesites. You have created a new Heroku app witha URL, you can now set the path to that URL and add the /dial path. For example, if you created a Heroku app called "http://myapp.herokuapp.com" you would set the Voice URL of your app to http://myapp.herokuapp.com/dial.

TwimlApp

-- You now need to create configure your inbound number with your new Heroku url. Add your Heroku app url + /voice to your Twilio voice URL.

TiwmlApp

And that's it! You can take inbound calls!

Install option 2

  • Download and run locally, then deploy to Heroku manually.

heroku create this will create a Heroku URL you can use to complete the Twilio Config steps above with your new Heroku URL

  • Install MongoLab

heroku addons:add mongolab

Set your Heroku config - you can set ALL the environment variables with this command (replace with your auth tokens etc):

heroku config:set twilio_account_sid=AC11ecc09xxxxxx
twilio_account_token=2ad0fb4ab2xxxxxxxxxxxxx twilio_caller_id=+14156xxxxx twilio_queue_name=CustomerService twilio_dqueue_url=http://myapp.herokuapp.com/voice twilio_app_id=APab79b652xxxxxxxxx

To check your config variables:

heroku config

To deploy to heroku:

git push heroku master

Configure for running locally

To run client ACD, you need a number of environment variables, either to run it locally or to run it on Heroku. You can get some of the configuration options within Twilio, such twilio_account_sid, twilio_account_token, twilio_caller_id, twilio_caller_id. You aslo need a url to handle calls, and that will be either the Heroku app you create, or your local machine via a tunneling service.

Set up code to run locally - this assumes you have the correct Ruby environment or can get it running:

git clone https://github.com/choppen5/client-acd.git

cd client-acd

bundle install

  1. set environment variables:

The method of setting these will vary by platform. On Mac, you can: "export twilio_account_sid=AC11ecc_your_account" but that will only last during that session. Another option is edit you .bash_profile, and add: export twilio_account=sid=C11ecc_your_account for all the variables.

twilio_account_sid=AC11ecc_your_account

twilio_account_token=2ad0fb_your_sid

twilio_app_id=AP_id_of_the_appyoucreate

twilio_caller_id=+1415551212

twilio_queue_name=CustomerService

twilio_dqueue_url=https://your.localserver.com/voice

MONGOLAB_URI="mongodb://heroku:[email protected]:10079/XXXXXX"

Starting the process locally

To start the process, if everything is set, within the client-acd folder:

ruby client-acd.rb

This will start the process - locally for testing. To use this with Salesforce, Twilio, you will have to use a local tunnel service like Ngrok or LocalTunnel, or deploy to Heroku.

Salesforce configuration

  1. Go to Call Centers > Create
  • Import a call center config included, DemoAdapterTwilio.xml -- after import, change the paramter CTI Adapter URL to the Heroku URL created in the first steps https:/<insert yourherokuappurl
  • add yourself to the call center under "Manage Call Center users" > Add more users > (find)
  1. You should now see a CTI adapter under the Contact tabs. However, you want to use the Service Cloud Console for all cti calls (which prevens browser refreshes that would hang up calls)
  2. To create a service cloud console
  • Setup > Create > Apps > New
  • Choose "Console" for type of app
  • give it a name, such as "Twilio ACD"
  • Accept default for logo
  • For tabs, add some tabs to your Service Cloud Console, such as Contacts, Cases
  • accept default for step5 "choose how records display"
  • Set visibility to all (for dev orgs)
  • You've now created an app! You will see you'r console in the App dropdown, for example "Twilio ACD"
  1. Configuring screenpops
  • you can configure screenpop response, such as to pop the search screen, in Setup > Call Centers > (your call center) -> Softphone Layout.

client-acd's People

Contributors

bpartridge83 avatar choppen5 avatar lambtron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

client-acd's Issues

Heroku failed to build.

Chose Option 1, but Heroku will not build. I suspect its the gems version, but unclear.

-----> Ruby app detected
-----> Compiling Ruby/Rack
-----> Using Ruby version: ruby-2.2.4
-----> Installing dependencies using bundler 1.11.2
Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
Fetching gem metadata from http://rubygems.org/............
Fetching version metadata from http://rubygems.org/...
Fetching dependency metadata from http://rubygems.org/..
Installing addressable 2.3.5
Installing builder 3.2.0
Installing bson 1.9.2
Installing daemons 1.1.4
Installing eventmachine 1.0.3 with native extensions
Installing json 1.8.0 with native extensions
Installing multi_json 1.6.1
Installing rack 1.5.2
Installing tilt 1.3.4
Using bundler 1.11.2
Installing bson_ext 1.9.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/ruby-2.2.4/bin/ruby -r ./siteconf20160504-214-2lup9v.rb extconf.rb
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... no
checking for inotify_init() in sys/inotify.h... yes
checking for writev() in sys/uio.h... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... no
checking for rb_time_new()... yes
checking for sys/event.h... no
checking for epoll_create() in sys/epoll.h... yes
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling cmain.cpp
compiling page.cpp
compiling pipe.cpp
compiling em.cpp
em.cpp: In member function ‘void EventMachine_t::_RunEpollOnce()’:
em.cpp:574:37: error: ‘rb_thread_select’ was not declared in this scope
EmSelect (0, NULL, NULL, NULL, &tv);
^
em.cpp: In member function ‘int SelectData_t::_Select()’:
em.cpp:827:67: error: ‘rb_thread_select’ was not declared in this scope
return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv);
^
em.cpp: In member function ‘void EventMachine_t::_RunSelectOnce()’:
em.cpp:946:40: error: ‘rb_thread_select’ was not declared in this scope
EmSelect (0, NULL, NULL, NULL, &tv);
^
make: *** [em.o] Error 1
make failed, exit code 2
Gem files will remain installed in /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/bundle/ruby/2.2.0/gems/eventmachine-1.0.3 for inspection.
Results logged to /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/bundle/ruby/2.2.0/extensions/x86_64-linux/2.2.0-static/eventmachine-1.0.3/gem_make.out
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/ruby-2.2.4/bin/ruby -r ./siteconf20160504-214-1hpj4hi.rb extconf.rb
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling generator.c
In file included from generator.c:1:0:
../fbuffer/fbuffer.h: In function ‘fbuffer_to_s’:
../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments, but only 1 given
VALUE result = rb_str_new(FBUFFER_PAIR(fb));
^
../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer without a cast [enabled by default]
VALUE result = rb_str_new(FBUFFER_PAIR(fb));
^
make: *** [generator.o] Error 1
make failed, exit code 2
Gem files will remain installed in /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/bundle/ruby/2.2.0/gems/json-1.8.0 for inspection.
Results logged to /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/bundle/ruby/2.2.0/extensions/x86_64-linux/2.2.0-static/json-1.8.0/gem_make.out
Installing mongo 1.9.2
Installing jwt 0.1.6
Installing rack-protection 1.4.0
An error occurred while installing eventmachine (1.0.3), and Bundler cannot
continue.
Make sure that gem install eventmachine -v '1.0.3' succeeds before bundling.
Bundler Output: Fetching gem metadata from http://rubygems.org/............
Fetching version metadata from http://rubygems.org/...
Fetching dependency metadata from http://rubygems.org/..
Installing addressable 2.3.5
Installing builder 3.2.0
Installing bson 1.9.2
Installing daemons 1.1.4
Installing eventmachine 1.0.3 with native extensions
Installing json 1.8.0 with native extensions
Installing multi_json 1.6.1
Installing rack 1.5.2
Installing tilt 1.3.4
Using bundler 1.11.2
Installing bson_ext 1.9.2 with native extensions

   Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

   /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/ruby-2.2.4/bin/ruby -r ./siteconf20160504-214-2lup9v.rb extconf.rb
   checking for rb_trap_immediate in ruby.h,rubysig.h... no
   checking for rb_thread_blocking_region()... no
   checking for inotify_init() in sys/inotify.h... yes
   checking for writev() in sys/uio.h... yes
   checking for rb_wait_for_single_fd()... yes
   checking for rb_enable_interrupt()... no
   checking for rb_time_new()... yes
   checking for sys/event.h... no
   checking for epoll_create() in sys/epoll.h... yes
   creating Makefile

   make "DESTDIR=" clean

   make "DESTDIR="
   compiling cmain.cpp
   compiling page.cpp
   compiling pipe.cpp
   compiling em.cpp
   em.cpp: In member function ‘void EventMachine_t::_RunEpollOnce()’:
   em.cpp:574:37: error: ‘rb_thread_select’ was not declared in this scope
   EmSelect (0, NULL, NULL, NULL, &tv);
   ^
   em.cpp: In member function ‘int SelectData_t::_Select()’:
   em.cpp:827:67: error: ‘rb_thread_select’ was not declared in this scope
   return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv);
   ^
   em.cpp: In member function ‘void EventMachine_t::_RunSelectOnce()’:
   em.cpp:946:40: error: ‘rb_thread_select’ was not declared in this scope
   EmSelect (0, NULL, NULL, NULL, &tv);
   ^
   make: *** [em.o] Error 1

   make failed, exit code 2

   Gem files will remain installed in /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/bundle/ruby/2.2.0/gems/eventmachine-1.0.3 for inspection.
   Results logged to /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/bundle/ruby/2.2.0/extensions/x86_64-linux/2.2.0-static/eventmachine-1.0.3/gem_make.out

   Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

   /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/ruby-2.2.4/bin/ruby -r ./siteconf20160504-214-1hpj4hi.rb extconf.rb
   creating Makefile

   make "DESTDIR=" clean

   make "DESTDIR="
   compiling generator.c
   In file included from generator.c:1:0:
   ../fbuffer/fbuffer.h: In function ‘fbuffer_to_s’:
   ../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments, but only 1 given
   VALUE result = rb_str_new(FBUFFER_PAIR(fb));
   ^
   ../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer without a cast [enabled by default]
   VALUE result = rb_str_new(FBUFFER_PAIR(fb));
   ^
   make: *** [generator.o] Error 1

   make failed, exit code 2

   Gem files will remain installed in /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/bundle/ruby/2.2.0/gems/json-1.8.0 for inspection.
   Results logged to /tmp/build_2d54a5039f38db0e84134d6aa7dbbce2/choppen5-client-acd-374d73f/vendor/bundle/ruby/2.2.0/extensions/x86_64-linux/2.2.0-static/json-1.8.0/gem_make.out
   Installing mongo 1.9.2
   Installing jwt 0.1.6
   Installing rack-protection 1.4.0
   An error occurred while installing eventmachine (1.0.3), and Bundler cannot
   continue.
   Make sure that `gem install eventmachine -v '1.0.3'` succeeds before bundling.

!
! Failed to install gems via Bundler.
!
! Push rejected, failed to compile Ruby app.
! Push failed

MongoHQ issues

User @judamarto reported:

"Hello, I deployed using Option 1 to Heroku and it seems the app keep crashing due to this error. Appreciate if you can let me know on how to fix it.

/app/vendor/ruby-2.0.0/lib/ruby/2.0.0/uri/generic.rb:214:in `initialize': the scheme mongodb does not accept registry part: heroku:OV-g5g2GmsXQy8rQTszY8U1f1s7I3AmCsmRHmKHyNAgNjbr1f-0D6nfmZW5qarw4eI_UJX3OBkr2xItajW4ltA@candidate.37.mongolayer.com:10653,candidate.18.mongolayer.com:10683 (or bad hostname?) (URI::InvalidURIError)"

He also found a solution using MongoLab. Trying that now.

Mongo::OperationFailure Unknown option to update command: upsert

Hi,
Getting the error in client-act.rb file below is the debug for the same.

2017-10-24T07:16:02.356908+00:00 heroku[router]: at=info method=GET path="/websocket?clientname=twilioATtechilaservicesDOTcom" host=techilatwiml.herokuapp.com request_id=4657dd2d-ac4b-4b6a-a988-9b16fd6573d7 fwd="123.252.249.18" dyno=web.1 connect=1ms service=7ms status=500 bytes=165 protocol=https
2017-10-24T07:16:02.355031+00:00 app[web.1]: 2017-10-24 07:16:02 - Mongo::OperationFailure - Database command 'update' failed: Unknown option to update command: upsert:
2017-10-24T07:16:02.355045+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/mongo-1.12.5/lib/mongo/db.rb:610:in rescue in command' 2017-10-24T07:16:02.355046+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/mongo-1.12.5/lib/mongo/db.rb:606:in command'
2017-10-24T07:16:02.355047+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/mongo-1.12.5/lib/mongo/collection_writer.rb:314:in block in send_write_command' 2017-10-24T07:16:02.355048+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/mongo-1.12.5/lib/mongo/functional/logging.rb:55:in block in instrument'
2017-10-24T07:16:02.355048+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/mongo-1.12.5/lib/mongo/functional/logging.rb:20:in instrument' 2017-10-24T07:16:02.355049+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/mongo-1.12.5/lib/mongo/functional/logging.rb:54:in instrument'
2017-10-24T07:16:02.355050+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/mongo-1.12.5/lib/mongo/collection_writer.rb:313:in send_write_command' 2017-10-24T07:16:02.355050+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/mongo-1.12.5/lib/mongo/collection.rb:1104:in send_write'
2017-10-24T07:16:02.355051+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/mongo-1.12.5/lib/mongo/collection.rb:497:in update' 2017-10-24T07:16:02.355052+00:00 app[web.1]: /app/client-acd.rb:131:in block (3 levels) in <top (required)>'
2017-10-24T07:16:02.355053+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/em-websocket-0.3.8/lib/em-websocket/connection.rb:22:in trigger_on_open' 2017-10-24T07:16:02.355053+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/em-websocket-0.3.8/lib/em-websocket/handler.rb:18:in run'
2017-10-24T07:16:02.355054+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/sinatra-websocket-0.3.1/lib/sinatra-websocket.rb:123:in dispatch' 2017-10-24T07:16:02.355054+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/sinatra-websocket-0.3.1/lib/sinatra-websocket.rb:22:in from_env'
2017-10-24T07:16:02.355055+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/sinatra-websocket-0.3.1/lib/sinatra-websocket/ext/sinatra/request.rb:17:in websocket' 2017-10-24T07:16:02.355057+00:00 app[web.1]: /app/client-acd.rb:121:in block in <top (required)>'

Screen pop settings

I noticed for the ACD that you have to have the screenpop open in a new window. Otherwise the call is answered, the screenpop refreshes the browser, and the call is dropped.

Deploy to Heroku Issues

I tried to download heroku onto my computer and complete the 'deploy to herko' section of the instructions. I was able to sign up for a trial of heroku, and create an app (url: salesforceclick2call.herokuapp.com).

In the settings section of this app there is a Github repo section. I attempted to paste https://github.com/choppen5/client-acd.git , but this was not fruitful.

I am not sure where I would set the environmental variables. Would this be in a command shell? Please forgive me I am new to heroku and github.

I have downloaded the Heroku toolbelt for Mac OS and have the github application installed on my Mac. I was also able to add a SSH key to my heroku account, and received a confirmation email with the key.

Shell log:

Last login: Thu Jan 30 10:43:13 on console
Pauls-iMac:~ paulfischer$ git clone https://github.com/choppen5/client-acd.git
Cloning into 'client-acd'...
remote: Reusing existing pack: 576, done.
remote: Total 576 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (576/576), 133.84 KiB | 0 bytes/s, done.
Resolving deltas: 100% (314/314), done.
Checking connectivity... done
Pauls-iMac:~ paulfischer$ cd client-acd
Pauls-iMac:client-acd paulfischer$ heroku create
-bash: heroku: command not found
Pauls-iMac:client-acd paulfischer$ heroku labs:enable websockets
-bash: heroku: command not found
Pauls-iMac:client-acd paulfischer$ heroku create
! Heroku client internal error.
! Search for help at: https://help.heroku.com
! Or report a bug at: https://github.com/heroku/heroku/issues/new

Error:       No such file or directory - getcwd (Errno::ENOENT)
Backtrace:   /usr/local/heroku/lib/heroku/command/base.rb:32:in `pwd'
             /usr/local/heroku/lib/heroku/command/base.rb:32:in `app'
             /usr/local/heroku/lib/heroku/command/base.rb:238:in `extract_org_from_app'
             /usr/local/heroku/lib/heroku/command/base.rb:50:in `org'
             /usr/local/heroku/lib/heroku/command/apps.rb:237:in `create'
             /usr/local/heroku/lib/heroku/command.rb:218:in `run'
             /usr/local/heroku/lib/heroku/cli.rb:28:in `start'
             /usr/bin/heroku:24:in `<main>'

Command:     heroku create
Version:     heroku-toolbelt/3.2.0 (x86_64-darwin10.8.0) ruby/1.9.3

Pauls-iMac:client-acd paulfischer$ heroku addons:add mongohq
! Heroku client internal error.
! Search for help at: https://help.heroku.com
! Or report a bug at: https://github.com/heroku/heroku/issues/new

On hold

Thanks Charles, great sample!

However, the on hold button doesn't seem to work, it will actually disconnect the call when you click on the hold button. And if the caller calls again, the call will be picked up automatically...

Heroku Deploy Fails

Hi,

Firstly, thanks for putting this together - awesome stuff.

I tried deploying to Heroku and I get the following error;

-----> Ruby app detected
-----> Compiling Ruby/Rack
-----> Using Ruby version: ruby-2.4.4
-----> Installing dependencies using bundler 1.15.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
       Fetching gem metadata from http://rubygems.org/...........
       Fetching version metadata from http://rubygems.org/.
       Fetching addressable 2.4.0
       Fetching bson 1.12.5
       Fetching builder 3.2.2
       Installing builder 3.2.2
       Using bundler 1.15.2
       Fetching daemons 1.2.3
       Installing daemons 1.2.3
       Fetching eventmachine 1.0.9.1
       Installing bson 1.12.5
       Installing addressable 2.4.0
       Fetching json 1.8.3
       Installing eventmachine 1.0.9.1 with native extensions
       Installing json 1.8.3 with native extensions
       Fetching jwt 1.5.4
       Installing jwt 1.5.4
       Fetching multi_json 1.12.0
       Installing multi_json 1.12.0
       Fetching rack 1.6.4
       Installing rack 1.6.4
       Fetching tilt 2.0.2
       Installing tilt 2.0.2
       Fetching bson_ext 1.12.5
       Installing bson_ext 1.12.5 with native extensions
       Fetching mongo 1.12.5
       Installing mongo 1.12.5
       Fetching twilio-ruby 4.11.1
       Installing twilio-ruby 4.11.1
       Fetching rack-protection 1.5.3
       Installing rack-protection 1.5.3
       Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
       
       current directory:
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/gems/json-1.8.3/ext/json/ext/generator
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/ruby-2.4.4/bin/ruby -r
       ./siteconf20181018-217-160zys9.rb extconf.rb
       creating Makefile
       
       current directory:
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/gems/json-1.8.3/ext/json/ext/generator
       make "DESTDIR=" clean
       
       current directory:
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/gems/json-1.8.3/ext/json/ext/generator
       make "DESTDIR="
       compiling generator.c
       generator.c: In function ‘generate_json’:
       generator.c:861:25: error: ‘rb_cFixnum’ undeclared (first use in this function);
       did you mean ‘mFixnum’?
            } else if (klass == rb_cFixnum) {
                                ^~~~~~~~~~
                                mFixnum
       generator.c:861:25: note: each undeclared identifier is reported only once for
       each function it appears in
       generator.c:863:25: error: ‘rb_cBignum’ undeclared (first use in this function);
       did you mean ‘rb_cFixnum’?
            } else if (klass == rb_cBignum) {
                                ^~~~~~~~~~
                                rb_cFixnum
       generator.c: At top level:
       cc1: warning: unrecognized command line option ‘-Wno-self-assign’
       cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’
       cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’
       Makefile:241: recipe for target 'generator.o' failed
       make: *** [generator.o] Error 1
       
       make failed, exit code 2
       
       Gem files will remain installed in
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/gems/json-1.8.3
       for inspection.
       Results logged to
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/extensions/x86_64-linux/2.4.0-static/json-1.8.3/gem_make.out
       
       An error occurred while installing json (1.8.3), and Bundler cannot continue.
       Make sure that `gem install json -v '1.8.3'` succeeds before bundling.
       
       In Gemfile:
         json
       Bundler Output: Fetching gem metadata from http://rubygems.org/...........
       Fetching version metadata from http://rubygems.org/.
       Fetching addressable 2.4.0
       Fetching bson 1.12.5
       Fetching builder 3.2.2
       Installing builder 3.2.2
       Using bundler 1.15.2
       Fetching daemons 1.2.3
       Installing daemons 1.2.3
       Fetching eventmachine 1.0.9.1
       Installing bson 1.12.5
       Installing addressable 2.4.0
       Fetching json 1.8.3
       Installing eventmachine 1.0.9.1 with native extensions
       Installing json 1.8.3 with native extensions
       Fetching jwt 1.5.4
       Installing jwt 1.5.4
       Fetching multi_json 1.12.0
       Installing multi_json 1.12.0
       Fetching rack 1.6.4
       Installing rack 1.6.4
       Fetching tilt 2.0.2
       Installing tilt 2.0.2
       Fetching bson_ext 1.12.5
       Installing bson_ext 1.12.5 with native extensions
       Fetching mongo 1.12.5
       Installing mongo 1.12.5
       Fetching twilio-ruby 4.11.1
       Installing twilio-ruby 4.11.1
       Fetching rack-protection 1.5.3
       Installing rack-protection 1.5.3
       Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
       
       current directory:
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/gems/json-1.8.3/ext/json/ext/generator
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/ruby-2.4.4/bin/ruby -r
       ./siteconf20181018-217-160zys9.rb extconf.rb
       creating Makefile
       
       current directory:
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/gems/json-1.8.3/ext/json/ext/generator
       make "DESTDIR=" clean
       
       current directory:
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/gems/json-1.8.3/ext/json/ext/generator
       make "DESTDIR="
       compiling generator.c
       generator.c: In function ‘generate_json’:
       generator.c:861:25: error: ‘rb_cFixnum’ undeclared (first use in this function);
       did you mean ‘mFixnum’?
            } else if (klass == rb_cFixnum) {
                                ^~~~~~~~~~
                                mFixnum
       generator.c:861:25: note: each undeclared identifier is reported only once for
       each function it appears in
       generator.c:863:25: error: ‘rb_cBignum’ undeclared (first use in this function);
       did you mean ‘rb_cFixnum’?
            } else if (klass == rb_cBignum) {
                                ^~~~~~~~~~
                                rb_cFixnum
       generator.c: At top level:
       cc1: warning: unrecognized command line option ‘-Wno-self-assign’
       cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’
       cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’
       Makefile:241: recipe for target 'generator.o' failed
       make: *** [generator.o] Error 1
       
       make failed, exit code 2
       
       Gem files will remain installed in
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/gems/json-1.8.3
       for inspection.
       Results logged to
       /tmp/build_e5efea1e8f8e0cac6c14cdb0336730e4/vendor/bundle/ruby/2.4.0/extensions/x86_64-linux/2.4.0-static/json-1.8.3/gem_make.out
       
       An error occurred while installing json (1.8.3), and Bundler cannot continue.
       Make sure that `gem install json -v '1.8.3'` succeeds before bundling.
       
       In Gemfile:
         json
 !
 !     Failed to install gems via Bundler.
 !
 !     Push rejected, failed to compile Ruby app.
 !     Push failed

Any idea what the issue is and how I can resolve it?

NB: Sadly I am not a developer :(

Thank you.

Browsing to another page in saleforce hangs up the call

Hi,
Any way to avoid having the softphone hangup when an end user browses to another page on salesforce? I know they can right-click on the URL and open in a new tab. But for non-technical people, that is not an option. Is it possible to maybe set it up so when a phone number is clicked, the softphone opens in a new browser window? Any other ideas?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.