I'm posting here in case anyone else runs into this and needs some help. I'll probably update the voip-info Wiki pages on Toshiba integration in a bit. Asterisk 1.6 makes things a bit easier than what is on that page.<br>
<br>I'm integrating an Asterisk server with a Toshiba Strata system at my office. Right now, it is driving some VoIP phones (Cisco ATAs with analog phones plugged into them) at a neighboring building (I work for a great company which actually temporarily moved us into another building when the air conditioning broke in ours), to provide phone service during this "mini disaster" - with a Wifi connection to the HQ building and VoIP, we had full services within a day or so, rather than weeks if we had waited for the telephone company. We're now moving the IT department over to the system (Polycom IP450s) permanently, as it has worked so well with the Cisco ATAs. Next we plan on replacing the voicemail/auto-attendant box on the Toshiba with Asterisk. Following that, the next step will be to eliminate the incoming POTS lines into the Toshiba and replace them with an ISDN PRI line going into the Asterisk box. Finally, we expect a slow but study migration of users over to VoIP.<br>
<br>The connection between Asterisk and the Toshiba is a set of analog phone lines (the Toshiba provides dialtone). Later, I'll need additional lines where the Asterisk box generates dialtone (when we move to the ISDN) as well.<br>
<br>I needed a way of having a Toshiba extension ring the appropriate phone on the Asterisk box. It turns out that the best way to do this is to tell the Toshiba that the Asterisk box is a voicemail server. You need to set some stuff up on the Toshiba to do this. I set up the box in VM Group 2 (group 1 is the legacy VM), and as hunt group 851/901 (users dial 851, but Toshiba knows it as 901). Your configuration might be a bit different. Here's what I did on the Toshiba:<br>
<br>- All analog ports for the Asterisk box need to be set up in Toshiba Program 31 with LEDs 06 (VM Group 2), LED 15 (Toshiba Strata VM Integration - send A/D tones), LED 16 (Receive VM ID code), LED 17 (End to End DTMF passing), and LED 18 (Privacy Override Blocking). The hunt group needs to be set up with Toshiba program *40.<br>
<br>This means that any Toshiba extension forwarded (either after no answer as a VM box is configured or via standard forward-all-calls) to the Asterisk box (x851) will cause the call to send "91xxx" (xxx is the called extension, the one doing the forwarding) to the Asterisk box, after the Asterisk box answers via DTMF. It sends "92xxx" if you hit the "message" light on a Toshiba phone when it is lit. For some unknown reason, I've also seen "#" or "##" sent before or after the extension 91xxx/92xxx code - I couldn't tell you what that means, I just strip them in the Asterisk dialplan. The Asterisk box can turn the message waiting indicator on/off by sending #63xxx (xxx = extension with the light) or #64xxx.<br>
<br>If x851 is called directly, no DTMF is sent in the first few seconds.<br><br>When the Toshiba system disconnects one of these analog lines (the Toshiba/PTSN user hung up), a DTMF "D" is sent. When an outbound call is made from Asterisk to a Toshiba extension, the Toshiba sends a DTMF "A" when the call is answered. The "D" tone in particular is important, because the Toshiba's analog extension cards don't do any other form of disconnect supervision.<br>
<br>To detect the "D" tone (and semi-mute the "A" tone), I set up two features in features.conf.<br><br>toshibahangup => D,self,Hangup<br>toshibaanswer => A,peer/callee,Noop<br><br>One thing I discovered was that the "toshibahangup" feature, when enabled, would only work for typical calls that were bridged. They would not work for things like voicemail. The voip-info wiki suggests using a meetme conference that listens for "D", but I think using the feature is cleaner - when it works.<br>
<br>So, to make the call bridged, I send it across a dhadi "local" span. My DAHDI configuration - system.conf:<br><br>
fxsks=1-8<br>
<br>
dynamic=loc,1:0,31,0<br>
dynamic=loc,1:1,31,0<br>
<br>
bchan=9-23,25-39<br>
dchan=24<br>
<br>
bchan=40-54,56-70<br>
dchan=55<br>
<br>
Channels 1-8 are the analog lines to the Toshiba. I then set up two "E1" spans (they aren't physical spans, but all stay within the system). Basically, channel 9 ends up connected to channel 40.<br><br>Now, when a call comes in, if digits are provided early, I dial out via one virtual E1 span into the other one. I listen for the disconnect/answer tones on the side facing the Toshiba. The other side connects to the extension, which immediately answer()'s and then dial()'s the destination extension. This makes Asterisk actually bridge the call between the Toshiba and the fake E1, letting it hear the DTMF and process it. Now the "D" tones work and the "A" tones are mostly muted. Outbound calls work a similar way, just in reverse.<br>
<br>If nothing is dialed by the Toshiba on an incoming call, it goes to the automated attendant in Asterisk. I don't send this over the fake E1 spans, as some options generate a transfer back to the Toshiba system, which is best done with a "blind" transfer on the Toshiba side - something I'd have trouble doing if I sent it over the fake E1 span. Example: <br>
<br>exten => 850,1,Flash()<br>exten => 850,n,SendDTMF(850)<br>exten => 850,n,Hangup()<br><br>The Toshiba MWI lights are set via an external notify script from voicemail, that initiates a call with the proper codes.<br>
<br>Things I'd like, that I don't have, with this current integration are:<br><br>1) Knowing who is calling into the Toshiba, when the call is forwarded by the Toshiba. Basically, caller ID.<br>2) Complete elimination of the "A" tone, which doesn't seem possible if the "D" tone is still sent.<br>
<br>I'd be interested in hearing how others may have done this, if you have experience with this.<br><br>OT: The company I work for is hiring! We're hiring a Senior System Administration and several software engineering positions in Denver.<br>
Visit: <a href="http://www.localmatters.com/careers">http://www.localmatters.com/careers</a><br><br>-- <br>Joel Maslak<br>