public void Run(params string[] args) { IVR ivradd = PhoneSystem.Root.GetTenants()[0].CreateIVR(args[1]); ivradd.Name = "TestIVR"; ivradd.PromptFilename = "empty.wav"; ivradd.Timeout = 30; ivradd.TimeoutForwardType = IVRForwardType.VoiceMail; ivradd.TimeoutForwardDN = PhoneSystem.Root.GetTenants()[0].GetExtensions()[0]; ivradd.Save(); Console.WriteLine(ivradd); }
public void Run(params string[] args) { PhoneSystem ps = PhoneSystem.Root; IVR ivr = ps.GetDNByNumber(args[1]) as IVR; Extension ext = ps.GetDNByNumber(args[2]) as Extension; String filename; if (ivr == null || ivr.GetActiveConnections().Length != 0) { Console.WriteLine("ERROR: IVR " + args[1] + " does not exist or currently active"); return; } if (ext == null || !ext.IsRegistered || ext.GetActiveConnections().Length != 0) { Console.WriteLine("ERROR: Extension " + args[2] + " does not exist, is busy or is not registered"); return; } bool checkUpdateOfFile = false; if (args.Length < 4) { filename = Path.GetFileNameWithoutExtension(ivr.PromptFilename).ToLowerInvariant(); } else { filename = args[3].ToLowerInvariant(); } String fileNameToRecord = Path.Combine(ps.GetParameterByName("IVRPROMPTPATH").Value, filename + ".wav"); if (args.Length > 3 && File.Exists(fileNameToRecord) && Path.GetFileNameWithoutExtension(ivr.PromptFilename).ToLowerInvariant() != filename) { Console.WriteLine("ERROR: File already exist but not selected for IVR:" + ivr.Number + "(" + ivr.Name + ")"); return; } DateTime filedt = DateTime.UtcNow; if (File.Exists(fileNameToRecord)) { checkUpdateOfFile = true; filedt = File.GetLastWriteTimeUtc(fileNameToRecord); } Dictionary <String, String> a = new Dictionary <string, string>(); a["extension"] = args[2]; a["filename"] = fileNameToRecord; PBXConnection pbx = Utilities.CreatePbxConn(); pbx.MakeCall("RecordFile", a); Console.Write("Wait for the call."); for (int i = 0; i < 20 && ext.GetActiveConnections().Length == 0; i++) { Console.Write("."); Thread.Sleep(1000); } if (ext.GetActiveConnections().Length == 0) { Console.WriteLine("FAILED"); return; } Console.WriteLine("Done"); Console.Write("Wait for the end of the call."); while (ext.GetActiveConnections().Length > 0) { Console.Write("."); Thread.Sleep(1000); } Console.WriteLine("Done"); if (checkUpdateOfFile) { Console.Write("Waiting for file update."); for (int i = 0; i < 20 && File.GetLastWriteTimeUtc(fileNameToRecord) == filedt; i++) { Console.Write("."); Thread.Sleep(1000); } if (File.GetLastWriteTimeUtc(fileNameToRecord) == filedt) { Console.WriteLine("FAILED"); return; } else { Console.WriteLine("Done"); } } else { Console.Write("Waiting for new file."); for (int i = 0; i < 20 && !File.Exists(fileNameToRecord); i++) { Console.Write("."); Thread.Sleep(1000); } if (!File.Exists(fileNameToRecord)) { Console.WriteLine("FAILED"); return; } else { Console.WriteLine("Done"); } } ivr.PromptFilename = filename + ".wav"; ivr.Save(); Console.WriteLine("Prompt successfuly changed on IVR:" + ivr.Number + "(" + ivr.Name + ")"); }