Construire votre mise en route Préparer la messagerie texte

Ce que vous allez créer

Ce tutoriel fait partie de la Construire votre démarrage avec la série PHP sur Envato Tuts +. Dans cette série, je vous guide dans le lancement d’une startup du concept à la réalité en utilisant mes Planificateur de réunion application comme exemple de la vie réelle. À chaque étape du processus, je publierai le code de Meeting Planner sous forme d’exemples open source à partir desquels vous pourrez apprendre. Je traiterai également les problèmes liés au démarrage au fur et à mesure qu'ils surviennent.

Préparation à la messagerie texte

Lorsque vous êtes en déplacement et que les heures de réunion planifiées approchent, la réception de messages texte utiles est souvent plus utile que les rappels par courrier électronique. J'ai toujours su que la messagerie texte (ou SMS) jouerait un rôle utile dans Meeting Planner..

Dans l'épisode d'aujourd'hui, je vais vous guider dans la première moitié de la configuration de SMS pour l'application Planificateur de réunion. En gros, je couvrirai le choix d'un fournisseur de SMS, la configuration du compte, la création de l'infrastructure d'application initiale et l'envoi de SMS d'essai..

Dans le prochain épisode, je construirai des scénarios de textos spécifiques dans l'application Meeting Planner et vous expliquerai ces décisions et le codage qui a suivi..

Si vous ne l'avez pas encore fait, essayez dès à présent Meeting Planner en planifiant votre première réunion. N'hésitez pas à poster des commentaires sur votre expérience dans les commentaires ci-dessous. 

Je participe aux commentaires, mais vous pouvez également me joindre à @reifman sur Twitter. Je suis toujours ouvert aux nouvelles idées de fonctionnalités et suggestions de sujets pour les prochains tutoriels.

Pour rappel, tout le code pour Meeting Planner est écrit dans le framework Yii2 pour PHP. Si vous souhaitez en savoir plus sur Yii2, consultez mes séries parallèles Programming With Yii2. Plus je construis Meeting Planner, plus je suis impressionné par Yii2 et son équipe de bénévoles.

Choisir un fournisseur de SMS

Le moyen le plus simple d’envoyer des messages texte à partir de votre application est de vous abonner à un service. Tout comme j'utilise les e-mails entrants et sortants de Mailgun for Meeting Planner, j'ai besoin d'un fournisseur de SMS pour envoyer des messages texte..

Les deux services les plus importants que j'ai examinés étaient Twilio et Plivo. Les deux semblaient être des fournisseurs compétents, mais Twilio offrait des services plus vastes, une documentation plus riche et une expérience utilisateur de haut niveau.. 

Voici une capture d'écran de la page de produit SMS de Twilio:

Twilio offre une telle gamme de services que vous devez plonger un peu pour trouver des SMS:

Plivo semblait également être un bon choix, mais son site Web, sa documentation et ses API ne semblaient pas aussi sophistiqués que Twilio:

Cependant, Plivo est beaucoup moins cher que Twilio; Plus précisément, il offre des SMS entrants gratuits:

J'ai décidé d'utiliser Twilio pour la mise en œuvre initiale de SMS, mais de modulariser les fonctionnalités afin de pouvoir les changer facilement de fournisseur..

Le coût des textos dans Meeting Planner me préoccupe au fur et à mesure que l'audience augmente. Vais-je offrir des SMS gratuitement à tous les utilisateurs, même avant qu'il y ait une source de revenus ou des investisseurs?

Au début du stade alpha, ce n'était pas une préoccupation majeure. Encore une fois, je suis toujours concentré sur la livraison du meilleur MVP possible pour la version bêta..

Débuter avec Twilio

S'enregistrer

S'inscrire à Twilio est facile:

En tant que fournisseur de services de communication sophistiqué, ils implémentent la vérification SMS dans leur processus d’enregistrement:

Le tableau de bord SMS

Une fois vérifié, vous débarquez sur un tableau de bord convivial et bien conçu:

Rassembler nos lettres de créance

Tout d’abord, j’ai accédé à l’ID de compte et au jeton à partir de Informations d'identification de l'API page:

J'ai pris note de ces informations pour une intégration ultérieure avec Meeting Planner..

Obtenir un numéro de téléphone

Twilio vous fournit un numéro de téléphone à partir duquel vous pouvez envoyer des SMS depuis votre application:

J'ai choisi un numéro avec un indicatif régional de Seattle sur lequel Meeting Planner est basé:

Puis, avec Twilio, j’ai envoyé mon premier message de test:

Le message est arrivé très vite sur mon téléphone.

Penser aux messages entrants

En pensant au-delà du MVP, la fonctionnalité de message entrant serait très utile pour Meeting Planner. Par exemple, vous pouvez envoyer un message texte indiquant que vous êtes en retard ou avoir besoin d'un lien pratique vers les instructions relatives à l'application de navigation de votre téléphone. Pour le faire, vous devez actuellement cliquer sur le Web pour accéder à l'invitation à la réunion..

Twilio offre un large éventail de services pour répondre aux textes entrants, y compris un langage de balisage de texte appelé TwiML..

Pour le moment, je ne vais pas trop m'inquiéter des messages entrants. Cependant, chaque fois que les gens envoient un texto à votre numéro Twilio, des frais vous sont facturés; en d'autres termes, il est mûr pour les abus.

Examinons quelques moyens simples de gérer les coûts..

Contrôle des coûts

Pour les tests alpha et bêta, je limite la prise en charge du texte aux numéros de téléphone nord-américains. Cela gardera les coûts un peu plus bas. Twilio offre une méthode intégrée pour filtrer par géographie:

Twilio fournit également des services de messagerie que vous pouvez configurer pour vous comporter de manière spécifique pour votre application, notamment en bloquant tous les SMS:

Comme vous pouvez le constater, ils considèrent également le spam texte et les abus entrants comme une faiblesse de la plate-forme SMS générale (et non la leur) sur laquelle ils réfléchissent..

Intégration de Twilio dans le planificateur de réunions

Ensuite, je souhaitais utiliser la fonctionnalité SMS de base dans Meeting Planner..

Trouver une extension Yii pour Twilio

Il s'avère qu'il existe plusieurs extensions disponibles pour Twilio avec le framework Yii. J'ai décidé d'installer l'encapsuleur YII2 de Filip Ajdačić pour Twilio PHP SDK (GitHub) parce que son nom était le plus inhabituel (je plaisante, son extension semble être régulièrement entretenue).

J'ai ajouté l'extension à composer.json. Du fait qu’il est techniquement en mode de développement, cela a mieux fonctionné que de demander l’extension directement:

"filipajdacic / yii2-twilio": "dev-master"

Ensuite, j'ai mis à jour l'environnement:

$ composer update Chargement des référentiels composer avec les informations de paquet Mise à jour des dépendances (y compris require-dev) - Suppression de ezyang / htmlpurifier (v4.7.0) - Installation de ezyang / htmlpurifier (v4.8.0) Téléchargement: 100% - Installation de twilio / sdk (4.10.0) ) Téléchargement: 100% - Installation de filipajdacic / yii2-twilio (dev-master 7d547a0) Clonage de 7d547a0a47c9864f2e8b5fb5f43748fbd24fc4b1 Écriture de fichier de verrouillage Génération de fichiers autoload 

Je ne m'inquiétais pas trop de son statut de développement car il s'agit d'une extension relativement simple et directe qui n'active que l'API Twilio..

Ajout des informations d'identification

Tout d'abord, j'ai ajouté les clés ci-dessus à mes fichiers d'initialisation:

twin xxx

Ensuite, j'ai ajouté l'enregistrement du composant dans /frontend/config/main.php:

return ['id' => 'mp-frontend', 'name' => 'Meeting Planner', 'basePath' => dirname (__ DIR__), 'bootstrap' => ['log'], 'controllerNamespace' => ' frontend \ controllers ',' components '=> […' Yii2Twilio '=> [' class '=>' filipajdacic \ yiitwilio \ YiiTwilio ',' account_sid '=> $ config [' twilio_sid '],' auth_key '=> $ config ['twilio_token'],], 'log' => [… 

J'ai aussi trouvé préférable de placer quelques-unes des variables dans le fichier common \ config \ params-local.php pour un accès plus facile à travers l'application:

 '1206XXXYYYY', 'twilio_service_id' => 'MGXXXXXYYYYZZZ11134446', 'twilio_test_number' => '1-206-NNN-QQQQ',];

Construire un modèle SMS

Ensuite, j'ai construit un modèle Sms.php à utiliser par programmation lorsque des textes étaient nécessaires:

sms = Yii :: $ app-> Yii2Twilio-> initTwilio (); $ this-> mp_number = Yii :: $ app-> params ['sms_number']; $ this-> service_id = Yii :: $ app-> params ['twilio_service_id']; $ this-> test_number = Yii :: $ app-> params ['twilio_test_number'];  fonction publique Transmettre ($ user_id, $ body = ") // à faire - rechercher usercontact to sms // voir si elles ont une entrée usercontact qui accepte sms // Transmettre $ to_number = $ this-> numéro_test; $ to_number = $ this-> findUserNumber ($ user_id); if (! $ to_number) return false; try $ message = $ this-> sms-> compte-> messages-> create (array ("De" => $ this -> mp_number, "To" => $ to_number, // Texte ce numéro 'MessagingServiceSid' => $ this-> service_id, "Body" => $ body,)); catch (\ Services_Twilio_RestException $ e) echo $ e-> getMessage (); 

Initialement, findUserNumber () était un bout, et transmettre() n'enverrait qu'un numéro de test dans params-local.php, mon téléphone portable personnel.

Voici un code de test que j'ai utilisé pour envoyer mon premier message à partir de Meeting Planner:

$ user_id = 1; $ s = new \ common \ models \ Sms (); $ s-> Transmettre ($ user_id, 'Premier test à partir de Meeting Planner codebase!');

Voici les résultats:

Remarque: oui, je sais que je devrais charger mon téléphone, mais le problème, c'est que la vie de la batterie de l'iPhone 6 est médiocre.

Voilà comment vous vous inscrivez pour Twilio et implémentez les fonctionnalités de base.

Regarder vers l'avant

Dans le prochain épisode, nous explorerons l'intégration actuelle de SMS avec Meeting Planner. Voici quelques questions qui vont se poser:

  • Comment les gens vont-ils fournir leurs numéros de téléphone pour envoyer des SMS?
  • Quelles fonctionnalités du planificateur de réunion doivent utiliser SMS pour les notifications et la remise?
  • Comment les gens décideront-ils ce qu’ils veulent recevoir des textes de Meeting Planner pour?
  • Will Meeting Planner traitera-t-il les textes entrants et y répondra-t-il??
  • Comment vais-je contrôler les coûts des SMS et éviter les abus pendant la phase de démarrage du système?
  • Que faudrait-il pour passer à Plivo afin de réduire les coûts?

Comme toujours, restez à l'écoute pour plus de tutoriels à venir dans la série Construire votre démarrage avec PHP. Comme disait l'ancien candidat à la présidence Donald Trump: "Nous allons gagner, gagner tellement que vous en aurez marre de gagner. Vous direz:" S'il vous plaît, Jeff, arrêtez de gagner ". Et je dirai:" Non, désolé, soyez à l'aise, il y aura plus de victoires en cours. "

Avez-vous déjà programmé une réunion via Meeting Planner? Non? Aller! Fais le. Fais le maintenant! Et comme toujours, laissez-moi savoir ce que vous pensez ci-dessous ou dans les commentaires. Je vous en suis reconnaissant. Je ne peux pas continuer à gagner sans votre aide.

Liens connexes

  • Le wrapper YII2 de Filip Ajdačić pour le SDK PHP Twilio (GitHub)
  • Planificateur de réunion
  • Suivre le profil de financement de Meeting Planner
  • Programmation avec la série Yii2 (Envato Tuts +) 
  • L'échange de développeurs Yii2