Failed to save modifications to the server: Invalid JSON. A comma character ‘,’ was expected in scope ‘Array’

Hallo,

Sinds een aantal dagen lukt het mij niet meer om data op te halen via Freshdesk.tickets@fdk. Bij andere @fdk lukt het wel.

Ik krijg de volgende foutmelding te zien:

Failed to save modifications to the server. Error returned: 'OLE DB or ODBC error: [DataSource.Error] OData: Invalid JSON. A comma character ‘,’ was expected in scope ‘Array’. Every two elements in an array and properties of an object must be separated by commas

image

Iemand enig idee wat dit zou kunnen zijn?

Ook geprobeerd om de data in de browser te laten. Dit geeft echter geen duidelijkheid over de foutmelding.

DataSource.Error: OData: Invalid JSON. A comma character ‘,’ was expected in scope ‘Array’. Every two elements in an array and properties of an object must be separated by commas - invantive

Welke foutmelding is zichtbaar bij Bridge Online Monitoring bij het gefaalde request?

Validation failed
invalid_value: 
page: 
You cannot access tickets beyond the 300th page. 
Please provide a smaller page number.
The remote server returned an error: (400) Bad Request.

Dank. Waarschijnlijk staat hier ook een foutcode bij zoals itgenfpr121.

De Freshdesk-API beperkt het achtereenvolgens ophalen van tickets tot 300 pagina’s, wat in combinatie met een maximale pagina-omvang van 100 leidt tot maximaal 30.000 tickets.

Adviezen in volgorde van geadviseerde voorkeur zijn:

Probeer het opnieuw wanneer het niet lukt om tekst van partitie 'DEFAULT' op te halen na 17,096 ms met behulp van '***' van 'Freshdesk.Freshdesk.tickets'. Wacht voor 15,971 ms en probeer opnieuw. Poging #1 van 10; bericht ID 'x. Invantive.Basics.InvantiveSqlException: itgenoda267: De Freshdesk service meldde dat te veel verzoeken werden ingediend. Beperk de zoekcriteria, het aantal gevraagde rijen of verminder het aantal verzoeken per minuut op Freshdesk. Raadpleeg de documentatie van Freshdesk voor eventuele toepasselijke snelheidslimieten. 
 ---> System.Net.WebException: The remote server returned an error: (429) Too Many Requests.
   at System.Net.HttpWebRequest.GetResponse()
   at Invantive.Data.Providers.Http.HttpBasedProvider.DoRequest(GlobalState owner, ExecutionOptions executionOptions, HttpWebRequest request, String url, ObjectDefinition objectDefinition, QueryObject queryObject, String partitionCode, String callSafeNameOverrule, String anonymizedPostText, Boolean allowRetryOnNoConnectionMade, Boolean allowRetryOnConnectionLoss, ParameterList parameters, Guid nativeCallUid, Boolean throwExceptionOnNonSuccessfulStatusCode, Object requestBody, Int32 timeoutInitialMs, Int32 timeoutMaxOnRetryMs, String resultCacheId, String publicQueryParameters, ExecutionStatistics& executionStatistics, ODataErrorProcessingInstructions& oDataErrorProcessingInstructions)
   --- End of inner exception stack trace ---
   at Invantive.Basics.ValidationException..ctor(GlobalState owner, ExecutionOptions executionOptions, String messageCode, String errorMessage, String kindRequest, String localStackTrace, String nk, Exception innerException, Boolean inheritMessageCodeWhenPresent, Nullable`1 uid, Boolean isRecoverable, String poolIdentityId, String url, Nullable`1 partyUid)
   at Invantive.Basics.InvantiveSqlException..ctor(Global...continuationObject)
   at System.Threading.Tasks.Task.FinishSlow(Boolean userDelegateExecute)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
   at Invantive.Data.Providers.Http.HttpBasedProvider.DoRequest(GlobalState owner, ExecutionOptions executionOptions, HttpWebRequest request, String url, ObjectDefinition objectDefinition, QueryObject queryObject, String partitionCode, String callSafeNameOverrule, String anonymizedPostText, Boolean allowRetryOnNoConnectionMade, Boolean allowRetryOnConnectionLoss, ParameterList parameters, Guid nativeCallUid, Boolean throwExceptionOnNonSuccessfulStatusCode, Object requestBody, Int32 timeoutInitialMs, Int32 timeoutMaxOnRetryMs, String resultCacheId, String publicQueryParameters, ExecutionStatistics& executionStatistics, ODataErrorProcessingInstructions& oDataErrorProcessingInstructions)
   at Invantive.Data.Providers.Http.HttpBasedProvider.GetInternal(GlobalState owner, ExecutionOptions executionOptions, String relativeUrl, String mimeType, ObjectDefinition objectDefinition, QueryObject queryObject, String partitionCode, CacheSettings cacheSettings, String callSafeNameOverrule, Boolean allowRetryOnConnectionLoss, Boolean preventRetryOnAuthenticationFailure, ParameterList parameters, String dataContainerIdOverrule, Boolean throwExceptionOnNonSuccessfulStatusCode, ExecutionStatistics& executionStatistics, ODataErrorProcessingInstructions& oDataErrorProcessingInstructions, String publicQueryParameters, Boolean authenticate).

De Freshdesk service meldde dat te veel verzoeken werden ingediend.

The remote server returned an error: (429) Too Many Requests. Beperk de zoekcriteria, het aantal gevraagde rijen of verminder het aantal verzoeken per minuut op Freshdesk. Raadpleeg de documentatie van Freshdesk voor eventuele toepasselijke snelheidslimieten.

Deze melding komt waarschijnlijk voort uit de Systeemberichten, maar is geen foutmelding:

Poging #1 van 10; bericht ID 'x. Invantive.Basics.InvantiveSqlException: itgenoda267

De driver zal automatisch meerdere pogingen wagen met steeds verder oplopende vertraging tot het maximum van 10 uitvoeren. Waarschijnlijk is het bij de 2e poging alsnog gelukt.

Het advies blijft zoals boven beschreven.

Ok, ik ga hiermee aan de slag en laat de uitkomst nog weten.

Ik wil graag overstappen op TicketsIncremental conform jullie suggestie. Het valt mij echter op dat de kolommen stats_ daar niet beschikbaar zijn. Deze heb ik wel nodig. Kunnen die alsnog toegevoegd worden?


image

De structuur van de TicketsIncremental is by design beperkt.

Als alternatief kan overwogen worden dit te combineren met een app of een eigen view die vanaf een peildatum de tickets ophaalt via de tabelfunctie zodat de 30.000 rijen niet overschreden wordt.

Ok, dat alternatief heeft ook mijn voorkeur. Ik heb in PBI for desktop een filter geplaats op alleen de tickets van de afgelopen week (zie afbeelding). Bij het ophalen krijg ik nog steeds dezelfde foutmelding.

Validation failed Please use the table ‘tickets_incremental’ to retrieve all tickets or specify a table function parameter to filter the data to reduce the data volume. invalid_value: page: You cannot access tickets beyond the 300th page. Please provide a smaller page number.

Of moet ik dit op een andere manier instellen?

Aanvullend. Ik heb net recent_tickets getest. Dit blijkt goed te werken! Echter haal je alleen de tickets van de afgelopen 30 dagen op. Ik wil de tickets van een langere periode ophalen.

Freshdesk Tickets (Recent) (invantive.com)](recent_tickets: Freshdesk Tickets (Recent) - Freshdesk API Data Model)

Advies is om dan zoals als derde punt boven beschreven een view te maken van de tabelfunctie search_tickets en hierin de gewenste startdatum mee te geven, zoals beschreven in:

Het is heel spijtig, maar ik kom niet uit optie 3 met de huidige informatie en mijn beperkte kennis. Jammer dat TicketsIncremental wel een created date bevat maar geen closed date. Dit was volgens mij een goed alternatief geweest. Recent_tickets gaat hem ook niet worden omdat ik dan alleen de tickets van de afgelopen 30 dagen zie. Er is mij heel veel aangelegen als het mogelijk is om de tickets van het afgelopen jaar op te halen nu het niet meer mogelijk is om gebruik te maken van _tickets.

De stappen zijn eenvoudig:

  • Ga naar database.
  • Ga naar veld Startup SQL.
  • Zet daar de SQL in (zie onder).
  • Controleer dat SQL werkt door de SQL Editor te openen.
  • Bij views in datadictionary moet de view verschijnen.
  • Draai query op LastYearTickets.
  • Ga naar Bridge Online.
  • Reset de cache (rechtsboven in menu).
create or replace view LastYearTickets
as
select *
from   search_tickets('created_at:>to_char(add_months(sysdateutc, -12), ''YYYY-MM-DD'')')

Als niet lukt, dan is advies om een kort consult in te plannen.

Helaas. Het zit niet mee…

DataSource.Error:
OData:
Request failed:
The remote server returned an error:
(500) Internal Server Error.
Validation failed invalid_value: query:
Given query is invalid, expected format “keyword:value OPERATOR keyword:‘string’ OPERATOR keyword:“string” OPERATOR keyword:>‘yyyy-mm-dd’ OPERATOR keyword:<integer”.
Space is mandatory between key/value pair and operator.

Dit betreft een melding vanuit de Freshdesk APIs gedurende de validatie van de free-format query.

Advies is om Freshdesk Support te benaderen voor de juiste syntax.

Contact gehad met Freshdesk. Zij geven aan dat dit buiten de support scope valt. Helaas kom ik op deze manier ook niet verder.

Advies is om als alternatief een kort consult in te zetten vanuit een van onze consultants. Er zal een link gestuurd worden.

Prima, ik zie de link graag verschijnen.