Summary:ASTERISK-05790: [post 1.2][patch] SMDI message desk support for Asterisk
Reporter:Matthew Nicholson (mnicholson)Labels:
Date Opened:2005-12-06 18:03:43.000-0600Date Closed:2008-01-15 16:36:37.000-0600
Versions:Frequency of
Environment:Attachments:( 0) ast_smdi2-svn7369.diff
( 1) ast_smdi2-svn8040.diff
( 2) ast_smdi3-svn8040.diff
( 3) ast_smdi4-svn8040.diff
( 4) ast_smdi5-1.2.1.diff
( 5) ast_smdi5-1.2.1-full.diff
( 6) ast_smdi5-svn8040.diff
( 7) ast_smdi6-1.2.2.diff
( 8) ast_smdi6-1.2.2-good.diff
( 9) ast_smdi6-svn8193.diff
(10) ast_smdi7-1.2.2.diff
(11) ast_smdi7-svn8193.diff
(12) ast_smdi8-svn9118.diff
(13) ast_smdi9-svn9118.diff
(14) ast_smdi-svn7369.diff
Description:This patch enables asterisk to act as an SMDI message desk. It has only been lightly tested so please test and post your results. SMDI switch side functionallity is not included in this patch.

This patch also includes a patch to astobj.h from bug ASTERISK-5167.


I can generate patches for asterisk 1.2 if requested.
Comments:By: Matthew Nicholson (mnicholson) 2005-12-06 18:09:10.000-0600

This should not be [Experimental Features] ACD.  It should probably go under [Experimental Features] Core Asterisk or something.  Sorry.

Here is some more information on exactly how this patch works.  The patch includes a res_smdi.c module which other modules should hook into for their SMDI needs.  Hooks for chan_zap and app_voicemail to recieve SMDI data and send MWI indication are included in the patch.  All changes are #ifdef'ed (#ifdef WITH_SMDI).

See the included doc/README.smdi for more details on how to configure this.

By: Matt O'Gorman (mogorman) 2005-12-09 14:51:45.000-0600

done for ya

By: Olle Johansson (oej) 2006-01-03 05:34:32.000-0600

What is SMDI?

By: Matt O'Gorman (mogorman) 2006-01-04 09:22:29.000-0600

i am sure matt could explain it better, but smdi is a way for hooking into voicemail servers over a serial connection.  http://en.wikipedia.org/wiki/SMDI has a better defenition.


By: Olle Johansson (oej) 2006-01-04 09:25:12.000-0600

Darn. I should not have thrown away my RS232 reference card.

By: Kyle Haefner (khaefner) 2006-01-04 12:45:36.000-0600

Nice work!, I'm definitely going to apply this to my dev box.  I wrote an SMDI interface for asterisk, but took an agi approach, it'll be nice to see SMDI fully integrated with *!

By: Matthew Nicholson (mnicholson) 2006-01-12 18:44:45.000-0600

Ok here is an update patch that adds an additional switch type (Lucent/AT&T G3) and I fixed a bug regarding not setting the switchtype.

By: Matthew Nicholson (mnicholson) 2006-01-13 11:57:28.000-0600

Ok, this patch (ast_smdi3) has not been tested yet (testing today hopefully).  It includes changes to the SMDI message parsing code to eliminate the need for the switchtype option.  It also contains a message expiry time so that old smdi messages in the message queue go away after some time.  This should help address a problem I have been seeing where asterisk gets out of sync with the switch.

By: Matthew Nicholson (mnicholson) 2006-01-13 15:23:15.000-0600

The previous patch does not compile.  I will attach an updated tested patch shortly.

By: Matthew Nicholson (mnicholson) 2006-01-17 18:35:25.000-0600

Note: in order to use the ast_smdi5-1.2.1-full.diff you need the astobj_queue.diff.txt from bug ASTERISK-4925310.

By: Matthew Nicholson (mnicholson) 2006-01-18 18:07:23.000-0600

New SMDI code versions (v6).  This time the patch for 1.2.2 should be complete (you don't need the patch from bug ASTERISK-4925310 as it is included).  This version fixes a bug where after sending MWI indication, no more messages would be recieved.

By: Matthew Nicholson (mnicholson) 2006-01-20 15:58:06.000-0600

Ok.  New version.  This fixes a bug that was reintroduced in the code in one of the updates.  I finally got the patch against 1.2 right the first time :).

By: Jim Van Meggelen (jimvanm) 2006-01-21 00:27:35.000-0600

OOOOh this is good. This is VERY good! Asterisk has been needing SMDI for soooo long. This is going to open a lot of doors, especially for legacy PBX migration stuff. Any idea how many old voicemails are out there that the manufacturers no longer support?

I'm all giddy!

By: John Todd (jtodd) 2006-01-21 00:34:17.000-0600

I'm not clear on "switch side functionality is not included" - does this mean that this is uni-directional?  (i.e.: the switch can tell Asterisk about SMDI events, but Asterisk cannot post MWI information back to the switch?)   It seems that is not the description in the voicemail.conf.example diffs, but I can't quite figure out if this bi-directional or uni-directional communications with an SMDI PBX.

By: Matthew Nicholson (mnicholson) 2006-01-23 09:16:29.000-0600

Sorry if that was not clear.  All MD (Message Desk) functionality is included, including the ability to send MWI indication (that one took a while to get right).  What is missing is the ability for Asterisk to behave as the switch and use an SMDI message desk to store voicemails.  Using Asterisk as the message desk works just fine.

By: John Todd (jtodd) 2006-01-31 14:22:25.000-0600

I have an offer from Mark Vince at AT&T to test with his Audix/Definity systems if this can be made to work via IP. Contact me for his email address, or he'll chime in on this ticket...

In fact, I've seen more SMDI implementations over IP than over serial.  Don't get me wrong - the serial version of this is really cool, and is the hardest method to solve.  Do you have any docs on the IP based SMDI interactions?  How difficult would that be to integrate into the patch?

By: John Todd (jtodd) 2006-01-31 14:24:00.000-0600

Actually, he says he has a serial interface on the Definity so he can test with this.

By: Matthew Nicholson (mnicholson) 2006-01-31 15:02:54.000-0600

I was not aware that SMDI was done over IP (makes sense though...).  I would need more information about how this actually works before I could tell you if it would work or not.

By: John Todd (jtodd) 2006-01-31 19:29:40.000-0600

Well, for what it's worth the "old" (serial) interface spec is the Telcordia (Bell Labs) specification:

TR-NWT-000283: Simplified Message Desk Interface (SMDI)

There is a TCP and serial version of the software, by David Sugar. (of Bayonne fame).  However, it's about 7 years old which means that it's all but impossible to find.  I did find a copy - get it now before it vanishes into the night.

This is an APE derived class for C++.  I don't know how useful it will be other than an example, but I assume it's been made to work.  I think you can find the source here:


By: Matthew Nicholson (mnicholson) 2006-02-01 10:09:08.000-0600

This appears to be exactly the same, except insted of a serial port it uses, a network socket.

By: John Todd (jtodd) 2006-02-01 18:19:51.000-0600

That's good news.  I know that most of the SMDI-capable systems that exist on the market that I've read about use TCP/IP as the transport mechanism as the preferred method of SMDI delivery.   Sorry, I can't find the list of examples right now - about 20 things just got piled on me so I'm lucky just to make this entry.

By: Matthew Fredrickson (mattf) 2006-02-02 14:15:46.000-0600

Matt, if you can put an updated version up, I'll see about getting it in.

By: Matthew Nicholson (mnicholson) 2006-02-02 15:36:50.000-0600

New patch.  This patch is just synced with svn-trunk and is otherwise the same as ast_smdi7.

By: Matthew Nicholson (mnicholson) 2006-02-02 17:40:45.000-0600

ast_smdi9 includes more information for debugging MWI status change errors.

By: Matthew Fredrickson (mattf) 2006-02-10 14:50:56.000-0600

Added to trunk

By: Digium Subversion (svnbot) 2008-01-15 16:36:37.000-0600

Repository: asterisk
Revision: 9423

U   trunk/Makefile
U   trunk/apps/Makefile
U   trunk/apps/app_voicemail.c
U   trunk/channels/Makefile
U   trunk/channels/chan_zap.c
A   trunk/configs/smdi.conf.sample
U   trunk/configs/voicemail.conf.sample
U   trunk/configs/zapata.conf.sample
A   trunk/doc/smdi.txt
U   trunk/include/asterisk/callerid.h
A   trunk/include/asterisk/smdi.h
U   trunk/res/Makefile
A   trunk/res/res_smdi.c

r9423 | mattf | 2008-01-15 16:36:36 -0600 (Tue, 15 Jan 2008) | 2 lines

Add smdi support for asterisk (see doc/smdi.txt for config info) (ASTERISK-5790)