• V20: 3CX Re-engineered. Get V20 for increased security, better call management, a new admin console and Windows softphone. Learn More.

Call Control API for v15.5

Status
Not open for further replies.

ben.tggc

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:
  • Forwarding Rules aren't set correctly
  • No Codecs are set (Can't see an option in the api for this)
  • Rights aren't set
Here is my method i use to create an extension:

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.
 
Status
Not open for further replies.

Getting Started - Admin

Latest Posts

Forum statistics

Threads
141,619
Messages
748,854
Members
144,731
Latest member
jaayb512
Get 3CX - Absolutely Free!

Link up your team and customers Phone System Live Chat Video Conferencing

Hosted or Self-managed. Up to 10 users free forever. No credit card. Try risk free.

3CX
A 3CX Account with that email already exists. You will be redirected to the Customer Portal to sign in or reset your password if you've forgotten it.