French (Français) translation by Syméon Smith (you can also view the original English article)



Ce tutoriel fait partie de la série Créer Votre Startup Avec PHP sur Envato Tuts+. Dans cette série, je vous guide dans la création d'une startup, l'idée à la réalité et en utilisant mon application Metting Planner comme exemple. À chaque nouvelle étape, je donnerai le code de Meeting Planner en open-source pour que vous puissiez vous en inspirer. Je parlerai aussi de certains problèmes liés au business des startup qui peuvent ressortir.
Se Préparer pour Envoyer des Messages
Lorsque vous voyagez et que des rendez-vous approchent, il peut être plus utile de recevoir des rappels par message que par mail. J'ai toujours su que les messages textes (ou SMS) seraient une part de Meeting Planner.
Dans cet épisode, je vais vous montrer la première moitié de ma configuration pour l'application Meeting Planner. Il s'agit en fait tout simplement de choisir un fournisseur de SMS, de paramétrer un compte, de créer l'infrastructure initiale de l'application, puis j'enverrai un message de test.
Dans l'épisode suivant, je créerai des scénarios de messages spécifiques pour l'application Meeting Planner, je vous expliquerai mes décisions et le code que j'aurai écrit.
Si vous ne l'avez pas encore, essayez Meeting Planner maintenant en programmant votre premier rendez-vous. Sentez-vous libres de poster vos commentaires sur votre expérience dans l'espace dédié ci-dessous.
Je participe dans les fils de commentaires, mais vous pouvez aussi me contacter sur Twitter @reifman. Je suis toujours ouverte à des nouvelles idées de fonctionnalités et de sujets pour des futures tutoriels.
Pour rappel, tout le code de Meeting Planner est écrit avec le Framework Yii2 pour PHP. Si vous voulez en apprendre plus sur Yii2, rendez-vous sur ma série parallèle Programmer Avec Yii2. Plus je crée sur Meeting Planner, et plus je suis impressionnée par Yii2 et son équipe de volontaires.
Choisir un Fournisseur SMS
La façon la plus simple d'envoyer des messages depuis votre application est de s'inscrire à un service. Tout comme j'utilise Mailgun pour les mails entrants et sortants, je vais avoir besoin d'un fournisseur de SMS pour envoyer des messages.
Les deux services les plus importants sur lesquels je me suis penchés sont Twilio et Plivo. Tous deux semblaient être des fournisseurs compétents, mais Twilio possédait des services plus larges, une documentation plus riche et une meilleure expérience utilisateur.
Ci-dessous, une capture d'écran de la page produit SMS de Twilio :



Twilio offre une telle gamme de services qu'il faut descendre plus bas pour trouver les SMS :



Plivo avait aussi l'air d'être un bon choix, mais son site, sa documentation et son API ne semblaient pas être aussi sophistiqués que ceux de Twilio :



Cependant, Plivo est bien moins cher que Twilio; plus spécifiquement il offre des SMS entrants.



J'ai décidé finalement de choisir Twilio pour mon implémentation initiale des SMS, mais aussi de moduler les fonctions pour pouvoir facilement changer de fournisseur.
Malgré cela, je suis un peu préoccupée par les coûts des messages dans Meeting Planner lorsque l'audience grossira. Est-ce que je continuerais d'offrir les SMS à tous les utilisateurs avant même qu'il y ait un revenue ou des investisseurs ?
Au moment de la phase Alpha, ce n'était pas un sujet important. Je suis toujours concentrée sur délivrer les meilleurs services possibles pour la sortie de la beta.
Débuter Avec Twilio
S'inscrire
S'enregistrer sur Twilio, c'est facile :



En tant que fournisseur sophistiqué de services de communication, Twilio utilise bien sûr une vérification par SMS dans le processus d'inscription.



Le Dashboard SMS
Quand le compte est vérifié, on arrive sur un sympathique et beau tableau de bord :



Rassembler Nos Informations
D'abord, j'ai accédé à l'ID du compte et au token depuis la page API Credentials :



J'en ai pris note pour les intégrer plus tard dans Meeting Planner.
Obtenir un Numéro de Téléphone
Twilio vous fournit un numéro de téléphone avec lequel vous pouvez envoyer des SMS depuis votre application :



J'ai choisi un numéro avec une identification à Seattle, où Meeting Planner est basé :



J'ai ensuite pu envoyer mon premier message de test avec Twilio :



Le message est arrivé très rapidement sur mon téléphone.
Penser aux Message Entrants
En allant plus loin que la première version, des messages entrants pourraient être très utiles. Vous pourriez par exemple envoyer un message indiquant que vous êtes en retard, ou que vous avez besoin d'une adresse pour vous rendre à votre rendez-vous. Pour le moment, vous avez besoin de cliquer sur l'invitation du rendez-vous pour demander ces informations.
Twilio offre un riche panel de services pour répondre aux messages entrants, incluant un langage appelé TwiML.



Pour le moment, je ne vais pas m'attarder sur les messages entrants. Cependant, lorsque des gens envoient des messages à votre numéro Twilio, vous êtes facturés; autrement dit, c'est la porte ouverte aux abus.
Jetons un œil à quelques façons simples de réduire les coûts.
Contrôler les Coûts
Pour les tests en alpha et beta, je limite le support des messages aux utilisateurs nord-américains. Cela va garder les prix bas. Twilio propose justement un moyen inclus de filtrer par géographie :



Twilio propose aussi des Services de Messagerie que vous pouvez configurer comme vous voulez, par exemple en bloquant tous les SMS :



Comme vous pouvez le voir, eux aussi voient les abus et les spams par messages entrants comme une faiblesse dans la plateforme SMS en général (pas seulement la leur) et ils proposent leur aide pour cela.
Intégrer Twilio dans Meeting Planner
Puis j'ai voulu intégrer les fonctions SMS basiques dans Meeting Planner.
Trouver une Extension Yii pour Twilio
Il y a en fait plusieurs extensions pour Twilio dans le framework Yii. J'ai décidé d'installer "YII2 wrapper for Twilio PHP SDK" (GitHub) de Filip Ajdačić car son nom était rigolo (je rigole, son extension semblait régulièrement mise à jour).
J'ai d'abord ajouté l'application au composer.json. Comme il s'agit d'une version de développement, ça a mieux marché que d'accéder directement à l'extension.
"filipajdacic/yii2-twilio": "dev-master"
Ensuite, j'ai mis à jour l'environnement :
$ composer update Loading composer repositories with package information Updating dependencies (including require-dev) - Removing ezyang/htmlpurifier (v4.7.0) - Installing ezyang/htmlpurifier (v4.8.0) Downloading: 100% - Installing twilio/sdk (4.10.0) Downloading: 100% - Installing filipajdacic/yii2-twilio (dev-master 7d547a0) Cloning 7d547a0a47c9864f2e8b5fb5f43748fbd24fc4b1 Writing lock file Generating autoload files
Je n'étais pas trop inquiète à propos du statut de développement parce que c'est juste une extension simple qui active l'API Twilio.
Ajouter les Identifiants
D'abord, j'ai ajouté les clés récupérées plus haut dans mon fichier d'initialisation :
twilio_sid = "ACxxxxXXxxxxxXXxxxXXxxxxxxxxxxxe1" twilio_token = "d3xxxxXXxxxxxXXxxxXXxxxxxxxxxxx41" twilio_number = "1206XXXYYYY" # for next episode #twilio_service_sid = "MxxxxXXxxxxxXXxxxXXxxxxxxxxxxxGf6"
Ensuite j'ai ajouté l'inscription de mon 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 pensé qu'il était bon de place quelques unes des variables dans common\config\params-local.php pour un meilleur accès depuis l'application :
<?php return [ ... 'sms_number' => '1206XXXYYYY', 'twilio_service_id' => 'MGXXXXXYYYYZZZZ11134446', 'twilio_test_number' => '1-206-NNN-QQQQ', ];
Créer un Modèle de SMS
Ensuite j'ai créé un model Sms.php à utiliser en programmation quand les messages sont requis :
<?php namespace common\models; use Yii; use yii\base\Model; use frontend\models\UserContact; class Sms { private $sms; private $service_id; private $mp_number; private $test_number; function __construct() { $this->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']; } public function transmit($user_id,$body='') { // to do - lookup usercontact to sms // see if they have a usercontact entry that accepts sms // transmit $to_number = $this->test_number; $to_number = $this->findUserNumber($user_id); if (!$to_number) { return false; } try { $message = $this->sms->account->messages->create(array( "From" => $this->mp_number, "To" => $to_number, // Text this number 'MessagingServiceSid' => $this->service_id, "Body" => $body, )); } catch (\Services_Twilio_RestException $e) { echo $e->getMessage(); } }
Initialement, findUserNumber()
était une issue, et transmit() n'envoyait qu'à un numéro de test dans params-local.php, mon numéro personnel.
Voici le code que j'ai utilisé pour envoyer mon premier message depuis Meeting Planner :
$user_id = 1; $s = new \common\models\Sms(); $s->transmit($user_id,'First test from Meeting Planner codebase!');
Voici le résultat :



Note : ouais, je sais que je devrais charger mon téléphone—mais c'est vraiment la mauvaise batterie de l'iPhone 6 qui est le problème.
C'est donc ainsi que l'on s'inscrit chez Twilio et que l'on implémente quelques fonctions basiques.
À Venir
Dans le prochain épisode, nous explorerons des vraies intégrations des SMS dans Meeting Planner. Voici quelques questions qui apparaîtront :
- Comment les utilisateurs indiqueront leur numéro de téléphone ?
- Quelles sont les fonctionnalités que Meeting Planner devrait utiliser pour les notifications et la livraison des messages ?
- Comment les utilisateurs décideront-ils de pourquoi ils reçoivent des messages de Meeting Planner ?
- Meeting Planner pourra-t-il comprendre les messages entrants et y répondre ?
- Comment contrôlerai-je les coûts et préviendrai-je les abus pendant les premières phases de la startup ?
- Comment cela se passerait-il de passer à Plivo pour de moindres coûts ?
Comme toujours, restez connectés pour les tutoriels à venir dans la série Créer Votre Startup Avec PHP. Comme Donald Trump le disait, « Nous allons gagner, tout gagner jusqu'à ce qu'on n'en puisse plus de gagner. Vous direz alors, "S'il te plaît, Jeff, arrête de gagner". Et je vous dirai alors, "Non, désolé, habituez-vous parce qu'il va encore y en avoir." »
Avez-vous déjà enregistré un rendez-vous via Meeting Planner ? Non ? Allez-y ! Maintenant ! Et comme toujours, laissez-moi votre pensée dans les commentaires, c'est apprécié. Je ne peux pas tout gagner sans votre aide.