Maison >développement back-end >tutoriel php >Bonjour, Laravel? Communiquer avec PHP via des appels téléphoniques!
Cet article montre la construction d'une application téléphonique de prévision météorologique à l'aide de Twilio et Laravel. Cette série en deux parties se concentre sur l'interaction vocale dans la première partie, avec la fonctionnalité SMS à ajouter dans la deuxième partie.
Les utilisateurs appellent un numéro Twilio, entrez un code postal et recevez les prévisions météorologiques actuelles. Un menu vocal permet la récupération des prévisions pour des jours spécifiques de la semaine.
Caractéristiques de clé:
Prérequis:
<code class="language-bash">cd ~/Code composer create-project --prefer-dist laravel/laravel Laravel 5.4.* cd Laravel composer require "twilio/sdk:^5.7" composer require "guzzlehttp/guzzle:~6.0"</code>
Étapes de développement:
routes/web.php
): Définir les routes pour les interactions vocales: <code class="language-php">Route::group(['prefix' => 'voice', 'middleware' => 'twilio'], function () { Route::post('enterZipcode', 'VoiceController@showEnterZipcode')->name('enter-zip'); Route::post('zipcodeWeather', 'VoiceController@showZipcodeWeather')->name('zip-weather'); Route::post('dayWeather', 'VoiceController@showDayWeather')->name('day-weather'); Route::post('credits', 'VoiceController@showCredits')->name('credits'); });</code>
Couche de service (app/Services/WeatherService.php
): Créez une classe WeatherService
pour encapsuler la logique métier. Cette classe gère la récupération des données météorologiques de l'API du National Weather Service (https://api.weather.gov
), en utilisant les données géographiques de Geonames. La mise en cache est mise en œuvre pour améliorer les performances. Les méthodes clés sont getWeather
, retrieveNwsData
, getPoint
, getTimeZone
, getTimestamp
, et getCredits
.
Contrôleur (app/Http/Controllers/VoiceController.php
): Le VoiceController
gère les interactions utilisateur, en utilisant le WeatherService
pour gérer la récupération des données météorologiques. Les méthodes incluent showEnterZipcode
, showZipcodeWeather
, showDayWeather
et showCredits
. Ces méthodes renvoient les réponses Twilio Twiml guidant l'utilisateur à travers l'appel.
middleware (app/Http/Middleware/TwilioRequestValidator.php
): Un middleware personnalisé valide les demandes entrantes de Twilio à l'aide du Twilio RequestValidator, garantissant que seules les demandes légitimes sont traitées. La protection CSRF est désactivée pour Twilio Webhooks.
Variables d'environnement (.env
): Configurez votre jeton Twilio Auth (TWILIO_APP_TOKEN
), et Geonames Username (GEONAMES_USERNAME
).
ngrok: Utilisez Ngrok pour exposer votre serveur de développement local à Internet pour les appels Twilio Webhook. N'oubliez pas d'utiliser l'option -host-header
pour gérer correctement l'en-tête hôte.
Configuration Twilio: Obtenez un numéro de téléphone Twilio avec des capacités de voix et de SMS. Configurez les URL WebHook dans les paramètres de votre compte Twilio pour pointer vers vos routes exposées à Ngrok.
Considérations de production: Le passage aux points de terminaison HTTPS est recommandé pour les déploiements de production.
Conclusion: Cet article détaille la création d'une application météorologique vocale fonctionnelle. La deuxième partie le prolongera pour inclure la fonctionnalité SMS. Le référentiel GitHub (lien non fourni dans le texte d'origine) contiendra le code complet.
FAQ (à partir du texte original, reformaté):
La section FAQ du texte d'origine est étendue et couvre divers aspects de l'intégration de Laravel avec différents services de communication (Twilio, Plivo, Sinch). Étant donné que la question ne demande que la réécriture du texte fourni, j'ai omis cette section par concision. Cependant, si vous souhaitez que cette section incluse, faites-le moi savoir.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!