Deze zelfstudie maakt deel uit van de Bouw je Startup met PHP-serie op Envato Tuts +. In deze serie begeleid ik je door het opstarten van een startup van concept naar realiteit met behulp van mijn Meeting Planner app als een realistisch voorbeeld. Elke stap die ik doe, zal ik de Meeting Planner-code vrijgeven als open-source voorbeelden waar je van kunt leren. Ik zal ook opstartgerelateerde zakelijke problemen aanpakken zodra deze zich voordoen.
Wanneer u onderweg bent en geplande vergadertijden naderen, is het nuttig om nuttige tekstberichten te ontvangen die vaker nuttig zijn dan e-mailherinneringen. Ik heb altijd geweten dat sms-berichten (of sms-berichten) een nuttige rol zouden spelen in Meeting Planner.
In de aflevering van vandaag ga ik je door de eerste helft van mijn sms-configuratie voor de Meeting Planner-toepassing. Kortom, ik zal het hebben over het kiezen van een SMS-provider, het opzetten van het account, het bouwen van de initiële applicatie-infrastructuur en het testen van sms'en.
In de volgende aflevering zal ik specifieke sms-scenario's in de Meeting Planner-applicatie bouwen en je door die beslissingen en de codering die volgde begeleiden.
Als u dit nog niet hebt gedaan, kunt u Meeting Planner nu uitproberen door uw eerste vergadering te plannen. Voel je vrij om feedback te geven over je ervaringen in de reacties hieronder.
Ik doe mee aan de commentaarthreads, maar je kunt me ook bereiken op @reifman op Twitter. Ik sta altijd open voor nieuwe functie-ideeën en suggesties voor onderwerpen voor toekomstige zelfstudies.
Ter herinnering: alle code voor Meeting Planner is geschreven in het Yii2 Framework voor PHP. Als je meer wilt weten over Yii2, bekijk dan mijn parallelle serie Programming With Yii2. Hoe meer ik Meeting Planner uitwerk, hoe meer ik onder de indruk ben van Yii2 en hun team van vrijwilligers.
De eenvoudigste manier om sms-berichten te verzenden vanuit uw toepassing, is abonneren op een service. Net zoals ik de inkomende en uitgaande e-mail van Mailgun for Meeting Planner gebruik, heb ik een sms-provider nodig om sms-berichten te bezorgen.
De twee meest prominente diensten waar ik naar keek, waren Twilio en Plivo. Beide leken op competente providers, maar Twilio beschikte over bredere services, uitgebreidere documentatie en gebruikerservaring op het allerhoogste niveau.
Hier is een screenshot van de sms-productpagina van Twilio:
Twilio biedt zo'n reeks services dat je een beetje moet duiken om SMS te vinden:
Plivo leek ook een goede keuze, maar de website, documentatie en API leken niet zo geavanceerd als Twilio:
Plivo is echter een stuk goedkoper dan Twilio; specifiek, biedt het gratis inkomende sms:
Ik besloot om met Twilio te gaan voor mijn eerste sms-implementatie, maar om de functies te modulariseren, zodat ik ze eenvoudig naar een andere provider kon omschakelen.
Ik maak me zorgen over de kosten van sms'en in Meeting Planner als de publieksschalen. Zal ik gratis sms aanbieden aan alle gebruikers, zelfs voordat er een inkomstenstroom of investeerders zijn??
In de vroege alpha-fase was dit geen topprioriteit. Nogmaals, ik ben nog steeds gefocust op het leveren van de beste MVP die ik kan voor de beta-release.
Registreren bij Twilio is eenvoudig:
Als een geavanceerde leverancier van communicatieservices implementeren ze SMS-verificatie in hun registratieproces:
Eenmaal geverifieerd, beland je op een vriendelijk, goed ontworpen dashboard:
Ten eerste heb ik toegang gekregen tot de account-ID en het token van de API-referenties pagina:
Ik heb deze genoteerd voor latere integratie met Meeting Planner.
Twilio biedt u een telefoonnummer waarmee u SMS vanuit uw applicatie kunt verzenden:
Ik koos een nummer met een regiocode van Seattle, waar Meeting Planner is gebaseerd:
Vervolgens stuurde ik met Twilio mijn eerste testbericht:
Het bericht kwam heel snel op mijn telefoon aan.
Denken buiten de MVP, zou inkomende bericht mogelijkheid geweldig zijn voor Meeting Planner. U kunt bijvoorbeeld sms'en dat u te laat bent of een handige link naar de routebeschrijving voor de navigatie-app van uw telefoon nodig hebt. Momenteel moet u hiervoor doorklikken naar internet voor de uitnodiging voor de vergadering.
Twilio biedt een uitgebreide set services voor het reageren op inkomende teksten, waaronder een sms-opmaaktaal met de naam TwiML.
Voorlopig maak ik me niet al te veel zorgen over inkomende berichten. Wanneer mensen echter je Twilio-nummer intoetsen, worden er kosten in rekening gebracht; met andere woorden, het is rijp voor misbruik.
Laten we een paar eenvoudige manieren bekijken om de kosten te beheren.
Voor alfa- en bètatests beperk ik de ondersteuning van de tekst tot Noord-Amerikaanse telefoonnummers. Dit zal de kosten een beetje lager houden. Twilio biedt een ingebouwde manier om op geografische locatie te filteren:
Twilio biedt ook Messaging Services die u kunt configureren om zich te gedragen op specifieke manieren die zijn afgestemd op uw toepassing, inclusief het blokkeren van alle sms-berichten:
Zoals je ziet, zien ze ook inkomende sms en misbruik als een zwakte in het algemene sms-platform (niet het hunne) waar ze goed over nadenken.
Vervolgens wilde ik de basis-SMS-functionaliteit gebruiken in Meeting Planner.
Het blijkt dat er verschillende uitbreidingen beschikbaar zijn voor Twilio met het Yii Framework. Ik besloot om de YII2-wrapper van Filip Ajdačić te installeren voor Twilio PHP SDK (GitHub) omdat zijn naam het meest ongewoon was (grapje, zijn extensie leek regelmatig te worden onderhouden).
Ik heb de extensie toegevoegd aan composer.json. Omdat het technisch gezien in ontwikkelmodus is, werkte dit beter dan het direct vereisen van de extensie:
"filipajdacic / yii2-twilio": "dev-master"
Vervolgens heb ik de omgeving bijgewerkt:
$ composer update Laden van composer-repositories met pakketinformatie Bijwerken van afhankelijkheden (inclusief require-dev) - Verwijderen van ezyang / htmlpurifier (v4.7.0) - Installeren van ezyang / htmlpurifier (v4.8.0) Downloaden: 100% - Installeren van twilio / sdk (4.10.0 ) Downloaden: 100% - Installatie van filipajdacic / yii2-twilio (dev-master 7d547a0) Klonen 7d547a0a47c9864f2e8b5fb5f43748fbd24fc4b1 Schrijfblokbestand maken Autoloadbestanden genereren
Ik was niet zo bezorgd over de ontwikkelstatus omdat het een relatief eenvoudige, duidelijke uitbreiding is die alleen de Twilio API activeert.
Eerst voegde ik de sleutels van boven toe toe aan mijn initialisatiebestanden:
twilio_sid = "ACxxxxXXxxxxxXXxxxXXxxxxxxxxxxxe1" twilio_token = "d3xxxxXXxxxxxXXxxxXXxxxxxxxxxxx41" twilio_number = "1206XXXYYYY" # voor de volgende aflevering #twilio_service_sid = "MxxxxXXxxxxxXXxxxXXxxxxxxxxxxxGf6"
Vervolgens heb ik de component toegevoegd in /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' => [...
Ik vond het ook het beste om een paar van de variabelen in common \ config \ params-local.php te plaatsen om de toegang binnen de applicatie te vergemakkelijken:
'1206XXXYYYY', 'twilio_service_id' => 'MGXXXXXYYYYZZZZ11134446', 'twilio_test_number' => '1-206-NNN-QQQQ',];
Toen heb ik een Sms.php-model gebouwd om programmatisch te gebruiken wanneer er teksten nodig waren:
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 // kijk of ze een usercontact-ingang hebben die sms accepteert // verzend $ 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 ();
eerste, findUserNumber ()
was een beginnetje, en zenden ()
stuurde alleen naar een testnummer in params-local.php, mijn persoonlijke mobiele telefoon.
Hier is wat testcode die ik gebruikte om mijn eerste bericht van Meeting Planner te verzenden:
$ user_id = 1; $ s = new \ common \ models \ Sms (); $ s-> verzenden ($ user_id, 'Eerste test van de codebase van Meeting Planner!');
Dit zijn de resultaten:
Notitie: ja, ik weet dat ik mijn telefoon moet opladen, maar het is echt de slechte batterijlevensduur van de iPhone 6, dat is het probleem.
Dus, dat is hoe je je aanmeldt voor Twilio en basisfunctionaliteit implementeert.
In de volgende aflevering zullen we de daadwerkelijke integratie van sms met Meeting Planner onderzoeken. Hier zijn enkele vragen die naar voren komen:
Zoals altijd, blijf op de hoogte voor meer komende tutorials in de Building Your Startup With PHP-serie. Zoals voormalig presidentskandidaat Donald Trump altijd zei: "We gaan winnen, zoveel winnen dat je het winnen moe wordt. Je zult zeggen:" Alsjeblieft Jeff, stop met winnen. "En ik zal zeggen:" Nee, sorry, ga op je gemak, er zal meer aan de gang zijn winnen. '"
Heeft u al een vergadering gepland via Meeting Planner? Nee? Gaan! Doe het. Doe het nu! En zoals altijd, laat me weten wat je hieronder of in de opmerkingen denkt. Ik waardeer dat. Ik kan niet blijven winnen zonder jouw hulp.