Chat — Configuration
Complete reference for all Chat node properties, channel options, and expression support.
The Chat node requires a channel integration to be configured in your BizFirstAI environment settings before use. Contact your BizFirstAI administrator to enable Slack, WhatsApp Business API, SMS, or Teams integrations for your tenant.
Properties Reference
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
actors |
string[] | Required | — | List of recipient identifiers. Each entry is a user ID whose contact details (Slack handle, phone number, email address) are resolved from the user directory. At least one actor is required. |
message |
string | Required | — | The text message delivered to each recipient via the configured channel. Supports BizFirst expressions to embed dynamic workflow data. Keep messages concise and action-oriented — specify clearly what reply is expected. |
channel |
string (enum) | Required | — | The delivery channel. Must be one of: "slack", "whatsapp", "email", "sms", "teams". The selected channel must be configured in your environment integrations. |
timeout_minutes |
integer | Optional | 1440 |
Number of minutes to wait for a reply before routing to the error port. Set to 0 to disable timeout (not recommended). For Slack and Teams, short timeouts (60–240 minutes) are typical. For email, longer windows (720–1440 minutes) are more appropriate. |
Channel Values Reference
Slack
"slack"
WhatsApp
"whatsapp"
Email
"email"
SMS
"sms"
Teams
"teams"
Expression Support
| Property | Expression Support | Example |
|---|---|---|
actors |
Supported | ["{{ $var.manager_id }}"] |
message |
Supported | "Deploy v{{ $var.version }} to prod? Reply YES or NO." |
channel |
Static only | "slack" |
timeout_minutes |
Static only | 120 |
Sample Configuration JSON
{
"nodeType": "Chat",
"id": "chat_deploy_confirm",
"label": "Slack Deployment Confirmation",
"config": {
"actors": ["{{ $var.on_call_engineer_id }}"],
"message": "Ready to deploy *{{ $var.service_name }} v{{ $var.version }}* to production.\n\nRelease notes: {{ $var.release_notes_url }}\nEstimated downtime: {{ $var.downtime_estimate }}\n\nReply *YES* to proceed or *NO* to cancel.",
"channel": "slack",
"timeout_minutes": 60
}
}
IChatReplyParser — AI Classification
The IChatReplyParser service analyses the incoming reply text and assigns one of the following classification values:
| Classification | Port Fired | Example Replies Classified |
|---|---|---|
"approved" |
approved | "Yes", "YES", "Approved", "Go ahead", "Looks good", "OK", "Sure", "👍", "Confirm", "Proceed" |
"rejected" |
rejected | "No", "NO", "Rejected", "Don't do it", "Cancel", "Stop", "Hold off", "Not yet", "👎", "Deny" |
"unknown" |
success | "What does this mean?", "Can you clarify?", Any unrelated or ambiguous reply |
Classification context: The IChatReplyParser uses the original message text as context for classification. A reply of "No rush" to a "Confirm your availability?" message may be classified differently than "No rush" in response to "Deploy now?". Design your messages with clear yes/no framing for the most accurate classification results.
Message Best Practices
- Always state clearly what action the reply will trigger.
- Specify the expected reply format when precision is critical (e.g., "Reply YES or NO").
- Keep messages under 300 characters for SMS — longer messages may be truncated or split.
- For Slack, you can use basic markdown:
*bold*,_italic_, newlines with\n. - For WhatsApp, plain text is safest — formatting support varies by client.
- Include a context link when the recipient may need background information to make a decision.
- Avoid embedding sensitive data (credentials, PII) in message text — use references to internal systems instead.