Index: channels/chan_skinny.c =================================================================== --- channels/chan_skinny.c (revision 58576) +++ channels/chan_skinny.c (working copy) @@ -999,6 +999,7 @@ char name[80]; char id[16]; char version_id[16]; + char vmexten[AST_MAX_EXTENSION]; int type; int registered; int lastlineinstance; @@ -2132,6 +2133,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")) { @@ -3207,7 +3210,31 @@ 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) { + ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); + } else { + l->hookstate = SKINNY_OFFHOOK; + sub = c->tech_pvt; + transmit_callstate(s, l->instance, l->hookstate, 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); + } + } break; case STIMULUS_CALLPARK: if (skinnydebug) Index: configs/skinny.conf.sample =================================================================== --- configs/skinny.conf.sample (revision 58576) +++ 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