- Joined
- Oct 23, 2014
- Messages
- 3
- Reaction score
- 2
Hello,
I'm having an issue with the CreateExtension API call after moving to v15.5
I can create extensions using this method but they are corrupt and can't be edited using the 3CX Management Console extension_editor page.
After extension creation on the extension_editor page i notice that:
As you can use from my code I have tried to copy many of my options from a preset extension.
Any help or advise will be appreciated.
I'm having an issue with the CreateExtension API call after moving to v15.5
I can create extensions using this method but they are corrupt and can't be edited using the 3CX Management Console extension_editor page.
After extension creation on the extension_editor page i notice that:
- Forwarding Rules aren't set correctly
- No Codecs are set (Can't see an option in the api for this)
- Rights aren't set
Code:
public string newExtension(string email, string fName, string lName, string nextAvailableDn)
{
try
{
int ex = -1;
int.TryParse(nextAvailableDn, out ex);
Extension e = PhoneSystem.Root.GetTenant().CreateExtension(nextAvailableDn);
e.AuthID = nextAvailableDn;
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var random = new Random();
var result = new string(
Enumerable.Repeat(chars, 7)
.Select(s => s[random.Next(s.Length)])
.ToArray());
e.AuthPassword = result;
var nums = "0123456789";
var result2 = new string(
Enumerable.Repeat(nums, 4)
.Select(s => s[random.Next(s.Length)])
.ToArray());
e.VMPIN = result2;
e.Enabled = true;
e.HidePresence = false;
e.Number = nextAvailableDn;
e.FirstName = fName;
e.LastName = lName;
e.EmailAddress = email;
Extension ex2 = PhoneSystem.Root.GetDNByNumber("102") as Extension;
e.BusyDetection = ex2.BusyDetection;
e.DeliverAudio = ex2.DeliverAudio;
e.Internal = ex2.Internal;
e.NoAnswerTimeout = ex2.NoAnswerTimeout;
e.OutboundCallerID = ex2.OutboundCallerID;
e.QueueStatus = ex2.QueueStatus;
e.RecordCalls = ex2.RecordCalls;
e.SupportReinvite = ex2.SupportReinvite;
e.SupportReplaces = ex2.SupportReplaces;
e.UserStatus = ex2.UserStatus;
e.VMEmailOptions = ex2.VMEmailOptions;
e.VMEnabled = ex2.VMEnabled;
e.VMPlayCallerID = ex2.VMPlayCallerID;
e.VMPlayMsgDateTime = ex2.VMPlayMsgDateTime;
e.EnableSRTP = ex2.EnableSRTP;
e.Save();
foreach (FwdProfile fp2 in ex2.FwdProfiles)
{
List<ExtensionRule> arrR = new List<ExtensionRule>();
foreach (ExtensionRule ExRule in fp2.ForwardingRules)
{
ExtensionRule er = e.CreateForwardingRule();
er.Conditions.Condition = ExRule.Conditions.Condition;
er.Conditions.Hours = ExRule.Conditions.Hours;
er.Conditions.CallType = ExRule.Conditions.CallType;
er.HoursRanges = ExRule.HoursRanges;
er.Data = ExRule.Data;
er.Forward.To = ExRule.Forward.To;
er.Forward.External = ExRule.Forward.External;
arrR.Add(er);
}
FwdProfile fp = e.CreateFwdProfile(fp2.Name);
fp.ForwardingRules = arrR.ToArray();
fp.Save();
}
e.Save();
foreach (FwdProfile fps in e.FwdProfiles)
{
if(fps.Name == ex2.CurrentProfile.Name)
{
e.CurrentProfile = fps;
}
else if (fps.Name == ex2.OverrideProfile.Name)
{
e.OverrideProfile = fps;
}
}
e.Save();
foreach (var item in ex2.Groups)
{
Group g = PhoneSystem.Root.GetGroupByName(item.Name);
g.CreateGroupMember(e, "__DEFAULT__");
}
}
catch (Exception ex)
{
nextAvailableDn = "Error: " + ex;
}
return nextAvailableDn;
}
As you can use from my code I have tried to copy many of my options from a preset extension.
Any help or advise will be appreciated.