They have been various projects and requests about a better interface between a PBX and CiviCRM. This page aims to clarify the needs in order to see if there is a common enough demand to launch a MIH project.
Although the concepts are likely the same no matter the PBX, the initial implementation is going to focus on asterisk, the leading open source PBX.
Click to Dial
From a list of contact of the summary of a contact, being able to click on a number to dial it. The workflow is as follow: the user clicks on the number, her phone rings, she picks up the phone and the PBX automatically dials the number she clicks on.
One issue to be resolved is how to determine appropriate number for the user, so that the phone next to her is dialed. It might not be the number that is needed, but the sip identifier (pretty sure that's what asterisk manager needs). Either store it as the phone for a new "PBX" location, or as IM or perhaps in addition to is_billing and is_primary fields for civicrm_phone, their could be an is_caller or some other name for field.
We need a new template/function/hook to format the display phone numbers. ie. so based on the provider, we add a "tel://" link or whatever needed.
Campaign Click to Dial
Same as Click to Dial, but clicking from within a Campaign page where the user can enter responses for the call.
XAV: in a previous live was working for a call center, what we did was using a predictive dialing (eg. the phone system generates the call automatically). In general, the workflow for survey should be different IMO: you should click "next call" to display a single form (general info about the contact + a form to register the call, for a single contact, not a list of contacts like the survey canevassing). This is likely a separate project.
Lookup the phone number
When someone calls and that the number isn't hidden, being able to lookup the name of the contact person that number belongs to, and display it on the phone or on the screen (instant message, xmmp/jabber)
Display the name of the contact on the screen, with a button which allow to access the contact profil on civicrm (the activities tab may be more appropriated, but can be discussed)
Country code/prefix and phone standardisation
To be able to dial or lookup a phone, it needs to follow the same format than the phone system. Manual entry without formatting isn't going to be good enough. Things like automatically adding the country code, and probably store a cleaned up (without space, replacing the +41 by 0041...) version of the number beside the formatted one. Introducing a new field "standardized_number" in civicrm_phone?
Log calls
Being able to log all the calls received or made (including duration). Or only to the ones that are known in the CRM? Or not?
Log some calls
Offering a link to a pre-filled activity form (activity type phone, datetime ,duration, between the right contacts in the from and with).
Probably best to use a xmmp/jabber interface.

3 Comments
Hide/Show CommentsAug 07, 2011
Donald A. Lobo
Might also want to abstract the interface, so folks can use a SaaS based telephony provider like twilio. This is quite closely related to Click2Call with a form interface to record responses (survey responses), so would be great to have an integrated solution within CiviCRM
Aug 08, 2011
JoeMurray
The Drupal VoIP folks (http://drupal.org/project/voipdrupal) are focussing on interfaces for Twilio (http://drupal.org/project/voiptwilio, http://www.twilio.com/) and Tropo (http://drupal.org/project/voiptropo, https://www.tropo.com/home.jsp). There were a number of serious on-going concerns with the quality and functionality of the asterisk codebase, I have heard, that led them to switch away from it.
Sep 05, 2011
xavier dutoit
I think that both twilio and tropo are both closed source. So not sure moving from an opensource with a big community because the code is not too good to a solution where the quality of the code is unknown (and unfixable anyway) is a good move. Anyway, agree, needs to be generic enough.