VAD project in 3CX V14 aborts with "error.badfetch"

Discussion in 'CRM / Helpdesk / App Integration' started by TWU, Apr 5, 2016.

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

    TWU

    Joined:
    Jan 12, 2016
    Messages:
    18
    Likes Received:
    1
    Hello,
    after I updated from 3CX V12.5 to V14 my VAD project for callrouting aborts with "error.badfetch".
    When I call the digital receptionist (extension 8520) internally, the VAD code works perfect, but when I call from outside (ISDN), the code execution interrupts and the error handler is executed, which transfers all calls to the reception.
    It seems the code does not even start to execute, when called form external lines.
    Error log:
    START_CALLFLOW_EXECUTION: Main.flow - Build: 41
    VARIABLE_CHANGED: project$_CurrentErrorDescription$=
    VARIABLE_CHANGED: project$_CurrentErrorName$=error.badfetch
    END_EXECUTION: Main.flow - - EH
    END_EXECUTION: Main.flow - errorHandlerContainer1 - EH
    END_EXECUTION: Main.flow - 0b4c203e-7058-4885-bd98-8d2c6fbb539c.error - EH
    END_EXECUTION: Main.flow - - DH

    Maybe this is caused by an http error 404, but I do not see why this can be different between internal and external calls, because the IIS log says:
    2016-04-05 07:32:57 127.0.0.1 GET /ivr/VADRouting_Debug_41/Main_DebugInfo.aspx application.Main_NextComponentUri%24=&application.Main_NextDisconnectHandlerUri%24=&application.Main_NextErrorHandlerUri%24=&application.MenuResult_InvalidOption=InvalidOption&application.MenuResult_Timeout=Timeout&application.MenuResult_ValidOption=ValidOption&application.RecordResult_Completed=Completed&application.RecordResult_NothingRecorded=NothingRecorded&application.RecordResult_StopBySilence=StopBySilence&application.RecordResult_StopDigit=StopDigit&application.UserInputResult_InvalidDigits=InvalidDigits&application.UserInputResult_Timeout=Timeout&application.UserInputResult_ValidDigits=ValidDigits&application.project%24_CalledNumber=&application.project%24_CallerCompany=&application.project%24_CallerName=&application.project%24_CallerNumber=&application.project%24_CallerNumberWOZero=&application.project%24_CallerString=Incoming%20call%20from%20%25CallerName%25%2C%20%25CallerCompany%25%2C%20CallerNumber%3A%20%25CallerNumber%25%2C%20RoutingDestination%3A%20%25RoutingDestination%25%2C%20Starttime%3A%20%25STARTTIME%25%20-%20EndTime%3A%20%25ENDTIME%25&application.project%24_CurrentErrorDescription%24=&application.project%24_CurrentErrorName%24=&application.project%24_EndTime=&application.project%24_MailFrom=telephone@smc.at&application.project%24_MailTo=TEL_AT_IN@smc.at&application.project%24_MinMatchNumbers=8&application.project%24_Password=*****%24fgH&application.project%24_PbxSipPort%24=5060&application.project%24_Reception=8000&application.project%24_RoutingDestination=8000&application.project%24_SMTPPort=25&application.project%24_SMTPServer=10.1.1.19&application.project%24_SQLDatabase=Phone_CallRouting&application.project%24_SQLServerName=10.110.5.129%5CSQL2008R2&application.project%24_SourceLength=0&application.project%24_StartTime=&application.project%24_Username=3CXUser&application.project%24_WorkingDirectory%24=C%3A%5CProgramData%5C3CX%5CInstance1%5CData%5CHttp%5CInterface%5Civr%5CVADRouting_Debug_41%5C&session.ani=072452557018&session.callid=From_072452557018_To_8520_Menu_8520_%230%2F318&session.dnis=8520 80 - 127.0.0.1 3CXIvrEngine/1.0+libwww/5.3.1 - 404 15 0 3

    I also already added
    <httpRuntime requestValidationMode=”2.0″ />
    <pages validateRequest=”False” />
    to the web.config file in the ivr subfolder.

    Would kindly appriciate any ideas.

    Thanks!
    Thomas
     
  2. edossantos

    edossantos Support Team
    Staff Member 3CX Support

    Joined:
    Jun 27, 2007
    Messages:
    1,449
    Likes Received:
    115
    Hi Thomas,

    You're using quite a lot of variables, and the length of the query string is around 2048. I think that a possible cause of this could be that when you call from inside, the caller ID is just 4 digits, and when you call from outside it's larger, and that difference causes that the query string is larger than 2048 characters for external calls, and shorter for internal calls. That could cause that internal calls work and external don't. That 2048 limit is the default for IIS and here Microsoft explains that IIS will return 404 error in that case:
    https://www.iis.net/configreference/sys ... uestlimits

    In order to avoid this limitation in the query string, you need to change the web.config file into the ivr subfolder, adding the following parameters, for example to extend it to 32768:
    Code:
    <configuration>
       <system.webServer>
          <security>
             <requestFiltering>
                <requestLimits maxQueryString="32768" />
             </requestFiltering>
          </security>
       </system.webServer>
    </configuration>
    
    You might need to restart IIS after making this change.

    Hope the information helps.

    Kind regards.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
    elennaro likes this.
  3. TWU

    TWU

    Joined:
    Jan 12, 2016
    Messages:
    18
    Likes Received:
    1
    Thanks a lot for your fast and professional response!
    I reduced the length of my variables and it is working fine now!
     
  4. Nathan Lang

    Joined:
    Jul 6, 2017
    Messages:
    38
    Likes Received:
    0
    Do you know what the limit on the return string is? I am getting this error:
    08:16:29.166|10352|(0):Error! Module '3CX.com.OSBinet'. Error ID 204. rc2
    08:16:29.166|10352|(0):DocumentParser::FetchBuffer - could not open URL: udcValidateAccountNumber_MF_eceGetHoldStatus_DoIt.aspx
    08:16:29.166|10352|(0):DocumentParser::FetchDocument - exiting with error result 2
    08:16:29.166|10352|(0):Error! Module '3CX.com.vxi'. Error ID 203. uriudcValidateAccountNumber_MF_eceGetHoldStatus_DoIt.aspx
     
Thread Status:
Not open for further replies.