Jump to content

Creating a dynamic soft phone with a hardware interface


Recommended Posts

So I got a crazy request this morning.  Company wants to buy new laptops because they (HP 840 G6) have these Call Answer/Decline buttons built in.  It works for Cisco Jabber and Skype and uses the HP Collaboration Keyboard Software as a wrapper to intercept these programs, then light up the keys on the keyboard.

callbuttons.jpeg.93e5c7e6f8c3da11c9273809310b1de4.jpeg

In order to save a lot of time and money buying, building and deploying new computers for such a simple feature I wanted to come up with a creative solution.

Assuming they just want hardware keys they can press, I could do something as simple as this.

HotKeySet("=", _AnswerCall)
HotKeySet("-", _DeclineCall)

While 1
    Sleep(1)
WEnd

Func _AnswerCall()
    Send("^l")
EndFunc

Func _DeclineCall()
    Send("^d")
EndFunc

 

I do not know how the HP software detects and interfaces with the software, but I was able to find the hotkey shortcuts to preform these features.

But what I think they actually want (demand) is seeing a key light up and being able to press it.

So still cheaper than a new laptop I was thinking something like the Elgato StreamDeck.

Elgato Stream Deck Mini 10GAI9901 B&H Photo Video

What I need to find is an external device with keys that I can have it light up or change graphics when a call comes in with jabber, and press the button to answer/decline the call.

I don't know of any device that does this out of the box, so I was thinking of using AutoIT as a way to "make it smart"

I am posting this because a few things.

1.) Does anybody know a good device to do something like this with?

2.) When I find the device I need to start getting into the code on how to make it work.

So the stream deck it looks like there is some kind of developer feature where you can update graphics.

https://developer.elgato.com/documentation/stream-deck/sdk/events-sent/#setimage

I assume I can find a way to detect a call coming in (hoping something as simple as If WindowExisits() will work, then need to find a way to interface with this SDK to change the icons to show the call is ringing.  I have no idea how to actually interface with this SDK, or if everything could be done without AutoIT at all.

Kind of opening up the floor here for discussion, code ideas, and alternative products that may work easier for what I am trying to do.

 

Edit:

Might be onto an easier solution using the Stream Deck.

Smart Profiles.

https://www.youtube.com/watch?v=gUI3IAabaXs&ab_channel=SlurpTech

Detect when a call is coming in, and have AutoIT run a breadcrumb program, that should change the profile and that profile will have the answer/decline buttons.

Would need testing to see how good it actually works.

Still looking forward to discussion about other ideas/products and possibly the best way to detect these things.  I cant test until I get into the office next week.

Edited by ViciousXUSMC
Link to post
Share on other sites
2 hours ago, ViciousXUSMC said:

What I need to find is an external device with keys that I can have it light up or change graphics when a call comes in with jabber, and press the button to answer/decline the call.

Is having an external hardware solution a necessity?  If not, depending on the VoIP client software being used, you could create a simple small GUI, that runs in the background, pops up on the screen when a call is received, and allows the user to hit a Answer/Decline/End call button.  Based on the GUI button that is pressed, you could trigger the appropriate VoIP client action through an API or using UI automation functions.

If I read correctly, your client uses Cisco's Jabber.  Jabber has an SDK which means that you probably can do all of the things that you need to do using an AutoIt script and interfaces developed with the SDK.

Edited by TheXman
Link to post
Share on other sites

Bit random but what about a foot pedal? You could map the foot pedals to the AutoIt HotKeys? I might be wrong but I think there's software out there where you can map the foot pedals to launch programs etc.

As for alerting the user of an incoming call, like @TheXman said:

Quote

you could create a simple GUI, that runs in the background, pops up on the screen when a call is received

 

Link to post
Share on other sites
1 hour ago, TheXman said:

Is having an external hardware solution a necessity?  If not, depending on the VoIP client software being used, you could create a simple small GUI, that runs in the background, pops up on the screen when a call is received, and allows the user to hit a Answer/Decline/End call button.  Based on the GUI button that is pressed, you could trigger the appropriate VoIP client action through an API or using UI automation functions.

If I read correctly, your client uses Cisco's Jabber.  Jabber has an SDK which means that you probably can do all of the things that you need to do using an AutoIt script and interfaces developed with the SDK.

The software itself already has a nice GUI, that's why this entire thing is redicioulous lol. 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...