Skip to content

Rule.io SDK


Rule.io SDK / rcml/src / sms

Variable: sms

const sms: object

Defined in: rcml/src/sms/builders/sms-namespace.ts:40

Namespace object grouping every SMS content-JSON builder.

Type Declaration

createContent

createContent: (opts) => SmsContentJson

Build an SmsContentJson root document — the sms container that wraps all top-level nodes.

Parameters

opts

CreateSmsContentOptions

Returns

SmsContentJson

Example

ts
const content = sms.createContent({
  nodes: [
    sms.createMessageNode({ text: 'Hi ' }),
    sms.createSubscriberPlaceholder({ field: 'email' }),
    sms.createMessageNode({ text: ', your order has shipped!' }),
  ],
})

createCustomFieldPlaceholder

createCustomFieldPlaceholder: (opts) => SmsPlaceholderNode

Build a CustomField placeholder node.

Produces original = '[CustomField:<group>.<name>]', or '[CustomField:<group>.<name>::<maxLength>]' when maxLength is given.

Parameters

opts

CreateSmsCustomFieldPlaceholderOptions

Returns

SmsPlaceholderNode

Example

ts
sms.createCustomFieldPlaceholder({ group: 'Order', name: 'Total' })
sms.createCustomFieldPlaceholder({ group: 'Order', name: 'Total', maxLength: 20 })

createDatePlaceholder

createDatePlaceholder: (opts) => SmsPlaceholderNode

Build a Date placeholder node.

Produces original = '[Date:<source>::<format>]', where <source> is derived from SmsDateSource.

Parameters

opts

CreateSmsDatePlaceholderOptions

Returns

SmsPlaceholderNode

Example

ts
sms.createDatePlaceholder({ source: 'tomorrow', format: 'd.m.Y' })
// original: '[Date:tomorrow::d.m.Y]'

sms.createDatePlaceholder({
  source: { kind: 'days-from-now', count: 7 },
  format: 'Y-m-d',
})
// original: '[Date:in-7-days::Y-m-d]'

sms.createDatePlaceholder({
  source: { kind: 'custom-field', group: 'Order', name: 'CreatedAt' },
  format: 'Y-m-d',
})
// original: '[Date:[CustomField:Order.CreatedAt]::Y-m-d]'

createLinkNode

createLinkNode: (opts) => SmsLinkNode

Build an SmsLinkNode — a hyperlink in the SMS body.

The URL is used as both the destination and the visible text. The Rule platform applies tracking and/or URL shortening at send time based on the track and shorten flags.

Parameters

opts

CreateSmsLinkNodeOptions

Returns

SmsLinkNode

Example

ts
sms.createLinkNode({ url: 'https://example.com/orders/123', track: true, shorten: true })

createMessageNode

createMessageNode: (opts) => SmsMessageNode

Build an SmsMessageNode — a text segment in the SMS body.

Text may contain \n characters: a single \n produces a line break, and \n at a paragraph boundary is also expressed inline in the same way.

Parameters

opts

CreateSmsMessageNodeOptions

Returns

SmsMessageNode

Example

ts
sms.createMessageNode({ text: 'Your order has shipped!\nAccount: [Subscriber:email]' })

createPlaceholderNode

createPlaceholderNode: (opts) => SmsPlaceholderNode

Build an SmsPlaceholderNode from raw attribute values. Most callers should reach for one of the typed convenience builders below instead — they compute original and name from domain inputs so the caller never has to assemble bracket-token strings by hand.

Parameters

opts

CreateSmsPlaceholderNodeOptions

Returns

SmsPlaceholderNode

Example

ts
sms.createPlaceholderNode({
  type: 'Subscriber',
  original: '[Subscriber:email]',
  name: 'email',
})

createRemoteContentPlaceholder

createRemoteContentPlaceholder: (opts) => SmsPlaceholderNode

Build a RemoteContent placeholder node.

Produces original = '[RemoteContent:<url>]'. The name attribute is always 'RemoteContent', matching what the SMS RFM parser produces.

Parameters

opts

CreateSmsRemoteContentPlaceholderOptions

Returns

SmsPlaceholderNode

Example

ts
sms.createRemoteContentPlaceholder({ url: 'https://api.example.com/promo' })

createSubscriberPlaceholder

createSubscriberPlaceholder: (opts) => SmsPlaceholderNode

Build a Subscriber placeholder node.

Produces original = '[Subscriber:<field>]'.

Parameters

opts

CreateSmsSubscriberPlaceholderOptions

Returns

SmsPlaceholderNode

Example

ts
sms.createSubscriberPlaceholder({ field: 'email' })
// → { type: 'placeholder', attrs: { type: 'Subscriber',
//     original: '[Subscriber:email]', name: 'email', value: null } }

createUnsubscribeNodes

createUnsubscribeNodes: () => [SmsMessageNode, SmsPlaceholderNode]

Build the two-node unsubscribe footer: a localised stop-word message followed by the system unsubscribe link placeholder.

Spread the result directly into a createContent({ nodes }) call:

Returns

[SmsMessageNode, SmsPlaceholderNode]

Example

ts
sms.createContent({
  nodes: [
    sms.createMessageNode({ text: 'Your order has shipped.' }),
    ...sms.createUnsubscribeNodes(),
  ],
})

createUserPlaceholder

createUserPlaceholder: (opts) => SmsPlaceholderNode

Build a User placeholder node.

Produces original = '[User:<field>]'.

Parameters

opts

CreateSmsUserPlaceholderOptions

Returns

SmsPlaceholderNode

Example

ts
sms.createUserPlaceholder({ field: 'CompanyName' })

Example

ts
import { sms, createSmsDocument } from '@rule/rcml';

const content = sms.createContent({
  nodes: [
    sms.createMessageNode({ text: 'Hi ' }),
    sms.createSubscriberPlaceholder({ field: 'email' }),
    sms.createMessageNode({ text: '!\n' }),
    sms.createLinkNode({ url: 'https://example.com', track: true, shorten: true }),
  ],
});

const doc = createSmsDocument({ content });