[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[ecf-dev] cross-project use of Skype provider
|
Hi -
Scott suggested I share what I am doing with the ecf-dev mail list, so
here goes:
I am a committer on the technology/vtp project (Voice Tools). Back in
2005 (to meet a Feb 2006 release deadline) I developed some plugins that
implement a launching capability so that VXML apps developed with the
tools could be run on the Tellme Studio voice browser platform at the
press of a button. That involved me developing an interface to the Skype
API so that the launcher could call Studio programmatically via Skype. I
completed that development, creating a Windows-only version. I did not
have resources to also build Mac or Linux versions (and still do not).
About the time that effort was finishing up, I learned that Skype was
supporting a development effort to create a Java interface to the Skype
API called Skype4Java, which incorporates Windows, Mac, and Linux
support. I would have preferred to use that code, but it was not ready
in time. I have now resumed working on the Voice Tools project with a
first goal of retooling to use the Skype4Java code.
I was gratified to see that ECF has already built a Skype provider based
on Skype4Java, and I have been pursuing replacing the previous guts of
the Tellme launcher with calls to the ECF Skype provider. It has been an
interesting struggle, with very encouraging results so far.
I say it has been a struggle because the model I chose to represent a
phone call in the original code is quite different from the ECF provider
model, and I had to figure out how to "marry" the two. I had a lot of
code that is functional in launching the VXML app, which involves making
a phone call via Skype while simultaneously monitoring the Tellme Studio
website to detect log messages coming from the execution of the
application. There is a thread that manages the call, dialing the number
and then waiting for status messages, mainly to detect the end of the
call. And there is a separate thread that monitors the log output from
the website, detecting the start of flow of log entries and then passing
each entry back to Eclipse Voice Tools where the entries are displayed
in a View. So, having all this code which works admirably, I simply
wanted to replace my "dialing" code with an interface to the ECF Skype
provider.
Scott had encouraged me to use the CallSessionContainerAdapter class
with the sendCallRequest method to make the call as by so doing,
additional call infrastructure mechanisms could be easily supported in
future. *<grump>*I have to say that using the documentation I could find
on the ECF pages, and the code of the Skype provider I had a very hard
time figuring out how to do that. At almost every turn, I would find a
parameter needed for a constructor or for an instantiator method that I
did not know what value to use and could find no example code to
copy.*</grump>*
Finally, I was able to actually make a Skype call by using: ("number"
is a String containing the Tellme Studio Skype ID.)
IContainer container = (IContainer) ContainerFactory.getDefault()
.createContainer("ecf.call.skype"); //$NON-NLS-1$
*. . .*
SkypeCallContainerAdapter callcontainer =
new SkypeCallContainerAdapter(container);
ID target = IDFactory.getDefault().createID(
"ecf.namespace.skype.user", number);
callcontainer.sendCallRequest(target, new ICallSessionListener()
{*. . .*});
As I say, that works, but is not as generic as I would like. At this
point, I need to work on the *. . . *in the body of the
ICallSessionListener. It needs to return status messages from the Skype
API to the calling thread so it can detect error or end of call. Right
now, it is not doing that very well. And then, I need to test out the
new interface that Scott did to enable sending DTMF tones to Skype via
the CallSessionContainerAdapter.
Difficulties aside, using the ECF provider to access the Skype4Java code
has been a rewarding experience, and I think much more quickly done than
if I were trying to use Skype4Java directly. Thanks to ECF for doing
such a nice job on it. I think being able to share across Eclipse
projects is really valuable.
-- Mike Greenawalt