Skip to navigation

Start the HTTP server that serves the SWML document.

Returns immediately when SWAIG_CLI_MODE=true is set, so the CLI testing tool can load the service without opening a port.

serve() starts a @hono/node-server instance that runs until explicitly stopped. For embedding into an existing application, use asRouter() to get a mountable Hono sub-app instead.

serve() accepts two call shapes: the positional (host, port, opts) form, or a single options object as the first argument.

Parameters

hostOrOpts
string | object

Either a host string (positional form) or a single options object with host, port, sslCert, sslKey, sslEnabled, and domain fields. When an options object is passed, its port takes precedence over the positional port, and opts is ignored.

host
string

Positional form: hostname to bind to. Defaults to the host passed to the constructor, or "0.0.0.0".

port
number

Port number to listen on. Defaults to the port passed to the constructor, which itself falls back to the PORT environment variable or 3000.

opts
object

Optional SSL/TLS overrides. Each field falls back to the matching value on the service instance.

opts.sslCert
string

Path to the SSL certificate file. When both sslCert and sslKey are resolved and sslEnabled is true, the server runs over HTTPS.

opts.sslKey
string

Path to the SSL private key file.

opts.sslEnabled
boolean

Override whether SSL/HTTPS is enabled for this run.

opts.domain
string

Domain name associated with the SSL certificate.

Returns

Promise<void> — resolves once the listener is bound.

Example

import { SWMLService } from '@signalwire/sdk';
const service = new SWMLService({ name: 'my-service', route: '/swml' });
service.addVerb('answer', {});
service.addVerb('play', { url: 'https://example.com/welcome.mp3' });
// Start on default host/port (0.0.0.0:3000)
await service.serve();
// Or override host and port, positionally or as an options object
// await service.serve('127.0.0.1', 8080);
// await service.serve({ host: '127.0.0.1', port: 8080 });