V20 Update 8 Alpha - The AI Chapter

Can you change to an extension? and put description 123? to see. Something in its most simplest form.
Can you try and save a caller behavior option - Change from end call to something else?
Dev tools to see what is happening.


All other options save fine.
Before saving:

1761724031115.png

After reopening:
1761724061241.png

Console:
1761724141174.png

The error here appears immediately after loading / opening the page.
Perhaps the extensions are saved properly, but they just cannot be loaded / shown again?

I hope this helps, if you need anything else, let me know.
 
The AI-function is working really well! It's amazing something like this is possible today. This is really easy to use and works almost perfectly! Great work!

Just one little feature request.
Can you make it possible to include the current date and time in the prompt / context somehow?
The system doesn't know the current time (I have now entered in the prompt: 'do not answer questions about the date or time' since it seemed to know the date, but always got the time wrong).
Because it doesn't know the date/time, you cannot ask it 'are you open now?' which could be really helpful for any store or company.
 
The AI-function is working really well! It's amazing something like this is possible today. This is really easy to use and works almost perfectly! Great work!

Just one little feature request.
Can you make it possible to include the current date and time in the prompt / context somehow?
The system doesn't know the current time (I have now entered in the prompt: 'do not answer questions about the date or time' since it seemed to know the date, but always got the time wrong).
Because it doesn't know the date/time, you cannot ask it 'are you open now?' which could be really helpful for any store or company.
You could add your opening hours in the instructions so it can communicate them out, and also create two agents, one in hours and one out of hours, route to them as needed so they have the knowledge of whether the office is open that way, and proceed to answer appropriately.
 
You could add your opening hours in the instructions so it can communicate them out, and also create two agents, one in hours and one out of hours, route to them as needed so they have the knowledge of whether the office is open that way, and proceed to answer appropriately.
Yes, of course, that would work and I already did the first thing you suggested, that works.
But if you then ask 'are you open now?', which is a valid question, the answer is 'I don't know which date/time it is, could you tell me' and that is of course because I have included in the prompt that it doesn't know the time. If you don't include that and someone asks 'are you open now', it will start guessing and you certainly don't want that :)
So while the work-arounds can be done, I thought the agent having the date/time, would be really useful.
 
  • Like
Reactions: nikolascx
I get this error when I try to add a new AI agent. I've also tried it in incognito mode.


Screenshot 2025-10-28 171850.png
 
Well if there are two agents, and one is explicitly told the office is open, the other it's closed they should answer correctly.

Also I have not tried, but I will at first opportunity, if OpenAI etc provide UTC to agents running with them, perhaps just telling the agent the local time offset would work?
 
Unfortunately no because Microsoft made a data connector only to MSQL. The usual agenda...
Hi Nikolas,

forgive the ignorance.

Is it a PowerBI connector thats restricting?

If PowerBI can read the database isnt that enough to make the dashboards?

1761731028227.png
 
According to this comment in the french sub, the problem is about locale language of the VM, if you are not in the "US" locale it will get the error, after switching to US, it's working well. Maybe something to verify.
 
  • Like
Reactions: ByteClub
Hi Nikolas,

forgive the ignorance.

Is it a PowerBI connector thats restricting?

If PowerBI can read the database isnt that enough to make the dashboards?

View attachment 49945
If you can read the data in your PowerBI instance, you might be able to get the postgres queries from Grafana and plug them into the PowerBI templates.
 
  • Like
Reactions: Evolute IT
I get this error when I try to add a new AI agent. I've also tried it in incognito mode.


View attachment 49930

Like M3studios, I do seem to have the same error
From the log, i can find this line: "System.ArgumentException: 0.1 is not a valid value for Single. (Parameter 'value')"

Hereunder you will find the whole part of the error, where i just do not understand what this all means:

Code:
2025/10/29 11:36:01.793|0017|Debg| [MyPhone.RefQueue] Updated.SBCRUNTIMEDATA.1 is ready
2025/10/29 11:36:01.793|0017|Debg| [MyPhone.ObjectModel] Skipped SBCRUNTIMEDATA.1
2025/10/29 11:36:01.798|0017|Debg| [MyPhone.RefQueue] Updated.SBCRUNTIMEDATA.1 is ready
2025/10/29 11:36:01.798|0017|Debg| [MyPhone.ObjectModel] Skipped SBCRUNTIMEDATA.1
2025/10/29 11:36:01.813|0017|Debg| [MyPhone.RefQueue] Updated.SBCRUNTIMEDATA.12 is ready
2025/10/29 11:36:01.813|0017|Debg| [MyPhone.ObjectModel] Skipped SBCRUNTIMEDATA.12
2025/10/29 11:36:01.821|0017|Debg| [MyPhone.RefQueue] Updated.SBCRUNTIMEDATA.12 is ready
2025/10/29 11:36:01.821|0017|Debg| [MyPhone.ObjectModel] Skipped SBCRUNTIMEDATA.12
2025/10/29 11:36:03.479|0035|Trac| [_3CX.Http] [9]+{WAN-IP} GET https://{FQDN}/xapi/v1/AISettings/Pbx.GetAITemplateContents(id='receptionist') - - -
2025/10/29 11:36:03.481|0035|Info| [_3CX.Http] [8]-{WAN-IP} GET https://{FQDN}/xapi/v1/AISettings/Pbx.GetAITemplateContents(id='receptionist') - 200 - application/json;+charset=utf-8;+odata.metadata=minimal;+odata.streaming=true 1.4913ms
2025/10/29 11:36:03.489|0035|Trac| [_3CX.Http] [9]+{WAN-IP} POST https://{FQDN}/xapi/v1/Users - application/json 4318
2025/10/29 11:36:03.523|0035|Info| [_3CX.Http] [8]-{WAN-IP} POST https://{FQDN}/xapi/v1/Users - 200 - - 33.6486ms
2025/10/29 11:36:03.523|0035|Erro| [Microsoft.AspNetCore.Server.Kestrel] Connection id "HNGM995LADG", Request id "HNGM995LADG:00000007": An unhandled exception was thrown by the application.
System.ArgumentException: 0.1 is not a valid value for Single. (Parameter 'value')
 ---> System.FormatException: The input string '0.1' was not in a correct format.
   at System.Number.ThrowFormatException[TChar](ReadOnlySpan`1 value)
   at System.Single.Parse(String s, NumberStyles style, IFormatProvider provider)
   at System.ComponentModel.SingleConverter.FromString(String value, NumberFormatInfo formatInfo)
   at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
   --- End of inner exception stack trace ---
   at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
   at System.ComponentModel.DataAnnotations.RangeAttribute.SetupConversion()
   at System.ComponentModel.DataAnnotations.RangeAttribute.IsValid(Object value)
   at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)
   at Microsoft.AspNetCore.Mvc.DataAnnotations.DataAnnotationsModelValidator.Validate(ModelValidationContext validationContext)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.ValidateNode()
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitImplementation(ModelMetadata& metadata, String& key, Object model)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit(ModelMetadata metadata, String key, Object model)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitChildren(IValidationStrategy strategy)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitComplexType(IValidationStrategy defaultStrategy)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitImplementation(ModelMetadata& metadata, String& key, Object model)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit(ModelMetadata metadata, String key, Object model)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitChildren(IValidationStrategy strategy)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitComplexType(IValidationStrategy defaultStrategy)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitImplementation(ModelMetadata& metadata, String& key, Object model)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit(ModelMetadata metadata, String key, Object model)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitChildren(IValidationStrategy strategy)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitComplexType(IValidationStrategy defaultStrategy)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitImplementation(ModelMetadata& metadata, String& key, Object model)
   at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit(ModelMetadata metadata, String key, Object model)
   at Microsoft.AspNetCore.Mvc.ModelBinding.ObjectModelValidator.Validate(ActionContext actionContext, ValidationStateDictionary validationState, String prefix, Object model)
   at Microsoft.AspNetCore.Mvc.ControllerBase.TryValidateModel(Object model, String prefix)
   at XAPI.BaseODataController`2.Saved(TOMType dest, Delta`1 delta)
   at XAPI.BaseDNController`2.Post(Delta`1 delta, IDNCreateService numberService)
   at lambda_method2409(Closure, Object, Object[])
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at ManagementConsoleJS.Middleware.FixODataMiddlewareForNginx.Invoke(HttpContext context)
   at ManagementConsoleJS.Middleware.HealthcheckMiddleware.Invoke(HttpContext context)
   at ManagementConsoleJS.Middleware.BlacklistMiddleware.Invoke(HttpContext context)
   at ManagementConsoleJS.Middleware.RequestLoggingMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
2025/10/29 11:36:04.744|0035|Trac| [Npgsql.Connection] Closing physical connection to /var/run/postgresql:5432/database_single...
2025/10/29 11:36:04.744|0035|Trac| [Npgsql.Connection] Cleaning up connector

Paulo
 
  • Like
Reactions: nikolascx
All other options save fine.
Before saving:

View attachment 49937

After reopening:
View attachment 49938

Console:
View attachment 49939

The error here appears immediately after loading / opening the page.
Perhaps the extensions are saved properly, but they just cannot be loaded / shown again?

I hope this helps, if you need anything else, let me know.

Thanks for this..
Reproduced. We will release a fix. Thanks for reporting.
 
The AI-function is working really well! It's amazing something like this is possible today. This is really easy to use and works almost perfectly! Great work!

Just one little feature request.
Can you make it possible to include the current date and time in the prompt / context somehow?
The system doesn't know the current time (I have now entered in the prompt: 'do not answer questions about the date or time' since it seemed to know the date, but always got the time wrong).
Because it doesn't know the date/time, you cannot ask it 'are you open now?' which could be really helpful for any store or company.

Yes that is scheduled for the next update. We will expose the office hours and office schedule to the AI Agents. Like this they can know if company is open, closed holiday etc.
 
Well if there are two agents, and one is explicitly told the office is open, the other it's closed they should answer correctly.

Also I have not tried, but I will at first opportunity, if OpenAI etc provide UTC to agents running with them, perhaps just telling the agent the local time offset would work?
Currently, the agent has no idea of the time.
If you ask for it, it just says something like 'it's 6:45' and if you say 'I don't think so', it will 'ah, yes, of course, apologies, it is 15:30'. It doesn't have a clue and that's why included in the prompt not to answer any questions related to the time. Because it will start guessing :-)
 
Hi Nikolas,

forgive the ignorance.

Is it a PowerBI connector thats restricting?

If PowerBI can read the database isnt that enough to make the dashboards?

View attachment 49945

Its a very good question and you are right to wonder.
You want to real answer - YES it can.
BUT...

1. Depends on the power bi you have.
2. You need to have power bi Desktop only
3. you need Npgsql Connector Npgsql ADO.NET Data Provider https://www.npgsql.org/download.html

then you can connect.

But then you need to open the 3CX Database port...

After the dataset is published, then you would want the data to be refreshed automatically. This will not be possible unless you configure a gateway. And if you need a gateway, then we need to discuss if it is personal or enterprise..

Power BI Cloud - not possible to connect to PostgreSQL without a gateway

As you can see, it is very hard for us to promote a solution like this..
 
  • Like
Reactions: KyriacosS_3CX
Like M3studios, I do seem to have the same error
From the log, i can find this line: "System.ArgumentException: 0.1 is not a valid value for Single. (Parameter 'value')"

We fixed and thank you for reporting. We will update asap
 
Thanks again for all the hard work!
It think this might even be called v20.5 seeing all these great new features :)
Just calling it 'update 8' doesn't quite do it justice!
 
  • Like
Reactions: KyriacosS_3CX
Is it currently possible for a 3CX AI Agent to access the built-in 3CX mail service in order to send an email with the collected caller information to the recipient address configured in the agent template?
 
Currently not possible but definitely in the pipeline. I understand you.
I recently saw a feature on a different platform that would popup an on screen summary of the last call from the contact while the call was ringing. That platform was lacking in plenty of other ways which is why the client was switching to 3CX but I really liked that feature.
If the webhook could be triggered and then the AI agent could use the returned data, that would be really impressive. Imagine the call being answered by the AI agent and after a greeting, the AI agent asks if they're calling about (topic) again OR the agent says, "I see you just spoke with (name), are you needing to talk to them again?"

What has already been done is awesome, just throwing out some use cases for the webhook request.
 
  • Like
Reactions: accentlogic
Something like this:
As a business using the AI Receptionist,
I want the system to automatically send the incoming caller’s phone number (caller ID) to a specified webhook as soon as a call is received,
So that the webhook can return relevant caller data (like name, company, or account info) that the AI Receptionist can use to personalize its greeting and determine how to handle the call.

Currently not possible but definitely in the pipeline. I understand you.
It sounds good.

Could we imagine using the webhook with a CRM to query the database for quote tracking or something similar?

This alpha version is really good and brings a lot of changes.

Looking forward to the beta with more new features as mentioned previously.

Best Regards,

Clement
 
  • Like
Reactions: N_G

Latest Posts

Forum statistics

Threads
111,990
Messages
590,164
Members
164,927
Latest member
tohoken1