Dismiss Notice
We would like to remind you that we’re updating our login process for all 3CX forums whereby you will be able to login with the same credentials you use for the Partner or Customer Portal. Click here to read more.

3CX CallTriggerCMDPlugin Customization

Discussion in 'Windows' started by bocasa, Jun 9, 2016.

Thread Status:
Not open for further replies.
  1. bocasa

    Joined:
    Jun 9, 2016
    Messages:
    4
    Likes Received:
    0
    Hello,

    I am trying to customize 3CX CallTriggerCmdPlugin to register incoming calls and to open myApp.exe with caller information.
    I have managed to do this with CallTriggerCMD.exe, but I have to execute a command in order for this to work.

    Is there a way to open my application upon incoming call directly from plugin? (from CallTriggerCmdPlugin)

    PS: Actually I want to make a listener that registers incoming calls and stores data from caller...
     
  2. pj3cx

    pj3cx Active Member

    Joined:
    Aug 1, 2013
    Messages:
    646
    Likes Received:
    1
    HI there,
    Yes you can do so in this part of the code:

    private void callHandler_OnCallStatusChanged(object sender, MyPhonePlugins.CallStatus callInfo)
    {

    Then add something like this and do the action of your choice with callInfo_OtherPartyNumber on incoming calls:
    if (callInfo.State.ToString() == "Ringing")
    {
    string number = "";
    number = callInfo_OtherPartyNumber;
    ...
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. bocasa

    Joined:
    Jun 9, 2016
    Messages:
    4
    Likes Received:
    0
    I already tried that, but it seems that this method isn't even getting executed. I am trying to write the caller info into the log file but it isn't logging anything.
     
  4. bocasa

    Joined:
    Jun 9, 2016
    Messages:
    4
    Likes Received:
    0
    If I am right, I can make a plugin with the piece of code that is described here: http://www.3cx.com/blog/docs/3cxphone-for-windows-api/

    And I can edit the OnCallStatusChanged method and that will work?

    If that all is correct, then I must be missing something because I cannot get it working. I am not getting inside OnCallStatusChanged method at all... not in my custom plugin and not even in CallTriggerCmdPlugin...

    This is my code:

    Code:
    namespace _3cxCRMPlugin
    {
        [MyPhonePlugins.CRMPluginLoader]
        public class MyPhonePlugin
        {
            private static MyPhonePlugin instance = null;
            private IMyPhoneCallHandler callHandler = null;
            IExtensionInfo extensionInfo;
            //ServiceHost _serviceHost;
    
            [MyPhonePlugins.CRMPluginInitializer]
            public static void Loader(MyPhonePlugins.IMyPhoneCallHandler callHandler)
            {
                instance = new MyPhonePlugin(callHandler);
            }
    
            private MyPhonePlugin(MyPhonePlugins.IMyPhoneCallHandler callHandler)
            {
                this.callHandler = callHandler;
                callHandler.OnCallStatusChanged += callHandler_OnCallStatusChanged;
                callHandler.OnMyPhoneStatusChanged += callHandler_OnMyPhoneStatusChanged;
                Write (callHandler.Status.ToString()) ;
                Write(callHandler.ActiveCalls.Length.ToString());
            }
    
            private void callHandler_OnMyPhoneStatusChanged(object sender, MyPhonePlugins.MyPhoneStatus status)
            {
                if (status == MyPhonePlugins.MyPhoneStatus.LoggedIn)
                    this.extensionInfo = sender as MyPhonePlugins.IExtensionInfo;
                Write(extensionInfo.Number);
            }
    
            private void callHandler_OnCallStatusChanged(object sender, MyPhonePlugins.CallStatus callInfo)
            {
                Write(callInfo.CallID);
            }
    
            public static void Write(String text)
            {
                String _path = @"C:\3cxPlugin" + DateTime.Now.ToString("yyyy.MM.dd") + ".txt";
    
                if ((_path != null) && (_path != ""))
                {
                    StreamWriter writer = null;
                    if (File.Exists(_path))
                    {
                        writer = File.AppendText(_path);
                    }
                    else
                    {
                        try
                        {
                            writer = File.CreateText(_path);
                        }
                        catch
                        {
                            return;
                        }
                    }
                    writer.WriteLine(DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss") + " - " + text);
                    writer.Flush();
                    writer.Close();
                }
            }
        }
    }
    and the log file looks like this:
    Code:
    13.06.2016 09:51:23 - LoggedOut
    13.06.2016 09:51:23 - 0
     
  5. pj3cx

    pj3cx Active Member

    Joined:
    Aug 1, 2013
    Messages:
    646
    Likes Received:
    1
    Hi there,
    Are you activated on a Pro license?
    And do you see presence informations on your 3CXPhone?
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  6. bocasa

    Joined:
    Jun 9, 2016
    Messages:
    4
    Likes Received:
    0
    Hello,

    We are on a Pro Demo licence, but will be having the pro licence soon.
    And yes, I see the presence information...

    Are you saying that Pro licence is needed in order for this to work?

    Thanks for the help!
     
  7. sj3CX

    Joined:
    Jun 23, 2016
    Messages:
    1
    Likes Received:
    0
    hi,

    what is the callback for hold,resume, mute and unmute that is sent from 3CX to sample plugin(CallTriggerCMD).

    I got API to hold and resume(i.e. callHandler.Hold(callId, hold On)) which can be used to send event to softphone.
    but which event(or callback) will I receive on holding call from 3CX softphone itself.
     
  8. Tertius

    Joined:
    Feb 24, 2016
    Messages:
    43
    Likes Received:
    2
    Hi there,

    I experience a similar problem with my API. Don't know if it's the same or related. When run in a windows 10 OS, my OnCallStatusChanged event won't fire for incoming calls. Not sure why. Event's fire normally on win 7 machines.

    http://www.3cx.com/forums/post183196.html#p183196

    Any way I didn't bother further troubleshooting as I'm the only user on Win 10.
     
Thread Status:
Not open for further replies.