genie-toolkit icon indicating copy to clipboard operation
genie-toolkit copied to clipboard

Numeric error codes are not handled correctly

Open gcampax opened this issue 2 years ago • 0 comments

The HTTP helpers in Thingpedia will throw errors with a numeric code property. If those bubble up, Genie will barf:

Failed to invoke action HTTPError: Unexpected HTTP error 502 in request to https://streams.kqed.org/kqedradio
    at IncomingMessage.<anonymous> (/var/home/gcampagn/Projects/almond-server/node_modules/thingpedia/dist/helpers/http.js:139:35)
    at IncomingMessage.emit (events.js:387:35)
    at endReadableNT (internal/streams/readable.js:1317:12)
    at processTicksAndRejections (internal/process/task_queues.js:82:21) {
  code: 502,
  url: 'https://streams.kqed.org/kqedradio',
  detail: ''
}
Genie says: Sorry, I had an error processing your command: The expression evaluated to a falsy value: assert_1.default(typeof value ==='string').
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:

  assert_1.default(typeof value === 'string')

    at new EnumValue (/var/home/gcampagn/Projects/almond-server/node_modules/thingtalk/dist/ast/values.js:1339:25)
    at InferenceStatementExecutor.executeStatement (/var/home/gcampagn/Projects/almond-server/node_modules/genie-toolkit/dist/lib/dialogue-agent/statement_executor.js:131:30)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async ExecutionDialogueAgent.execute (/var/home/gcampagn/Projects/almond-server/node_modules/genie-toolkit/dist/lib/dialogue-agent/abstract_dialogue_agent.js:124:93)
    at async ThingTalkDialogueHandler._executeCurrentState (/var/home/gcampagn/Projects/almond-server/node_modules/genie-toolkit/dist/lib/dialogue-agent/handlers/thingtalk.js:369:81)
    at async DialogueLoop._handleUserInput (/var/home/gcampagn/Projects/almond-server/node_modules/genie-toolkit/dist/lib/dialogue-agent/dialogue-loop.js:242:27)
    at async DialogueLoop._loop (/var/home/gcampagn/Projects/almond-server/node_modules/genie-toolkit/dist/lib/dialogue-agent/dialogue-loop.js:288:21) {
  generatedMessage: true,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}

Instead, it should recognize those errors and treat them as unexpected errors.

gcampax avatar Sep 16 '21 22:09 gcampax