Si vous êtes arrivé jusqu'ici, félicitations, et merci d'avoir supporté mes divagations.. Au cours des huit derniers articles, nous avons construit un système complet de service à la clientèle alimenté par Slack, une décision architecturale à la fois. Nous avons commencé avec rien de plus qu'une application Slack et un point de terminaison de webhook. En chemin, nous avons appris comment :
- Sécuriser les webhooks entrants avec la vérification de signature Slack.
- Créer une table de boîte de réception au lieu de traiter directement les webhooks.
- Créer des conversations clients.
- Envoyer des messages dans Slack.
- Traiter les événements asynchrones de Slack.
- Transformer les réponses Slack en conversations clients.
- Transmettre les mises à jour au navigateur à l'aide des événements envoyés par le serveur.
- Créer une logique de reprise, des files d'attente de lettres mortes et des outils opérationnels.
À présent, vous comprenez pourquoi chaque élément existe. Le problème, c'est que ces éléments sont dispersés sur neuf articles. C'est intentionnel pour l'apprentissage. C'est terrible pour développer des logiciels.
Au lieu d'introduire de nouveaux concepts, nous rassemblons tout dans une implémentation de référence complète que vous pouvez télécharger, configurer et exécuter. L'objectif n'est pas de vous donner une plateforme de soutien terminée. L'objectif est de vous fournir une base propre qui démontre chaque grand concept architectural dont nous avons parlé tout au long de cette série. Si vous avez déjà voulu voir comment tous ces éléments s'assemblent, la voici.
Ce qui est inclus
Le dépôt GitHub qui l'accompagne contient une implémentation complète de bout en bout.
Customer Browser
│
▼
Support Chat Page
│
▼
Conversation Service
│
▼
Database
│
┌──────┴────────┐
▼ ▼
Slack API SSE Publisher
│
▼
Slack Workspace
│
▼
Webhook Endpoint
│
▼
Inbox Table
│
▼
Background ProcessorLe dépôt évite volontairement les dépendances au framework. Pas d'ORM. Pas de conteneur d'injection de dépendances. Pas de courtier de messages. Pas de système d'authentification complexe.
Juste ColdFusion.
Cela le rend plus facile à comprendre et beaucoup plus facile à adapter à votre propre application.
Structure du dépôt
Plutôt que d'enfouir tout dans un seul composant énorme, le dépôt garde chaque responsabilité isolée.
/
├── Application.cfc
├── index.cfm
├── support.cfm
│
├── /config
│ settings.example.cfm
│
├── /database
│ schema.sql
│
├── /cfcs
│ slack_api.cfc
│ slack_events.cfc
│ slack_signature.cfc
│ slack_event_processor.cfc
│ support_conversation.cfc
│ support_message.cfc
│ sse.cfc
│
├── /scheduled
│ processSlackInbox.cfm
│
├── /webhooks
│ slackEvents.cfm
│
└── /assets
css
jsRien n'est caché. Si vous êtes curieux de savoir comment quelque chose fonctionne, il n'y a qu'un seul endroit évident où regarder.
Le démarrage devrait prendre quelques minutes
Le processus d'installation reproduit intentionnellement ce que nous avons fait tout au long de la série.
- Créer une application Slack.
- Activer les abonnements aux événements.
- S'abonner aux événements requis.
- Installer l'application.
- Copier
settings.example.cfmverssettings.cfm. - Ajouter votre jeton de bot et votre secret de signature.
- Créer le schéma de base de données.
- Configurer une tâche planifiée.
- Ouvrir la page de soutien.
C'est tout. Pas de gestionnaires de paquets. Pas de Docker. Pas de Kubernetes. Pas de « lancez ces vingt-sept commandes avant de pouvoir voir Hello World ».
L'objectif est de vous amener à votre premier message fonctionnel le plus rapidement possible.
Ce qui manque (volontairement)
Le dépôt omet volontairement plusieurs choses qui ne sont pas incluses.
- Authentification des utilisateurs
- Autorisation
- Comptes clients
- Texte enrichi
- Téléversement de fichiers
- Plusieurs espaces de travail Slack
- Notifications mobiles
- Intégration IA
- Analytique
- Interface d'administration
Ce ne sont pas des omissions, ce sont des points d'extension. Chaque application a des exigences différentes, et je préfère vous donner une architecture propre plutôt que de vous forcer à passer un après-midi à supprimer des fonctionnalités que vous n'avez jamais voulues.
Suivez l'architecture, pas le code
Un dernier conseil avant de télécharger le dépôt. Ne le traitez pas comme une bibliothèque. Traitez-le comme une implémentation de référence.
Reprenez des idées.
Renommez des services.
Remplacez la couche de persistance.
Intégrez-la à votre application existante.
Changez ce que vous devez.
La valeur ne réside pas dans la préservation de chaque ligne de code. La valeur réside dans la compréhension de la raison d'être de chaque élément et de la façon dont les éléments fonctionnent ensemble. Si vous gardez cette architecture intacte, vous disposerez d'une base remarquablement solide pour presque n'importe quel flux de travail alimenté par Slack.