Skip to content

Hold Chat Operator

The Hold Chat LOP conditionally holds or passes incoming chat messages based on the state of its Hold parameter. If Hold is on, messages are queued internally. When Hold is turned off, all queued messages are released sequentially.

Hold Chat UI

  • Python Packages:
    • tiktoken (for token counting). Install via ChatTD Python manager.
  • ChatTD Operator: Required and must be configured.
  • Input Conversation (Table DAT): Table with conversation data. Columns: role, message, id, timestamp.
  • Output Conversation (Table DAT): Table containing messages released when the hold is inactive.
Hold Active (Holdactive) op('hold_chat').par.Holdactive Toggle
Default:
false
Toggle Manual Hold (Manualhold) op('hold_chat').par.Manualhold Toggle
Default:
false
Manual Hold (Userhold) op('hold_chat').par.Userhold Toggle
Default:
false
Enable Token Hold (Enabletokenhold) op('hold_chat').par.Enabletokenhold Toggle
Default:
false
Token Hold Threshold (Tokenholdthreshold) op('hold_chat').par.Tokenholdthreshold Integer
Default:
2048
Token Total (Tokentotal) op('hold_chat').par.Tokentotal Integer
Default:
2048
Token Hold Active (Tokenhold) op('hold_chat').par.Tokenhold Toggle
Default:
false
Enable Message Hold (Enablemessagehold) op('hold_chat').par.Enablemessagehold Toggle
Default:
false
Message Hold Threshold (Messageholdthreshold) op('hold_chat').par.Messageholdthreshold Integer
Default:
0
Message Total (Messagetotal) op('hold_chat').par.Messagetotal Integer
Default:
0
Message Hold Active (Messagehold) op('hold_chat').par.Messagehold Toggle
Default:
false
Lock When Held & Unlock (Lockwhenheld) op('hold_chat').par.Lockwhenheld Toggle
Default:
false
Header
Callbacks Header
Callback DAT (Callbackdat) op('hold_chat').par.Callbackdat DAT
Default:
ChatTD_callbacks
Edit Callbacks (Editcallbacksscript) op('hold_chat').par.Editcallbacksscript Pulse
Default:
None
Create Callbacks (Createpulse) op('hold_chat').par.Createpulse Pulse
Default:
None
onHold (Onhold) op('hold_chat').par.Onhold Toggle
Default:
false
onHoldEnd (Onholdend) op('hold_chat').par.Onholdend Toggle
Default:
false
onTokenThreshold (Ontokenthreshold) op('hold_chat').par.Ontokenthreshold Toggle
Default:
false
onTokenThresholdEnd (Ontokenthresholdend) op('hold_chat').par.Ontokenthresholdend Toggle
Default:
false
onMessageThreshold (Onmessagethreshold) op('hold_chat').par.Onmessagethreshold Toggle
Default:
false
onMessageThresholdEnd (Onmessagethresholdend) op('hold_chat').par.Onmessagethresholdend Toggle
Default:
false
onManual (Onmanual) op('hold_chat').par.Onmanual Toggle
Default:
false
onManualEnd (Onmanualend) op('hold_chat').par.Onmanualend Toggle
Default:
false
Textport Debug Callbacks (Debugcallbacks) op('hold_chat').par.Debugcallbacks Menu
Default:
Full Details
Options:
None, Errors Only, Basic Info, Full Details
Bypass (Bypass) op('hold_chat').par.Bypass Toggle
Default:
false
Version (Version) op('hold_chat').par.Version String
Default:
None
Last Updated (Lastupdated) op('hold_chat').par.Lastupdated String
Default:
None
Show Built In Pars (Showbuiltin) op('hold_chat').par.Showbuiltin Toggle
Default:
false
Creator (Creator) op('hold_chat').par.Creator String
Default:
None
Website (Website) op('hold_chat').par.Website String
Default:
None
ChatTD Operator (Chattd) op('hold_chat').par.Chattd OP
Default:
None
Available Callbacks:
  • onHold
  • onHoldEnd
  • onTokenThreshold
  • onTokenThresholdEnd
  • onMessageThreshold
  • onMessageThresholdEnd
  • onManual
  • onManualEnd
Example Callback Structure:
def onHold(info):
# Called when any hold (manual, token, message) becomes active
# info contains details like op, holdType ('manual', 'token', 'message')
print(f"Hold activated: {info.get('holdType')}")
pass

def onHoldEnd(info):
# Called when all holds become inactive
print("Hold ended")
pass

def onTokenThreshold(info):
# Called when token count exceeds threshold
print(f"Token threshold exceeded: {info.get('tokenCount')}")
pass

def onTokenThresholdEnd(info):
# Called when token count drops below threshold
print(f"Token count below threshold: {info.get('tokenCount')}")
pass

def onMessageThreshold(info):
# Called when message count exceeds threshold
print(f"Message threshold exceeded: {info.get('messageCount')}")
pass

def onMessageThresholdEnd(info):
# Called when message count drops below threshold
print(f"Message count below threshold: {info.get('messageCount')}")
pass

def onManual(info):
# Called when manual hold is activated
print("Manual hold activated")
pass

def onManualEnd(info):
# Called when manual hold is deactivated
print("Manual hold deactivated")
pass
  • tiktoken counting can be intensive with high message volume.
  • Lock When Held & Unlock can save resources while held.
  • Optimize callback script efficiency.
hold_op = op('hold_chat1')
conv_dat = op('conversation_log')
hold_op.inputConnectors[0].connect(conv_dat)
hold_op.par.Enabletokenhold = 1
hold_op.par.Tokenholdthreshold = 2048
# Hold activates automatically when conv_dat token count > 2048
# Output DAT will be empty while hold is active
hold_op = op('hold_chat1')
# To activate manual hold:
hold_op.par.Manualhold = 1
# To release manual hold:
hold_op.par.Manualhold = 0
  • Rate limiting chat messages.
  • Manual content moderation queues.
  • Implementing “slow modes”.
  • Managing API costs based on token limits.