Handle calls differently if [V] is present in Caller ID name

bigbigpig

Customer
Basic Certified
Joined
Mar 4, 2025
Messages
4
Reaction score
0
Hello,

I use Flowroute and their STIR/SHAKEN implementation adds a "[V]" to the front of the caller ID name if the authenticity of the caller is verified. This is fine, but I need to be able to take action on the call depending on if this [V] is present in the caller ID name. Almost all spam calls are missing this tag, so if it is present then I'd like to send the calls to the ring group. If it's not present then I'd like to send the calls to an auto attendant. I don't see a way to do this in 3CX with CID rules because the CID rules are for numbers only, not name. Is there a way to take action either on CID Name or another method that is based on the STIR/SHAKEN result?
 
A Call Flow Designer (CFD) / Script can evaluate the caller ID name and route appropriately. You would need to handle "private" calls as well, but this is a fairly straightforward CFD.
 
Ok gotcha - so my understanding is that is not available in hosted. So to leverage any sort of action from Flowroute's validation I'd need self-hosted?
 
I would check with 3CX. I thought I heard that they are now allowing call scripts even when hosted at 3CX? I assume that requires a Pro license, right?
 
What a pleasant surprise that some call scripts are available in 20U5! I've been looking into some of these, and they look promising, but I can't seem to find documentation of the properties available. For example, here's one of the call scripts from their pre-made apps:

C#:
public override async Task<bool> StartAsync()
        {
            if (MyCall.Caller.DN is ExternalLine externalLine && MyCall.IsInbound)
            {
                var DIDNumber = MyCall.Caller.CalledNumber;
                var CallerID = MyCall.Caller.CallerID;

So CallerID will get the number, but which property gets the name? I still want to take action if the Caller ID Name begins with [V]. The regex is simple to write to look for that, but I can't find documentation of what property gives me the name.
 
I'm honestly being serious about the following questions while at the same time knowingly showing my ignorance here...

Why hassle with this low-level code when this specific task is stupid-simple in a Call Flow Designer application? Perhaps because scripts can be employed in unique stages of the call routing processes (at the trunk level rather than routing all inbound calls to a CFD extension)? I have been building CFD applications for more than a decade, but I've not even looked at writing more generic low-level scripts like the above. I should, but like most business owners, finding time to run a business and "play" with new toys is hard. Can anyone offer some of the advantages of writing scripts vs CFD applications (which generates the scripts for you)?
 
My reasons for call scripts were and are:
  1. Call processing scripts can do many things without accepting the call (this means that SIP302 is still possible afterwards, for example),
  2. you have a little more control over the process and it is more precise (declarative language),
  3. in larger projects it is much easier for me to read (variable definition and validity, loops, etc.),
  4. more complex structures can be built more easily with variables,
  5. the documentation takes place in the code,
  6. changes can be responded to more quickly (instead of always having to use the CFD and rebuild and re-upload the application, everything can be edited live),
  7. passing on the code to others is a little easier
We always liked to spice up CFD programs with C# and also changed the code in 3CX directly (especially the C# code when testing). We still do that today and still use CFD because it is sometimes easier. If it is just a small query with a small DTMF input, then it can probably be put together more quickly in CFD.

The generally small increase in speed has not been a reason for us to use low-level code.
 
  • Like
Reactions: VoIPTools
Thank you for the replies. I have some c# experience but have never used the CFD so I was hoping to modify one of the similar example call scripts. If it's easy to grab Caller Name from CFD then I will look into that option.
 
MyCall.Caller?.CallerName
 
  • Like
Reactions: Vali_3CX

Latest Posts

Members Online Now

Forum statistics

Threads
111,831
Messages
589,276
Members
164,660
Latest member
RJenkinsROCK