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

New Call Flow Designer Harnesses the Power of 3CX v16

Status
Not open for further replies.

Constantinos Constantinou

Support Team
Staff member
Joined
Jan 4, 2019
Messages
860
Reaction score
511
With the release of v16 many partners and customers alike were eager to find out when the new Call Flow Designer (CFD) for V16 would be ready too. Great news! It’s here and it’s better than ever. The new CFD expands on V16’s flexibility and enables you to create and maintain powerful customized call flows. This update provides a clear migrati...
Continue reading the Original Blog Post.
 
  • Like
Reactions: Mwamba and jed
Is there also a Linux version of this beta?
 
It doesn't seem like custom components are working. After uploading anything CFD project to 3CX V16, it says "invalid script structure". After removing custom components and just building them in the main flow, it works.
Also, after removing a component and re-uploading, it often gives you an error that you have one extra "}" at the end of the CF.
 
It doesn't seem like custom components are working. After uploading anything CFD project to 3CX V16, it says "invalid script structure". After removing custom components and just building them in the main flow, it works.
Also, after removing a component and re-uploading, it often gives you an error that you have one extra "}" at the end of the CF.

Hello,

Please make sure that you follow the instructions mentioned in the migration section of the documentation.
https://www.3cx.com/docs/manual/cfd-troubleshooting/#h.lsc0dfwmd9eg
If your project use "Load External Script" components, you have to follow a set of simple steps.

Initiate again the process of migration (initial version of the project), but this time execute those steps also.

Please let me know with the outcome of the migration process.

Thank you
 
Hello,
currently, it doesn't seem to possible to route internal calls to CFD projects. The only option seems to be to route to CFD via inbound rules.

We need to be able to also route calls to CFD internally just like we were able to do in v15.5 (and older).
Many of our projects are designed that way. Simple example - when deploying phones in hotel rooms, we call into CFD project which plays back extension number (testing if phone is connected in correct room). We have many more (and lot more complex) use scenarios where we need to route internally into CFD.

It is perfectly acceptable if we need to create extension and (for example) configure exception in forwarding rules which will send the call to CFD.

Thank you,
Jakub
 
Hello @jhn,

Forwarding rules for extensions will support CFD apps as destinations. This is not available yet, but will be present in the final Update 1.

Also, please note that you can make calls to CFD app names if your phone supports it. For example, you can install the 3CXPhone v6 and make a call to "yourprojectname.Main".

Kind regards.
 
Hello @jhn,

Forwarding rules for extensions will support CFD apps as destinations. This is not available yet, but will be present in the final Update 1.

Also, please note that you can make calls to CFD app names if your phone supports it. For example, you can install the 3CXPhone v6 and make a call to "yourprojectname.Main".

Kind regards.
@edossantos,
thanks! good to know internal calls will be possible at later stage. Tested with old 3cx softphone, calling by cfd project name and that works as well.
 
  • Like
Reactions: edossantos
Hello,
we have many CFD workflows which are using external script. All our external scripts are, one way or another, using Call Control API.
Trying to migrate one of our CFDs to v16 for testing purposes. External script in this case modifies Exceptions configured in forwarding rules for extension. One of the issues I'm getting is ->
'FwdProfile' does not contain a definition for 'ForwardingRules'
Poking at the v16 call control API I can see that there are some changes (yep, ForwardingRules no longer exists in FwdProfile)

Is it possible to get Call Control API documentation for v16?
I know this question has been asked multiple times in various forum threads. And I'm aware that the answer is no, because it has been decided to use Call Control API only internally....
But, look at the situation this creates - we have a lot of CFDs using Call Control API. We are still able to use Call Control API in v16 CFDs. There has been changes and we don't have access to any documentation.... How are we supposed to migrate our CFDs?

Thanks!
Jakub
 
Hello,
we have many CFD workflows which are using external script. All our external scripts are, one way or another, using Call Control API.
Trying to migrate one of our CFDs to v16 for testing purposes. External script in this case modifies Exceptions configured in forwarding rules for extension. One of the issues I'm getting is ->
'FwdProfile' does not contain a definition for 'ForwardingRules'
Poking at the v16 call control API I can see that there are some changes (yep, ForwardingRules no longer exists in FwdProfile)

Is it possible to get Call Control API documentation for v16?
I know this question has been asked multiple times in various forum threads. And I'm aware that the answer is no, because it has been decided to use Call Control API only internally....
But, look at the situation this creates - we have a lot of CFDs using Call Control API. We are still able to use Call Control API in v16 CFDs. There has been changes and we don't have access to any documentation.... How are we supposed to migrate our CFDs?

Thanks!
Jakub
Hello Jakub,

Just sent you a private message to help you with this.

ForwardingRules is now a property of the Extension interface.

Kind regards.
 
  • Like
Reactions: jhn
Hello,
CFD contains external script where we use System.Runtime.InteropServices to check if the code is running on Windows on Linux.

In external script ->
...
using System.Runtime.InteropServices;
....
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
....
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
....
}

When uploading CFD project into 3CX v16, I get following errors:
Error CS0103: The name 'RuntimeInformation' does not exist in the current context
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
^^^^^^^^^^^^^^^^^^
Error CS0103: The name 'OSPlatform' does not exist in the current context
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
^^^^^^^^^^

When I check "C:\Program Files\3CX Phone System\Bin", I can see that the "System.Runtime.xxxx" libraries are present.

I'm aware of procedure for CFD v15.5 (adding custom libraries into cfd dependencies folder and making sure the library also exists on PBX), but that doesn't seem to apply here. CFD doesn't complain about missing dependency when compiling the project and as mentioned, the library file is present in 3CX bin folder.

Is there anything I'm doing wrong?

Thanks!
Jakub
 
Hello Jakub,

CFD contains external script where we use System.Runtime.InteropServices to check if the code is running on Windows on Linux.

In external script ->
...
using System.Runtime.InteropServices;
....
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
....
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
....
}

When uploading CFD project into 3CX v16, I get following errors:
Error CS0103: The name 'RuntimeInformation' does not exist in the current context
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
^^^^^^^^^^^^^^^^^^
Error CS0103: The name 'OSPlatform' does not exist in the current context
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
^^^^^^^^^^

When I check "C:\Program Files\3CX Phone System\Bin", I can see that the "System.Runtime.xxxx" libraries are present.

I'm aware of procedure for CFD v15.5 (adding custom libraries into cfd dependencies folder and making sure the library also exists on PBX), but that doesn't seem to apply here. CFD doesn't complain about missing dependency when compiling the project and as mentioned, the library file is present in 3CX bin folder.

Is there anything I'm doing wrong?
Unfortunately you can't use any DLL as a reference when compiling the CFD scripts. The referenced libraries are the following:
"mscorlib",
"System",
"System.Core",
"System.Runtime",
"System.Collections",
"System.Core",
"System.IO",
"System.IO.FileSystem",
"System.Runtime",
"System.Collections",
"Microsoft.CSharp",
"netstandard",
"System.Linq",
"System.Linq.Expressions",
"System.Linq.Parallel",
"System.Linq.Queryable",
"System.Net.Http",
"Newtonsoft.Json",
"System.Xml",
"System.Xml.Linq",
"System.Xml.ReaderWriter",
"System.Xml.Serialization",
"System.Xml.XDocument",
"System.Xml.XmlDocument",
"System.Xml.XmlSerializer",
"System.Xml.XPath",
"System.Xml.XPath.XDocument",
"System.Xml.XPath.XmlDocument",
"System.Xml.XDocument",
"System.Private.Xml",
"System.Private.Xml.Linq",
"System.Private.Uri",
"3cxpscomcpp2",
"MailKit",
"MimeKit",
"MySqlConnector",
"Npgsql",
"System.ComponentModel",
"System.ComponentModel.Primitives",
"System.Data",
"System.Data.Common",
"System.Data.SqlClient",
"System.Net.Primitives",
"System.Net.Sockets",
"System.Security.Cryptography.Algorithms",
"System.Security.Cryptography.Primitives",
"System.Text.RegularExpressions",
"TcxMail",
"System.Threading",
"System.Threading.Timer",
"System.Threading.Tasks",
"System.Threading.Tasks.Dataflow",
"AWSSDK.Core",
"AWSSDK.Polly",
"CallFlow.CFD"

As a result, your code can't be compiled. Please consider the following options:
  • If you just need to know if the OS is Windows or Linux, you can check the existance of a file. For example, if the file "C:\ProgramData\3CX\Instance1\Bin\3CXLogger.ini" exists, then you're on Windows, otherwise on Linux.
  • If you need to perform more complex operations, and you need to run code from a DLL not listed, then you need to execute that code in a different program you create, and communicate with that program via socket, REST API, etc.

Kind regards.
 
Hello Jakub,


Unfortunately you can't use any DLL as a reference when compiling the CFD scripts. The referenced libraries are the following:


As a result, your code can't be compiled. Please consider the following options:
  • If you just need to know if the OS is Windows or Linux, you can check the existance of a file. For example, if the file "C:\ProgramData\3CX\Instance1\Bin\3CXLogger.ini" exists, then you're on Windows, otherwise on Linux.
  • If you need to perform more complex operations, and you need to run code from a DLL not listed, then you need to execute that code in a different program you create, and communicate with that program via socket, REST API, etc.
Kind regards.
Thank you. Checking whether file exists will do the job. also, good to know that referencing other libraries is not possible anymore.
 
I have noticed difference in values of session variables between cfd 15.5 and cfd 16. Just curious if it is intentional change or perhaps something what needs to be fixed?

variable session.did
v15.5 = value is equal to number dialed by caller
v16 = if inbound rule name is configured, session.did contains the name. If there is no name configured, session.did is empty

this doesn't create any issues for us, I'm able to use session.dnis to get number dialed by caller. Just curious about the different behaviour.

Thank you,
Jakub
 
I have noticed difference in values of session variables between cfd 15.5 and cfd 16. Just curious if it is intentional change or perhaps something what needs to be fixed?

variable session.did
v15.5 = value is equal to number dialed by caller
v16 = if inbound rule name is configured, session.did contains the name. If there is no name configured, session.did is empty

this doesn't create any issues for us, I'm able to use session.dnis to get number dialed by caller. Just curious about the different behaviour.

Thank you,
Jakub
Hello Jakub,

Let me try this and come back to you. The session.did variable should have the number dialed by the user, but only when the call arrives through a specific DID.

Kind regards.
 
v15.5 = value is equal to number dialed by caller
v16 = if inbound rule name is configured, session.did contains the name. If there is no name configured, session.did is empty
Thanks for your feedback on this. The current behaviour is not correct, and we will fix it, in order to keep the behaviour you had in v15.5. So:
  • session.did will contain the DID number dialed by the caller to reach 3CX.
  • session.dnis will contain the CFD app name (for example "test.Main"), which is the equivalent of the extension in which the app was running in v15.5.

This fix will be included in the final release of the CFD.
 
Eagerly anticipating the general release allowing CFD in V16.
Any idea when Update 1 will be out of beta or available on linux?
 
Any idea when Update 1 will be out of beta or available on linux?
It's a matter of days... Please stay tuned to the 3CX Blog.
 
  • Like
Reactions: jed
Trying the new CFD on latest v16 Beta. Did the conversion in CFD with no Build errors, but when Adding as new Call Flow App on PBX it will not go green - Show indicates Invalid Script structure but does not give any more detail.
 
Status
Not open for further replies.

Getting Started - Admin

Latest Posts

Forum statistics

Threads
141,636
Messages
749,005
Members
144,755
Latest member
ICT BE Peleman
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.