context default { include office_extensions; } context office_extensions { include standard_extensions; "411" => directory; "456" => conference; "519" => bridge; } context standard_extensions { "_1XX" => standard_extensions; } context long_distance { include local; "_1NXXNXXXXXX", "_NXXNXXXXXX" => long_distance; } context local { include default; include parkedcalls; "_NXXXXXX" => local_call; "_1800NXXXXXX", "_1888NXXXXXX", "_1877NXXXXXX", "_1866NXXXXXX" => tollfree_call; } ..... Above is dial plan configuration (which is a set of contexts) ..... ..... and, below is dial plan execution (which is a set of extensions) ..... extension long_distance dialout(extension); extension local_call dialout(extension); extension tollfree_call dialout(extension); void dialout( string extension, int timeout ) { // er this is where i stopped today.... SetCallerID(1234567890); SetCIDName(Big Company); } extension standard_extensions { string status; status = Dial( "SIP/exten".extension, 20, "t" ); switch status { case "ANSWER" { } case "BUSY" { status = Voicemail("b", extension ); } default { status = Voicemail("u", extension ); } } // Status gotten from voicmail if status == "a" VoicemailMain( extension ); // Go to the default context so that you can still dial something else. goto_context( default ); } extension directory Directory(default); extension conference Meetme(4569); extension bridge Dial(IAX2/aouaoeu@asdfasdf/100);