Skip to main content

Client

You can use instances of this class to send or receive messages.

Example​

import { Messaging } from "@signalwire/realtime-api";

const client = new Messaging.Client({
project: "<project-id>",
token: "<api-token>",
topics: ["office"],
});

client.on("message.received", (message) => {
console.log("message.received", message);
});

await client.send({
topic: "office",
from: "+1xxx",
to: "+1yyy",
body: "Hello World!"
});

Constructors​

constructor​

• new Client(opts)

Parameters​

NameTypeDescription
optsObject-
opts.topicsstring[]SignalWire topics, e.g. ['home', 'office']. Previously known as "context".
opts.projectstringSignalWire Project ID, e.g. a10d8a9f-2166-4e82-56ff-118bc3a4840f.
opts.tokenstringSignalWire API token, e.g. PT9e5660c101cd140a1c93a0197640a369cf5f16975a0079c9.
opts.debug?Object-
opts.debug.logWsTraffic?booleanIf true, logs all WebSocket traffic. Default is false.

Methods​

disconnect​

â–¸ disconnect(): void

Disconnects this client. The client will stop receiving events and you will need to create a new instance if you want to use it again.

Returns​

void

Example​

client.disconnect();

off​

â–¸ off(event, fn?)

Remove an event handler.

Parameters​

NameTypeDescription
eventstringName of the event. See Events for the list of available events.
fn?FunctionAn event handler which had been previously attached.

on​

â–¸ on(event, fn)

Attaches an event handler to the specified event.

Parameters​

NameTypeDescription
eventstringName of the event. See Events for the list of available events.
fnFunctionAn event handler.

Example​

In the below example, we are listening for the call.state event and logging the current call state to the console. This means this will be triggered every time the call state changes.

call.on("call.state", (call) => {
console.log("call state changed:", call.state);
});

once​

â–¸ once(event, fn)

Attaches an event handler to the specified event. The handler will fire only once.

Parameters​

NameTypeDescription
eventstringName of the event. See Events for the list of available events.
fnFunctionAn event handler.

removeAllListeners​

â–¸ removeAllListeners(event?)

Detaches all event listeners for the specified event.

Parameters​

NameTypeDescription
event?stringName of the event (leave this undefined to detach listeners for all events). See Events for the list of available events.

send​

â–¸ send(params): Promise<MessagingSendResult> - See MessagingSendResult

Send an outbound SMS or MMS message.

Parameters​

NameTypeDescription
paramsObject-
params.body?stringThe content of the message. Optional if media is present.
params.topic?stringInbound events for the message will be received on this topic. If not specified, a default topic will be used. Previously known as "context".
params.fromstringThe phone number to place the message from. Must be a SignalWire phone number or short code that you own.
params.media?string[]Array of URLs to send in the message. Optional if body is present.
params.region?stringRegion of the world to originate the message from. A default value is picked based on account preferences or device location.
params.tags?string[]Array of strings to tag the message with for searching in the UI.
params.tostringThe phone number to send to.

Returns​

Promise<MessagingSendResult> - See MessagingSendResult

Asynchronously returns a result object.

Example​

Send a message.

try {
const sendResult = await client.send({
from: "+1xxx",
to: "+1yyy",
body: "Hello World!",
});
console.log("Message ID: ", sendResult.messageId);
} catch (e) {
console.error(e.message);
}

Events​

message.received​

• message.received(message)

Emitted whenever a message is received. Your event handler receives a message object. Example:

const client = new Messaging.Client(...)
client.on('message.received', (message) => {
console.log('Message received:', message)
// message.from
// message.to
// message.body
// ...
})

Parameters​

NameTypeDescription
messageMessageContractThe message that has been received.

message.updated​

• message.updated(message)

Emitted when the status of a message is updated. You can use this event to track the different stages that an outbound message goes through for delivery. Example:

const client = new Messaging.Client(...)
client.on('message.updated', (message) => {
console.log('Message updated:', message)
// message.from
// message.to
// message.direction
// message.state
// ...
})

client.send(...)

Parameters​

NameTypeDescription
messageMessageContractThe message.