[OGo-Developer] Re: CTI In General [Was: Re: [OGo-Users] OGo & Asterisk]
Sebastian Reitenbach
developer@opengroupware.org
Sun, 16 Dec 2007 11:44:32 +0100
Hi,
users@opengroupware.org wrote:
> > Been following this asterisk CTI dialer thread with great enthusiasm. I
can
> > really use this in the future and will start to build up a server next
week
> > when I get some time. Just a question. What are the plans for
implementing
> > missed calls and the resulting messages? Will these be accessible via
the UI
> > some how? I know that with asterisk you can do many things with message,
just
> > wondering what the current state of implementation is or in what
direction
> > are you moving?
>
> I'm also interested in CTI, but not specifically Asterisk. Perhaps we
> can extend the CTI capabilities of OGo in a generic fashion like the
> current CTI support?
>
> Currently the CTI support is via an 'interface' that just declares two
> methods -
> - (BOOL)canDialNumber:(NSString *)_number;
> - (BOOL)dialNumber:(NSString *)_number fromDevice:(NSString *)_device;
> - and just supports poking the PBX to make a call from within OGo.
>
> If someone is developing Asterisk support for more features [preferably
> as a bundle] I'd like to see it not welded to Asterisk but use some
> interface to inter-operate with the "PBX"; that way it could also
> potentially support other systems.
>
> For instance, we have Nortel PBXs that use "Call Pilot" for messaging
> and voice mail. "Call Pilot" offers a [really half-baked] Outlook
> plugin that provides the ability to call contacts (like the OGo CTI) as
> well as a [half-baked] "Unified Messaging". We've decoded /
> reverse-engineered most of the functionality / protocol of that
> solution. It is one of my projects for next year to try and make a CTI
> bundle for OGo that supports Nortel systems.
>
> <aside>Lucky for me the protocol is largely based on IMAP and uses a
> bunch of X- commands to invoke PBXish operations - messaging as in
> checking for new messages is straight IMAP.</aside>
So for just e.g. name it NortelDialer.cti this should be easy, and can just
be put aside. From my point of view, the CTI bundle api is just sufficient,
so no need to change there sth. besides adding new Dialer bundles.
>
> Maybe we could agree on an extended CTI interface so we don't duplicate
> work? (And perhaps this is more of a developers@ question).
yeah, therefore taking over this discussion to the developer@ list.
I am already unlucky with the name, as it not only supports Asterisk, but
also works with Callweaver very well. OK, they share the same API,
but that might change over the time.
So I already thought about a more generic name for the UI, e.g. change it
from AsteriskUI to PBXUI or TelephonyUI, sth. like that.
I started the whole thing quite some time ago, my objective-c/webobjects
skills where at a low level at the beginning. So there is very likely code
in the actual AsteriskUI that will hurt your eyes. Therefore rewriting it
to add wrapper classes to be able to use different PBX backends is
likely a good idea. Well, I have no idea how to do that in a "good" way.
I'd start taking a look to find out how e.g. the CTI Dialers are working,
and try to copy that mechanism for the PBXUI stuff.
So if someone wants to join the effort, I'd highly appreciate any help ;).
For joint work, I think it would be great to have it in SVN, below Misc,
with some write permissions for me there, and anybody else who wants to work
on the PBXUI.
>
> Such as [this is off the cough] -
> - (BOOL)newMesssages;
> - (NSArray)listMessages;
> - (UnifiedMessage)getMessage;(NSString *)_messageId;
> - (BOOL)deleteMessage:(NSString *)_messageId;
> - (BOOL)forwardMessage:(NSString *)_messageId
> toExtension:(NSString *)_extensionId;
>
> And maybe do something the same for CDR? Just encapsulate core /
> fundamental CDR and unified messaging support. CDR seems like it could
> be pretty simple as it is a read-only thing.
>
> This way (a) nothing would need to effect OGo Core and we could
> potentially support multiple system.
I think integrating the whole CDR stuff into the PBXUI first, keeping it as
a separate bundle, makes sense.
Does the Nortel PBX also record these details to a database?
or do you have to query it via the protocol you mentioned?
However, I take a look at all that stuff I implemented already, and will
propose a list of high level methods for the wrapper class for further
discussion. Or should such a stuff be implemented as a @protocol ?
Just the problem I have with the Asterisk Management API is, that the things
I've implemented up to now follow the same output scheme, easy to parse.
There are plenty of more possibilities, but the other commands and their
output follow the output from the Asterisk command line interface. So for
every additional command an own parser has to be written, therefore I got a
bit stuck with the AsteriskUI at that point. In my eyes it would be cleaner
to tune the Asterisk to make the missing commands follow the AGI output
scheme too, but I never took a closer look at that route. However, sth.
needs to be done there.
>
> My ultimate dream would be to see a IMAP<->DAV gateway [1] in ZideStore
> and a UnifiedMessage<->DAV gateway so apps could use a "real" Unified
> Message store to at least see a user's messages. The latter should be
> relatively easy if there is a Unified Messaging bundle/interface. But I
> suppose that may be a ways off [ first I have to get some *@&$*&^@$@$
> content to appear in a ^@&^@#*&@# ZideStore folder ].
>
> <aside>The current model of something-plugs-into-MUA-x is both flaky and
> limiting, something on the sever would way more useful. I don't really
> want to built support for the Unified Messaging architecture into
> multiple places - Consonance, our intranet, our business system, etc....
> and this seems like groupware-ish functionality to me.</aside>
for sure.
kind regards
Sebastian