Ascendis Caller ID in sip environment?

Use this forum to request and discuss features you would like to see added to Ascendis Caller ID.
Post Reply
dpperdue
Posts: 1
Joined: Tue Feb 24, 2009 12:32 am
Location: Greensboro, NC, USA

Ascendis Caller ID in sip environment?

Post by dpperdue »

Hello:

I bought Ascendis Caller ID in June of 2006 and love it. However, I can no longer use it, due to a change in the
infrastructure of my phone system, and have had a license hanging around for a couple of years with nothing much to do.

When I originally registered Ascendis Caller ID, I had Vonage with it's supplied analog telephone adapter (ATA), and was
running the software on an old 600mhz Compaq Deskpro, with an ancient U.S. Robotics 33.6 isa voice modem, because it was the
only modem in the house that supported CID type 1.
Now, however, I no longer have any analog connections. My phone system is running on a remote Asterisk server in a datacenter
in Atlanta, and all the phones in the house are non-analog sip phones, I.E. Snom 320 and m3, Polycom IP-320, Grandstream
BT101, various softphones when needed, and the sip client on my Nokia e71 smartphone.
I also have a Zoom 5801 ATA, but this is not on any of my personal extensions, so I can't use it to send information to
Ascendis from any of my DIDs, or calls from local extensions on my system, or from remotely connected PBXs of which I am a
part.
I realize I could buy a two FXS port ATA and register another extension on the PBX just for Ascendis, but I know the
technology exists to take an unnecessary modem out of the equation.

I searched around for similar server/client methods of blasting CID info from my Asterisk box to multiple Windows machines in
the house. I found a tapi driver for Windows, called siptapi, which would replace the modem with a sip stack with credentials
that I could then implement in my Asterisk dial plan, which looked promising. However, it doesn't support incoming call
notification, unless you buy the highly expensive ?1000 commercial license.
I should also mention that I am blind, and there were many other solutions that might have done the trick, but were either
incredibly hard/inconvenient for my assistive technology to read, or never quite did the job in the first place.
The only solution I found that actually worked for me, with very minimal configuration on my part, though it was much simpler
than Ascendis Caller ID, was Yac (http://sunflowerhead.com/software/yac/) and a script that uses gnu netcat to echo incoming
CID info to a specific TCP address and port, which was then received by a client on a windows machine, logged to a text file,
and displayed as a tool tip.
More information can be found here:
http://www.voip-info.org/wiki/view/Aste ... tification
At the time, my PBX was local, and I could simply include all the internal IPs to which I wished to send CID info, but now my
phone system is remote, and it's harder, less practical, though not impossible to do with the current configuration.
To put it lightly, I'd much rather use Ascendis Caller ID with one local server that connects to the phone system, rather
than dealing with multiple ports, or possibly even multiple public IP addresses, which is really not necessary, or fun, for
that matter.

I'm wondering if it is possible to:
1. have Ascendis Caller ID server emulate a yac client in place of a modem, so that any yac compatible application can send properly
formatted data to Ascendis Caller ID for further processing. Apparently, the YAC protocol specifications are pretty easy to implement.
2. emulate a whozz calling? Ethernet device that connects to Asterisk, or have Asterisk itself emulate such a device, which
Ascendis Caller ID can then use.
or
3. deploy a similar concept as siptapi (http://www.ipcom.at/index.php?id=561) that actually works, I.E. create an extension
on the PBX which forwards to Ascendis Caller ID via a virtual modem, and does nothing other than send CID and ring, although, given this method,
all calls would probably show up as "missed".

I'd really like to be able to use Ascendis Caller ID in an all-sip environment, and really miss the convenient interface for
retrieving caller information.

I read somewhere that Ascendis Caller ID would eventually include sip support, and that it was in a beta release, but then
was later removed. What's the status on that, and what was it's intended use?

P.S. No, I am not an I.T. professional, justt an end-user who was bored with conventional telecommunications.
Bill Root
Site Admin
Posts: 1025
Joined: Mon Jan 19, 2004 1:29 pm
Location: Perrysburg, OH
Contact:

Re: Ascendis Caller ID in sip environment?

Post by Bill Root »

Hello dpperdue,

To answer your specific questions:
dpperdue wrote:1. have Ascendis Caller ID server emulate a yac client in place of a modem, so that any yac compatible application can send properly formatted data to Ascendis Caller ID for further processing. Apparently, the YAC protocol specifications are pretty easy to implement.
Ascendis Caller ID does not currently implement any YAC functionality. One user suggested adding YAC server functionality, but YAC client emulation is a new one.
2. emulate a whozz calling? Ethernet device that connects to Asterisk, or have Asterisk itself emulate such a device, which Ascendis Caller ID can then use.
I'm not aware of any Whozz Calling? Ethernet Link emulators. I am not familiar with Asterisk, but I assume this is possible, but it wouldn't be the easiest solution. (See below.)
3. deploy a similar concept as siptapi (http://www.ipcom.at/index.php?id=561) that actually works, I.E. create an extension on the PBX which forwards to Ascendis Caller ID via a virtual modem, and does nothing other than send CID and ring, although, given this method, all calls would probably show up as "missed".
Years ago another customer tried, unsuccessfully I believe, to get Ascendis Caller ID working with Asterisk and sipTapi. I made at least one change to ACID to try to accommodate Asterisk/sipTapi's weirdness, but it was insufficient.
I read somewhere that Ascendis Caller ID would eventually include sip support, and that it was in a beta release, but then was later removed. What's the status on that, and what was it's intended use?
We spent a lot of time trying to support SIP within Ascendis Caller ID, and tried at least four different SIP libraries (some commercial, some open source). All failed to provide the required functionality, and most seemed flaky and unreliable.

Another SIP issue is that it appears that some/most SIP servers only expect a client to be registered once, so if ACID registers with the server, the calls will not be sent elsewhere (such as to a SIP phone or PBX). I'm not a SIP expert and would be happy to wrong about this, but our testing and investigations suggested this.

Ultimately we implemented Skype support instead, as the Skype library works.


Instead of emulating a modem or Whozz Calling? device, it would probably be easier to emulate an Ascendis Caller ID server. The version 1 network protocol is pretty simple (although it's incoming-only). Once a connection is made, the server sends call status messages as calls come in. You can watch the network messages by setting up a server and client and enabling network logging. To get a version 1 sample, the client would have to be running version 1.x.

Here is the version 1 client log from an incoming call:

Code: Select all

2/25/2009 1:16:37 PM - Real-time client received message "Welcome to Caller ID" from 192.168.0.11 on port 62965
2/25/2009 1:16:37 PM - Real-time client received message "VERSION 2.1.2.0" from 192.168.0.11 on port 62965
2/25/2009 1:17:11 PM - Real-time client received message "NEW_CALL "DELL-D830:Fake Device"" from 192.168.0.11 on port 62965
2/25/2009 1:17:15 PM - Real-time client received message "RING "DELL-D830:Fake Device"" from 192.168.0.11 on port 62965
2/25/2009 1:17:19 PM - Real-time client received message "DATE_TIME "DELL-D830:Fake Device" "02/25/2009 01:16:42 pm"" from 192.168.0.11 on port 62965
2/25/2009 1:17:20 PM - Real-time client received message "CALLER "8005551212" "Fake Caller" "Fake" "Caller"" from 192.168.0.11 on port 62965
2/25/2009 1:17:20 PM - Real-time client received message "CALLER_ID "DELL-D830:Fake Device" "Fake Caller" "8005551212"" from 192.168.0.11 on port 62965
2/25/2009 1:17:23 PM - Real-time client received message "RING "DELL-D830:Fake Device"" from 192.168.0.11 on port 62965
2/25/2009 1:17:27 PM - Real-time client received message "END_CALL "DELL-D830:Fake Device"" from 192.168.0.11 on port 62965
Here is the version 2 server log for the incoming call:

Code: Select all

2/25/2009 1:16:08 PM - accepted connection from 192.168.0.23 on port 62965 (real time)
2/25/2009 1:16:08 PM - Version command received as "VERSION 1.9.2.0"
2/25/2009 1:16:08 PM -  Detected version "1.9.2.0"
2/25/2009 1:16:42 PM - Real-time server sent message "NEW_CALL "DELL-D830:Fake Device"" to clients 192.168.0.23
2/25/2009 1:16:46 PM - Real-time server sent message "RING "DELL-D830:Fake Device"" to clients 192.168.0.23
2/25/2009 1:16:50 PM - Real-time server sent message "DATE_TIME "DELL-D830:Fake Device" "02/25/2009 01:16:42 pm"" to clients 192.168.0.23
2/25/2009 1:16:50 PM - Real-time server sent message "CALLER "8005551212" "Fake Caller" "Fake" "Caller"" to clients 192.168.0.23
2/25/2009 1:16:50 PM - Real-time server sent message "CALLER_ID "DELL-D830:Fake Device" "Fake Caller" "8005551212"" to clients 192.168.0.23
2/25/2009 1:16:54 PM - Real-time server sent message "RING "DELL-D830:Fake Device"" to clients 192.168.0.23
2/25/2009 1:16:58 PM - Real-time server sent message "END_CALL "DELL-D830:Fake Device"" to clients 192.168.0.23
In short:
- client connects to server
- server sends "Welcome to Caller ID"
- client can send "VERSION" + version number
(in which case server responds with server version number)

Then, when a call comes in, the server sends:
- "NEW CALL" + <server machine name>:<device name>
- "RING" (when phone rings)
- "DATE_TIME" + <server machine name>:<device name> + date + time
- optional "CALLER" + <raw phone number> + <raw name> + <first name> + <last name>
- "CALLER_ID" + <server machine name>:<device name> + <raw name> + <raw phone number>
- "END_CALL" + <server machine name>:<device name>

The above is not a spec, so follow the actual log instead. But it should roughly explain the format.

Some messages are only sent if the client version is high enough. It may be sufficient to send only the NEW_CALL, RING, CALLER_ID, and END_CALL messages.

It may be relatively easy to get Asterisk to send those messages to ACID when a call comes in, but I suspect the initial connection and keeping the socket open would be harder. A separate script or application could do this.

Another option would be small YAC client that acted as an ACID server.


Finest regards,
Bill Root
Ascendis Software
Bill Root
Site Admin
Posts: 1025
Joined: Mon Jan 19, 2004 1:29 pm
Location: Perrysburg, OH
Contact:

Re: Ascendis Caller ID in sip environment?

Post by Bill Root »

Hi dpperdue,

We just released a new beta version of Ascendis Caller ID (2.1.2.1) with YAC client and server support. I hope this lets you integrate Ascendis Caller ID with your SIP phone system without a modem.

The YAC client and server are configured in the Options window, on the Network page, when in advanced mode.

Finest regards,
Bill Root
Ascendis Software
Post Reply