Appearance
Quick Start
Get up and running with your first voice assistant in minutes.
Basic Assistant
Here's a minimal example that responds to user speech:
typescript
import { AiFlowAssistant } from "@sipgate/ai-flow-sdk";
const assistant = AiFlowAssistant.create({
debug: true,
onSessionStart: async (event) => {
console.log(`Session started for ${event.session.phone_number}`);
return "Hello! How can I help you today?";
},
onUserSpeak: async (event) => {
const userText = event.text;
console.log(`User said: ${userText}`);
// Process user input and return response
return `You said: ${userText}`;
},
onSessionEnd: async (event) => {
console.log(`Session ${event.session.id} ended`);
},
onUserBargeIn: async (event) => {
console.log(`User interrupted with: ${event.text}`);
return "I'm listening, please continue.";
},
});Express.js Integration
The easiest way to get started is with Express.js:
typescript
import express from "express";
import { AiFlowAssistant } from "@sipgate/ai-flow-sdk";
const app = express();
app.use(express.json());
const assistant = AiFlowAssistant.create({
onSessionStart: async (event) => {
return "Welcome! How can I help you today?";
},
onUserSpeak: async (event) => {
// Your conversation logic here
return processUserInput(event.text);
},
onSessionEnd: async (event) => {
await cleanupSession(event.session.id);
},
});
// Webhook endpoint
app.post("/webhook", assistant.express());
// Health check
app.get("/health", (req, res) => {
res.json({ status: "ok" });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`AI Flow assistant running on port ${PORT}`);
});WebSocket Integration
For WebSocket-based integrations:
typescript
import WebSocket from "ws";
import { AiFlowAssistant } from "@sipgate/ai-flow-sdk";
const wss = new WebSocket.Server({
port: 8080,
perMessageDeflate: false,
});
const assistant = AiFlowAssistant.create({
onUserSpeak: async (event) => {
return "Hello from WebSocket!";
},
});
wss.on("connection", (ws, req) => {
console.log("New WebSocket connection");
ws.on("message", assistant.ws(ws));
ws.on("error", (error) => {
console.error("WebSocket error:", error);
});
ws.on("close", () => {
console.log("WebSocket connection closed");
});
});
console.log("WebSocket server listening on port 8080");Response Types
You can return different types of responses:
typescript
// 1. Simple string (automatically converted to speak action)
return "Hello, how can I help?";
// 2. Action object (for advanced control)
return {
type: "speak",
session_id: event.session.id,
text: "Hello!",
barge_in: { strategy: "minimum_characters" },
};
// 3. null/undefined (no response needed)
return null;Next Steps
- Core Concepts - Learn about events and responses in detail
- API Reference - Explore the complete API
- Integration Guides - See more integration examples