Les appels en direct exigent quand même Twilio, OpenAI et un point de terminaison HTTPS public pour le tableau de bord. Les appels téléphoniques nécessitent aussi un trunk Twilio Elastic SIP qui envoie les appels à votre projet OpenAI.
Déployer sur Railway
Le modèle Railway de LobbyStack déploie les services admin, worker et de migration avec PostgreSQL, Redis et un bucket de stockage. Railway génère tous les secrets et les mots de passe des bases de données. Vous saisissez une clé API OpenAI et vos identifiants Twilio, puis vous créez votre compte sur le domaine de l’admin et suivez les étapes ci-dessous.Après le déploiement
Les appels de test dans le navigateur fonctionnent dès la fin du déploiement. Les courriels, les appels téléphoniques, l’import de sites Web et Google Calendar demandent plus de configuration, et les étapes pour le téléphone et le calendrier utilisent le domaine de l’admin que Railway attribue. Définissez chaque variable sur le service indiqué, puis déployez les modifications en attente dans Railway.Configurez les courriels
La réinitialisation des mots de passe, les codes de vérification, les invitations d’équipe et les alertes aux opérateurs échouent tant que le worker ne peut pas envoyer de courriels. Sur le serviceworker, définissez :
SMTP_HOST,SMTP_USERNAMEetSMTP_PASSWORDfournis par votre fournisseur de courrielSMTP_PORT, qui vaut587par défaut, etSMTP_SECURE, qui vautfalsepar défaut. Utilisez465ettruesi votre fournisseur exige TLS dès la connexion.EMAIL_FROM, une adresse depuis laquelle votre fournisseur vous laisse envoyer, par exempleLobbyStack <no-reply@example.com>EMAIL_REPLY_TO, si les réponses doivent aller à une autre adresse
Terminez la configuration des appels téléphoniques
Les appels dans le navigateur fonctionnent sans ces étapes. Les appels téléphoniques exigent un projet OpenAI avec SIP activé et un trunk Twilio Elastic SIP :- Dans le tableau de bord OpenAI, ajoutez un webhook pour
live.transport.incomingqui pointe vershttps://votre_domaine_admin/api/webhooks/openai/live. - Définissez le secret de signature du webhook comme
OPENAI_WEBHOOK_SECRETsur le serviceadmin. - Dans Twilio, créez un trunk Elastic SIP avec l’URI d’origination
sip:votre_id_de_projet_openai@sip.api.openai.com;transport=tls. - Définissez le SID du trunk comme
TWILIO_SIP_TRUNK_SIDsur le serviceworker. Sans lui, le worker ne peut pas provisionner de numéro de téléphone.
Importez des sites Web (facultatif)
DéfinissezFIRECRAWL_API_KEY sur le service worker. Sans elle, l’import de sites Web échoue.
Connectez Google Calendar (facultatif)
Dans Google Cloud, activez l’API Google Calendar et créez un client OAuth pour une application Web. Ajoutezhttps://votre_domaine_admin/api/calendar/google/callback comme URI de redirection autorisée. Définissez GOOGLE_CLIENT_ID et GOOGLE_CLIENT_SECRET sur le service admin. Le modèle remplit GOOGLE_REDIRECT_URI, et le worker lit les trois valeurs depuis l’admin.
Utilisez un domaine personnalisé
Ajoutez le domaine au serviceadmin, puis donnez à APP_BASE_URL sur le service admin la valeur https://votre_domaine. Ces variables y font référence et suivent le changement :
SITE_URL,AUTH_TRUSTED_ORIGINS,TWILIO_SMS_WEBHOOK_URL,TWILIO_STATUS_CALLBACK_URLetGOOGLE_REDIRECT_URIsur le serviceadminAPP_BASE_URL,TWILIO_STATUS_CALLBACK_URLetGOOGLE_REDIRECT_URIsur le serviceworker
Base officielle
Le fichierdocker-compose.yml du dépôt exécute :
- PostgreSQL avec pgvector pour les données durables, l’état d’authentification et les embeddings des connaissances
- Redis pour les files d’attente, les limites de débit et la coordination en temps réel
- un volume Docker persistant pour les enregistrements et les documents téléversés
- le tableau de bord d’administration Next.js et l’API HTTP
- le worker d’arrière-plan et le répartiteur de l’outbox transactionnelle, qui exécute aussi chaque appel GPT-Live
- Caddy, qui achemine le nom d’hôte du tableau de bord en HTTP simple, derrière le proxy ou l’équilibreur de charge qui termine le HTTPS
Flux de données
- Le tableau de bord et l’API lisent et écrivent dans PostgreSQL par des connexions propres à chaque rôle et avec la sécurité au niveau des lignes.
- Les effets de bord durables entrent dans l’outbox PostgreSQL dans la même transaction que les changements d’état de l’entreprise.
- Le worker répartit les tâches en file d’attente et actualise les instantanés du contexte de l’entreprise.
- OpenAI héberge l’audio des appels. L’admin démarre chaque appel avec l’instantané de l’entreprise, et le worker répond aux demandes de GPT-Live pour les réservations, les messages et les transferts.
- L’admin et le worker partagent le fournisseur de stockage configuré. Les déploiements Compose sur un seul hôte utilisent par défaut un volume local persistant.
Responsabilités
Vous êtes responsable des éléments suivants :- la durabilité de PostgreSQL, de Redis et du stockage de fichiers
- les sauvegardes, les exercices de restauration, les mises à niveau et la surveillance
- le DNS public et le TLS du tableau de bord
- les identifiants Twilio, OpenAI, de courriel, de calendrier, de facturation et d’analytique
- la rotation des secrets et les rôles de base de données à privilèges minimaux