Computer Telephony Integration (CTI) support in Open Dental

This forum is for programmers who have questions about the source code.
Post Reply
marcus
Posts: 3
Joined: Thu Sep 13, 2007 12:19 am
Location: QLD, Australia
Contact:

Computer Telephony Integration (CTI) support in Open Dental

Post by marcus » Thu Sep 13, 2007 1:03 am

Hi All,

I am a software developer working for a Computer Telephony Integration (CTI) software company called CyTrack. Our software suite allows our users, among other things, to control their phone from their PC. CyDesk, our client application, is run on the users PC and provides the interface to the user. As most companies utilise some sort of CRM to manage their contacts, CyDesk integrates with many of the larger CRMs to provide some neat functionality, such as screen pops to show a contacts record when an incoming (or outgoing) phone call is received (or made) from (or to) them, as well as the ability to click a users number from within the CRM to initiate an outgoing phone call.

An Open Dental user and potential CyTrack client has raised the idea of a CyTrack / Open Dental integration to allow CTI functionality from within Open Dental. I would like to raise the idea among the OD community to determine if there is any opposition to the integration.

Features that require integration are

* Contact screen pops (described above)
* Caller ID Lookup
* Click-to-Dial

Caller ID Lookup
------------------

Caller ID lookup actually forms part of the screen pop feature, as briefly described above. What we require is a way to look up a contacts Name (and unique ID for the screen pop) by their phone number. Whether this is done via ODBC, DDE, an ActiveX control or some other method, we are flexible when it comes to doing this. With Open Dental, I imagine this would be a straight forward query in the database.

Click-to-Dial
--------------

This feature generally requires code changes on the CRM side of the house. This feature provides the user a means to initiate an outgoing phone call simply by double clicking on a contacts phone number from within the CRM. The CyDesk client provides a few methods to pass a message to tell it to make a phone call, including DDE, XML messages on a defined (local) network port and named pipes.

Are there any comments, suggestions for this integration ?

For more information on CyTrack and our products, please visit our website at http://www.cytrack.com.

Thanks,
Marcus

User avatar
jordansparks
Site Admin
Posts: 5742
Joined: Sun Jun 17, 2007 3:59 pm
Location: Salem, Oregon
Contact:

Post by jordansparks » Wed Sep 19, 2007 5:48 pm

Sorry, I don't know why I missed this topic.

Yes, the lookup is straightforward.

As for the click-to-dial, there are two parts.
Part one is to turn on the feature. The feature would be off for most users and only be on for CyDesk users. One way is to add an entry to our 'program' table in the database. http://www.open-dent.com/OpenDentalDocu ... ml#program That gives users a way to enable or disable the feature as well as some other options if needed.
Part two is to decide what the user should actually click on to make a call. We display phone numbers in a variety of places, including on appointments, in recall lists, in confirmation lists, and in the Family module. I would suggest the recall list, confirmation list, and Family module as the three places to enable click-to-dial. I can quickly add those if I know how to call your program. The best option is for us to call an exe with command line parameters. But you didn't list that as an option. So my next pick would be XML, then DDE. I don't even know how to do named pipes, but I probably should. So we can also do that if you explain it to me.
Jordan Sparks, DMD
http://www.opendental.com

marcus
Posts: 3
Joined: Thu Sep 13, 2007 12:19 am
Location: QLD, Australia
Contact:

Post by marcus » Wed Sep 19, 2007 6:22 pm

Great, thanks Jordan. I've just read your response on the forum. I've emailed you the CyDesk Integration Guide (as well as this response), which covers the various ways in which to integrate to CyDesk. As Murphy's law would state, named pipes are our preferred method ;) We are flexible though and will accomodate your needs. If you would like to learn how to use named pipes (its very easy), See page 3 of the Integration Guide, otherwise let me know and we can create a small exe to do the call.

I guess I wont need an SVN account with checkin privileges if you're happy to do the OD side of the changes - can I do a checkout anonymously ? I'll have a look at the DB doco as well to determine the fields we need to query for the contact.

Your post also does not mention the screen pop feature. Is there an easy way to send a message to OD to ask it to display a contacts record - we provide this when a call comes in or goes out to the contact.

One last question I forgot to include in the email - could you provide a rough timeframe for doing the work - roughly how long and when you could do it. I just need to make sure I can set aside some time as well.

Thanks again,
Marcus

marcus
Posts: 3
Joined: Thu Sep 13, 2007 12:19 am
Location: QLD, Australia
Contact:

Post by marcus » Wed Sep 19, 2007 6:24 pm

Great, thanks Jordan. I've just read your response on the forum. I've attached the CyDesk Integration Guide, which covers the various ways in which to integrate to CyDesk. As Murphy's law would state, named pipes are our preferred method ;) We are flexible though and will accomodate your needs. If you would like to learn how to use named pipes (its very easy), See page 3 of the Integration Guide, otherwise let me know and we can create a small exe to do the call.

I guess I wont need an SVN account with checkin privileges if you're happy to do the OD side of the changes - can I do a checkout anonymously ? I'll have a look at the DB doco as well to determine the fields we need to query for the contact.

Your post also does not mention the screen pop feature. Is there an easy way to send a message to OD to ask it to display a contacts record - we provide this when a call comes in or goes out to the contact.

One thing I forgot to ask in my email was for a rough timeframe for when you could make the changes and roughly how long you think it will take. I need to make sure I can set some time aside myself.

User avatar
jordansparks
Site Admin
Posts: 5742
Joined: Sun Jun 17, 2007 3:59 pm
Location: Salem, Oregon
Contact:

Post by jordansparks » Wed Sep 19, 2007 8:21 pm

I've been reading up on named pipes. Seems like they use native Windows methods in kernel32.dll. There are wrapper functions that others have written to allow use of pipes in C#. Or I could write my own. My point is that it's going to be a harder process than I thought. Maybe on the order of 5 to 7 hours. I don't have that kind of time. Part of the problem is also that I don't have a way to test it.

Here's my suggested solution. You write a C# program using hard coded dummy patient data. It should be tested and known to work. I can take your program and insert its functionality into Open Dental. That way, I can probably avoid having to even test it. I can do that very quickly. As for a popup, I would suggest that your supplied program include the window that you want to pop up. I will substitute in the real data and make sure the popup displays it properly. Or you can just have an event, and I will build the popup. I know I can do that quickly.
Jordan Sparks, DMD
http://www.opendental.com

marcus
Posts: 3
Joined: Thu Sep 13, 2007 12:19 am
Location: QLD, Australia
Contact:

Post by marcus » Mon Sep 24, 2007 3:17 pm

Hi Jordan,

Sorry for the slow response, I've been offline for a few days. I'll put together a C# app that will send a command to CyDesk to initiate a call that you can then roll into Open Dental.

As for the screen pop - I'll investigate the ways that I can make Open Dental show a record from CyDesk.

Thanks,
Marcus

Post Reply