Index: channels/chan_skinny.c =================================================================== --- channels/chan_skinny.c (revision 55375) +++ channels/chan_skinny.c (working copy) @@ -993,6 +993,7 @@ char name[80]; char id[16]; char version_id[16]; + char vmexten[AST_MAX_EXTENSION]; int type; int registered; int lastlineinstance; @@ -2046,6 +2047,8 @@ ast_parse_allow_disallow(&d->prefs, &d->capability, v->value, 0); } else if (!strcasecmp(v->name, "version")) { ast_copy_string(d->version_id, v->value, sizeof(d->version_id)); + } else if (!strcasecmp(v->name, "vmexten")) { + ast_copy_string(d->vmexten, v->value, sizeof(d->vmexten)); } else if (!strcasecmp(v->name, "nat")) { nat = ast_true(v->value); } else if (!strcasecmp(v->name, "callerid")) { @@ -3107,7 +3110,32 @@ case STIMULUS_VOICEMAIL: if (skinnydebug) ast_verbose("Received Stimulus: Voicemail(%d)\n", instance); - /* XXX Find and dial voicemail extension */ + c = skinny_new(l, AST_STATE_DOWN); + if(c) { + sub = c->tech_pvt; + transmit_callstate(s, l->instance, SKINNY_OFFHOOK, sub->callid); + if (skinnydebug) + ast_verbose("Attempting to Clear display on Skinny %s@%s\n", l->name, d->name); + transmit_displaymessage(s, NULL); /* clear display */ + transmit_tone(s, SKINNY_DIALTONE); + transmit_selectsoftkeys(s, l->instance, sub->callid, KEYDEF_OFFHOOK); + + + if (ast_strlen_zero(d->vmexten)) { + ast_log(LOG_WARNING, "Attempted voicemail, but no voicemail number found.\n"); + return 0; + } + if (!ast_ignore_pattern(c->context, d->vmexten)) { + transmit_tone(s, SKINNY_SILENCE); + } + ast_copy_string(c->exten, d->vmexten, sizeof(c->exten)); + if (ast_pthread_create(&t, NULL, skinny_newcall, c)) { + ast_log(LOG_WARNING, "Unable to create new call thread: %s\n", strerror(errno)); + ast_hangup(c); + } + } else { + ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); + } break; case STIMULUS_CALLPARK: if (skinnydebug) Index: configs/skinny.conf.sample =================================================================== --- configs/skinny.conf.sample (revision 55375) +++ configs/skinny.conf.sample (working copy) @@ -74,6 +74,7 @@ ;nat=yes ;callerid="Customer Support" <810-234-1212> ;mailbox=100 +;vmexten=8500 ; Extension to dial to get into the voicemail system ;context=inbound ;linelabel="Support Line" ; Displays next to the line ; button on 7940's and 7960s