Print scripting memory variable value for debugging

If I make SCRIPTING_ENABLE_MEMORY: true and set the below value of the json to a variable
How can I print the value of “invoiceNumber” variable below for debugging purposes?
I don’t want to send this value to a bot or get from a bot.

#begin
SET_SCRIPTING_MEMORY invoiceNumber|JSON_PATH json expression

this wont work. it is possible to use jsonpath with scripting memory ($msg(JSONPATH) - see BotiumScript API Docs — Botium documentation), but not in the #begin section … what do you want to do with this ?

@Florian
I already tried this. Is $msg an inbuilt function?
If I add $msg(JSON expression) to the convo.txt file, I do not see the value of the JSON expression, rather I just see $msg(JSON expression) itself.
Do we need to add any specific capability to the config json file?

yes, it is a built-in function that has been added recently. SCRIPTING_ENABLE_MEMORY should be enabled, that’s it. Should actually work.

@Florian
I made SCRIPTING_ENABLE_MEMORY as true in the json and included $msg(JSON expression), but it is not printing the value. I modified the json and included different combinations, but still does not work.
Below is the verbose output.

MAC:spec user$ botium-cli run mochawesome --expandscriptingmemory true --config tenants/foo/botium.json --convos foo_specs/DW --reporter-options "reportDir=./reports,reportFilename=lav_1" --verbose
  botium-cli Using Botium configuration file tenants/foo/botium.json +0ms
  botium-cli-run command options: { _: [ 'run' ],
  botium-cli-run   expandscriptingmemory: 'true',
  botium-cli-run   config: 'tenants/foo/botium.json',
  botium-cli-run   c: 'tenants/foo/botium.json',
  botium-cli-run   convos: [ 'foo_specs/DW' ],
  botium-cli-run   C: [ 'foo_specs/DW' ],
  botium-cli-run   'reporter-options': 'reportDir=./reports,reportFilename=lav_1',
  botium-cli-run   reporterOptions: 'reportDir=./reports,reportFilename=lav_1',
  botium-cli-run   verbose: true,
  botium-cli-run   v: true,
  botium-cli-run   output: 'mochawesome',
  botium-cli-run   testsuitename: 'Botium Test-Suite',
  botium-cli-run   n: 'Botium Test-Suite',
  botium-cli-run   expandutterances: false,
  botium-cli-run   timeout: 60,
  botium-cli-run   '$0': 'botium-cli' } +0ms
  botium-cli-run Mocha Reporter "mochawesome", options: { reportDir: './reports', reportFilename: 'lav_1' } +1ms
  botium-core-BotDriver Loaded Botium configuration files /Users/user/botium/DL/foo1/spec/botium.json,/Users/user/botium/DL/foo1/spec/tenants/foo/botium.json +0ms
  botium-core-ScriptingProvider ReadConvosFromDirectory(foo_specs/DW) found filenames: learn_about_foo_1.convo.txt,p.pconvo.txt +0ms
  botium-core-ScriptingProvider ReadConvosFromDirectory(foo_specs/DW) found convos:
  botium-core-ScriptingProvider  1 learn_about_foo_1.convo.txt ({ convoDir: 'foo_specs/DW',
  botium-core-ScriptingProvider   filename: 'learn_about_foo_1.convo.txt' }): Line 1: #bot - TEXT1 BUTTONS(I Agree,Decline) | Line 5: #me - I Agree
  botium-core-ScriptingProvider $msg($.activities.conversation.id) +5ms
  botium-core-ScriptingProvider ReadConvosFromDirectory(foo_specs/DW) found utterances:
  botium-core-ScriptingProvider  none +0ms
  botium-core-ScriptingProvider ReadConvosFromDirectory(foo_specs/DW) found partial convos:
  botium-core-ScriptingProvider  undefined AGREE_LOGIN ({ convoDir: 'foo_specs/DW', filename: 'p.pconvo.txt' }): Line 3: #bot - TEXT1 BUTTONS(I Agree,Decline) | Line 7: #me - I Agree +0ms
  botium-core-ScriptingProvider ReadConvosFromDirectory(foo_specs/DW) scripting memories:
  botium-core-ScriptingProvider  none +0ms
  botium-cli-run ready reading convos (1), expanding convos ... +1s
  botium-cli-run expanding scripting memory ... +0ms
  botium-core-ScriptingProvider ExpandScriptingMemoryToConvos - Convo "learn_about_foo_1.convo.txt" - Variables to replace, all: "[ '$msg' ]" +2ms
  botium-core-ScriptingProvider ExpandScriptingMemoryToConvos - Convo "learn_about_foo_1.convo.txt" - Expanding convo "learn_about_foo_1.convo.txt" Expanded 0 convo. (Details: 0 = ) +0ms
  botium-core-ScriptingProvider ExpandScriptingMemoryToConvos - Deleting 0 original convo +0ms
  botium-core-ScriptingProvider ExpandScriptingMemoryToConvos - 0 convo expanded, added to convos (1). Result 1 convo +0ms
  botium-core-ScriptingProvider ExpandConvos - Using utterances expansion mode: all +0ms
  botium-cli-run ready expanding convos and utterances, number of test cases: (1). +18ms
  botium-cli-run adding test case learn_about_foo_1.convo.txt (from: { convoDir: 'foo_specs/DW',
  botium-cli-run   filename: 'learn_about_foo_1.convo.txt' }) +46ms


  Botium Test-Suite
  botium-core-BotDriver Build - Botium Core Version: 1.11.2 +1s
  botium-core-BotDriver Build - Capabilites: { PROJECTNAME: 'My Botium Project',
  botium-core-BotDriver   TESTSESSIONNAME: 'Botium Test Session',
  botium-core-BotDriver   TESTCASENAME: 'Botium Test Case',
  botium-core-BotDriver   TEMPDIR: 'botiumwork',
  botium-core-BotDriver   CLEANUPTEMPDIR: true,
  botium-core-BotDriver   WAITFORBOTTIMEOUT: 10000,
  botium-core-BotDriver   SIMULATE_WRITING_SPEED: false,
  botium-core-BotDriver   SIMPLEREST_PING_RETRIES: 6,
  botium-core-BotDriver   SIMPLEREST_PING_TIMEOUT: 10000,
  botium-core-BotDriver   SIMPLEREST_PING_VERB: 'GET',
  botium-core-BotDriver   SIMPLEREST_PING_UPDATE_CONTEXT: true,
  botium-core-BotDriver   SIMPLEREST_STOP_RETRIES: 6,
  botium-core-BotDriver   SIMPLEREST_STOP_TIMEOUT: 10000,
  botium-core-BotDriver   SIMPLEREST_STOP_VERB: 'GET',
  botium-core-BotDriver   SIMPLEREST_START_RETRIES: 6,
  botium-core-BotDriver   SIMPLEREST_START_TIMEOUT: 10000,
  botium-core-BotDriver   SIMPLEREST_START_VERB: 'GET',
  botium-core-BotDriver   SIMPLEREST_POLL_VERB: 'GET',
  botium-core-BotDriver   SIMPLEREST_POLL_INTERVAL: 1000,
  botium-core-BotDriver   SIMPLEREST_POLL_UPDATE_CONTEXT: true,
  botium-core-BotDriver   SIMPLEREST_METHOD: 'GET',
  botium-core-BotDriver   SIMPLEREST_IGNORE_EMPTY: true,
  botium-core-BotDriver   SIMPLEREST_TIMEOUT: 10000,
  botium-core-BotDriver   SIMPLEREST_EXTRA_OPTIONS: {},
  botium-core-BotDriver   SIMPLEREST_STRICT_SSL: true,
  botium-core-BotDriver   SIMPLEREST_INBOUND_UPDATE_CONTEXT: true,
  botium-core-BotDriver   SIMPLEREST_CONTEXT_MERGE_OR_REPLACE: 'MERGE',
  botium-core-BotDriver   SCRIPTING_TXT_EOL: '\n',
  botium-core-BotDriver   SCRIPTING_XLSX_EOL_WRITE: '\r\n',
  botium-core-BotDriver   SCRIPTING_XLSX_HASHEADERS: true,
  botium-core-BotDriver   SCRIPTING_CSV_SKIP_HEADER: true,
  botium-core-BotDriver   SCRIPTING_CSV_QUOTE: '"',
  botium-core-BotDriver   SCRIPTING_CSV_ESCAPE: '"',
  botium-core-BotDriver   SCRIPTING_NORMALIZE_TEXT: true,
  botium-core-BotDriver   SCRIPTING_ENABLE_MEMORY: true,
  botium-core-BotDriver   SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS: false,
  botium-core-BotDriver   SCRIPTING_MATCHING_MODE: 'include',
  botium-core-BotDriver   SCRIPTING_UTTEXPANSION_MODE: 'all',
  botium-core-BotDriver   SCRIPTING_UTTEXPANSION_RANDOM_COUNT: 1,
  botium-core-BotDriver   SCRIPTING_UTTEXPANSION_NAMING_MODE: 'justLineTag',
  botium-core-BotDriver   SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX: '16',
  botium-core-BotDriver   SCRIPTING_MEMORYEXPANSION_KEEP_ORIG: false,
  botium-core-BotDriver   ASSERTERS: [ { ref: 'HASLINK', src: 'botium-asserter-basiclink' } ],
  botium-core-BotDriver   LOGIC_HOOKS: [],
  botium-core-BotDriver   USER_INPUTS: [],
  botium-core-BotDriver   SECURITY_ALLOW_UNSAFE: true,
  botium-core-BotDriver   CONTAINERMODE: 'directline3',
  botium-core-BotDriver   DIRECTLINE3_SECRET: '####',
  botium-core-BotDriver   DIRECTLINE3_DOMAIN: 'https://directline.botframework.com/v3/directline',
  botium-core-BotDriver   DIRECTLINE3_WEBSOCKET: true,
  botium-core-BotDriver   DIRECTLINE3_POLLINGINTERVAL: 1000,
  botium-core-BotDriver   DIRECTLINE3_WELCOME_ACTIVITY:
  botium-core-BotDriver    { type: 'invoke',
  botium-core-BotDriver      name: 'TScenario',
  botium-core-BotDriver      value: { trigger: 'Entrypoint', args: [Object] } },
  botium-core-BotDriver   DIRECTLINE3_HANDLE_ACTIVITY_TYPES: 'message',
  botium-core-BotDriver   CONFIG: 'tenants/foo/botium.json' } +0ms
  botium-core-BotDriver Build - Sources : { LOCALPATH: '.',
  botium-core-BotDriver   GITPATH: 'git',
  botium-core-BotDriver   GITBRANCH: 'master',
  botium-core-BotDriver   GITDIR: '.' } +1ms
  botium-core-BotDriver Build - Envs : { IS_BOTIUM_CONTAINER: true } +0ms
  botium-connector-PluginConnectorContainer-helper Botium plugin botium-connector-directline3 loaded. Plugin version is 0.0.26 +0ms
  botium-connector-directline3 Validate called +0ms
  botium-connector-directline3 Build called +3ms
  botium-connector-directline3 Start called +2ms
  botium-connector-directline3 Directline Connection Status: 1 / Connecting +11ms
  botium-connector-directline3 UserSays called +1ms
  botium-connector-directline3 Posting activity  {
  "type": "invoke",
  "name": "TScenario",
  "value": {
    "trigger": "Entrypoint",
    "args": {
      "brand": "example",
      "customScheme": "https",
      "tenantName": "foo"
    }
  },
  "from": {
    "id": "me"
  }
} +0ms
postActivity { type: 'invoke',
  name: 'TScenario',
  value:
   { trigger: 'Entrypoint',
     args:
      { brand: 'example',
        customScheme: 'https',
        tenantName: 'foo' } },
  from: { id: 'me' } }
creating WebSocket path
  botium-connector-directline3 Directline Connection Status: 2 / Online +587ms
  botium-cli-run running testcase learn_about_foo_1.convo.txt +798ms
  botium-core-Convo learn_about_foo_1.convo.txt wait for bot  +0ms
WebSocket open OpenEvent {
  target:
   WebSocket {
     _events: { open: [Function], close: [Function], message: [Function] },
     _eventsCount: 3,
     _maxListeners: undefined,
     _binaryType: 'nodebuffer',
     _closeCode: 1006,
     _closeFrameReceived: false,
     _closeFrameSent: false,
     _closeMessage: '',
     _closeTimer: null,
     _extensions: {},
     _protocol: '',
     _readyState: 1,
     _receiver:
      Receiver {
        _writableState: [WritableState],
        writable: true,
        _events: [Object],
        _eventsCount: 6,
        _maxListeners: undefined,
        _binaryType: 'nodebuffer',
        _extensions: {},
        _isServer: false,
        _maxPayload: 104857600,
        _bufferedBytes: 0,
        _buffers: [],
        _compressed: false,
        _payloadLength: 0,
        _mask: undefined,
        _fragmented: 0,
        _masked: false,
        _fin: false,
        _opcode: 0,
        _totalPayloadLength: 0,
        _messageLength: 0,
        _fragments: [],
        _state: 0,
        _loop: false,
        [Symbol(websocket)]: [Circular] },
     _sender:
      Sender {
        _extensions: {},
        _socket: [TLSSocket],
        _firstFragment: true,
        _compress: false,
        _bufferedBytes: 0,
        _deflating: false,
        _queue: [] },
     _socket:
      TLSSocket {
        _tlsOptions: [Object],
        _secureEstablished: true,
        _securePending: false,
        _newSessionPending: false,
        _controlReleased: true,
        _SNICallback: null,
        servername: 'directline.botframework.com',
        alpnProtocol: false,
        authorized: true,
        authorizationError: null,
        encrypted: true,
        _events: [Object],
        _eventsCount: 5,
        connecting: false,
        _hadError: false,
        _handle: [TLSWrap],
        _parent: null,
        _host: 'directline.botframework.com',
        _readableState: [ReadableState],
        readable: true,
        _maxListeners: undefined,
        _writableState: [WritableState],
        writable: true,
        allowHalfOpen: false,
        _sockname: null,
        _pendingData: null,
        _pendingEncoding: '',
        server: undefined,
        _server: null,
        ssl: [TLSWrap],
        _requestCert: true,
        _rejectUnauthorized: true,
        parser: null,
        _httpMessage: null,
        timeout: 0,
        [Symbol(res)]: [TLSWrap],
        [Symbol(asyncId)]: 90,
        [Symbol(lastWriteQueueSize)]: 0,
        [Symbol(timeout)]: null,
        [Symbol(kBytesRead)]: 0,
        [Symbol(kBytesWritten)]: 0,
        [Symbol(connect-options)]: [Object],
        [Symbol(websocket)]: [Circular] },
     _bufferedAmount: 0,
     _isServer: false,
     _redirects: 0,
     _url:
      'path',
     _req: null },
  type: 'open' }
  botium-connector-directline3 Posted activity, assigned ID: 5PnbcyP0G684ANkWjtqE1f-o|0000000 +607ms
  botium-connector-directline3 received message  {
  "type": "message",
  "id": "5PnbcyP0G684ANkWjtqE1f-o|0000002",
  "timestamp": "2021-05-03T18:28:13.0188239Z",
  "serviceUrl": "https://directline.botframework.com/",
  "channelId": "directline",
  "from": {
    "id": "HybridBotStage@PNoEIQIc82Q",
    "name": "HybridBotStage"
  },
  "conversation": {
    "id": "5PnbcyP0G684ANkWjtqE1f-o"
  },
  "recipient": {
    "id": "HybridBotStage@PNoEIQIc82Q",
    "name": "HybridBotStage"
  },
  "text": "TEXT1",
  "speak": "TEXT1\nSelect one of the following options: \n1. I Agree<break/>2. Decline<break/>",
  "inputHint": "expectingInput",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.hero",
      "content": {
        "buttons": [
          {
            "title": "I Agree",
            "type": "imBack",
            "value": "I Agree"
          },
          {
            "title": "Decline",
            "type": "imBack",
            "value": "Decline"
          }
        ]
      }
    }
  ]
} +1s
  botium-core-Convo learn_about_foo_1.convo.txt: bot says (cleaned by binary and base64 data and sourceData) {
  botium-core-Convo   "sender": "bot",
  botium-core-Convo   "media": [],
  botium-core-Convo   "buttons": [],
  botium-core-Convo   "cards": [
  botium-core-Convo     {
  botium-core-Convo       "buttons": [
  botium-core-Convo         {
  botium-core-Convo           "text": "I Agree",
  botium-core-Convo           "payload": "I Agree"
  botium-core-Convo         },
  botium-core-Convo         {
  botium-core-Convo           "text": "Decline",
  botium-core-Convo           "payload": "Decline"
  botium-core-Convo         }
  botium-core-Convo       ],
  botium-core-Convo       "sourceData": {
  botium-core-Convo         "contentType": "application/vnd.microsoft.card.hero",
  botium-core-Convo         "content": {
  botium-core-Convo           "buttons": [
  botium-core-Convo             {
  botium-core-Convo               "title": "I Agree",
  botium-core-Convo               "type": "imBack",
  botium-core-Convo               "value": "I Agree"
  botium-core-Convo             },
  botium-core-Convo             {
  botium-core-Convo               "title": "Decline",
  botium-core-Convo               "type": "imBack",
  botium-core-Convo               "value": "Decline"
  botium-core-Convo             }
  botium-core-Convo           ]
  botium-core-Convo         }
  botium-core-Convo       }
  botium-core-Convo     }
  botium-core-Convo   ],
  botium-core-Convo   "forms": [],
  botium-core-Convo   "messageText": "TEXT1",
  botium-core-Convo   "channel": "default"
  botium-core-Convo } +2s
  botium-core-ScriptingMemory fill start: {} +0ms
  botium-core-ScriptingMemory fill end: {} +1ms
  botium-core-ScriptingProvider assertBotResponse learn_about_foo_1.convo.txt/Line 1 BOT: TEXT1 = TEXT1 ... +3s
  botium-core-Convo learn_about_foo_1.convo.txt/Line 5: user says (cleaned by binary and base64 data and sourceData) {
  botium-core-Convo   "sender": "me",
  botium-core-Convo   "channel": null,
  botium-core-Convo   "not": false,
  botium-core-Convo   "optional": false,
  botium-core-Convo   "messageText": "I Agree\n",
  botium-core-Convo   "media": null,
  botium-core-Convo   "buttons": null,
  botium-core-Convo   "cards": null,
  botium-core-Convo   "forms": null,
  botium-core-Convo   "attachments": null,
  botium-core-Convo   "asserters": [],
  botium-core-Convo   "userInputs": [],
  botium-core-Convo   "logicHooks": []
  botium-core-Convo } +10ms
  botium-connector-directline3 UserSays called +15ms
  botium-connector-directline3 Posting activity  {
  "type": "message",
  "text": "I Agree\n",
  "from": {
    "id": "me"
  }
} +1ms
postActivity { type: 'message', text: 'I Agree\n', from: { id: 'me' } }
  botium-connector-directline3 Posted activity, assigned ID: 5PnbcyP0G684ANkWjtqE1f-o|0000003 +631ms
  botium-cli-run learn_about_foo_1.convo.txt ready, calling done function. +2s
    ✓ learn_about_foo_1.convo.txt (2418ms)
  botium-connector-directline3 Stop called +4ms
  botium-connector-directline3 unsubscribed from directline activity subscription +1ms
  botium-connector-directline3 unsubscribing from directline connectionstatus subscription +0ms
  botium-connector-directline3 ending directline connection +0ms
  botium-connector-directline3 Clean called +1ms
  botium-connector-BaseContainer Cleanup rimrafing temp dir /Users/user/botium/DL/foo1/spec/botiumwork/My Botium Project 20210503 112810 oedId +0ms


  1 passing (3s)

[mochawesome] Report JSON saved to /Users/user/botium/DL/foo1/spec/reports/lav_1.json

[mochawesome] Report HTML saved to /Users/user/botium/DL/foo1/spec/reports/lav_1.html

WebSocket close CloseEvent {
  target:
   WebSocket {
     _events: { open: [Function], close: [Function], message: [Function] },
     _eventsCount: 3,
     _maxListeners: undefined,
     _binaryType: 'nodebuffer',
     _closeCode: 1006,
     _closeFrameReceived: false,
     _closeFrameSent: true,
     _closeMessage: '',
     _closeTimer:
      Timeout {
        _called: false,
        _idleTimeout: -1,
        _idlePrev: null,
        _idleNext: null,
        _idleStart: 4953,
        _onTimeout: null,
        _timerArgs: undefined,
        _repeat: null,
        _destroyed: false,
        [Symbol(unrefed)]: false,
        [Symbol(asyncId)]: 206,
        [Symbol(triggerId)]: 0 },
     _extensions: {},
     _protocol: '',
     _readyState: 3,
     _receiver:
      Receiver {
        _writableState: [WritableState],
        writable: false,
        _events: {},
        _eventsCount: 0,
        _maxListeners: undefined,
        _binaryType: 'nodebuffer',
        _extensions: {},
        _isServer: false,
        _maxPayload: 104857600,
        _bufferedBytes: 0,
        _buffers: [],
        _compressed: false,
        _payloadLength: 526,
        _mask: undefined,
        _fragmented: 0,
        _masked: false,
        _fin: true,
        _opcode: 1,
        _totalPayloadLength: 0,
        _messageLength: 0,
        _fragments: [],
        _state: 0,
        _loop: false,
        [Symbol(websocket)]: [Circular] },
     _sender:
      Sender {
        _extensions: {},
        _socket: [TLSSocket],
        _firstFragment: true,
        _compress: false,
        _bufferedBytes: 0,
        _deflating: false,
        _queue: [] },
     _socket:
      TLSSocket {
        _tlsOptions: [Object],
        _secureEstablished: true,
        _securePending: false,
        _newSessionPending: false,
        _controlReleased: true,
        _SNICallback: null,
        servername: 'directline.botframework.com',
        alpnProtocol: false,
        authorized: true,
        authorizationError: null,
        encrypted: true,
        _events: [Object],
        _eventsCount: 4,
        connecting: false,
        _hadError: false,
        _handle: null,
        _parent: null,
        _host: 'directline.botframework.com',
        _readableState: [ReadableState],
        readable: false,
        _maxListeners: undefined,
        _writableState: [WritableState],
        writable: false,
        allowHalfOpen: false,
        _sockname: null,
        _pendingData: null,
        _pendingEncoding: '',
        server: undefined,
        _server: null,
        ssl: null,
        _requestCert: true,
        _rejectUnauthorized: true,
        parser: null,
        _httpMessage: null,
        timeout: 0,
        write: [Function: writeAfterFIN],
        [Symbol(res)]: null,
        [Symbol(asyncId)]: 90,
        [Symbol(lastWriteQueueSize)]: 0,
        [Symbol(timeout)]: null,
        [Symbol(kBytesRead)]: 4689,
        [Symbol(kBytesWritten)]: 1142,
        [Symbol(connect-options)]: [Object],
        [Symbol(websocket)]: undefined },
     _bufferedAmount: 0,
     _isServer: false,
     _redirects: 0,
     _url:
      'path',
     _req: null },
  type: 'close',
  wasClean: false,
  reason: '',
  code: 1006 }
MAC:spec user$ 

So with $msg it is possible to select parts of the current conversation step data structure. The JSON-Path you are using does just not exist there. You are trying to reference some Directline internals, which are not available there. What do you want to achieve ?

I want to print the conversation id which is in JSON.
We can compare like this JSON_PATH $.conversation.id | some_id
But for debugging purposes, I can always do a verbose log and get this conversation id.
Instead of turning on verbose logs (which are huge to read), I want to just print what values I need from the json paths which are happening behind the scenes.

Can be done by first filling a scripting memory variable from the Directline response, and then use this variable as output

#bot
something
SET_SCRIPTING_MEMORY conversationId|$msg($.sourceData.conversation.id)

#me
This is my conversation id: $conversationId

#me
This is my conversation id: $conversationId

Doesnt the above mean that this is my response to the bot’s question?

Above is failing because “something” in the below is not expecting a “conversationId” as its response.
#bot
something
SET_SCRIPTING_MEMORY conversationId|$msg($.sourceData.conversation.id)

In this case you might be better off with writing your own little Logic Hook: https://botium.atlassian.net/wiki/spaces/BOTIUM/pages/642908193/Developing+Custom+Logic+Hooks

Thank you @Florian
I got this working

#bot
some message
DUMMY_INSERT_TO_SCRIPTING_MEMORY $msg($.sourceData.conversation.id)

My custom logic hook is

module.exports = class MyCustomLogicHook {

  onBotEnd ({ convo, convoStep, botMsg, args, scriptingMemory }) {
    console.log(`Conversation id: ${args}`)
  }
} 
"LOGIC_HOOKS": [
        {
          "ref": "DUMMY_INSERT_TO_SCRIPTING_MEMORY",
          "src": "MyCustomLogicHook.js"
        }
      ],

Running the botium-cli, I see a lot of print statements for
MyCustomLogicHook constructor
MyGlobalLogicHook constructor
MyGlobalLogicHook onConvoBegin
MyGlobalLogicHook onBotStart etc…

How do I disable those messages and let it print only the message I ask it to in the javascript file?

Remove the console.log statements in your logic hook that you do not want to see